@owservable/actions 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +5 -0
  3. package/lib/functions/find.action.d.ts +3 -0
  4. package/lib/functions/find.action.js +22 -0
  5. package/lib/functions/find.action.js.map +1 -0
  6. package/lib/functions/get.option.and.default.value.d.ts +5 -0
  7. package/lib/functions/get.option.and.default.value.js +15 -0
  8. package/lib/functions/get.option.and.default.value.js.map +1 -0
  9. package/lib/functions/run.action.as.command.d.ts +3 -0
  10. package/lib/functions/run.action.as.command.js +34 -0
  11. package/lib/functions/run.action.as.command.js.map +1 -0
  12. package/lib/interfaces/action.as.command.interface.d.ts +5 -0
  13. package/lib/interfaces/action.as.command.interface.js +3 -0
  14. package/lib/interfaces/action.as.command.interface.js.map +1 -0
  15. package/lib/interfaces/action.as.controller.interface.d.ts +5 -0
  16. package/lib/interfaces/action.as.controller.interface.js +3 -0
  17. package/lib/interfaces/action.as.controller.interface.js.map +1 -0
  18. package/lib/interfaces/action.as.cronjob.interface.d.ts +7 -0
  19. package/lib/interfaces/action.as.cronjob.interface.js +3 -0
  20. package/lib/interfaces/action.as.cronjob.interface.js.map +1 -0
  21. package/lib/interfaces/action.as.worker.interface.d.ts +5 -0
  22. package/lib/interfaces/action.as.worker.interface.js +3 -0
  23. package/lib/interfaces/action.as.worker.interface.js.map +1 -0
  24. package/lib/interfaces/action.interface.d.ts +4 -0
  25. package/lib/interfaces/action.interface.js +3 -0
  26. package/lib/interfaces/action.interface.js.map +1 -0
  27. package/lib/owservable.actions.d.ts +11 -0
  28. package/lib/owservable.actions.js +12 -0
  29. package/lib/owservable.actions.js.map +1 -0
  30. package/package.json +63 -0
