@yuuvis/client-cli 18.0.0

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 (109) hide show
  1. package/README.md +57 -0
  2. package/cli/commands/generate/app.d.ts +6 -0
  3. package/cli/commands/generate/app.js +80 -0
  4. package/cli/commands/generate/app.js.map +1 -0
  5. package/cli/commands/generate.d.ts +5 -0
  6. package/cli/commands/generate.js +13 -0
  7. package/cli/commands/generate.js.map +1 -0
  8. package/cli/commands/new.d.ts +5 -0
  9. package/cli/commands/new.js +38 -0
  10. package/cli/commands/new.js.map +1 -0
  11. package/cli/options/options-generate-app.json +18 -0
  12. package/cli/options/options-new.json +14 -0
  13. package/cli/utils.d.ts +7 -0
  14. package/cli/utils.js +25 -0
  15. package/cli/utils.js.map +1 -0
  16. package/cli/yuv.d.ts +2 -0
  17. package/cli/yuv.js +17 -0
  18. package/cli/yuv.js.map +1 -0
  19. package/package.json +23 -0
  20. package/schematics/app-manifest.d.ts +41 -0
  21. package/schematics/app-manifest.js +33 -0
  22. package/schematics/app-manifest.js.map +1 -0
  23. package/schematics/constants.d.ts +5 -0
  24. package/schematics/constants.js +9 -0
  25. package/schematics/constants.js.map +1 -0
  26. package/schematics/factories/collection.json +15 -0
  27. package/schematics/factories/generate-app/index.d.ts +8 -0
  28. package/schematics/factories/generate-app/index.js +117 -0
  29. package/schematics/factories/generate-app/index.js.map +1 -0
  30. package/schematics/factories/generate-app/schema.json +39 -0
  31. package/schematics/factories/new/index.d.ts +2 -0
  32. package/schematics/factories/new/index.js +26 -0
  33. package/schematics/factories/new/index.js.map +1 -0
  34. package/schematics/factories/new/schema.json +32 -0
  35. package/schematics/files/_lib_extensions/README.md +3 -0
  36. package/schematics/files/_lib_extensions/ng-package.json +5 -0
  37. package/schematics/files/_lib_extensions/src/index.ts.template +1 -0
  38. package/schematics/files/_lib_extensions/src/lib/extensions.module.ts.template +18 -0
  39. package/schematics/files/_lib_extensions/src/lib/services/extensions.service.ts.template +10 -0
  40. package/schematics/files/_lib_extensions/src/lib/services/index.ts.template +1 -0
  41. package/schematics/files/_lib_ui_src/assets/i18n/de.json +3 -0
  42. package/schematics/files/_lib_ui_src/assets/i18n/en.json +3 -0
  43. package/schematics/files/_lib_ui_src/lib/lib.routes.ts.template +9 -0
  44. package/schematics/files/_root/README.md +27 -0
  45. package/schematics/files/_root/proxy.config.js +28 -0
  46. package/schematics/files/_scripts/i18n-collect.js +59 -0
  47. package/schematics/files/_scripts/i18n-extract.js +31 -0
  48. package/schematics/files/_src/index.html +31 -0
  49. package/schematics/files/_src/styles.scss +8 -0
  50. package/schematics/files/_src_app/app.component.ts.template +17 -0
  51. package/schematics/files/_src_app/app.config.ts.template +29 -0
  52. package/schematics/files/_src_app/app.routes.ts.template +10 -0
  53. package/schematics/files/_src_assets__yuuvis_config/main.json +26 -0
  54. package/schematics/files/_src_assets__yuuvis_theme/app.icon.svg +3 -0
  55. package/schematics/files/_src_assets__yuuvis_theme/favicon.svg +13 -0
  56. package/schematics/files/_src_assets__yuuvis_theme/logo.svg +1 -0
  57. package/schematics/files/_src_assets__yuuvis_theme/splash.svg +3 -0
  58. package/schematics/files/_src_assets__yuuvis_theme/theme.css +13 -0
  59. package/schematics/schematics-util.d.ts +5 -0
  60. package/schematics/schematics-util.js +33 -0
  61. package/schematics/schematics-util.js.map +1 -0
  62. package/schematics/tasks/clean-up-ng-app.d.ts +2 -0
  63. package/schematics/tasks/clean-up-ng-app.js +11 -0
  64. package/schematics/tasks/clean-up-ng-app.js.map +1 -0
  65. package/schematics/tasks/copy-extensions-files.d.ts +1 -0
  66. package/schematics/tasks/copy-extensions-files.js +15 -0
  67. package/schematics/tasks/copy-extensions-files.js.map +1 -0
  68. package/schematics/tasks/copy-files.d.ts +1 -0
  69. package/schematics/tasks/copy-files.js +32 -0
  70. package/schematics/tasks/copy-files.js.map +1 -0
  71. package/schematics/tasks/copy-ui-files.d.ts +1 -0
  72. package/schematics/tasks/copy-ui-files.js +16 -0
  73. package/schematics/tasks/copy-ui-files.js.map +1 -0
  74. package/schematics/tasks/create-update-manifest.d.ts +4 -0
  75. package/schematics/tasks/create-update-manifest.js +34 -0
  76. package/schematics/tasks/create-update-manifest.js.map +1 -0
  77. package/schematics/tasks/generate-library.d.ts +2 -0
  78. package/schematics/tasks/generate-library.js +15 -0
  79. package/schematics/tasks/generate-library.js.map +1 -0
  80. package/schematics/tasks/ng-new.d.ts +2 -0
  81. package/schematics/tasks/ng-new.js +22 -0
  82. package/schematics/tasks/ng-new.js.map +1 -0
  83. package/schematics/tasks/npm-install.d.ts +2 -0
  84. package/schematics/tasks/npm-install.js +16 -0
  85. package/schematics/tasks/npm-install.js.map +1 -0
  86. package/schematics/tasks/update-angular-json.d.ts +2 -0
  87. package/schematics/tasks/update-angular-json.js +43 -0
  88. package/schematics/tasks/update-angular-json.js.map +1 -0
  89. package/schematics/tasks/update-app-config.d.ts +2 -0
  90. package/schematics/tasks/update-app-config.js +50 -0
  91. package/schematics/tasks/update-app-config.js.map +1 -0
  92. package/schematics/tasks/update-app-routes.d.ts +3 -0
  93. package/schematics/tasks/update-app-routes.js +54 -0
  94. package/schematics/tasks/update-app-routes.js.map +1 -0
  95. package/schematics/tasks/update-library-component.d.ts +2 -0
  96. package/schematics/tasks/update-library-component.js +85 -0
  97. package/schematics/tasks/update-library-component.js.map +1 -0
  98. package/schematics/tasks/update-library-public-api.d.ts +2 -0
  99. package/schematics/tasks/update-library-public-api.js +25 -0
  100. package/schematics/tasks/update-library-public-api.js.map +1 -0
  101. package/schematics/tasks/update-library-tsconfig.d.ts +2 -0
  102. package/schematics/tasks/update-library-tsconfig.js +31 -0
  103. package/schematics/tasks/update-library-tsconfig.js.map +1 -0
  104. package/schematics/tasks/update-package-json.d.ts +2 -0
  105. package/schematics/tasks/update-package-json.js +25 -0
  106. package/schematics/tasks/update-package-json.js.map +1 -0
  107. package/schematics/utils.d.ts +2 -0
  108. package/schematics/utils.js +18 -0
  109. package/schematics/utils.js.map +1 -0
