@ldsg/cli 0.3.43 → 0.3.44

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 (133) hide show
  1. package/.rush/temp/package-deps_build.json +15 -18
  2. package/.rush/temp/shrinkwrap-deps.json +1 -1
  3. package/.tsbuildinfo +1 -1
  4. package/CHANGELOG.json +23 -0
  5. package/CHANGELOG.md +8 -1
  6. package/README.md +3 -3
  7. package/dist/__tests__/bootstrap-generator.test.js +120 -0
  8. package/dist/__tests__/bootstrap-generator.test.js.map +1 -0
  9. package/dist/__tests__/generate-bootstrap.test.d.ts +1 -0
  10. package/dist/__tests__/generate-bootstrap.test.js +97 -0
  11. package/dist/__tests__/generate-bootstrap.test.js.map +1 -0
  12. package/dist/__tests__/resolve-module-builder.test.d.ts +1 -0
  13. package/dist/__tests__/resolve-module-builder.test.js +83 -0
  14. package/dist/__tests__/resolve-module-builder.test.js.map +1 -0
  15. package/dist/__tests__/resolve-root.test.d.ts +1 -0
  16. package/dist/__tests__/resolve-root.test.js +32 -0
  17. package/dist/__tests__/resolve-root.test.js.map +1 -0
  18. package/dist/cli.js +4 -431
  19. package/dist/cli.js.map +1 -1
  20. package/dist/commands/generate/index.d.ts +2 -0
  21. package/dist/commands/generate/index.js +35 -0
  22. package/dist/commands/generate/index.js.map +1 -0
  23. package/dist/commands/generate/types/generate.d.ts +12 -0
  24. package/dist/commands/generate/types/generate.js +3 -0
  25. package/dist/commands/generate/types/generate.js.map +1 -0
  26. package/dist/commands/generate/types/generator.d.ts +4 -0
  27. package/dist/commands/generate/types/generator.js +3 -0
  28. package/dist/commands/generate/types/generator.js.map +1 -0
  29. package/dist/commands/generate/types/index.d.ts +2 -0
  30. package/dist/commands/generate/types/index.js +19 -0
  31. package/dist/commands/generate/types/index.js.map +1 -0
  32. package/dist/commands/generate/types.d.ts +8 -0
  33. package/dist/{types/get-extend-app-data-params.js → commands/generate/types.js} +1 -1
  34. package/dist/commands/generate/types.js.map +1 -0
  35. package/dist/commands/generate/utils/generate-application/index.d.ts +6 -0
  36. package/dist/commands/generate/utils/generate-application/index.js +28 -0
  37. package/dist/commands/generate/utils/generate-application/index.js.map +1 -0
  38. package/dist/commands/generate/utils/generate-application/types/generator.d.ts +9 -0
  39. package/dist/commands/generate/utils/generate-application/types/generator.js +3 -0
  40. package/dist/commands/generate/utils/generate-application/types/generator.js.map +1 -0
  41. package/dist/commands/generate/utils/generate-application/types/index.d.ts +1 -0
  42. package/dist/commands/generate/utils/generate-application/types/index.js +18 -0
  43. package/dist/commands/generate/utils/generate-application/types/index.js.map +1 -0
  44. package/dist/commands/generate/utils/generate-application/utils/build-app-generator/index.d.ts +9 -0
  45. package/dist/commands/generate/utils/generate-application/utils/build-app-generator/index.js +30 -0
  46. package/dist/commands/generate/utils/generate-application/utils/build-app-generator/index.js.map +1 -0
  47. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/index.d.ts +13 -0
  48. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/index.js +125 -0
  49. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/index.js.map +1 -0
  50. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/constants.d.ts +3 -0
  51. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/constants.js +7 -0
  52. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/constants.js.map +1 -0
  53. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/index.d.ts +4 -0
  54. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/index.js +69 -0
  55. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/index.js.map +1 -0
  56. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/prepare-bootstrap-app-files.d.ts +3 -0
  57. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/prepare-bootstrap-app-files.js +32 -0
  58. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/prepare-bootstrap-app-files.js.map +1 -0
  59. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/render-bootstrap-entry.d.ts +2 -0
  60. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/render-bootstrap-entry.js +62 -0
  61. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/render-bootstrap-entry.js.map +1 -0
  62. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/resolve-dependencies.d.ts +11 -0
  63. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/resolve-dependencies.js +84 -0
  64. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/resolve-dependencies.js.map +1 -0
  65. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/get-resource-record-by-id.d.ts +2 -0
  66. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/get-resource-record-by-id.js +15 -0
  67. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/get-resource-record-by-id.js.map +1 -0
  68. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/resolve-resource-definition-resource-record.d.ts +2 -0
  69. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/resolve-resource-definition-resource-record.js +21 -0
  70. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/resolve-resource-definition-resource-record.js.map +1 -0
  71. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/resolve-root-resource-record.d.ts +2 -0
  72. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/resolve-root-resource-record.js +18 -0
  73. package/dist/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/resolve-root-resource-record.js.map +1 -0
  74. package/dist/commands/generate/utils/generate-application/utils/build-meta-generator/index.d.ts +8 -0
  75. package/dist/commands/generate/utils/generate-application/utils/build-meta-generator/index.js +32 -0
  76. package/dist/commands/generate/utils/generate-application/utils/build-meta-generator/index.js.map +1 -0
  77. package/dist/commands/generate/utils/generate-application/utils/generate-app/index.d.ts +8 -0
  78. package/dist/commands/generate/utils/generate-application/utils/generate-app/index.js +10 -0
  79. package/dist/commands/generate/utils/generate-application/utils/generate-app/index.js.map +1 -0
  80. package/dist/commands/generate/utils/generate-application/utils/index.d.ts +3 -0
  81. package/dist/commands/generate/utils/generate-application/utils/index.js +20 -0
  82. package/dist/commands/generate/utils/generate-application/utils/index.js.map +1 -0
  83. package/dist/commands/generate/utils/parse-extra-options.d.ts +5 -0
  84. package/dist/commands/generate/utils/parse-extra-options.js +59 -0
  85. package/dist/commands/generate/utils/parse-extra-options.js.map +1 -0
  86. package/dist/commands/resource/index.d.ts +2 -0
  87. package/dist/commands/resource/index.js +392 -0
  88. package/dist/commands/resource/index.js.map +1 -0
  89. package/dist/generator/bootstrap-generator.d.ts +19 -0
  90. package/dist/generator/bootstrap-generator.js +59 -0
  91. package/dist/generator/bootstrap-generator.js.map +1 -0
  92. package/dist/generator/module-builder.d.ts +2 -0
  93. package/dist/generator/module-builder.js +284 -0
  94. package/dist/generator/module-builder.js.map +1 -0
  95. package/dist/generator/resolve-module-builder.d.ts +8 -0
  96. package/dist/generator/resolve-module-builder.js +41 -0
  97. package/dist/generator/resolve-module-builder.js.map +1 -0
  98. package/dist/generator/resolve-root.d.ts +5 -0
  99. package/dist/generator/resolve-root.js +48 -0
  100. package/dist/generator/resolve-root.js.map +1 -0
  101. package/jest.config.js +4 -1
  102. package/package.json +5 -5
  103. package/src/cli.ts +4 -510
  104. package/src/commands/generate/index.ts +54 -0
  105. package/src/commands/generate/utils/generate-application/index.ts +50 -0
  106. package/src/commands/generate/utils/generate-application/utils/build-app-generator/index.ts +39 -0
  107. package/src/commands/generate/utils/generate-application/utils/build-meta-generator/index.ts +45 -0
  108. package/src/commands/generate/utils/generate-application/utils/generate-app/index.ts +17 -0
  109. package/src/commands/generate/utils/generate-application/utils/index.ts +3 -0
  110. package/src/commands/generate/utils/parse-extra-options.ts +80 -0
  111. package/src/commands/resource/index.ts +455 -0
  112. package/dist/__tests__/get-extend-app-data-params-using-workspace-ldsg-module.test.js +0 -81
  113. package/dist/__tests__/get-extend-app-data-params-using-workspace-ldsg-module.test.js.map +0 -1
  114. package/dist/types/get-extend-app-data-params.d.ts +0 -10
  115. package/dist/types/get-extend-app-data-params.js.map +0 -1
  116. package/dist/utils/get-extend-app-data-params-using-npm-ldsg-module.d.ts +0 -2
  117. package/dist/utils/get-extend-app-data-params-using-npm-ldsg-module.js +0 -27
  118. package/dist/utils/get-extend-app-data-params-using-npm-ldsg-module.js.map +0 -1
  119. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.d.ts +0 -2
  120. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.js +0 -98
  121. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.js.map +0 -1
  122. package/src/__tests__/add-pnpm-overrides.test.ts +0 -91
  123. package/src/__tests__/commands.test.ts +0 -318
  124. package/src/__tests__/formatter.test.ts +0 -151
  125. package/src/__tests__/generate-app-index-ts.test.ts +0 -141
  126. package/src/__tests__/get-extend-app-data-params-using-workspace-ldsg-module.test.ts +0 -109
  127. package/src/__tests__/json-file-mutator.test.ts +0 -186
  128. package/src/__tests__/mutate.test.ts +0 -392
  129. package/src/__tests__/source-resolver.test.ts +0 -125
  130. package/src/types/get-extend-app-data-params.ts +0 -13
  131. package/src/utils/get-extend-app-data-params-using-npm-ldsg-module.ts +0 -34
  132. package/src/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.ts +0 -159
  133. /package/dist/__tests__/{get-extend-app-data-params-using-workspace-ldsg-module.test.d.ts → bootstrap-generator.test.d.ts} +0 -0
