Compare commits
145 Commits
Author | SHA1 | Date | |
---|---|---|---|
117dc6013c | |||
c6bc433a73 | |||
299815838c | |||
e8318cbf2f | |||
ae60053cff | |||
dca3cf1f08 | |||
eaf379b119 | |||
0074938e57 | |||
eed1c75aba | |||
6de2f36964 | |||
76e777a3ac | |||
165cd3737e | |||
2f11d1ba0f | |||
33692ff417 | |||
f408337186 | |||
bd6d574226 | |||
d5c2d167ec | |||
2af6d5a974 | |||
fdba21d60d | |||
c17ebca309 | |||
a014dcf1ab | |||
44bee7bf6f | |||
7841917058 | |||
f5a674f98d | |||
80ece7c093 | |||
39250b3d47 | |||
ed78c0becf | |||
63c103fde5 | |||
88003bde0f | |||
276a0641e8 | |||
b166269cb4 | |||
3ca1b425bf | |||
ffc07da665 | |||
be2adaf259 | |||
7aa9637826 | |||
a3c4f87741 | |||
f005f57764 | |||
6e418cdbf8 | |||
87155900e1 | |||
d24b11f737 | |||
17ebd58951 | |||
32bd229f91 | |||
4e5ddf8411 | |||
701c7c1b8b | |||
9a272def16 | |||
0213950aae | |||
b7342dbf05 | |||
677c8d33b9 | |||
ffc781011d | |||
aeec1b36a3 | |||
4c2e7f9446 | |||
dddad457f3 | |||
4f110c6e64 | |||
12d971c470 | |||
886c245e8d | |||
50d610e5df | |||
5edb62c134 | |||
38f22a6d95 | |||
91cdb71388 | |||
ab33e97c8d | |||
47f840841c | |||
fe2210dc9f | |||
489ebab6ee | |||
46baf07551 | |||
cf0aabfbfc | |||
a5005aeb96 | |||
a7e9f1303d | |||
92a6508c6a | |||
32f6b5cbf8 | |||
bdfbcead8d | |||
e73e704886 | |||
efa818680a | |||
572d85b3d3 | |||
41e1386a8d | |||
98d6f9e483 | |||
f295776bea | |||
cde63e95a8 | |||
6e4804a5ad | |||
137592a19b | |||
b850bc48cd | |||
e1ce867493 | |||
8e94ca9a60 | |||
81eaaaca90 | |||
340e7716f0 | |||
af7b9c46d2 | |||
56d4432d31 | |||
324abf821e | |||
fde407a762 | |||
c9ac84954f | |||
e0b4a93f1c | |||
70015b5ffc | |||
5a4d47411a | |||
1730706034 | |||
7ecf342548 | |||
7f10392757 | |||
9e229eee85 | |||
74c2c87f22 | |||
0e0ee89263 | |||
a0e8f2f5e2 | |||
043c5a0c6e | |||
a1d5b4fc4e | |||
cd0b8f18af | |||
d5387ddc05 | |||
3487b348df | |||
81036f8da3 | |||
b1464d97bf | |||
5636cf330e | |||
2e8b49fa18 | |||
df6036fbf1 | |||
8ec33947b6 | |||
50100115a6 | |||
8251e878c2 | |||
4a18d648c6 | |||
f9b89cc9db | |||
190aab3a11 | |||
cd26fffaf2 | |||
c2e48fa8b9 | |||
0db5ec169a | |||
0a29fafaeb | |||
0806fa9714 | |||
ef00c0d180 | |||
b79c5fa293 | |||
ae8a09c294 | |||
32a00aff01 | |||
77d96aaeff | |||
beb65789dc | |||
4a63b6a2c6 | |||
340e971738 | |||
1d488c308e | |||
bfb9ebb994 | |||
84c25f3a67 | |||
1f4ffaff2a | |||
101e7a86cd | |||
acc0e5221b | |||
a6839420f1 | |||
2df7cf1467 | |||
bae4305dec | |||
1737075753 | |||
1a74ee8bb6 | |||
28538001e9 | |||
9ec0b49716 | |||
cab52e1b02 | |||
d601a0eeb0 | |||
491f22ffca | |||
1fec5323d9 |
22
.gitignore
vendored
22
.gitignore
vendored
@ -1,10 +1,20 @@
|
||||
.nogit/
|
||||
|
||||
# artifacts
|
||||
coverage/
|
||||
public/
|
||||
pages/
|
||||
|
||||
# installs
|
||||
node_modules/
|
||||
.settings/
|
||||
.idea/
|
||||
|
||||
# caches
|
||||
.yarn/
|
||||
.cache/
|
||||
.rpt2_cache
|
||||
|
||||
#npm devug
|
||||
npm-debug.log
|
||||
# builds
|
||||
dist/
|
||||
dist_*/
|
||||
|
||||
ts/*.js
|
||||
ts/*.js.map
|
||||
# custom
|
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
4
.npmignore
Normal file
4
.npmignore
Normal file
@ -0,0 +1,4 @@
|
||||
node_modules/
|
||||
coverage/
|
||||
test/
|
||||
ts/typings/
|
16
.travis.yml
16
.travis.yml
@ -1,16 +0,0 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 4.2.2
|
||||
before_install:
|
||||
- npm install -g tsd
|
||||
deploy:
|
||||
provider: npm
|
||||
email: npm@smart-coordination.com
|
||||
api_key:
|
||||
secure: uNjLbNelm8nj9R/tRlwRvcXWLS1QtA0QEbDKPDTWHNo68wAHgdwXIdzkVkNcihZYVasR/LqGuSLfzoD4H8mKmCXD+v85h048VmmtWniZQRp/OVWl0uzRwDDryhiYlhY5U9oOFEQsMO96C8qPqcGchq+DA7Gi3ZnAl7pmeb54xp9H+7jmLyZTyO8Hq00anV5PopBOW23mZEnWHznzYeg83BlWmLdbyfyZKT4W5Urg1BAMgxt9PdtrQoiPy4LP6AHXG88kvY3Iz8OBG+h/06bura8MPfeupGoktodN9krb+sRE/COybATWImMh9Z5gI5TWqUR7tp7XivpgolYY41gaN93oUQ9EOTdJ5kFku1dnPrNFqXO/97slVTMR6fMMgRXwzTz6BiKI1NsAZeW7oLUONw06APZ6VBhVY6Po3Rioun8OE9Q0wXm/BvnRqVHt3sew4MIgmEBwQSQE14gLJGGgNojzmcPstc0czQp+kzV5DpGiW3IWIWZ7MsBJOOJ13RHeb6koFdBR7JZj0QzzBcWD7juJVOS45MlP7hU/sKRDO/fN3nu8TNwHvJab6XYP5/gqlbh/3h2vb7bxyDXiKGi2Ds8hZOHoyWoCrU3sbH3eKKkKo+LFI3J7PbY11T6TkSAdszLsQzcvC2QlsGQRWVywYMm32R6BVfxF3AlLX5a8JsI=
|
||||
on:
|
||||
tags: true
|
||||
repo: pushrocks/smartenv
|
||||
notifications:
|
||||
slack:
|
||||
secure: f5Uss0z9RPl/QcA/DroB8loyE93aOYI6bqCkrsiUscmZtlv/TVQtT4dxqGA6uvcG6iTQDBi3Ul88dQxWkRm4IqbhY35/iMaV2dHW4FVYMAh8GQMbsfL2sALCcufxD9blw47awv3iFcwhV1EeyesscjgL0JIjduk96v/7G/6QIO2838M1lzlgtj+kRUkim8qkaEs1je3gRrhMUIjLuAdscMXyUKYFMjWo9ACSjVUl30R/ZNemb18itIja6i92GotreBgcfEMczvy58ovDC7xdJUsY8LjMI01DwY+WPRnI0tAhsuI8moBwwcdM4e3bAjKjucQRjO33O5bMWRZ6QCiYd0DnCEFyCPQLJ4GSy/tkD00n8ijLHAOSV3AH1zNbdK1EAdSPQXDvlI36KJn/2hyQLoitGHVUPr76ujJWP82ypO2tgIp3XQU0dJVCxDuHnwJO2+hjdI+gCPqxNTpjeujHx3UdkTGNRjuuf9dlZ/D08fApjYxy2fxItTqo3QjP/nrqvBXUOPP8yPHpjIT4H2t5Pr4SJjBGI6X4qhKyFj6s9rA/Xu1rL+45zu1C3uC3z+u3T9UwrbzJ/cZM6r6UQvQmUvIfBNaMlg4I/diQCDIPL+Rhop2nylY3IcHmJnk2itn7kOqj1tohCpFEml5pRuSZy4udWywkdtyBAsHWFLF7oiQ=
|
11
.vscode/launch.json
vendored
Normal file
11
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"command": "npm test",
|
||||
"name": "Run npm test",
|
||||
"request": "launch",
|
||||
"type": "node-terminal"
|
||||
}
|
||||
]
|
||||
}
|
26
.vscode/settings.json
vendored
Normal file
26
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"json.schemas": [
|
||||
{
|
||||
"fileMatch": ["/npmextra.json"],
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"npmci": {
|
||||
"type": "object",
|
||||
"description": "settings for npmci"
|
||||
},
|
||||
"gitzone": {
|
||||
"type": "object",
|
||||
"description": "settings for gitzone",
|
||||
"properties": {
|
||||
"projectType": {
|
||||
"type": "string",
|
||||
"enum": ["website", "element", "service", "npm", "wcc"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Push.Rocks
|
||||
Copyright (c) 2015 Lossless GmbH
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
28
README.md
28
README.md
@ -1,28 +0,0 @@
|
||||
# smartenv
|
||||
store things about your environment and let them travel across modules
|
||||
|
||||
## Status
|
||||
[](https://travis-ci.org/pushrocks/smartenv)
|
||||
[](https://david-dm.org/pushrocks/smartenv)
|
||||
[](https://david-dm.org/pushrocks/smartenv#info=devDependencies)
|
||||
[](https://www.bithound.io/github/pushrocks/smartenv/master/dependencies/npm)
|
||||
[](https://www.bithound.io/github/pushrocks/smartenv)
|
||||
|
||||
## Install
|
||||
Install the package through npm
|
||||
|
||||
```
|
||||
npm install smartenv
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
var smartenv = require("smartenv");
|
||||
|
||||
smartenv.info(); //prints an output about your current environment and registered objects
|
||||
smartenv.register({akey:"a text"},"somevalue"); // register a new object
|
||||
smartenv.makeGlobal() // make smartenv available from gobal.smartenv
|
||||
smartenv.get("somevalue").akey; // returns "a text"
|
||||
smartenv.items.somevalue.akey; // also returns "a text"
|
||||
```
|
100
index.js
100
index.js
@ -1,100 +0,0 @@
|
||||
/// <reference path="index.ts" />
|
||||
var Environment = (function () {
|
||||
function Environment(runtimeEnvArg, userAgentArg) {
|
||||
if (userAgentArg === void 0) { userAgentArg = "undefined"; }
|
||||
this.runtimeEnv = runtimeEnvArg;
|
||||
this.userAgent = userAgentArg;
|
||||
if (runtimeEnvArg == "node") {
|
||||
this.isBrowser = false;
|
||||
this.isNode = true;
|
||||
this.nodeVersion = process.version;
|
||||
}
|
||||
else {
|
||||
this.isBrowser = true;
|
||||
this.isNode = true;
|
||||
this.nodeVersion = "undefined";
|
||||
}
|
||||
}
|
||||
;
|
||||
return Environment;
|
||||
})();
|
||||
/// <reference path="index.ts" />
|
||||
/**
|
||||
* Deals with the environment the current JS script is running in.
|
||||
*/
|
||||
var SmartenvEnvironment;
|
||||
(function (SmartenvEnvironment) {
|
||||
function init() {
|
||||
var environment;
|
||||
(function () {
|
||||
var localRunTimeEnv = "undefined";
|
||||
var localUserAgent = "undefined";
|
||||
if (typeof window !== 'undefined') {
|
||||
localRunTimeEnv = 'browser';
|
||||
localUserAgent = navigator.userAgent;
|
||||
}
|
||||
else if (typeof process !== 'undefined') {
|
||||
localRunTimeEnv = 'node';
|
||||
}
|
||||
environment = new Environment(localRunTimeEnv, localUserAgent);
|
||||
})();
|
||||
return function () {
|
||||
return environment;
|
||||
};
|
||||
}
|
||||
SmartenvEnvironment.init = init;
|
||||
})(SmartenvEnvironment || (SmartenvEnvironment = {}));
|
||||
/// <reference path="index.ts" />
|
||||
var SmartenvObjectStorage;
|
||||
(function (SmartenvObjectStorage) {
|
||||
function init() {
|
||||
var obs = {};
|
||||
var obsItems = {};
|
||||
obs.addItem = function (objectArg, paramName) {
|
||||
if (paramName === void 0) { paramName = "undefined"; }
|
||||
if (paramName == "undefined") {
|
||||
plugins.beautylog.error("paramName is undefined");
|
||||
return;
|
||||
}
|
||||
obsItems[paramName] = objectArg;
|
||||
};
|
||||
obs.getItem = function (keyName) {
|
||||
return obsItems[keyName];
|
||||
};
|
||||
obs.getComplete = function () {
|
||||
return obsItems;
|
||||
};
|
||||
obs.addComplete = function (itemsArg) {
|
||||
obsItems = plugins._.assign(obsItems, itemsArg);
|
||||
return obsItems;
|
||||
};
|
||||
return obs;
|
||||
}
|
||||
SmartenvObjectStorage.init = init;
|
||||
})(SmartenvObjectStorage || (SmartenvObjectStorage = {}));
|
||||
/// <reference path="typings/tsd.d.ts" />
|
||||
/// <reference path="smartenv.classes.ts" />
|
||||
/// <reference path="smartenv.environment.ts" />
|
||||
/// <reference path="smartenv.objectstorage.ts" />
|
||||
var plugins = {
|
||||
beautylog: require("beautylog")("os"),
|
||||
_: require("lodash")
|
||||
};
|
||||
var smartenv = {}; //create smartenv object
|
||||
smartenv.getEnv = SmartenvEnvironment.init();
|
||||
smartenv.obs = SmartenvObjectStorage.init();
|
||||
/* ----------------------------------------- *
|
||||
* ----- print info ------------------------ *
|
||||
* ----------------------------------------- */
|
||||
smartenv.printEnv = function () {
|
||||
if (smartenv.getEnv().isNode) {
|
||||
var smartenvVersion = require("./package.json").version;
|
||||
plugins.beautylog.log("node version is " + smartenv.getEnv().nodeVersion + " and smartenv version is " + smartenvVersion);
|
||||
}
|
||||
else {
|
||||
plugins.beautylog.log("browser is " + smartenv.getEnv().userAgent);
|
||||
}
|
||||
plugins.beautylog.log("the smartenv registration store currently holds the following properties:");
|
||||
console.log(Object.getOwnPropertyNames(smartenv.obs.getComplete).sort());
|
||||
};
|
||||
module.exports = smartenv;
|
17
npmextra.json
Normal file
17
npmextra.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"npmci": {
|
||||
"npmGlobalTools": [],
|
||||
"npmAccessLevel": "public"
|
||||
},
|
||||
"gitzone": {
|
||||
"projectType": "npm",
|
||||
"module": {
|
||||
"githost": "gitlab.com",
|
||||
"gitscope": "push.rocks",
|
||||
"gitrepo": "smartenv",
|
||||
"description": "store things about your environment and let them travel across modules",
|
||||
"npmPackagename": "@push.rocks/smartenv",
|
||||
"license": "MIT"
|
||||
}
|
||||
}
|
||||
}
|
54
package.json
54
package.json
@ -1,33 +1,55 @@
|
||||
{
|
||||
"name": "smartenv",
|
||||
"version": "0.0.8",
|
||||
"name": "@push.rocks/smartenv",
|
||||
"version": "5.0.7",
|
||||
"description": "store things about your environment and let them travel across modules",
|
||||
"main": "index.js",
|
||||
"main": "dist_ts/index.js",
|
||||
"typings": "dist_ts/index.d.ts",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "(cd ts/compile && node compile.js) && (node test.js)",
|
||||
"reinstall": "(rm -r node_modules && npm install)",
|
||||
"release": "(git pull origin master && npm version patch && git push origin master && git checkout release && git merge master && git push origin release && git checkout master)",
|
||||
"startdev": "(git checkout master && git pull origin master && npm install)"
|
||||
"test": "(tstest test/ --web)",
|
||||
"build": "(tsbuild --web --allowimplicitany && tsbundle npm)",
|
||||
"testbrowser": "(npm test) && (node testbrowser.js)",
|
||||
"buildDocs": "tsdoc"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/pushrocks/smartenv.git"
|
||||
"url": "https://gitlab.com/pushrocks/smartenv.git"
|
||||
},
|
||||
"keywords": [
|
||||
"environment"
|
||||
],
|
||||
"author": "Smart Coordination GmbH <office@push.rocks> (https://push.rocks)",
|
||||
"author": "Lossless GmbH <hello@lossless.support> (https://lossless.com)",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/pushrocks/smartenv/issues"
|
||||
"url": "https://gitlab.com/pushrocks/smartenv/issues"
|
||||
},
|
||||
"homepage": "https://github.com/pushrocks/smartenv",
|
||||
"homepage": "https://gitlab.com/pushrocks/smartenv",
|
||||
"dependencies": {
|
||||
"beautylog": "^1.0.4",
|
||||
"lodash": "^3.10.1"
|
||||
"@push.rocks/smartpromise": "^4.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"gulp": "^3.9.0",
|
||||
"gulp-typescript": "^2.9.2"
|
||||
}
|
||||
"@git.zone/tsbuild": "^2.1.66",
|
||||
"@git.zone/tsbundle": "^2.0.8",
|
||||
"@git.zone/tsrun": "^1.2.44",
|
||||
"@git.zone/tstest": "^1.0.77",
|
||||
"@push.rocks/tapbundle": "^5.0.8",
|
||||
"@types/node": "^20.8.2",
|
||||
"@types/npm": "^7.19.1"
|
||||
},
|
||||
"private": false,
|
||||
"files": [
|
||||
"ts/**/*",
|
||||
"ts_web/**/*",
|
||||
"dist/**/*",
|
||||
"dist_*/**/*",
|
||||
"dist_ts/**/*",
|
||||
"dist_ts_web/**/*",
|
||||
"assets/**/*",
|
||||
"cli.js",
|
||||
"npmextra.json",
|
||||
"readme.md"
|
||||
],
|
||||
"browserslist": [
|
||||
"last 1 chrome versions"
|
||||
]
|
||||
}
|
||||
|
5633
pnpm-lock.yaml
generated
Normal file
5633
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
37
readme.md
Normal file
37
readme.md
Normal file
@ -0,0 +1,37 @@
|
||||
# @push.rocks/smartenv
|
||||
store things about your environment and let them travel across modules
|
||||
|
||||
## Availabililty and Links
|
||||
* [npmjs.org (npm package)](https://www.npmjs.com/package/@push.rocks/smartenv)
|
||||
* [gitlab.com (source)](https://gitlab.com/pushrocks/smartenv)
|
||||
* [github.com (source mirror)](https://github.com/pushrocks/smartenv)
|
||||
* [docs (typedoc)](https://pushrocks.gitlab.io/smartenv/)
|
||||
|
||||
## Status for master
|
||||
|
||||
Status Category | Status Badge
|
||||
-- | --
|
||||
GitLab Pipelines | [](https://lossless.cloud)
|
||||
GitLab Pipline Test Coverage | [](https://lossless.cloud)
|
||||
npm | [](https://lossless.cloud)
|
||||
Snyk | [](https://lossless.cloud)
|
||||
TypeScript Support | [](https://lossless.cloud)
|
||||
node Support | [](https://nodejs.org/dist/latest-v10.x/docs/api/)
|
||||
Code Style | [](https://lossless.cloud)
|
||||
PackagePhobia (total standalone install weight) | [](https://lossless.cloud)
|
||||
PackagePhobia (package size on registry) | [](https://lossless.cloud)
|
||||
BundlePhobia (total size when bundled) | [](https://lossless.cloud)
|
||||
|
||||
## Usage
|
||||
|
||||
Use TypeScript for best in class instellisense.
|
||||
|
||||
## Contribution
|
||||
|
||||
We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
|
||||
|
||||
For further information read the linked docs at the top of this readme.
|
||||
|
||||
## Legal
|
||||
> MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc)
|
||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
|
14
test.js
14
test.js
@ -1,14 +0,0 @@
|
||||
/// <reference path="typings/tsd.d.ts" />
|
||||
var smartenv = require("./index.js");
|
||||
var beautylog = require("beautylog")("os");
|
||||
beautylog.info("Now testing the smartenv module");
|
||||
smartenv.printEnv();
|
||||
beautylog.info("Now testing the smartenv module");
|
||||
smartenv.obs.addItem({ key1: "Peter" }, "docit");
|
||||
smartenv.printEnv();
|
||||
beautylog.log(smartenv.obs.getItem("docit").key1);
|
||||
beautylog.log(smartenv.obs.getItem("docit").key1);
|
||||
var key2 = "hello";
|
||||
smartenv.obs.getItem("docit").key2 = key2;
|
||||
beautylog.log(smartenv.obs.getItem("docit").key2);
|
||||
beautylog.success("Success!");
|
37
test/test.ts
Normal file
37
test/test.ts
Normal file
@ -0,0 +1,37 @@
|
||||
import { tap, expect } from '@push.rocks/tapbundle';
|
||||
import * as smartenv from '../ts/index.js';
|
||||
|
||||
let testEnv: smartenv.Smartenv;
|
||||
|
||||
tap.test('should print env', async () => {
|
||||
testEnv = new smartenv.Smartenv();
|
||||
});
|
||||
|
||||
tap.test('should print a overview to console', async () => {
|
||||
testEnv.printEnv();
|
||||
});
|
||||
|
||||
tap.test('should get os', async () => {
|
||||
const resultMac = await testEnv.isMacAsync();
|
||||
const resultLinux = await testEnv.isLinuxAsync();
|
||||
const resultWindows = await testEnv.isWindowsAsync();
|
||||
const osModule = await import('os');
|
||||
if (resultMac) {
|
||||
expect(osModule.platform()).toEqual('darwin');
|
||||
console.log('platform is Mac!');
|
||||
} else if (resultLinux) {
|
||||
expect(osModule.platform()).toEqual('linux');
|
||||
console.log('platform is Linux!');
|
||||
} else {
|
||||
expect(osModule.platform()).toEqual('win32');
|
||||
console.log('platform is Windows!');
|
||||
}
|
||||
});
|
||||
|
||||
tap.test('should state wether we are in CI', async () => {
|
||||
if (process.env.CI) {
|
||||
expect(testEnv.isCI).toBeTrue();
|
||||
}
|
||||
});
|
||||
|
||||
tap.start();
|
8
ts/00_commitinfo_data.ts
Normal file
8
ts/00_commitinfo_data.ts
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* autocreated commitinfo by @pushrocks/commitinfo
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@push.rocks/smartenv',
|
||||
version: '5.0.7',
|
||||
description: 'store things about your environment and let them travel across modules'
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
// import gulp
|
||||
var gulp = require("gulp");
|
||||
var gulpTypescript = require("gulp-typescript");
|
||||
var bl = require("beautylog")("os");
|
||||
|
||||
gulp.task('compileTS', function() {
|
||||
var stream = gulp.src('../index.ts')
|
||||
.pipe(gulpTypescript({
|
||||
out: "index.js"
|
||||
}))
|
||||
.pipe(gulp.dest("../../"));
|
||||
return stream;
|
||||
});
|
||||
|
||||
gulp.task('compileTestTS', function() {
|
||||
var stream = gulp.src('../test.ts')
|
||||
.pipe(gulpTypescript({
|
||||
out: "test.js"
|
||||
}))
|
||||
.pipe(gulp.dest("../../"));
|
||||
return stream;
|
||||
});
|
||||
|
||||
gulp.task('default',['compileTS','compileTestTS'], function() {
|
||||
bl.success('Typescript compiled');
|
||||
});
|
||||
|
||||
gulp.start.apply(gulp, ['default']);
|
@ -1,2 +0,0 @@
|
||||
# How to compile.
|
||||
Make sure gulp and gulp-taypescript from npm are available. Then run the gulpfile in this directory.
|
27
ts/index.js
27
ts/index.js
@ -1,27 +0,0 @@
|
||||
/// <reference path="typings/tsd.d.ts" />
|
||||
/// <reference path="smartenv.classes.ts" />
|
||||
/// <reference path="smartenv.environment.ts" />
|
||||
/// <reference path="smartenv.objectstorage.ts" />
|
||||
var plugins = {
|
||||
beautylog: require("beautylog")("os"),
|
||||
_: require("lodash")
|
||||
};
|
||||
var smartenv = {}; //create smartenv object
|
||||
smartenv.getEnv = SmartenvEnvironment.init();
|
||||
smartenv.obs = SmartenvObjectStorage.init();
|
||||
/* ----------------------------------------- *
|
||||
* ----- print info ------------------------ *
|
||||
* ----------------------------------------- */
|
||||
smartenv.printEnv = function () {
|
||||
if (smartenv.getEnv().isNode) {
|
||||
var smartenvVersion = require("./package.json").version;
|
||||
plugins.beautylog.log("node version is " + smartenv.getEnv().nodeVersion + " and smartenv version is " + smartenvVersion);
|
||||
}
|
||||
else {
|
||||
plugins.beautylog.log("browser is " + smartenv.getEnv().userAgent);
|
||||
}
|
||||
plugins.beautylog.log("the smartenv registration store currently holds the following properties:");
|
||||
console.log(Object.getOwnPropertyNames(smartenv.obs.getComplete).sort());
|
||||
};
|
||||
module.exports = smartenv;
|
||||
//# sourceMappingURL=index.js.map
|
@ -1 +0,0 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,4CAA4C;AAC5C,gDAAgD;AAChD,kDAAkD;AAClD,IAAI,OAAO,GAAG;IACV,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;CACvB,CAAA;AACD,IAAI,QAAQ,GAAO,EAAE,CAAC,CAAC,wBAAwB;AAE/C,QAAQ,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC;AAC7C,QAAQ,CAAC,GAAG,GAAG,qBAAqB,CAAC,IAAI,EAAE,CAAC;AAG5C;;+CAE+C;AAC/C,QAAQ,CAAC,QAAQ,GAAG;IAChB,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3B,IAAI,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC;QACxD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAG,2BAA2B,GAAG,eAAe,CAAC,CAAC;IAC9H,CAAC;IAAC,IAAI,CAAC,CAAC;QACJ,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAA;IACtE,CAAC;IACD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC;AAIF,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC"}
|
32
ts/index.ts
32
ts/index.ts
@ -1,31 +1 @@
|
||||
/// <reference path="typings/tsd.d.ts" />
|
||||
/// <reference path="smartenv.classes.ts" />
|
||||
/// <reference path="smartenv.environment.ts" />
|
||||
/// <reference path="smartenv.objectstorage.ts" />
|
||||
var plugins = {
|
||||
beautylog: require("beautylog")("os"),
|
||||
_: require("lodash")
|
||||
}
|
||||
var smartenv:any = {}; //create smartenv object
|
||||
|
||||
smartenv.getEnv = SmartenvEnvironment.init();
|
||||
smartenv.obs = SmartenvObjectStorage.init();
|
||||
|
||||
|
||||
/* ----------------------------------------- *
|
||||
* ----- print info ------------------------ *
|
||||
* ----------------------------------------- */
|
||||
smartenv.printEnv = function() {
|
||||
if (smartenv.getEnv().isNode) {
|
||||
var smartenvVersion = require("./package.json").version;
|
||||
plugins.beautylog.log("node version is " + smartenv.getEnv().nodeVersion + " and smartenv version is " + smartenvVersion);
|
||||
} else {
|
||||
plugins.beautylog.log("browser is " + smartenv.getEnv().userAgent)
|
||||
}
|
||||
plugins.beautylog.log("the smartenv registration store currently holds the following properties:");
|
||||
console.log(Object.getOwnPropertyNames(smartenv.obs.getComplete).sort());
|
||||
};
|
||||
|
||||
|
||||
|
||||
module.exports = smartenv;
|
||||
export * from './smartenv.classes.smartenv.js';
|
||||
|
9
ts/interfaces/index.ts
Normal file
9
ts/interfaces/index.ts
Normal file
@ -0,0 +1,9 @@
|
||||
export let defaultme = null;
|
||||
declare global {
|
||||
namespace NodeJS {
|
||||
interface Global {
|
||||
window: any;
|
||||
navigator: any;
|
||||
}
|
||||
}
|
||||
}
|
151
ts/smartenv.classes.smartenv.ts
Normal file
151
ts/smartenv.classes.smartenv.ts
Normal file
@ -0,0 +1,151 @@
|
||||
import * as plugins from './smartenv.plugins.js';
|
||||
import * as interfaces from './interfaces/index.js';
|
||||
|
||||
// interfaces
|
||||
export interface IEnvObject {
|
||||
name: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Smartenv class that makes it easy
|
||||
*/
|
||||
export class Smartenv {
|
||||
public async getEnvAwareModule(optionsArg: {
|
||||
nodeModuleName: string;
|
||||
webUrlArg: string;
|
||||
getFunction: () => any;
|
||||
}) {
|
||||
if (this.isNode) {
|
||||
const moduleResult = await this.getSafeNodeModule(optionsArg.nodeModuleName);
|
||||
return moduleResult;
|
||||
} else if (this.isBrowser) {
|
||||
const moduleResult = await this.getSafeWebModule(
|
||||
optionsArg.webUrlArg,
|
||||
optionsArg.getFunction
|
||||
);
|
||||
return moduleResult;
|
||||
} else {
|
||||
console.error('platform for loading not supported by smartenv');
|
||||
}
|
||||
}
|
||||
|
||||
public async getSafeNodeModule<T = any>(moduleNameArg: string): Promise<T> {
|
||||
if (!this.isNode) {
|
||||
console.error(`You tried to load a node module in a wrong context: ${moduleNameArg}`);
|
||||
return;
|
||||
}
|
||||
// tslint:disable-next-line: function-constructor
|
||||
return new Function(`return import('${moduleNameArg}')`)() as Promise<T>;
|
||||
}
|
||||
|
||||
public loadedScripts: string[] = [];
|
||||
public async getSafeWebModule(urlArg: string, getFunctionArg: () => any) {
|
||||
if (!this.isBrowser) {
|
||||
console.error('You tried to load a web module in a wrong context');
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.loadedScripts.includes(urlArg)) {
|
||||
return getFunctionArg();
|
||||
} else {
|
||||
this.loadedScripts.push(urlArg);
|
||||
}
|
||||
|
||||
const done = plugins.smartpromise.defer();
|
||||
if (globalThis.importScripts) {
|
||||
globalThis.importScripts(urlArg);
|
||||
done.resolve();
|
||||
} else {
|
||||
const script = document.createElement('script');
|
||||
script.onload = () => {
|
||||
done.resolve();
|
||||
};
|
||||
script.src = urlArg;
|
||||
document.head.appendChild(script);
|
||||
}
|
||||
await done.promise;
|
||||
return getFunctionArg();
|
||||
}
|
||||
|
||||
public get runtimeEnv() {
|
||||
if (typeof process !== 'undefined') {
|
||||
return 'node';
|
||||
} else {
|
||||
return 'browser';
|
||||
}
|
||||
}
|
||||
|
||||
public get isBrowser(): boolean {
|
||||
return !this.isNode;
|
||||
}
|
||||
|
||||
public get userAgent(): string {
|
||||
if (this.isBrowser) {
|
||||
// make sure we are in Browser
|
||||
return navigator.userAgent;
|
||||
} else {
|
||||
return 'undefined';
|
||||
}
|
||||
}
|
||||
|
||||
public get isNode(): boolean {
|
||||
return this.runtimeEnv === 'node';
|
||||
}
|
||||
|
||||
public get nodeVersion(): string {
|
||||
return process.version;
|
||||
}
|
||||
|
||||
public get isCI(): boolean {
|
||||
if (this.isNode) {
|
||||
if (process.env.CI) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public async isMacAsync(): Promise<boolean> {
|
||||
if (this.isNode) {
|
||||
const os = await this.getSafeNodeModule('os');
|
||||
return os.platform() === 'darwin';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public async isWindowsAsync(): Promise<boolean> {
|
||||
if (this.isNode) {
|
||||
const os = await this.getSafeNodeModule('os');
|
||||
return os.platform() === 'win32';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public async isLinuxAsync(): Promise<boolean> {
|
||||
if (this.isNode) {
|
||||
const os = await this.getSafeNodeModule('os');
|
||||
return os.platform() === 'linux';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* prints the environment to console
|
||||
*/
|
||||
public async printEnv() {
|
||||
if (this.isNode) {
|
||||
console.log('running on NODE');
|
||||
console.log('node version is ' + this.nodeVersion);
|
||||
} else {
|
||||
console.log('running on BROWSER');
|
||||
console.log('browser is ' + this.userAgent);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
/// <reference path="index.ts" />
|
||||
class Environment {
|
||||
public runtimeEnv:string;
|
||||
public userAgent:string;
|
||||
public nodeVersion;
|
||||
public isBrowser:boolean;
|
||||
public isNode:boolean;
|
||||
constructor(runtimeEnvArg,userAgentArg = "undefined") {
|
||||
this.runtimeEnv = runtimeEnvArg;
|
||||
this.userAgent = userAgentArg;
|
||||
if(runtimeEnvArg == "node"){
|
||||
this.isBrowser = false;
|
||||
this.isNode = true;
|
||||
this.nodeVersion = process.version;
|
||||
} else {
|
||||
this.isBrowser = true;
|
||||
this.isNode = true;
|
||||
this.nodeVersion = "undefined";
|
||||
}
|
||||
};
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
/// <reference path="index.ts" />
|
||||
/**
|
||||
* Deals with the environment the current JS script is running in.
|
||||
*/
|
||||
module SmartenvEnvironment {
|
||||
export function init(){
|
||||
var environment:Environment;
|
||||
(function() {
|
||||
var localRunTimeEnv = "undefined";
|
||||
var localUserAgent = "undefined";
|
||||
if (typeof window !== 'undefined') {
|
||||
localRunTimeEnv = 'browser';
|
||||
localUserAgent = navigator.userAgent;
|
||||
} else if (typeof process !== 'undefined') {
|
||||
localRunTimeEnv = 'node';
|
||||
}
|
||||
environment = new Environment(localRunTimeEnv,localUserAgent);
|
||||
})();
|
||||
|
||||
|
||||
return function() {
|
||||
return environment;
|
||||
};
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
/// <reference path="index.ts" />
|
||||
module SmartenvObjectStorage {
|
||||
export function init() {
|
||||
var obs:any = {};
|
||||
var obsItems:any = {};
|
||||
obs.addItem = function(objectArg,paramName = "undefined") {
|
||||
if (paramName == "undefined"){
|
||||
plugins.beautylog.error("paramName is undefined");
|
||||
return;
|
||||
}
|
||||
obsItems[paramName] = objectArg;
|
||||
};
|
||||
obs.getItem = function(keyName) {
|
||||
return obsItems[keyName];
|
||||
};
|
||||
obs.getComplete = function () {
|
||||
return obsItems;
|
||||
}
|
||||
|
||||
obs.addComplete = function(itemsArg) {
|
||||
obsItems = plugins._.assign(obsItems,itemsArg);
|
||||
return obsItems;
|
||||
};
|
||||
return obs;
|
||||
}
|
||||
}
|
3
ts/smartenv.plugins.ts
Normal file
3
ts/smartenv.plugins.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import * as smartpromise from '@push.rocks/smartpromise';
|
||||
|
||||
export { smartpromise };
|
15
ts/test.js
15
ts/test.js
@ -1,15 +0,0 @@
|
||||
/// <reference path="typings/tsd.d.ts" />
|
||||
var smartenv = require("./index.js");
|
||||
var beautylog = require("beautylog")("os");
|
||||
beautylog.info("Now testing the smartenv module");
|
||||
smartenv.printEnv();
|
||||
beautylog.info("Now testing the smartenv module");
|
||||
smartenv.obs.addItem({ key1: "Peter" }, "docit");
|
||||
smartenv.printEnv();
|
||||
beautylog.log(smartenv.obs.getItem("docit").key1);
|
||||
beautylog.log(smartenv.obs.getItem("docit").key1);
|
||||
var key2 = "hello";
|
||||
smartenv.obs.getItem("docit").key2 = key2;
|
||||
beautylog.log(smartenv.obs.getItem("docit").key2);
|
||||
beautylog.success("Success!");
|
||||
//# sourceMappingURL=test.js.map
|
@ -1 +0,0 @@
|
||||
{"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,IAAI,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACrC,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAS,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AAClD,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACpB,SAAS,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AAClD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,OAAO,CAAC,CAAC;AAC7C,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACpB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AAClD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AAElD,IAAI,IAAI,GAAG,OAAO,CAAC;AACnB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AAElD,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC"}
|
16
ts/test.ts
16
ts/test.ts
@ -1,16 +0,0 @@
|
||||
/// <reference path="typings/tsd.d.ts" />
|
||||
var smartenv = require("./index.js");
|
||||
var beautylog = require("beautylog")("os");
|
||||
beautylog.info("Now testing the smartenv module");
|
||||
smartenv.printEnv();
|
||||
beautylog.info("Now testing the smartenv module");
|
||||
smartenv.obs.addItem({key1:"Peter"},"docit");
|
||||
smartenv.printEnv();
|
||||
beautylog.log(smartenv.obs.getItem("docit").key1);
|
||||
beautylog.log(smartenv.obs.getItem("docit").key1);
|
||||
|
||||
var key2 = "hello";
|
||||
smartenv.obs.getItem("docit").key2 = key2;
|
||||
beautylog.log(smartenv.obs.getItem("docit").key2);
|
||||
|
||||
beautylog.success("Success!");
|
12
ts/tsd.json
12
ts/tsd.json
@ -1,12 +0,0 @@
|
||||
{
|
||||
"version": "v4",
|
||||
"repo": "borisyankov/DefinitelyTyped",
|
||||
"ref": "master",
|
||||
"path": "typings",
|
||||
"bundle": "typings/tsd.d.ts",
|
||||
"installed": {
|
||||
"node/node.d.ts": {
|
||||
"commit": "efa0c1196d7280640e624ac1e7fa604502e7bd63"
|
||||
}
|
||||
}
|
||||
}
|
2079
ts/typings/node/node.d.ts
vendored
2079
ts/typings/node/node.d.ts
vendored
File diff suppressed because it is too large
Load Diff
1
ts/typings/tsd.d.ts
vendored
1
ts/typings/tsd.d.ts
vendored
@ -1 +0,0 @@
|
||||
/// <reference path="node/node.d.ts" />
|
9
tsconfig.json
Normal file
9
tsconfig.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"experimentalDecorators": true,
|
||||
"useDefineForClassFields": false,
|
||||
"target": "ES2022",
|
||||
"module": "ES2022",
|
||||
"moduleResolution": "nodenext"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user