package/LICENSE ADDED
@@ -0,0 +1,24 @@
1
+ This is free and unencumbered software released into the public domain.
2
+
3
+ Anyone is free to copy, modify, publish, use, compile, sell, or
4
+ distribute this software, either in source code form or as a compiled
5
+ binary, for any purpose, commercial or non-commercial, and by any
6
+ means.
7
+
8
+ In jurisdictions that recognize copyright laws, the author or authors
9
+ of this software dedicate any and all copyright interest in the
10
+ software to the public domain. We make this dedication for the benefit
11
+ of the public at large and to the detriment of our heirs and
12
+ successors. We intend this dedication to be an overt act of
13
+ relinquishment in perpetuity of all present and future rights to this
14
+ software under copyright law.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ For more information, please refer to <https://unlicense.org>
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ ![owservable](https://avatars0.githubusercontent.com/u/87773159?s=75)
2
+
3
+ # actions
4
+
5
+ actions
@@ -0,0 +1,3 @@
1
+ import ActionAsCommandInterface from '../interfaces/action.as.command.interface';
2
+ export declare const findAction: (root: string, cliCommand: string) => ActionAsCommandInterface;
3
+ export default findAction;
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findAction = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const folders_1 = require("@owservable/folders");
6
+ const findAction = (root, cliCommand) => {
7
+ const actionPaths = (0, folders_1.listSubfoldersFilesByFolderName)(root, 'actions');
8
+ let action;
9
+ (0, lodash_1.each)(actionPaths, (actionPath) => {
10
+ const ActionClass = require(actionPath).default;
11
+ const actionInstance = new ActionClass();
12
+ const actionCommand = (0, lodash_1.first)(actionInstance.signature().split(' '));
13
+ if (cliCommand === actionCommand) {
14
+ action = actionInstance;
15
+ return false;
16
+ }
17
+ });
18
+ return action;
19
+ };
20
+ exports.findAction = findAction;
21
+ exports.default = exports.findAction;
22
+ //# sourceMappingURL=find.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.action.js","sourceRoot":"","sources":["../../src/functions/find.action.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,mCAAmC;AACnC,iDAAoE;AAI7D,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,UAAkB,EAA4B,EAAE;IACxF,MAAM,WAAW,GAAa,IAAA,yCAA+B,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE/E,IAAI,MAAgC,CAAC;IAErC,IAAA,aAAI,EAAC,WAAW,EAAE,CAAC,UAAkB,EAAE,EAAE;QAExC,MAAM,WAAW,GAAuC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;QACpF,MAAM,cAAc,GAAG,IAAI,WAAW,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,IAAA,cAAK,EAAC,cAAc,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnE,IAAI,UAAU,KAAK,aAAa,EAAE;YACjC,MAAM,GAAG,cAAc,CAAC;YACxB,OAAO,KAAK,CAAC;SACb;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAlBW,QAAA,UAAU,cAkBrB;AACF,kBAAe,kBAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const getOptionAndDefaultValue: (config: string) => {
2
+ option: string;
3
+ defaultValue: string;
4
+ };
5
+ export default getOptionAndDefaultValue;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOptionAndDefaultValue = void 0;
4
+ const getOptionAndDefaultValue = (config) => {
5
+ let defaultValue;
6
+ let option = config.substring(1).substring(-1).slice(0, -1);
7
+ if (option.indexOf('=') >= 0) {
8
+ defaultValue = option.substring(option.indexOf('=') + 1).slice(0, -1);
9
+ option = option.replace('=' + defaultValue, '');
10
+ }
11
+ return { option, defaultValue };
12
+ };
13
+ exports.getOptionAndDefaultValue = getOptionAndDefaultValue;
14
+ exports.default = exports.getOptionAndDefaultValue;
15
+ //# sourceMappingURL=get.option.and.default.value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.option.and.default.value.js","sourceRoot":"","sources":["../../src/functions/get.option.and.default.value.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEN,MAAM,wBAAwB,GAAG,CAAC,MAAc,EAA0C,EAAE;IAClG,IAAI,YAAY,CAAC;IACjB,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAG5D,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC7B,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,YAAY,EAAE,EAAE,CAAC,CAAC;KAChD;IAED,OAAO,EAAC,MAAM,EAAE,YAAY,EAAC,CAAC;AAC/B,CAAC,CAAC;AAXW,QAAA,wBAAwB,4BAWnC;AACF,kBAAe,gCAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import ActionAsCommandInterface from '../interfaces/action.as.command.interface';
2
+ export declare const runActionAsCommand: (action: ActionAsCommandInterface) => Promise<void>;
3
+ export default runActionAsCommand;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.runActionAsCommand = void 0;
13
+ const commander_1 = require("commander");
14
+ const lodash_1 = require("lodash");
15
+ const get_option_and_default_value_1 = require("../functions/get.option.and.default.value");
16
+ const runActionAsCommand = (action) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const program = new commander_1.Command();
18
+ const signature = action.signature();
19
+ const actionCommand = (0, lodash_1.first)(signature.split(' '));
20
+ program
21
+ .name('pnpm cli')
22
+ .command(actionCommand)
23
+ .description(action.description());
24
+ const options = signature.match(/{([^}]*)}/g);
25
+ (0, lodash_1.each)(options, (config) => {
26
+ const { option, defaultValue } = (0, get_option_and_default_value_1.default)(config);
27
+ program.option(option, '', defaultValue);
28
+ });
29
+ program.parse(process.argv);
30
+ return action.asCommand(program.opts());
31
+ });
32
+ exports.runActionAsCommand = runActionAsCommand;
33
+ exports.default = exports.runActionAsCommand;
34
+ //# sourceMappingURL=run.action.as.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.action.as.command.js","sourceRoot":"","sources":["../../src/functions/run.action.as.command.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;AAEb,yCAAkC;AAClC,mCAAmC;AAGnC,4FAAiF;AAE1E,MAAM,kBAAkB,GAAG,CAAO,MAAgC,EAAiB,EAAE;IAC3F,MAAM,OAAO,GAAY,IAAI,mBAAO,EAAE,CAAC;IACvC,MAAM,SAAS,GAAW,MAAM,CAAC,SAAS,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAW,IAAA,cAAK,EAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1D,OAAO;SACL,IAAI,CAAC,UAAU,CAAC;SAChB,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAa,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACxD,IAAA,aAAI,EAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QACxB,MAAM,EAAC,MAAM,EAAE,YAAY,EAAC,GAAG,IAAA,sCAAwB,EAAC,MAAM,CAAC,CAAC;QAChE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC,CAAA,CAAC;AAnBW,QAAA,kBAAkB,sBAmB7B;AACF,kBAAe,0BAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import ActionInterface from './action.interface';
2
+ export default interface ActionAsCommandInterface extends ActionInterface {
3
+ signature(): string;
4
+ asCommand(options: any): Promise<void>;
5
+ }
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=action.as.command.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.as.command.interface.js","sourceRoot":"","sources":["../../src/interfaces/action.as.command.interface.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ import ActionInterface from './action.interface';
2
+ export default interface ActionAsControllerInterface extends ActionInterface {
3
+ routes(): Promise<any>;
4
+ asController(request: any, reply: any): Promise<void>;
5
+ }
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=action.as.controller.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.as.controller.interface.js","sourceRoot":"","sources":["../../src/interfaces/action.as.controller.interface.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ import ActionInterface from './action.interface';
2
+ export default interface ActionAsCronjobInterface extends ActionInterface {
3
+ schedule(): string;
4
+ asCronjob(): Promise<void>;
5
+ asCronjobInit?(): Promise<void>;
6
+ cronjobOptions?(): string;
7
+ }
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=action.as.cronjob.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.as.cronjob.interface.js","sourceRoot":"","sources":["../../src/interfaces/action.as.cronjob.interface.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ import ActionInterface from './action.interface';
2
+ export default interface ActionAsWorkerInterface extends ActionInterface {
3
+ asWorker(): Promise<void>;
4
+ asWorkerInit?(): Promise<void>;
5
+ }
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=action.as.worker.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.as.worker.interface.js","sourceRoot":"","sources":["../../src/interfaces/action.as.worker.interface.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export default interface ActionInterface {
2
+ description(): string;
3
+ handle(...args: any[]): Promise<any>;
4
+ }
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=action.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.interface.js","sourceRoot":"","sources":["../../src/interfaces/action.interface.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ import findAction from './functions/find.action';
2
+ import runActionAsCommand from './functions/run.action.as.command';
3
+ import getOptionAndDefaultValue from './functions/get.option.and.default.value';
4
+ import ActionInterface from './interfaces/action.interface';
5
+ import ActionAsWorkerInterface from './interfaces/action.as.worker.interface';
6
+ import ActionAsCronjobInterface from './interfaces/action.as.cronjob.interface';
7
+ import ActionAsControllerInterface from './interfaces/action.as.controller.interface';
8
+ import ActionAsCommandInterface from './interfaces/action.as.command.interface';
9
+ export { findAction, runActionAsCommand, getOptionAndDefaultValue, ActionInterface, ActionAsWorkerInterface, ActionAsCronjobInterface, ActionAsControllerInterface, ActionAsCommandInterface };
10
+ declare const OwservableActions: {};
11
+ export default OwservableActions;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOptionAndDefaultValue = exports.runActionAsCommand = exports.findAction = void 0;
4
+ const find_action_1 = require("./functions/find.action");
5
+ exports.findAction = find_action_1.default;
6
+ const run_action_as_command_1 = require("./functions/run.action.as.command");
7
+ exports.runActionAsCommand = run_action_as_command_1.default;
8
+ const get_option_and_default_value_1 = require("./functions/get.option.and.default.value");
9
+ exports.getOptionAndDefaultValue = get_option_and_default_value_1.default;
10
+ const OwservableActions = {};
11
+ exports.default = OwservableActions;
12
+ //# sourceMappingURL=owservable.actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owservable.actions.js","sourceRoot":"","sources":["../src/owservable.actions.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAGb,yDAAiD;AAahD,qBAbM,qBAAU,CAaN;AAZX,6EAAmE;AAalE,6BAbM,+BAAkB,CAaN;AAZnB,2FAAgF;AAa/E,mCAbM,sCAAwB,CAaN;AASzB,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,kBAAe,iBAAiB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@owservable/actions",
3
+ "version": "0.0.1",
4
+ "description": "list subfolders by name",
5
+ "engines": {
6
+ "node": ">=16"
7
+ },
8
+ "main": "./lib/owservable.actions.js",
9
+ "types": "./lib/owservable.actions.d.ts",
10
+ "author": "Predrag Stojadinovic <predrag@stojadinovic.net>",
11
+ "license": "Unlicense",
12
+ "files": [
13
+ "lib/**/*"
14
+ ],
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/owservable/actions.git"
18
+ },
19
+ "scripts": {
20
+ "all": "pnpm i & tsc & pnpm clean & pnpm build & pnpm test & pnpm test_qube & pnpm docs",
21
+ "build": "del /S /Q lib\\* && tsc",
22
+ "build:watch": "tsc --watch",
23
+ "lint": "tslint -p tsconfig.json",
24
+ "clean": "tslint --config tslint-imports.json --fix --project .",
25
+ "format": "prettier --write \"src/**/*.ts\"",
26
+ "docs": "typedoc --readme none --out docs src/owservable.actions.ts",
27
+ "test": "nyc --all --reporter=lcov --reporter=html mocha -r ts-node/register test/**/*.spec.ts --code-coverage",
28
+ "coveralls": "cat ./coverage/lcov.info | node node_modules/.bin/coveralls",
29
+ "sonar": "sonarjs -e .sonarlint/**,node_modules/**,coverage/**,.nyc_output/**",
30
+ "test_qube": "nyc --reporter=lcov mocha -R @danmasta/mocha-sonar -r ts-node/register test/**/*.spec.ts",
31
+ "up": "pnpm up -i",
32
+ "latest": "pnpm up -i -L",
33
+ "l": "pnpm latest",
34
+ "srctree": "dir src /s /b > srctree.txt",
35
+ "preinstall": "npx only-allow pnpm"
36
+ },
37
+ "dependencies": {
38
+ "@owservable/folders": "^0.0.4",
39
+ "@types/lodash": "^4.14.182",
40
+ "@types/node": "^18.0.6",
41
+ "commander": "^9.4.1",
42
+ "lodash": "^4.17.20"
43
+ },
44
+ "devDependencies": {
45
+ "@danmasta/mocha-sonar": "^1.0.1",
46
+ "@types/chai": "^4.3.1",
47
+ "@types/mocha": "^10.0.0",
48
+ "chai": "^4.3.6",
49
+ "coveralls": "^3.0.9",
50
+ "mocha": "^10.0.0",
51
+ "nyc": "^15.1.0",
52
+ "prettier": "^2.7.1",
53
+ "sonarjs": "^1.0.0",
54
+ "source-map-support": "^0.5.21",
55
+ "ts-node": "^10.9.1",
56
+ "tslint": "^6.1.3",
57
+ "tslint-config-prettier": "^1.18.0",
58
+ "tslint-etc": "^1.13.7",
59
+ "tslint-no-unused-expression-chai": "^0.1.4",
60
+ "typedoc": "^0.23.8",
61
+ "typescript": "^4.7.4"
62
+ }
63
+ }