@@ -0,0 +1,9 @@
1
+ import { GenerateParams } from "../../../types";
2
+ export interface GeneratorGenerateParams extends GenerateParams {
3
+ }
4
+ export interface GeneratorGenerateRes {
5
+ }
6
+ export type GeneratorGenerate = (params: GeneratorGenerateParams) => Promise<GeneratorGenerateRes>;
7
+ export interface Generator {
8
+ generate: GeneratorGenerate;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../src/commands/generate/utils/generate-application/types/generator.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export * from './generator';
@@ -0,0 +1,18 @@
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
+ __exportStar(require("./generator"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/generate/utils/generate-application/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B"}
@@ -0,0 +1,9 @@
1
+ import { GenerateParams, Generator } from "@ldsg/types";
2
+ export interface BuildAppGeneratorParams extends GenerateParams {
3
+ metaGenerator: Generator;
4
+ }
5
+ export interface BuildAppGeneratorRes {
6
+ appGenerator: Generator;
7
+ }
8
+ export type BuildAppGenerator = (params: BuildAppGeneratorParams) => Promise<BuildAppGeneratorRes>;
9
+ export declare const buildAppGenerator: BuildAppGenerator;
@@ -0,0 +1,30 @@
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.buildAppGenerator = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const node_os_1 = __importDefault(require("node:os"));
9
+ const utils_1 = require("@ldsg/utils");
10
+ const buildAppGenerator = async (params) => {
11
+ const { metaGenerator, ...restParams } = params;
12
+ const { archive } = await metaGenerator.generate(restParams);
13
+ const outputPath = node_path_1.default.join(node_os_1.default.homedir(), ".ldsg", "app-generator");
14
+ (0, utils_1.extractZipToFolder)({
15
+ archive,
16
+ outputPath,
17
+ });
18
+ const res = {
19
+ appGenerator: {
20
+ generate: async () => {
21
+ return {
22
+ archive,
23
+ };
24
+ },
25
+ },
26
+ };
27
+ return res;
28
+ };
29
+ exports.buildAppGenerator = buildAppGenerator;
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/commands/generate/utils/generate-application/utils/build-app-generator/index.ts"],"names":[],"mappings":";;;;;;AACA,0DAA6B;AAC7B,sDAAyB;AACzB,uCAAiD;AAY1C,MAAM,iBAAiB,GAAsB,KAAK,EAAE,MAAM,EAAE,EAAE;IACnE,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;IAEhD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAErE,IAAA,0BAAkB,EAAC;QACjB,OAAO;QACP,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,GAAG,GAAyB;QAChC,YAAY,EAAE;YACZ,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,OAAO;oBACL,OAAO;iBACR,CAAC;YACJ,CAAC;SACF;KACF,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAvBW,QAAA,iBAAiB,qBAuB5B"}
@@ -0,0 +1,13 @@
1
+ import type { GenerateRes } from "@ldsg/generator-app";
2
+ import type { ResourceRecord } from "@ldsg/types";
3
+ import type { GeneratorOptions } from "../../../../types";
4
+ export interface BootstrapModule {
5
+ generateApplication: (params: GeneratorOptions) => Promise<GenerateRes>;
6
+ }
7
+ export interface BuildBootstrapRes {
8
+ bootstrap: BootstrapModule;
9
+ }
10
+ type BuildBootstrap = (params: GeneratorOptions) => Promise<BuildBootstrapRes>;
11
+ export declare const createBootstrapResourceRecords: (resourceRecords: ResourceRecord[]) => ResourceRecord[];
12
+ export declare const buildBootstrap: BuildBootstrap;
13
+ export {};
@@ -0,0 +1,125 @@
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.buildBootstrap = exports.createBootstrapResourceRecords = void 0;
7
+ const node_child_process_1 = require("node:child_process");
8
+ const node_os_1 = __importDefault(require("node:os"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const node_url_1 = require("node:url");
11
+ const generate_bootstrap_1 = require("./utils/generate-bootstrap");
12
+ const constants_1 = require("./utils/generate-bootstrap/constants");
13
+ const get_resource_record_by_id_1 = require("./utils/resource-record/get-resource-record-by-id");
14
+ const resolve_resource_definition_resource_record_1 = require("./utils/resource-record/resolve-resource-definition-resource-record");
15
+ const resolve_root_resource_record_1 = require("./utils/resource-record/resolve-root-resource-record");
16
+ const BOOTSTRAP_ENTRY = "dist/index.js";
17
+ const runCommand = (command, args, cwd) => new Promise((resolve, reject) => {
18
+ const child = (0, node_child_process_1.spawn)(command, args, {
19
+ cwd,
20
+ shell: false,
21
+ stdio: ["ignore", "pipe", "pipe"],
22
+ });
23
+ let output = "";
24
+ child.stdout?.on("data", (chunk) => {
25
+ output += chunk.toString();
26
+ });
27
+ child.stderr?.on("data", (chunk) => {
28
+ output += chunk.toString();
29
+ });
30
+ child.on("error", reject);
31
+ child.on("close", (code) => {
32
+ if (code === 0) {
33
+ resolve();
34
+ return;
35
+ }
36
+ reject(new Error(`command failed with exit code ${code}: ${command} ${args.join(" ")}\n${output.slice(-4000)}`));
37
+ });
38
+ });
39
+ const installAndBuildBootstrap = async (bootstrapOutputPath) => {
40
+ await runCommand("pnpm", ["install"], bootstrapOutputPath);
41
+ await runCommand("pnpm", ["run", "build"], bootstrapOutputPath);
42
+ return node_path_1.default.join(bootstrapOutputPath, BOOTSTRAP_ENTRY);
43
+ };
44
+ const loadBootstrapModule = (entryPath) => {
45
+ const moduleUrl = (0, node_url_1.pathToFileURL)(entryPath).href;
46
+ return new Function("moduleUrl", "return import(moduleUrl)")(moduleUrl);
47
+ };
48
+ const createBootstrapResourceRecords = (resourceRecords) => {
49
+ const rootResourceRecord = (0, resolve_root_resource_record_1.resolveRootResourceRecord)(resourceRecords);
50
+ const rootResourceDefinitionResourceRecord = (0, resolve_resource_definition_resource_record_1.resolveResourceDefinitionResourceRecord)(resourceRecords, rootResourceRecord.id, rootResourceRecord.kind);
51
+ const rootGeneratorResourceId = rootResourceDefinitionResourceRecord.settings.generatorResourceId;
52
+ if (!rootGeneratorResourceId) {
53
+ throw new Error("root generator resource id is missing");
54
+ }
55
+ (0, get_resource_record_by_id_1.getResourceRecordById)(resourceRecords, rootGeneratorResourceId, "root generator");
56
+ const bootstrapRootResourceRecord = {
57
+ ...rootResourceRecord,
58
+ kind: "bootstrap",
59
+ settings: {
60
+ ...rootResourceRecord.settings,
61
+ [constants_1.BOOTSTRAP_ORIGINAL_KIND_SETTINGS_KEY]: rootResourceRecord.kind,
62
+ },
63
+ };
64
+ const bootstrapResourceDefinitionResourceRecord = {
65
+ id: constants_1.BOOTSTRAP_RESOURCE_DEFINITION_ID,
66
+ kind: "resource_definition",
67
+ parentId: rootResourceRecord.id,
68
+ settings: {
69
+ kind: "bootstrap",
70
+ slug: "resource-definition",
71
+ title: "Bootstrap 资源定义",
72
+ description: "生成独立应用的引导程序资源定义",
73
+ handlerResourceId: constants_1.BOOTSTRAP_HANDLER_ID,
74
+ generatorResourceId: rootGeneratorResourceId,
75
+ },
76
+ };
77
+ const bootstrapHandlerResourceRecord = {
78
+ id: constants_1.BOOTSTRAP_HANDLER_ID,
79
+ kind: "handler",
80
+ parentId: constants_1.BOOTSTRAP_RESOURCE_DEFINITION_ID,
81
+ settings: {
82
+ slug: "handler",
83
+ title: "Bootstrap 处理程序",
84
+ description: "从资源记录生成独立应用",
85
+ code: 'export * from "@ldsg/generator-app";',
86
+ dependencies: [{ name: "@ldsg/generator-app", version: "workspace:*" }],
87
+ },
88
+ };
89
+ const bootstrapResourceRecordIds = new Set([
90
+ constants_1.BOOTSTRAP_RESOURCE_DEFINITION_ID,
91
+ constants_1.BOOTSTRAP_HANDLER_ID,
92
+ ]);
93
+ const appResourceRecords = resourceRecords.filter((resourceRecord) => resourceRecord.id !== rootResourceRecord.id &&
94
+ !bootstrapResourceRecordIds.has(resourceRecord.id));
95
+ return [
96
+ bootstrapRootResourceRecord,
97
+ ...appResourceRecords,
98
+ bootstrapResourceDefinitionResourceRecord,
99
+ bootstrapHandlerResourceRecord,
100
+ ];
101
+ };
102
+ exports.createBootstrapResourceRecords = createBootstrapResourceRecords;
103
+ const buildBootstrap = async (params) => {
104
+ const { data, extraOptions } = params;
105
+ const bootstrapResourceRecords = (0, exports.createBootstrapResourceRecords)(data.resourceRecords);
106
+ const bootstrapOutputPath = node_path_1.default.join(node_os_1.default.homedir(), ".ldsg", "apps", "bootstrap");
107
+ await (0, generate_bootstrap_1.generateBootstrap)({
108
+ data: {
109
+ resourceRecords: bootstrapResourceRecords,
110
+ },
111
+ outputPath: bootstrapOutputPath,
112
+ isZip: false,
113
+ extraOptions,
114
+ });
115
+ const bootstrapEntryPath = await installAndBuildBootstrap(bootstrapOutputPath);
116
+ const bootstrap = await loadBootstrapModule(bootstrapEntryPath);
117
+ if (typeof bootstrap.generateApplication !== "function") {
118
+ throw new Error(`bootstrap module must export generateApplication: ${bootstrapEntryPath}`);
119
+ }
120
+ return {
121
+ bootstrap,
122
+ };
123
+ };
124
+ exports.buildBootstrap = buildBootstrap;
125
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/commands/generate/utils/generate-application/utils/build-bootstrap/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const BOOTSTRAP_ORIGINAL_KIND_SETTINGS_KEY = "originalKind";
2
+ export declare const BOOTSTRAP_RESOURCE_DEFINITION_ID = "bootstrap-resource-definition";
3
+ export declare const BOOTSTRAP_HANDLER_ID = "bootstrap-resource-handler";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BOOTSTRAP_HANDLER_ID = exports.BOOTSTRAP_RESOURCE_DEFINITION_ID = exports.BOOTSTRAP_ORIGINAL_KIND_SETTINGS_KEY = void 0;
4
+ exports.BOOTSTRAP_ORIGINAL_KIND_SETTINGS_KEY = "originalKind";
5
+ exports.BOOTSTRAP_RESOURCE_DEFINITION_ID = "bootstrap-resource-definition";
6
+ exports.BOOTSTRAP_HANDLER_ID = "bootstrap-resource-handler";
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../../../../src/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/constants.ts"],"names":[],"mappings":";;;AAGa,QAAA,oCAAoC,GAAG,cAAc,CAAC;AAKtD,QAAA,gCAAgC,GAAG,+BAA+B,CAAC;AAKnE,QAAA,oBAAoB,GAAG,4BAA4B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GeneratorOptions } from "../../../../../../types";
2
+ type GenerateBootstrap = (params: GeneratorOptions) => Promise<void>;
3
+ export declare const generateBootstrap: GenerateBootstrap;
4
+ export {};
@@ -0,0 +1,69 @@
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.generateBootstrap = void 0;
7
+ const handler_template_constants_1 = require("@ldsg/handler-template-constants");
8
+ const utils_1 = require("@ldsg/utils");
9
+ const fs_extra_1 = __importDefault(require("fs-extra"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const prepare_bootstrap_app_files_1 = require("./prepare-bootstrap-app-files");
12
+ const render_bootstrap_entry_1 = require("./render-bootstrap-entry");
13
+ const resolve_dependencies_1 = require("./resolve-dependencies");
14
+ const BOOTSTRAP_KIND = "bootstrap";
15
+ const assertBootstrapResourceRecords = (resourceRecords) => {
16
+ const rootResourceRecords = resourceRecords.filter((resourceRecord) => !resourceRecord.parentId);
17
+ if (rootResourceRecords.length !== 1) {
18
+ throw new Error(`bootstrap must have exactly one root resource, got ${rootResourceRecords.length}`);
19
+ }
20
+ if (rootResourceRecords[0].kind !== BOOTSTRAP_KIND) {
21
+ throw new Error(`bootstrap root resource kind must be ${BOOTSTRAP_KIND}`);
22
+ }
23
+ const bootstrapResourceDefinition = resourceRecords.find((resourceRecord) => resourceRecord.kind === "resource_definition" &&
24
+ resourceRecord.settings.kind === BOOTSTRAP_KIND);
25
+ if (!bootstrapResourceDefinition) {
26
+ throw new Error(`bootstrap resource definition not found: ${BOOTSTRAP_KIND}`);
27
+ }
28
+ const bootstrapHandlerResourceRecord = resourceRecords.find((resourceRecord) => resourceRecord.id === bootstrapResourceDefinition.settings.handlerResourceId);
29
+ if (!bootstrapHandlerResourceRecord) {
30
+ throw new Error(`bootstrap handler not found: ${bootstrapResourceDefinition.settings.handlerResourceId}`);
31
+ }
32
+ for (const resourceRecord of resourceRecords) {
33
+ if (resourceRecord.kind !== "handler") {
34
+ continue;
35
+ }
36
+ if (typeof resourceRecord.settings.code !== "string" || !resourceRecord.settings.code.trim()) {
37
+ throw new Error(`handler code is missing: ${resourceRecord.id}`);
38
+ }
39
+ }
40
+ };
41
+ const generateBootstrap = async (params) => {
42
+ const { data, outputPath, isZip, extraOptions } = params;
43
+ const { resourceRecords } = data;
44
+ assertBootstrapResourceRecords(resourceRecords);
45
+ const mode = extraOptions?.["using-workspace-ldsg-module"] ? "workspace" : "npm";
46
+ const dependencyResolver = await (0, resolve_dependencies_1.createDependencyResolver)({
47
+ mode,
48
+ cwd: process.cwd(),
49
+ });
50
+ const normalizedResourceRecords = await (0, resolve_dependencies_1.normalizeResourceRecordsDependencies)(resourceRecords, dependencyResolver);
51
+ const filesInAppModele = await (0, prepare_bootstrap_app_files_1.prepareBootstrapAppFiles)(dependencyResolver);
52
+ const handlerResourceRecords = normalizedResourceRecords.filter((resourceRecord) => resourceRecord.kind === "handler");
53
+ const { archive } = await (0, utils_1.zipAppData)({
54
+ resourceRecords: normalizedResourceRecords,
55
+ filesInAppModele,
56
+ filesInHandlerModele: handler_template_constants_1.FILES_IN_HANDLER_MODULE_TEMPLATE,
57
+ appEntryTs: (0, render_bootstrap_entry_1.renderBootstrapEntry)(handlerResourceRecords),
58
+ layout: utils_1.ZipAppDataLayout.NESTED,
59
+ type: "nodebuffer",
60
+ });
61
+ if (isZip) {
62
+ await fs_extra_1.default.outputFile(node_path_1.default.join(outputPath, "bootstrap.zip"), archive);
63
+ return;
64
+ }
65
+ await fs_extra_1.default.emptyDir(outputPath);
66
+ (0, utils_1.extractZipToFolder)({ archive, outputPath });
67
+ };
68
+ exports.generateBootstrap = generateBootstrap;
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../src/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AppDataFile } from "@ldsg/types";
2
+ import type { DependencyResolver } from "./resolve-dependencies";
3
+ export declare const prepareBootstrapAppFiles: (resolver: DependencyResolver) => Promise<AppDataFile[]>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareBootstrapAppFiles = void 0;
4
+ const express_app_template_constants_1 = require("@ldsg/express-app-template-constants");
5
+ const cloneFiles = (files) => JSON.parse(JSON.stringify(files));
6
+ const prepareBootstrapAppFiles = async (resolver) => {
7
+ const files = cloneFiles(express_app_template_constants_1.FILES_IN_APP_MODULE_TEMPLATE);
8
+ const packageJsonFile = files.find((file) => file.path === "package.json");
9
+ if (!packageJsonFile || typeof packageJsonFile.data !== "object") {
10
+ throw new Error("bootstrap app package.json not found");
11
+ }
12
+ const createGeneratorAppVersion = await resolver.resolve({
13
+ name: "@ldsg/create-generator-app",
14
+ version: "workspace:*",
15
+ });
16
+ const templatePackageJson = packageJsonFile.data;
17
+ const scripts = templatePackageJson.scripts;
18
+ if (scripts) {
19
+ delete scripts["start:telemetry"];
20
+ }
21
+ packageJsonFile.data = {
22
+ ...templatePackageJson,
23
+ name: "ldsg-bootstrap",
24
+ version: "0.0.0",
25
+ dependencies: {
26
+ "@ldsg/create-generator-app": createGeneratorAppVersion,
27
+ },
28
+ };
29
+ return files;
30
+ };
31
+ exports.prepareBootstrapAppFiles = prepareBootstrapAppFiles;
32
+ //# sourceMappingURL=prepare-bootstrap-app-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-bootstrap-app-files.js","sourceRoot":"","sources":["../../../../../../../../../src/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/prepare-bootstrap-app-files.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AAIpF,MAAM,UAAU,GAAG,CAAC,KAAoB,EAAiB,EAAE,CACzD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAkB,CAAC;AAM9C,MAAM,wBAAwB,GAAG,KAAK,EAC3C,QAA4B,EACJ,EAAE;IAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,6DAA6C,CAAC,CAAC;IAExE,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IAE3E,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,yBAAyB,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;QACvD,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAA+B,CAAC;IAC5E,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAA6C,CAAC;IAElF,IAAI,OAAO,EAAE,CAAC;QAEZ,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC;IAED,eAAe,CAAC,IAAI,GAAG;QACrB,GAAG,mBAAmB;QACtB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE;YACZ,4BAA4B,EAAE,yBAAyB;SACxD;KACF,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAlCW,QAAA,wBAAwB,4BAkCnC"}
@@ -0,0 +1,2 @@
1
+ import type { ResourceRecord } from "@ldsg/types";
2
+ export declare const renderBootstrapEntry: (handlerResourceRecords: ResourceRecord[]) => string;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderBootstrapEntry = void 0;
4
+ const normalizeHandlerAlias = (handlerId) => handlerId.replace(/[^a-zA-Z0-9_$]/g, "_");
5
+ const renderBootstrapEntry = (handlerResourceRecords) => {
6
+ const handlerImports = handlerResourceRecords.map((resourceRecord) => {
7
+ const { id } = resourceRecord;
8
+ const alias = `handlerModule_${normalizeHandlerAlias(id)}`;
9
+ return `import * as ${alias} from "./handlers/${id}";`;
10
+ });
11
+ const handlerModuleEntries = handlerResourceRecords.map((resourceRecord) => {
12
+ const { id } = resourceRecord;
13
+ const alias = `handlerModule_${normalizeHandlerAlias(id)}`;
14
+ return ` ${JSON.stringify(id)}: ${alias},`;
15
+ });
16
+ return `import { createGeneratorApp } from "@ldsg/create-generator-app";
17
+ import MANIFEST_JSON from "./manifest.json" with { type: "json" };
18
+ ${handlerImports.length ? `${handlerImports.join("\n")}\n` : ""}
19
+ const handlerModules: Record<string, any> = {
20
+ ${handlerModuleEntries.join("\n")}
21
+ };
22
+
23
+ /**
24
+ * 将 handler 模块注入到对应资源记录,避免运行时 require 模块
25
+ */
26
+ const wiredResourceRecords = (MANIFEST_JSON.resourceRecords as any[]).map((resourceRecord: any) => {
27
+ const { kind, id, settings } = resourceRecord;
28
+
29
+ if (kind === "handler" && handlerModules[id]) {
30
+ return {
31
+ ...resourceRecord,
32
+ settings: {
33
+ ...settings,
34
+ handler: handlerModules[id].handler,
35
+ },
36
+ };
37
+ }
38
+
39
+ return resourceRecord;
40
+ });
41
+
42
+ /**
43
+ * 从 bootstrap 内嵌的资源记录生成应用
44
+ */
45
+ export const generateApplication = (params: any) => {
46
+ const { extraOptions } = params;
47
+
48
+ const mode = extraOptions?.["using-workspace-ldsg-module"] ? "workspace" : "npm";
49
+
50
+ return createGeneratorApp({
51
+ resourceRecords: wiredResourceRecords,
52
+ outputPath: params.outputPath,
53
+ zip: params.isZip,
54
+ mode,
55
+ cwd: process.cwd(),
56
+ options: extraOptions,
57
+ });
58
+ };
59
+ `;
60
+ };
61
+ exports.renderBootstrapEntry = renderBootstrapEntry;
62
+ //# sourceMappingURL=render-bootstrap-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-bootstrap-entry.js","sourceRoot":"","sources":["../../../../../../../../../src/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/render-bootstrap-entry.ts"],"names":[],"mappings":";;;AAEA,MAAM,qBAAqB,GAAG,CAAC,SAAiB,EAAU,EAAE,CAC1D,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAMrC,MAAM,oBAAoB,GAAG,CAAC,sBAAwC,EAAU,EAAE;IACvF,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;QACnE,MAAM,EAAE,EAAE,EAAE,GAAG,cAAc,CAAC;QAE9B,MAAM,KAAK,GAAG,iBAAiB,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC;QAE3D,OAAO,eAAe,KAAK,qBAAqB,EAAE,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;QACzE,MAAM,EAAE,EAAE,EAAE,GAAG,cAAc,CAAC;QAE9B,MAAM,KAAK,GAAG,iBAAiB,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC;QAE3D,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,OAAO;;EAEP,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;;EAE7D,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuChC,CAAC;AACF,CAAC,CAAC;AA7DW,QAAA,oBAAoB,wBA6D/B"}
@@ -0,0 +1,11 @@
1
+ import type { ModuleBuildMode } from "@ldsg/generator";
2
+ import type { HandlerResourceDependency } from "@ldsg/handler";
3
+ import type { ResourceRecord } from "@ldsg/types";
4
+ export interface DependencyResolver {
5
+ resolve: (dependency: HandlerResourceDependency) => Promise<string>;
6
+ }
7
+ export declare const createDependencyResolver: (params: {
8
+ mode: ModuleBuildMode;
9
+ cwd: string;
10
+ }) => Promise<DependencyResolver>;
11
+ export declare const normalizeResourceRecordsDependencies: (resourceRecords: ResourceRecord[], resolver: DependencyResolver) => Promise<ResourceRecord[]>;
@@ -0,0 +1,84 @@
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.normalizeResourceRecordsDependencies = exports.createDependencyResolver = void 0;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const findRepoRoot = async (cwd) => {
10
+ let current = node_path_1.default.resolve(cwd);
11
+ while (true) {
12
+ if (await fs_extra_1.default.pathExists(node_path_1.default.join(current, "rush.json"))) {
13
+ return current;
14
+ }
15
+ const parent = node_path_1.default.dirname(current);
16
+ if (parent === current) {
17
+ return undefined;
18
+ }
19
+ current = parent;
20
+ }
21
+ };
22
+ const loadWorkspacePackageDirs = async (cwd) => {
23
+ const repoRoot = await findRepoRoot(cwd);
24
+ if (!repoRoot) {
25
+ return new Map();
26
+ }
27
+ const rushJson = (await fs_extra_1.default.readJson(node_path_1.default.join(repoRoot, "rush.json")));
28
+ const packageDirs = new Map();
29
+ for (const project of rushJson.projects) {
30
+ const projectDir = node_path_1.default.join(repoRoot, project.projectFolder);
31
+ if (await fs_extra_1.default.pathExists(node_path_1.default.join(projectDir, "package.json"))) {
32
+ packageDirs.set(project.packageName, projectDir);
33
+ }
34
+ }
35
+ return packageDirs;
36
+ };
37
+ const createDependencyResolver = async (params) => {
38
+ let packageDirsPromise;
39
+ const getPackageDirs = () => {
40
+ packageDirsPromise ??= loadWorkspacePackageDirs(params.cwd);
41
+ return packageDirsPromise;
42
+ };
43
+ return {
44
+ resolve: async (dependency) => {
45
+ if (dependency.version && !dependency.version.startsWith("workspace:")) {
46
+ return dependency.version;
47
+ }
48
+ if (params.mode === "workspace") {
49
+ const packageDirs = await getPackageDirs();
50
+ const packageDir = packageDirs.get(dependency.name);
51
+ if (packageDir) {
52
+ return `link:${packageDir}`;
53
+ }
54
+ if (dependency.version?.startsWith("workspace:")) {
55
+ throw new Error(`workspace package not found: ${dependency.name}`);
56
+ }
57
+ }
58
+ return "latest";
59
+ },
60
+ };
61
+ };
62
+ exports.createDependencyResolver = createDependencyResolver;
63
+ const normalizeResourceRecordsDependencies = async (resourceRecords, resolver) => {
64
+ return Promise.all(resourceRecords.map(async (resourceRecord) => {
65
+ if (resourceRecord.kind !== "handler") {
66
+ return resourceRecord;
67
+ }
68
+ const dependencies = (resourceRecord.settings.dependencies ??
69
+ []);
70
+ const normalizedDependencies = await Promise.all(dependencies.map(async (dependency) => ({
71
+ ...dependency,
72
+ version: await resolver.resolve(dependency),
73
+ })));
74
+ return {
75
+ ...resourceRecord,
76
+ settings: {
77
+ ...resourceRecord.settings,
78
+ dependencies: normalizedDependencies,
79
+ },
80
+ };
81
+ }));
82
+ };
83
+ exports.normalizeResourceRecordsDependencies = normalizeResourceRecordsDependencies;
84
+ //# sourceMappingURL=resolve-dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-dependencies.js","sourceRoot":"","sources":["../../../../../../../../../src/commands/generate/utils/generate-application/utils/build-bootstrap/utils/generate-bootstrap/resolve-dependencies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ResourceRecord } from "@ldsg/types";
2
+ export declare const getResourceRecordById: (resourceRecords: ResourceRecord[], id: string | undefined, description: string) => ResourceRecord;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getResourceRecordById = void 0;
4
+ const getResourceRecordById = (resourceRecords, id, description) => {
5
+ if (!id) {
6
+ throw new Error(`${description} id is missing`);
7
+ }
8
+ const resourceRecord = resourceRecords.find((item) => item.id === id);
9
+ if (!resourceRecord) {
10
+ throw new Error(`${description} not found: ${id}`);
11
+ }
12
+ return resourceRecord;
13
+ };
14
+ exports.getResourceRecordById = getResourceRecordById;
15
+ //# sourceMappingURL=get-resource-record-by-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-resource-record-by-id.js","sourceRoot":"","sources":["../../../../../../../../../src/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/get-resource-record-by-id.ts"],"names":[],"mappings":";;;AAKO,MAAM,qBAAqB,GAAG,CACnC,eAAiC,EACjC,EAAsB,EACtB,WAAmB,EACH,EAAE;IAClB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,gBAAgB,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAEtE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,eAAe,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAhBW,QAAA,qBAAqB,yBAgBhC"}
@@ -0,0 +1,2 @@
1
+ import type { ResourceRecord } from "@ldsg/types";
2
+ export declare const resolveResourceDefinitionResourceRecord: (resourceRecords: ResourceRecord[], rootResourceId: string, kind: string) => ResourceRecord;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveResourceDefinitionResourceRecord = void 0;
4
+ const resolveResourceDefinitionResourceRecord = (resourceRecords, rootResourceId, kind) => {
5
+ const resourceDefinitions = resourceRecords.filter((resourceRecord) => {
6
+ return (resourceRecord.kind === "resource_definition" &&
7
+ resourceRecord.settings.kind === kind &&
8
+ resourceRecord.parentId === rootResourceId);
9
+ });
10
+ if (resourceDefinitions.length === 0) {
11
+ throw new Error(`resource definition not found: ${kind}`);
12
+ }
13
+ if (resourceDefinitions.length > 1) {
14
+ throw new Error(`multiple resource definitions for ${kind}: ${resourceDefinitions
15
+ .map((resource) => resource.id)
16
+ .join(", ")}`);
17
+ }
18
+ return resourceDefinitions[0];
19
+ };
20
+ exports.resolveResourceDefinitionResourceRecord = resolveResourceDefinitionResourceRecord;
21
+ //# sourceMappingURL=resolve-resource-definition-resource-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-resource-definition-resource-record.js","sourceRoot":"","sources":["../../../../../../../../../src/commands/generate/utils/generate-application/utils/build-bootstrap/utils/resource-record/resolve-resource-definition-resource-record.ts"],"names":[],"mappings":";;;AAKO,MAAM,uCAAuC,GAAG,CACrD,eAAiC,EACjC,cAAsB,EACtB,IAAY,EACI,EAAE;IAClB,MAAM,mBAAmB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,EAAE;QACpE,OAAO,CACL,cAAc,CAAC,IAAI,KAAK,qBAAqB;YAC7C,cAAc,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI;YACrC,cAAc,CAAC,QAAQ,KAAK,cAAc,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,KAAK,mBAAmB;aAC9D,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IAED,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC;AA1BW,QAAA,uCAAuC,2CA0BlD"}
@@ -0,0 +1,2 @@
1
+ import type { ResourceRecord } from "@ldsg/types";
2
+ export declare const resolveRootResourceRecord: (resourceRecords: ResourceRecord[]) => ResourceRecord;