package/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # yuuvis client CLI
2
+
3
+ The yuuvis client CLI is a command-line interface tool that you can use to initialize and scaffold yuuvis MOMENTUM client applications directly from a command shell.
4
+
5
+ ## Prerequisites
6
+ Required are:
7
+ - Node.js 18 or later
8
+ - git
9
+
10
+ ## Install
11
+
12
+ Install the yuuvis client CLI globally:
13
+
14
+ ```bash
15
+ npm install -g @yuuvis/client-cli
16
+ ```
17
+
18
+ ## Usage
19
+
20
+
21
+ ```bash
22
+ yuv <command> <value> [options]
23
+ ```
24
+
25
+ ## Supported Commands
26
+
27
+ ### new
28
+
29
+ Creates a new yuuvis client project based on Angular Schematics. The created application is based upon the standalone API and uses `scss` for style files.
30
+
31
+ ```bash
32
+ yuv new <name> [options]
33
+ ```
34
+
35
+ `<name>`: The name of the project.
36
+
37
+ #### Options
38
+ - `--skip-git`: Do not initialize a git repository.
39
+ - `--skip-install`: Do not install dependency packages.
40
+ - `--skip-tests`: Do not generate `spec.ts` test files for the new project.
41
+
42
+
43
+ ### generate app
44
+
45
+ Creates an app in the current workspace. By default, the generated app contains both the UI and extension parts.
46
+
47
+ ```bash
48
+ yuv generate app <name> [options]
49
+ ```
50
+
51
+ `<name>`: The name of the app.
52
+
53
+ #### Options
54
+ - `--app-id`: The ID of the app.
55
+ - `--prefix`: A prefix to apply to generated selectors.
56
+ - `--route`: The route under which the app is registered in the client.
57
+ - `--skip-extension`: Do not create extension for the app.
@@ -0,0 +1,6 @@
1
+ import type { CommandBuilder, Options } from "yargs";
2
+ export declare const command: string;
3
+ export declare const aliases: string[];
4
+ export declare const desc: string;
5
+ export declare const builder: CommandBuilder<Options>;
6
+ export declare const handler: (argv: any) => Promise<void>;
@@ -0,0 +1,80 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.handler = exports.builder = exports.desc = exports.aliases = exports.command = void 0;
16
+ const inquirer_1 = __importDefault(require("inquirer"));
17
+ const child_process_1 = require("child_process");
18
+ const utils_1 = require("../../utils");
19
+ const options_generate_app_json_1 = __importDefault(require("../../options/options-generate-app.json"));
20
+ const utils_2 = require("../../../schematics/utils");
21
+ exports.command = "app <name>";
22
+ exports.aliases = ["a"];
23
+ exports.desc = "Generate a new yuuvis client app.";
24
+ const builder = (yargs) => {
25
+ return yargs.string("app").version(false).options(options_generate_app_json_1.default);
26
+ };
27
+ exports.builder = builder;
28
+ const handler = (argv) => __awaiter(void 0, void 0, void 0, function* () {
29
+ const [_namespace, _componentName, _shortName] = (0, utils_2.extractNamesFromPackageName)(argv.name);
30
+ /*
31
+ if (!argv.type) {
32
+ const response = await inquirer.prompt([{
33
+ type: 'list',
34
+ name: 'type',
35
+ message: 'What type should the app be?',
36
+ choices: ['ui', 'extension', 'both'],
37
+ default: 'both'
38
+ }]);
39
+ argv.type = response.type;
40
+ }
41
+ */
42
+ if (!argv.appId) {
43
+ const response = yield inquirer_1.default.prompt([
44
+ {
45
+ type: "input",
46
+ name: "appId",
47
+ default: `com.example.${_shortName}`,
48
+ message: "Specify the app ID:",
49
+ },
50
+ ]);
51
+ argv.appId = argv['app-id'] = response.appId;
52
+ }
53
+ const routeResponse = yield inquirer_1.default.prompt([
54
+ {
55
+ type: "input",
56
+ name: "route",
57
+ default: _shortName,
58
+ message: "Specify the route under which the app is registered in the client:",
59
+ },
60
+ ]);
61
+ argv.route = routeResponse.route;
62
+ if (!argv.prefix) {
63
+ const response = yield inquirer_1.default.prompt([
64
+ {
65
+ type: "input",
66
+ name: "prefix",
67
+ default: "lib",
68
+ message: "Specify the prefix to apply to generated selectors.:",
69
+ },
70
+ ]);
71
+ argv.prefix = response.prefix;
72
+ }
73
+ (0, child_process_1.execSync)(`${(0, utils_1.getSchematicsBin)()} @yuuvis/client-cli:generate-app ${(0, utils_1.serializeOptions)(argv)}`, {
74
+ cwd: process.cwd(),
75
+ stdio: "inherit",
76
+ });
77
+ console.log(`App '${argv.name}' created successfully!`);
78
+ });
79
+ exports.handler = handler;
80
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/cli/commands/generate/app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,wDAAgC;AAChC,iDAAyC;AACzC,uCAAiE;AACjE,wGAA8D;AAC9D,qDAAwE;AAE3D,QAAA,OAAO,GAAW,YAAY,CAAC;AAC/B,QAAA,OAAO,GAAa,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,GAAW,mCAAmC,CAAC;AAEzD,MAAM,OAAO,GAA4B,CAAC,KAAU,EAAE,EAAE;IAC7D,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,mCAAO,CAAC,CAAC;AAC7D,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB;AAEK,MAAM,OAAO,GAAG,CAAO,IAAS,EAAE,EAAE;IACzC,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC,GAAG,IAAA,mCAA2B,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAExF;;;;;;;;;;;QAWI;IAEJ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACrC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,eAAe,UAAU,EAAE;gBACpC,OAAO,EAAE,qBAAqB;aAC/B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC/C,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QAC1C;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,oEAAoE;SAC9E;KACF,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;IAEjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACrC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,sDAAsD;aAChE;SACF,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAA,wBAAQ,EAAC,GAAG,IAAA,wBAAgB,GAAE,oCAAoC,IAAA,wBAAgB,EAAC,IAAI,CAAC,EAAE,EAAE;QAC1F,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAC;AAC1D,CAAC,CAAA,CAAC;AAxDW,QAAA,OAAO,WAwDlB"}
@@ -0,0 +1,5 @@
1
+ export declare const command: string;
2
+ export declare const aliases: string[];
3
+ export declare const desc: string;
4
+ export declare const builder: (yargs: any) => any;
5
+ export declare const handler: (argv: any) => void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handler = exports.builder = exports.desc = exports.aliases = exports.command = void 0;
4
+ exports.command = 'generate';
5
+ exports.aliases = ['g'];
6
+ exports.desc = 'Generates and/or modifies files based on a schematic.';
7
+ const builder = (yargs) => {
8
+ return yargs.commandDir('generate');
9
+ };
10
+ exports.builder = builder;
11
+ const handler = (argv) => { };
12
+ exports.handler = handler;
13
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAW,UAAU,CAAC;AAC7B,QAAA,OAAO,GAAa,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,GAAW,uDAAuD,CAAC;AAE7E,MAAM,OAAO,GAAG,CAAC,KAAU,EAAE,EAAE;IAClC,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC,CAAA;AAFY,QAAA,OAAO,WAEnB;AAEM,MAAM,OAAO,GAAG,CAAC,IAAS,EAAE,EAAE,GAAE,CAAC,CAAA;AAA3B,QAAA,OAAO,WAAoB"}
@@ -0,0 +1,5 @@
1
+ import type { CommandBuilder, Options } from "yargs";
2
+ export declare const command: string;
3
+ export declare const desc: string;
4
+ export declare const builder: CommandBuilder<Options>;
5
+ export declare const handler: (argv: any) => Promise<void>;
@@ -0,0 +1,38 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.handler = exports.builder = exports.desc = exports.command = void 0;
16
+ const child_process_1 = require("child_process");
17
+ const utils_1 = require("../utils");
18
+ const options_new_json_1 = __importDefault(require("../options/options-new.json"));
19
+ //import { join } from 'path';
20
+ exports.command = "new <name>";
21
+ exports.desc = "Create new yuuvis client project";
22
+ const builder = (yargs) => {
23
+ return yargs
24
+ .string("new")
25
+ .version(false)
26
+ .options(options_new_json_1.default);
27
+ };
28
+ exports.builder = builder;
29
+ const handler = (argv) => __awaiter(void 0, void 0, void 0, function* () {
30
+ //const projectPath = join(process.cwd(), argv.name);
31
+ (0, child_process_1.execSync)(`${(0, utils_1.getSchematicsBin)()} @yuuvis/client-cli:new ${(0, utils_1.serializeOptions)(argv)}`, {
32
+ cwd: process.cwd(),
33
+ stdio: 'inherit'
34
+ });
35
+ console.log(`Project '${argv.name}' created successfully!`);
36
+ });
37
+ exports.handler = handler;
38
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,iDAAyC;AACzC,oCAA8D;AAC9D,mFAAiD;AACjD,8BAA8B;AAEjB,QAAA,OAAO,GAAW,YAAY,CAAC;AAC/B,QAAA,IAAI,GAAW,kCAAkC,CAAC;AAExD,MAAM,OAAO,GAA4B,CAAC,KAAU,EAAE,EAAE;IAC7D,OAAO,KAAK;SACT,MAAM,CAAC,KAAK,CAAC;SACb,OAAO,CAAC,KAAK,CAAC;SACd,OAAO,CAAC,0BAAO,CAAC,CAAC;AACtB,CAAC,CAAC;AALW,QAAA,OAAO,WAKlB;AAEK,MAAM,OAAO,GAAG,CAAO,IAAS,EAAE,EAAE;IACzC,qDAAqD;IACrD,IAAA,wBAAQ,EAAC,GAAG,IAAA,wBAAgB,GAAE,2BAA2B,IAAA,wBAAgB,EAAC,IAAI,CAAC,EAAE,EAAE;QACjF,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAC;AAC9D,CAAC,CAAA,CAAC;AARW,QAAA,OAAO,WAQlB"}
@@ -0,0 +1,18 @@
1
+ {
2
+ "skip-extension": {
3
+ "describe": "Do not generate extension code.",
4
+ "type": "boolean"
5
+ },
6
+ "app-id": {
7
+ "describe": "The ID of the app.",
8
+ "type": "string"
9
+ },
10
+ "route": {
11
+ "describe": "The route under which the app is registered in the client.",
12
+ "type": "string"
13
+ },
14
+ "prefix": {
15
+ "describe": "A prefix to apply to generated selectors.",
16
+ "type": "string"
17
+ }
18
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "skip-git": {
3
+ "type": "boolean",
4
+ "describe": "Do not initialize a Git repository in the new workspace. By default, a Git repository is initialized to help you track changes to your project."
5
+ },
6
+ "skip-install": {
7
+ "type": "boolean",
8
+ "describe": "Skip the automatic installation of packages. You will need to manually install the dependencies later."
9
+ },
10
+ "skip-tests": {
11
+ "type": "boolean",
12
+ "describe": "Skip the generation of unit test files `spec.ts`."
13
+ }
14
+ }
package/cli/utils.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export declare function getSchematicsBin(): string;
2
+ /**
3
+ * Serialize options array to a string
4
+ * @param options
5
+ * @returns
6
+ */
7
+ export declare function serializeOptions(options: any): string;
package/cli/utils.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSchematicsBin = getSchematicsBin;
4
+ exports.serializeOptions = serializeOptions;
5
+ const path_1 = require("path");
6
+ function getSchematicsBin() {
7
+ return (0, path_1.join)(__dirname, '../node_modules/.bin/schematics');
8
+ }
9
+ /**
10
+ * Serialize options array to a string
11
+ * @param options
12
+ * @returns
13
+ */
14
+ function serializeOptions(options) {
15
+ return Object.entries(options)
16
+ .filter(([key]) => key !== '_' && key !== '$0') // delete yargs internal keys
17
+ .filter(([key]) => key === key.toLowerCase()) // keep only lowercase keys
18
+ .map(([key, value]) => {
19
+ if (typeof value === 'boolean')
20
+ return `--${key}`; // keep boolean properties only if true
21
+ return `--${key}="${value}"`; // string properties strait forward
22
+ })
23
+ .join(' ');
24
+ }
25
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":";;AAEA,4CAEC;AAOD,4CASC;AApBD,+BAA4B;AAE5B,SAAgB,gBAAgB;IAC9B,OAAO,IAAA,WAAI,EAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,OAAY;IAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,6BAA6B;SAC1E,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAE,2BAA2B;SACzE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClB,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC,wCAAwC;QAC3F,OAAO,KAAK,GAAG,KAAK,KAAK,GAAG,CAAC,CAAC,mCAAmC;IACrE,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
package/cli/yuv.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/cli/yuv.js ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const yargs_1 = __importDefault(require("yargs"));
8
+ const helpers_1 = require("yargs/helpers");
9
+ (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
10
+ // Use the commands directory to scaffold.
11
+ .commandDir('commands')
12
+ // Enable strict mode.
13
+ .strict()
14
+ // Useful aliases.
15
+ .alias({ h: 'help' })
16
+ .argv;
17
+ //# sourceMappingURL=yuv.js.map
package/cli/yuv.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yuv.js","sourceRoot":"","sources":["../../src/cli/yuv.ts"],"names":[],"mappings":";;;;;;AAEA,kDAA0B;AAC1B,2CAAwC;AAExC,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,0CAA0C;KACzC,UAAU,CAAC,UAAU,CAAC;IACvB,sBAAsB;KACrB,MAAM,EAAE;IACT,kBAAkB;KACjB,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,IAAI,CAAC"}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@yuuvis/client-cli",
3
+ "version": "18.0.0",
4
+ "main": "index.js",
5
+ "schematics": "./schematics/factories/collection.json",
6
+ "bin": {
7
+ "yuv": "./cli/yuv.js"
8
+ },
9
+ "keywords": [],
10
+ "author": "",
11
+ "license": "ISC",
12
+ "description": "",
13
+ "dependencies": {
14
+ "@angular-devkit/core": "^19.2.0",
15
+ "@angular-devkit/schematics": "^19.2.0",
16
+ "@angular-devkit/schematics-cli": "^19.2.0",
17
+ "@schematics/angular": "^18.2.14",
18
+ "inquirer": "^12.4.3",
19
+ "typescript": "^5.5.4",
20
+ "yargs": "^17.7.2",
21
+ "zod": "^3.24.2"
22
+ }
23
+ }
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ declare const ManifestSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ title: z.ZodString;
5
+ ui: z.ZodOptional<z.ZodObject<{
6
+ path: z.ZodString;
7
+ icon: z.ZodString;
8
+ routes: z.ZodString;
9
+ }, "strip", z.ZodTypeAny, {
10
+ icon: string;
11
+ path: string;
12
+ routes: string;
13
+ }, {
14
+ icon: string;
15
+ path: string;
16
+ routes: string;
17
+ }>>;
18
+ extension: z.ZodOptional<z.ZodString>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ id: string;
21
+ title: string;
22
+ ui?: {
23
+ icon: string;
24
+ path: string;
25
+ routes: string;
26
+ } | undefined;
27
+ extension?: string | undefined;
28
+ }, {
29
+ id: string;
30
+ title: string;
31
+ ui?: {
32
+ icon: string;
33
+ path: string;
34
+ routes: string;
35
+ } | undefined;
36
+ extension?: string | undefined;
37
+ }>;
38
+ export type AppManifest = z.infer<typeof ManifestSchema>;
39
+ export declare function parseManifest(content: string): AppManifest;
40
+ export declare function writeManifest(filePath: string, manifest: AppManifest): void;
41
+ export {};
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseManifest = parseManifest;
7
+ exports.writeManifest = writeManifest;
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const zod_1 = require("zod");
10
+ const UiData = zod_1.z.object({
11
+ path: zod_1.z.string(),
12
+ icon: zod_1.z.string(),
13
+ routes: zod_1.z.string(),
14
+ });
15
+ const ManifestSchema = zod_1.z.object({
16
+ id: zod_1.z.string(),
17
+ title: zod_1.z.string(),
18
+ ui: UiData.optional(),
19
+ extension: zod_1.z.string().optional(),
20
+ });
21
+ function parseManifest(content) {
22
+ const jsonData = JSON.parse(content);
23
+ return ManifestSchema.parse(jsonData);
24
+ }
25
+ function writeManifest(filePath, manifest) {
26
+ try {
27
+ fs_1.default.writeFileSync(filePath, JSON.stringify(manifest, null, 2), "utf-8");
28
+ }
29
+ catch (error) {
30
+ throw new Error(`Error writing manifest file $: ${error}`);
31
+ }
32
+ }
33
+ //# sourceMappingURL=app-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-manifest.js","sourceRoot":"","sources":["../../src/schematics/app-manifest.ts"],"names":[],"mappings":";;;;;AAkBA,sCAGC;AAED,sCAMC;AA7BD,4CAAoB;AACpB,6BAAwB;AAExB,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC;IACtB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE;IACrB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAIH,SAAgB,aAAa,CAAC,OAAe;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,aAAa,CAAC,QAAgB,EAAE,QAAqB;IACnE,IAAI,CAAC;QACH,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const NG_SCHEMATICS_VERSION = "18";
2
+ export declare const NG_STYLE = "scss";
3
+ export declare const NG_STANDALONE = true;
4
+ export declare const APP_BASE_PATH = "projects";
5
+ export declare const APP_MANIFEST_FILE_NAME = "yuv-manifest.json";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APP_MANIFEST_FILE_NAME = exports.APP_BASE_PATH = exports.NG_STANDALONE = exports.NG_STYLE = exports.NG_SCHEMATICS_VERSION = void 0;
4
+ exports.NG_SCHEMATICS_VERSION = '18';
5
+ exports.NG_STYLE = 'scss';
6
+ exports.NG_STANDALONE = true;
7
+ exports.APP_BASE_PATH = 'projects';
8
+ exports.APP_MANIFEST_FILE_NAME = "yuv-manifest.json";
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/schematics/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,IAAI,CAAC;AAC7B,QAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,aAAa,GAAG,IAAI,CAAC;AACrB,QAAA,aAAa,GAAG,UAAU,CAAC;AAC3B,QAAA,sBAAsB,GAAG,mBAAmB,CAAC"}
@@ -0,0 +1,15 @@
1
+ {
2
+ "schematics": {
3
+ "new": {
4
+ "description": "Creates a new yuuvis client project",
5
+ "factory": "./new/index#newProject",
6
+ "schema": "./new/schema.json"
7
+ },
8
+ "generate-app": {
9
+ "description": "Generates a new yuuvis client app",
10
+ "factory": "./generate-app/index#generateApp",
11
+ "schema": "./generate-app/schema.json"
12
+
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,8 @@
1
+ import { Rule } from "@angular-devkit/schematics";
2
+ export interface LibraryMetadata {
3
+ libraryExists: boolean;
4
+ isUiAvailable: boolean;
5
+ isExtensionAvailable: boolean;
6
+ libraryRoot: string | null;
7
+ }
8
+ export declare function generateApp(options: any): Rule;
@@ -0,0 +1,117 @@
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.generateApp = generateApp;
13
+ const schematics_1 = require("@angular-devkit/schematics");
14
+ const utils_1 = require("../../utils");
15
+ const utility_1 = require("@schematics/angular/utility");
16
+ const generate_library_1 = require("../../tasks/generate-library");
17
+ const copy_ui_files_1 = require("../../tasks/copy-ui-files");
18
+ const update_library_component_1 = require("../../tasks/update-library-component");
19
+ const update_library_public_api_1 = require("../../tasks/update-library-public-api");
20
+ const create_update_manifest_1 = require("../../tasks/create-update-manifest");
21
+ const update_library_tsconfig_1 = require("../../tasks/update-library-tsconfig");
22
+ const update_app_routes_1 = require("../../tasks/update-app-routes");
23
+ const copy_extensions_files_1 = require("../../tasks/copy-extensions-files");
24
+ const update_app_config_1 = require("../../tasks/update-app-config");
25
+ function generateApp(options) {
26
+ return (tree, context) => __awaiter(this, void 0, void 0, function* () {
27
+ validateOptions(options);
28
+ const [_namespace, _componentName, _shortName] = (0, utils_1.extractNamesFromPackageName)(options.name);
29
+ options.namespace = _namespace;
30
+ options.componentName = _componentName;
31
+ options.shortName = _shortName;
32
+ const appManifest = createAppManifest(options.componentName, options.skipExtension, options.route, options.appId);
33
+ const libraryMetadata = yield inspectLibrary(tree, options.name);
34
+ options.libraryRoot = !!libraryMetadata.libraryRoot ? libraryMetadata.libraryRoot : (0, utils_1.getLibraryPathFromName)(options.name);
35
+ const rules = [
36
+ (0, generate_library_1.generateLibrary)(options),
37
+ (0, create_update_manifest_1.createOrUpdateManifest)(options, appManifest, libraryMetadata),
38
+ ...(0, copy_ui_files_1.copyUiFiles)(options),
39
+ (0, update_library_public_api_1.updateLibraryPublicApi)(options),
40
+ (0, update_library_tsconfig_1.updateLibraryTsConfig)(options),
41
+ (0, update_library_component_1.updateLibraryComponent)(options),
42
+ (0, update_app_routes_1.updateAppRoutes)(options, appManifest),
43
+ ];
44
+ if (!options.skipExtension) {
45
+ const importPath = `../../${options.libraryRoot}/extensions/src/lib/extensions.module`;
46
+ rules.push(...(0, copy_extensions_files_1.copyExtensionsFiles)(options));
47
+ rules.push((0, update_app_config_1.updateAppConfig)(options, appManifest.extension, importPath));
48
+ }
49
+ return (0, schematics_1.chain)(rules);
50
+ });
51
+ }
52
+ function inspectLibrary(tree, libraryName) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ let errorMessage = null;
55
+ const libMetadata = {
56
+ libraryExists: false,
57
+ isUiAvailable: false,
58
+ isExtensionAvailable: false,
59
+ libraryRoot: null
60
+ };
61
+ const workspace = yield (0, utility_1.readWorkspace)(tree);
62
+ libMetadata.libraryExists = workspace.projects.has(libraryName);
63
+ if (libMetadata.libraryExists) {
64
+ const project = workspace.projects.get(libraryName);
65
+ const libraryRoot = project.root;
66
+ if (!!libraryRoot) {
67
+ libMetadata.libraryRoot = libraryRoot;
68
+ const manifestPath = `${libraryRoot}/yuv-manifest.json`;
69
+ if (tree.exists(manifestPath)) {
70
+ const manifest = tree.readJson(manifestPath);
71
+ libMetadata.isUiAvailable = manifest.ui !== undefined;
72
+ libMetadata.isExtensionAvailable = manifest.extension !== undefined;
73
+ }
74
+ else {
75
+ // TODO: generate manifest file for legacy libs?
76
+ // errorMessage = `Manifest file not found for: ${libraryName}`;
77
+ console.log(`Manifest file not found for: ${libraryName}`);
78
+ }
79
+ }
80
+ else {
81
+ errorMessage = `Library root not found for: ${libraryName}`;
82
+ }
83
+ }
84
+ if (!!errorMessage) {
85
+ throw new Error(errorMessage);
86
+ }
87
+ return libMetadata;
88
+ });
89
+ }
90
+ function createAppManifest(componentName, skipExtension, route, appId) {
91
+ const manifest = {
92
+ id: `${appId}`,
93
+ title: `${schematics_1.strings.capitalize(componentName)} Title`,
94
+ };
95
+ manifest.ui = {
96
+ path: `${route}`,
97
+ icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3,3H21V21H3V3M5,5V19H19V5H5Z" /></svg>`,
98
+ routes: `${schematics_1.strings.classify(componentName)}Routes`,
99
+ };
100
+ if (!skipExtension) {
101
+ manifest.extension = `${schematics_1.strings.classify(componentName)}ExtensionsModule`;
102
+ }
103
+ return manifest;
104
+ }
105
+ function validateOptions(options) {
106
+ let errorMessage = null;
107
+ if (!options.name) {
108
+ errorMessage = `Option 'name' is required.`;
109
+ }
110
+ if (!options.appId) {
111
+ errorMessage = `Option 'appId' is required.`;
112
+ }
113
+ if (!!errorMessage) {
114
+ throw new Error(errorMessage);
115
+ }
116
+ }
117
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/schematics/factories/generate-app/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "new",
4
+ "title": "Generate App Schematic",
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "type": "string",
9
+ "description": "The name of the app",
10
+ "pattern": "^(@[a-z0-9-]+/[a-z][a-z0-9-]*|[a-z][a-z0-9-]*)$",
11
+ "$default": {
12
+ "$source": "argv",
13
+ "index": 0
14
+ }
15
+ },
16
+ "skipExtension": {
17
+ "type": "boolean",
18
+ "description": "Do not generate extension code.",
19
+ "default": false
20
+ },
21
+ "appId": {
22
+ "type": "string",
23
+ "description": "The ID of the app. Only letters, numbers, hyphens, dots, and underscores are allowed.",
24
+ "pattern": "^[a-zA-Z0-9_](?:[a-zA-Z0-9._-]*[a-zA-Z0-9_])?$"
25
+ },
26
+ "route": {
27
+ "type": "string",
28
+ "description": "The URL path where the app will be available to the client. Only letters, numbers, hyphens, underscores, and dots are allowed.",
29
+ "pattern": "^[a-zA-Z0-9\\-_\\.]+$"
30
+ },
31
+ "prefix": {
32
+ "type": "string",
33
+ "description": "A prefix to apply to generated selectors.",
34
+ "pattern": "^[a-z0-9]+$"
35
+ }
36
+ },
37
+ "required": ["name"]
38
+ }
39
+
@@ -0,0 +1,2 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ export declare function newProject(options: any): Rule;