@aligent/nx-appbuilder 0.2.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 (82) hide show
  1. package/README.md +203 -0
  2. package/generators.json +18 -0
  3. package/package.json +20 -0
  4. package/src/generators/app/files/base/.editorconfig.template +18 -0
  5. package/src/generators/app/files/base/.gitignore.template +9 -0
  6. package/src/generators/app/files/base/.nvmrc.template +1 -0
  7. package/src/generators/app/files/base/README.md.template +44 -0
  8. package/src/generators/app/files/base/app.config.yaml.template +77 -0
  9. package/src/generators/app/files/base/babel.actions.config.js.template +6 -0
  10. package/src/generators/app/files/base/eslint.config.mjs.template +8 -0
  11. package/src/generators/app/files/base/global-types/@adobe/ADOBE_TYPES.md.template +10 -0
  12. package/src/generators/app/files/base/global-types/@adobe/aio-sdk/aio-core-logging.d.ts.template +15 -0
  13. package/src/generators/app/files/base/global-types/@adobe/aio-sdk/aio-lib-core-config.d.ts.template +43 -0
  14. package/src/generators/app/files/base/hooks/check-action-types.sh.template +13 -0
  15. package/src/generators/app/files/base/prettier.config.mjs.template +3 -0
  16. package/src/generators/app/files/base/src/actions/tsconfig.json.template +8 -0
  17. package/src/generators/app/files/base/tests/tsconfig.json.template +13 -0
  18. package/src/generators/app/files/base/tsconfig.base.json.template +14 -0
  19. package/src/generators/app/files/base/tsconfig.json.template +3 -0
  20. package/src/generators/app/files/base/vitest.config.ts.template +19 -0
  21. package/src/generators/app/files/commerce-backend-ui/extension-manifest.json.template +8 -0
  22. package/src/generators/app/files/commerce-backend-ui/hooks/check-web-types.sh.template +11 -0
  23. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/actions/registration/index.ts.template +32 -0
  24. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/actions/tsconfig.json.template +8 -0
  25. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/actions/utils/http.ts.template +18 -0
  26. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/actions/utils/runtime.ts.template +47 -0
  27. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/actions/utils/utils.ts.template +187 -0
  28. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/ext.config.yaml.template +20 -0
  29. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/.gitignore.template +2 -0
  30. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/index.html.template +15 -0
  31. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/components/App.tsx.template +37 -0
  32. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/components/ExtensionRegistration.tsx.template +15 -0
  33. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/config.json.d.ts.template +4 -0
  34. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/constants/extension.ts.template +1 -0
  35. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/context/AdobeRuntimeContextProvider.tsx.template +65 -0
  36. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/context/PageContextProvider.tsx.template +78 -0
  37. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/hooks/useAppBuilderAction.ts.template +41 -0
  38. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/hooks/useLazyAppBuilderAction.ts.template +116 -0
  39. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/index.css.template +4 -0
  40. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/index.tsx.template +20 -0
  41. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/src/types/ActionName.ts.template +9 -0
  42. package/src/generators/app/files/commerce-backend-ui/src/commerce-backend-ui-1/web-src/tsconfig.json.template +14 -0
  43. package/src/generators/app/files/commerce-config/src/commerce-configuration-1/ext.config.yaml.template +37 -0
  44. package/src/generators/app/files/commerce-config/src/commerce-configuration-1/my-webpack-config.cjs.template +24 -0
  45. package/src/generators/app/files/commerce-extensibility/app.commerce.config.ts.template +138 -0
  46. package/src/generators/app/files/commerce-extensibility/install.yaml.template +17 -0
  47. package/src/generators/app/files/commerce-extensibility/src/commerce-extensibility-1/ext.config.yaml.template +25 -0
  48. package/src/generators/app/files/commerce-extensibility/src/commerce-extensibility-1/my-webpack-config.cjs.template +24 -0
  49. package/src/generators/app/files/events/global-types/@adobe/aio-sdk/aio-lib-events.d.ts.template +7 -0
  50. package/src/generators/app/files/events/src/actions/handle-sample-event.ts.template +35 -0
  51. package/src/generators/app/files/install-steps/scripts/install/sample-step.js.template +14 -0
  52. package/src/generators/app/files/rest-actions/src/actions/rest-sample.ts.template +30 -0
  53. package/src/generators/app/files/scheduled/src/actions/cron-sample.ts.template +23 -0
  54. package/src/generators/app/generator.d.ts +3 -0
  55. package/src/generators/app/generator.js +38 -0
  56. package/src/generators/app/lib/apply-feature-files.d.ts +9 -0
  57. package/src/generators/app/lib/apply-feature-files.js +76 -0
  58. package/src/generators/app/lib/compose-package-json.d.ts +3 -0
  59. package/src/generators/app/lib/compose-package-json.js +164 -0
  60. package/src/generators/app/lib/normalize-options.d.ts +3 -0
  61. package/src/generators/app/lib/normalize-options.js +67 -0
  62. package/src/generators/app/lib/template-package/package.json +31 -0
  63. package/src/generators/app/lib/update-root-package.d.ts +6 -0
  64. package/src/generators/app/lib/update-root-package.js +23 -0
  65. package/src/generators/app/lib/update-root-tsconfig.d.ts +8 -0
  66. package/src/generators/app/lib/update-root-tsconfig.js +24 -0
  67. package/src/generators/app/schema.d.ts +32 -0
  68. package/src/generators/app/schema.json +73 -0
  69. package/src/generators/preset/files/.gitignore.template +30 -0
  70. package/src/generators/preset/files/.npmrc.template +2 -0
  71. package/src/generators/preset/files/.nvmrc.template +1 -0
  72. package/src/generators/preset/files/README.md.template +38 -0
  73. package/src/generators/preset/files/tsconfig.json.template +6 -0
  74. package/src/generators/preset/nx-json.d.ts +4 -0
  75. package/src/generators/preset/nx-json.js +36 -0
  76. package/src/generators/preset/preset.d.ts +13 -0
  77. package/src/generators/preset/preset.js +113 -0
  78. package/src/generators/preset/schema.d.ts +4 -0
  79. package/src/generators/preset/schema.json +25 -0
  80. package/src/index.d.ts +2 -0
  81. package/src/index.js +19 -0
  82. package/tsconfig.lib.tsbuildinfo +1 -0
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.default = presetGenerator;
37
+ const devkit_1 = require("@nx/devkit");
38
+ const path = __importStar(require("path"));
39
+ const nx_json_1 = require("./nx-json");
40
+ const DEFAULT_NODE_VERSION = '24.0.1';
41
+ /**
42
+ * Preset generator invoked by `create-nx-workspace --preset=@aligent/nx-appbuilder`.
43
+ *
44
+ * Scaffolds the workspace shell — root package.json, nx.json, .npmrc, etc. —
45
+ * but does NOT scaffold any apps. Apps are added afterwards via the `app`
46
+ * generator (`npx nx g @aligent/nx-appbuilder:app <name>`).
47
+ *
48
+ * Name shape (kebab-case) and nodeVersion semver are enforced by the schema's
49
+ * `pattern` fields before this function runs.
50
+ */
51
+ async function presetGenerator(tree, options) {
52
+ const nodeVersion = options.nodeVersion ?? DEFAULT_NODE_VERSION;
53
+ const subs = {
54
+ ...options,
55
+ nodeVersion,
56
+ packageName: `@aligent/${options.name}`,
57
+ };
58
+ (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files'), '.', subs);
59
+ (0, devkit_1.updateNxJson)(tree, { ...nx_json_1.NX_JSON });
60
+ (0, devkit_1.writeJson)(tree, 'package.json', buildWorkspacePackageJson(options.name, nodeVersion));
61
+ await (0, devkit_1.formatFiles)(tree);
62
+ }
63
+ /**
64
+ * Build the workspace package.json. Includes `@aligent/nx-appbuilder` in
65
+ * devDependencies so the lockfile written by create-nx-workspace stays in sync
66
+ * with what the preset declares — otherwise npm fails the post-preset install
67
+ * with an arborist "must provide string spec" error.
68
+ */
69
+ function buildWorkspacePackageJson(name, nodeVersion) {
70
+ const major = nodeVersion.split('.')[0];
71
+ return {
72
+ name: `@aligent/${name}`,
73
+ version: '0.0.0',
74
+ author: 'Aligent Consulting',
75
+ private: true,
76
+ engines: { node: `>=${major}` },
77
+ scripts: {
78
+ lint: 'nx affected -t lint',
79
+ 'lint:all': 'nx run-many -t lint',
80
+ 'check-types': 'nx affected -t check-types',
81
+ 'check-types:all': 'nx run-many -t check-types',
82
+ test: 'nx affected -t test',
83
+ 'test:all': 'nx run-many -t test',
84
+ build: 'nx affected -t build',
85
+ 'build:all': 'nx run-many -t build',
86
+ },
87
+ workspaces: [],
88
+ devDependencies: {
89
+ '@aligent/nx-appbuilder': getGeneratorVersion(),
90
+ // Resolved by the workspace's tsconfig.json's `extends` line and
91
+ // by every generated app's tsconfig chain. Pinned at the workspace
92
+ // root so all apps share one resolution.
93
+ '@aligent/ts-code-standards': '^4.2.0',
94
+ // The @nx plugin packages need to be installed at the workspace
95
+ // root so the plugins declared in nx.json can actually load.
96
+ '@nx/eslint': '^22.4.5',
97
+ '@nx/js': '^22.4.5',
98
+ '@nx/vitest': '^22.4.5',
99
+ eslint: '^9.0.0',
100
+ nx: '^22.4.5',
101
+ typescript: '^5.8.3',
102
+ vitest: '^2.1.8',
103
+ },
104
+ };
105
+ }
106
+ function getGeneratorVersion() {
107
+ const packagePath = path.join(__dirname, '../../../package.json');
108
+ const packageJson = (0, devkit_1.readJsonFile)(packagePath);
109
+ if (typeof packageJson.version !== 'string') {
110
+ throw new Error(`Unable to read generator version from ${packagePath}`);
111
+ }
112
+ return packageJson.version;
113
+ }
@@ -0,0 +1,4 @@
1
+ export interface PresetGeneratorSchema {
2
+ name: string;
3
+ nodeVersion?: string;
4
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "AligentAppBuilderPreset",
4
+ "title": "Aligent AppBuilder workspace",
5
+ "description": "Scaffolds a new Aligent AppBuilder monorepo (workspace shell only — apps are added via the `app` generator).",
6
+ "type": "object",
7
+ "properties": {
8
+ "name": {
9
+ "type": "string",
10
+ "description": "Workspace name (kebab-case). Used as the @aligent/<name> npm package name and the workspace directory name.",
11
+ "$default": { "$source": "argv", "index": 0 },
12
+ "x-prompt": "What is the workspace name? (kebab-case, e.g. 'acme-apps')",
13
+ "pattern": "^[a-z][a-z0-9-]*$"
14
+ },
15
+ "nodeVersion": {
16
+ "type": "string",
17
+ "description": "Target Node.js version pinned in .nvmrc and used as the lower bound of engines.node (e.g. 22.18.0).",
18
+ "default": "24.0.1",
19
+ "x-prompt": "What is the target Node.js version?",
20
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
21
+ "patternErrorMessage": "Node.js version must be a valid semver, e.g. 22.18.0 or 24.0.1"
22
+ }
23
+ },
24
+ "required": ["name"]
25
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './generators/app/generator';
2
+ export * from './generators/preset/preset';
package/src/index.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /* v8 ignore next 2 */
18
+ __exportStar(require("./generators/app/generator"), exports);
19
+ __exportStar(require("./generators/preset/preset"), exports);
@@ -0,0 +1 @@
1
+ {"version":"5.9.3"}