@carlonicora/nestjs-neo4jsonapi 1.81.0 → 1.83.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.
- package/dist/scripts/generate-module/__tests__/dto-imports.spec.d.ts +2 -0
- package/dist/scripts/generate-module/__tests__/dto-imports.spec.d.ts.map +1 -0
- package/dist/scripts/generate-module/__tests__/dto-imports.spec.js +38 -0
- package/dist/scripts/generate-module/__tests__/dto-imports.spec.js.map +1 -0
- package/dist/scripts/generate-module/__tests__/entity.spec.d.ts +2 -0
- package/dist/scripts/generate-module/__tests__/entity.spec.d.ts.map +1 -0
- package/dist/scripts/generate-module/__tests__/entity.spec.js +58 -0
- package/dist/scripts/generate-module/__tests__/entity.spec.js.map +1 -0
- package/dist/scripts/generate-module/__tests__/fixtures.d.ts +3 -0
- package/dist/scripts/generate-module/__tests__/fixtures.d.ts.map +1 -0
- package/dist/scripts/generate-module/__tests__/fixtures.js +32 -0
- package/dist/scripts/generate-module/__tests__/fixtures.js.map +1 -0
- package/dist/scripts/generate-module/__tests__/plumbing.spec.d.ts +2 -0
- package/dist/scripts/generate-module/__tests__/plumbing.spec.d.ts.map +1 -0
- package/dist/scripts/generate-module/__tests__/plumbing.spec.js +19 -0
- package/dist/scripts/generate-module/__tests__/plumbing.spec.js.map +1 -0
- package/dist/scripts/generate-module/__tests__/scope-detector.spec.d.ts +2 -0
- package/dist/scripts/generate-module/__tests__/scope-detector.spec.d.ts.map +1 -0
- package/dist/scripts/generate-module/__tests__/scope-detector.spec.js +84 -0
- package/dist/scripts/generate-module/__tests__/scope-detector.spec.js.map +1 -0
- package/dist/scripts/generate-module/__tests__/service-module.spec.d.ts +2 -0
- package/dist/scripts/generate-module/__tests__/service-module.spec.d.ts.map +1 -0
- package/dist/scripts/generate-module/__tests__/service-module.spec.js +33 -0
- package/dist/scripts/generate-module/__tests__/service-module.spec.js.map +1 -0
- package/dist/scripts/generate-module/generator.d.ts +2 -0
- package/dist/scripts/generate-module/generator.d.ts.map +1 -1
- package/dist/scripts/generate-module/generator.js +18 -5
- package/dist/scripts/generate-module/generator.js.map +1 -1
- package/dist/scripts/generate-module/index.js +3 -1
- package/dist/scripts/generate-module/index.js.map +1 -1
- package/dist/scripts/generate-module/templates/entity.template.d.ts.map +1 -1
- package/dist/scripts/generate-module/templates/entity.template.js +26 -8
- package/dist/scripts/generate-module/templates/entity.template.js.map +1 -1
- package/dist/scripts/generate-module/templates/module.template.d.ts.map +1 -1
- package/dist/scripts/generate-module/templates/module.template.js +14 -10
- package/dist/scripts/generate-module/templates/module.template.js.map +1 -1
- package/dist/scripts/generate-module/templates/service.spec.template.d.ts.map +1 -1
- package/dist/scripts/generate-module/templates/service.spec.template.js +14 -1
- package/dist/scripts/generate-module/templates/service.spec.template.js.map +1 -1
- package/dist/scripts/generate-module/templates/service.template.d.ts.map +1 -1
- package/dist/scripts/generate-module/templates/service.template.js +3 -1
- package/dist/scripts/generate-module/templates/service.template.js.map +1 -1
- package/dist/scripts/generate-module/transformers/relationship-mapper.d.ts.map +1 -1
- package/dist/scripts/generate-module/transformers/relationship-mapper.js +5 -0
- package/dist/scripts/generate-module/transformers/relationship-mapper.js.map +1 -1
- package/dist/scripts/generate-module/types/json-schema.interface.d.ts +18 -0
- package/dist/scripts/generate-module/types/json-schema.interface.d.ts.map +1 -1
- package/dist/scripts/generate-module/types/template-data.interface.d.ts +16 -0
- package/dist/scripts/generate-module/types/template-data.interface.d.ts.map +1 -1
- package/dist/scripts/generate-module/utils/dto-imports.d.ts +15 -0
- package/dist/scripts/generate-module/utils/dto-imports.d.ts.map +1 -0
- package/dist/scripts/generate-module/utils/dto-imports.js +36 -0
- package/dist/scripts/generate-module/utils/dto-imports.js.map +1 -0
- package/dist/scripts/generate-module/utils/module-registrar.d.ts +6 -1
- package/dist/scripts/generate-module/utils/module-registrar.d.ts.map +1 -1
- package/dist/scripts/generate-module/utils/module-registrar.js +21 -95
- package/dist/scripts/generate-module/utils/module-registrar.js.map +1 -1
- package/dist/scripts/generate-module/utils/scope-detector.d.ts +17 -0
- package/dist/scripts/generate-module/utils/scope-detector.d.ts.map +1 -0
- package/dist/scripts/generate-module/utils/scope-detector.js +153 -0
- package/dist/scripts/generate-module/utils/scope-detector.js.map +1 -0
- package/dist/scripts/generate-module/utils/type-utils.d.ts +5 -0
- package/dist/scripts/generate-module/utils/type-utils.d.ts.map +1 -1
- package/dist/scripts/generate-module/utils/type-utils.js +10 -1
- package/dist/scripts/generate-module/utils/type-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto-imports.spec.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/dto-imports.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const dto_imports_1 = require("../utils/dto-imports");
|
|
5
|
+
(0, vitest_1.describe)("pruneClassValidatorImports", () => {
|
|
6
|
+
(0, vitest_1.it)("drops validators that are imported but never used as decorators", () => {
|
|
7
|
+
const content = [
|
|
8
|
+
`import { Type } from "class-transformer";`,
|
|
9
|
+
`import { Equals, IsDefined, IsNotEmpty, IsNumber, IsOptional, IsUUID, ValidateNested } from "class-validator";`,
|
|
10
|
+
``,
|
|
11
|
+
`export class FooDTO {`,
|
|
12
|
+
` @Equals("foos") type: string;`,
|
|
13
|
+
` @IsUUID() id: string;`,
|
|
14
|
+
` @IsDefined() @IsNotEmpty() @IsNumber() number: number;`,
|
|
15
|
+
` @ValidateNested() @Type(() => Object) data: object;`,
|
|
16
|
+
`}`,
|
|
17
|
+
].join("\n");
|
|
18
|
+
const out = (0, dto_imports_1.pruneClassValidatorImports)(content);
|
|
19
|
+
// IsOptional is unused → removed; everything else is kept.
|
|
20
|
+
(0, vitest_1.expect)(out).toContain(`import { Equals, IsDefined, IsNotEmpty, IsNumber, IsUUID, ValidateNested } from "class-validator";`);
|
|
21
|
+
(0, vitest_1.expect)(out).not.toContain("IsOptional");
|
|
22
|
+
});
|
|
23
|
+
(0, vitest_1.it)("keeps validators that are used", () => {
|
|
24
|
+
const content = [
|
|
25
|
+
`import { IsOptional, IsString } from "class-validator";`,
|
|
26
|
+
`export class BarDTO {`,
|
|
27
|
+
` @IsOptional() @IsString() name?: string;`,
|
|
28
|
+
`}`,
|
|
29
|
+
].join("\n");
|
|
30
|
+
const out = (0, dto_imports_1.pruneClassValidatorImports)(content);
|
|
31
|
+
(0, vitest_1.expect)(out).toContain(`import { IsOptional, IsString } from "class-validator";`);
|
|
32
|
+
});
|
|
33
|
+
(0, vitest_1.it)("is a no-op when there is no class-validator import", () => {
|
|
34
|
+
const content = `export const x = 1;\n`;
|
|
35
|
+
(0, vitest_1.expect)((0, dto_imports_1.pruneClassValidatorImports)(content)).toBe(content);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=dto-imports.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto-imports.spec.js","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/dto-imports.spec.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,sDAAkE;AAElE,IAAA,iBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAA,WAAE,EAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,OAAO,GAAG;YACd,2CAA2C;YAC3C,gHAAgH;YAChH,EAAE;YACF,uBAAuB;YACvB,iCAAiC;YACjC,yBAAyB;YACzB,0DAA0D;YAC1D,uDAAuD;YACvD,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,GAAG,GAAG,IAAA,wCAA0B,EAAC,OAAO,CAAC,CAAC;QAChD,2DAA2D;QAC3D,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CACnB,oGAAoG,CACrG,CAAC;QACF,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,OAAO,GAAG;YACd,yDAAyD;YACzD,uBAAuB;YACvB,4CAA4C;YAC5C,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,GAAG,GAAG,IAAA,wCAA0B,EAAC,OAAO,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,yDAAyD,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,OAAO,GAAG,uBAAuB,CAAC;QACxC,IAAA,eAAM,EAAC,IAAA,wCAA0B,EAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.spec.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/entity.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const fixtures_1 = require("./fixtures");
|
|
5
|
+
const entity_template_1 = require("../templates/entity.template");
|
|
6
|
+
(0, vitest_1.describe)("backend entity template", () => {
|
|
7
|
+
(0, vitest_1.it)("emits entity-level description and chat", () => {
|
|
8
|
+
const out = (0, entity_template_1.generateEntityFile)((0, fixtures_1.makeTemplateData)({
|
|
9
|
+
description: "A demo widget.",
|
|
10
|
+
chat: { summary: "data.name ?? data.id", textSearchFields: ["name"] },
|
|
11
|
+
}));
|
|
12
|
+
(0, vitest_1.expect)(out).toContain('"A demo widget."');
|
|
13
|
+
(0, vitest_1.expect)(out).toContain("chat:");
|
|
14
|
+
(0, vitest_1.expect)(out).toContain("summary: (data) => data.name ?? data.id");
|
|
15
|
+
(0, vitest_1.expect)(out).toContain('textSearchFields: ["name"]');
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.it)("emits field description and kind", () => {
|
|
18
|
+
const out = (0, entity_template_1.generateEntityFile)((0, fixtures_1.makeTemplateData)({
|
|
19
|
+
fields: [{ name: "value", type: "number", required: false, tsType: "number", description: "Money.", kind: { type: "money" } }],
|
|
20
|
+
}));
|
|
21
|
+
(0, vitest_1.expect)(out).toContain('value: { type: "number", description: "Money.", kind: { type: "money" } }');
|
|
22
|
+
});
|
|
23
|
+
(0, vitest_1.it)("moves readOnly+computed fields into computed{} and out of fields{}", () => {
|
|
24
|
+
const out = (0, entity_template_1.generateEntityFile)((0, fixtures_1.makeTemplateData)({
|
|
25
|
+
fields: [
|
|
26
|
+
{ name: "name", type: "string", required: true, tsType: "string" },
|
|
27
|
+
{ name: "effective_value", type: "number", required: false, tsType: "number", readOnly: true, computed: "p.record?.get('effective_value') ?? undefined" },
|
|
28
|
+
],
|
|
29
|
+
}));
|
|
30
|
+
(0, vitest_1.expect)(out).toContain("effective_value?: number;"); // present in entity TS type
|
|
31
|
+
(0, vitest_1.expect)(out).toContain("computed: {"); // computed block present
|
|
32
|
+
(0, vitest_1.expect)(out).toContain("effective_value: {");
|
|
33
|
+
(0, vitest_1.expect)(out).toContain("compute: (p) => p.record?.get('effective_value') ?? undefined");
|
|
34
|
+
(0, vitest_1.expect)(out).not.toMatch(/effective_value:\s*\{\s*type:/); // absent from fields{} block
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.it)("excludes a computed field from fields{} even when not readOnly", () => {
|
|
37
|
+
const out = (0, entity_template_1.generateEntityFile)((0, fixtures_1.makeTemplateData)({
|
|
38
|
+
fields: [
|
|
39
|
+
{ name: "name", type: "string", required: true, tsType: "string" },
|
|
40
|
+
{ name: "score", type: "number", required: false, tsType: "number", computed: "p.record?.get('score') ?? 0" },
|
|
41
|
+
],
|
|
42
|
+
}));
|
|
43
|
+
(0, vitest_1.expect)(out).not.toMatch(/score:\s*\{\s*type:/); // not in fields{}
|
|
44
|
+
(0, vitest_1.expect)(out).toContain("compute: (p) => p.record?.get('score') ?? 0"); // in computed{}
|
|
45
|
+
});
|
|
46
|
+
(0, vitest_1.it)("emits relationship description", () => {
|
|
47
|
+
const out = (0, entity_template_1.generateEntityFile)((0, fixtures_1.makeTemplateData)({
|
|
48
|
+
relationships: [{
|
|
49
|
+
key: "account", model: "accountMeta", direction: "out", relationship: "FOR",
|
|
50
|
+
cardinality: "one", required: true, dtoKey: "account", description: "The owning account.",
|
|
51
|
+
relatedEntity: { name: "Account", directory: "crm", pascalCase: "Account", camelCase: "account", kebabCase: "account" },
|
|
52
|
+
isNewStructure: false,
|
|
53
|
+
}],
|
|
54
|
+
}));
|
|
55
|
+
(0, vitest_1.expect)(out).toContain('description: "The owning account."');
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=entity.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.spec.js","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/entity.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,wBAAgB,gBAAgB,CAAC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CA2BpF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeTemplateData = makeTemplateData;
|
|
4
|
+
function makeTemplateData(overrides = {}) {
|
|
5
|
+
return {
|
|
6
|
+
names: { pascalCase: "Widget", camelCase: "widget", kebabCase: "widget", pluralKebab: "widgets" },
|
|
7
|
+
endpoint: "widgets",
|
|
8
|
+
labelName: "Widget",
|
|
9
|
+
nodeName: "widget",
|
|
10
|
+
isCompanyScoped: true,
|
|
11
|
+
targetDir: "features/demo",
|
|
12
|
+
sharedScope: "@test/shared",
|
|
13
|
+
fields: [
|
|
14
|
+
{ name: "name", type: "string", required: true, tsType: "string" },
|
|
15
|
+
{ name: "due_date", type: "date", required: false, tsType: "string" },
|
|
16
|
+
],
|
|
17
|
+
relationships: [],
|
|
18
|
+
aliasMetas: [],
|
|
19
|
+
libraryImports: [],
|
|
20
|
+
entityImports: [],
|
|
21
|
+
metaImports: [],
|
|
22
|
+
dtoImports: [],
|
|
23
|
+
nestedRoutes: [],
|
|
24
|
+
dtoFields: [],
|
|
25
|
+
postDtoRelationships: [],
|
|
26
|
+
putDtoRelationships: [],
|
|
27
|
+
requiresS3: false,
|
|
28
|
+
exportService: true,
|
|
29
|
+
...overrides,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/fixtures.ts"],"names":[],"mappings":";;AAEA,4CA2BC;AA3BD,SAAgB,gBAAgB,CAAC,YAAmC,EAAE;IACpE,OAAO;QACL,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;QACjG,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,QAAQ;QACnB,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,IAAI;QACrB,SAAS,EAAE,eAAe;QAC1B,WAAW,EAAE,cAAc;QAC3B,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;YAClE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;SACtE;QACD,aAAa,EAAE,EAAE;QACjB,UAAU,EAAE,EAAE;QACd,cAAc,EAAE,EAAE;QAClB,aAAa,EAAE,EAAE;QACjB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,oBAAoB,EAAE,EAAE;QACxB,mBAAmB,EAAE,EAAE;QACvB,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,IAAI;QACnB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plumbing.spec.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/plumbing.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const fixtures_1 = require("./fixtures");
|
|
5
|
+
(0, vitest_1.describe)("backend plumbing fixtures", () => {
|
|
6
|
+
(0, vitest_1.it)("builds a TemplateData with the new optional fields defaulted", () => {
|
|
7
|
+
const data = (0, fixtures_1.makeTemplateData)();
|
|
8
|
+
(0, vitest_1.expect)(data.requiresS3).toBe(false);
|
|
9
|
+
(0, vitest_1.expect)(data.exportService).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
(0, vitest_1.it)("carries field descriptors through overrides", () => {
|
|
12
|
+
const data = (0, fixtures_1.makeTemplateData)({
|
|
13
|
+
fields: [{ name: "value", type: "number", required: false, tsType: "number", kind: { type: "money" }, description: "Money." }],
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.expect)(data.fields[0].kind?.type).toBe("money");
|
|
16
|
+
(0, vitest_1.expect)(data.fields[0].description).toBe("Money.");
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=plumbing.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plumbing.spec.js","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/plumbing.spec.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,yCAA8C;AAE9C,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAA,WAAE,EAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG,IAAA,2BAAgB,GAAE,CAAC;QAChC,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAA,eAAM,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAG,IAAA,2BAAgB,EAAC;YAC5B,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;SAC/H,CAAC,CAAC;QACH,IAAA,eAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-detector.spec.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/scope-detector.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,84 @@
|
|
|
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
|
+
const vitest_1 = require("vitest");
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const os = __importStar(require("os"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const scope_detector_1 = require("../utils/scope-detector");
|
|
41
|
+
(0, vitest_1.describe)("detectSharedScope", () => {
|
|
42
|
+
(0, vitest_1.it)("prefers an explicit override", () => {
|
|
43
|
+
(0, vitest_1.expect)((0, scope_detector_1.detectSharedScope)({ override: "@override/shared", cwd: os.tmpdir() })).toBe("@override/shared");
|
|
44
|
+
});
|
|
45
|
+
(0, vitest_1.it)("falls back when nothing is found", () => {
|
|
46
|
+
const empty = fs.mkdtempSync(path.join(os.tmpdir(), "scope-empty-"));
|
|
47
|
+
try {
|
|
48
|
+
(0, vitest_1.expect)((0, scope_detector_1.detectSharedScope)({ cwd: empty, fallback: "@fallback/shared" })).toBe("@fallback/shared");
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
fs.rmSync(empty, { recursive: true, force: true });
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
(0, vitest_1.it)("reads the bare @scope/shared alias from a JSONC tsconfig.base.json (comments + trailing commas)", () => {
|
|
55
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "scope-tsconfig-"));
|
|
56
|
+
try {
|
|
57
|
+
// Deliberately JSONC: line comment + trailing comma, which plain JSON.parse rejects.
|
|
58
|
+
fs.writeFileSync(path.join(dir, "tsconfig.base.json"), `{
|
|
59
|
+
"compilerOptions": {
|
|
60
|
+
// path aliases
|
|
61
|
+
"paths": {
|
|
62
|
+
"@dreamer/shared": ["x"],
|
|
63
|
+
"@dreamer/shared/*": ["x/*"],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
}`);
|
|
67
|
+
(0, vitest_1.expect)((0, scope_detector_1.detectSharedScope)({ cwd: dir })).toBe("@dreamer/shared");
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
(0, vitest_1.it)("falls back to a @scope/shared dependency in root package.json", () => {
|
|
74
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "scope-pkg-"));
|
|
75
|
+
try {
|
|
76
|
+
fs.writeFileSync(path.join(dir, "package.json"), JSON.stringify({ dependencies: { "@acme/shared": "workspace:*" } }));
|
|
77
|
+
(0, vitest_1.expect)((0, scope_detector_1.detectSharedScope)({ cwd: dir })).toBe("@acme/shared");
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=scope-detector.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-detector.spec.js","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/scope-detector.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAmE;AACnE,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,4DAA4D;AAE5D,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,IAAA,eAAM,EAAC,IAAA,kCAAiB,EAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzG,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,IAAA,eAAM,EAAC,IAAA,kCAAiB,EAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnG,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iGAAiG,EAAE,GAAG,EAAE;QACzG,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,qFAAqF;YACrF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,EACpC;;;;;;;;EAQN,CACK,CAAC;YACF,IAAA,eAAM,EAAC,IAAA,kCAAiB,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClE,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;YACtH,IAAA,eAAM,EAAC,IAAA,kCAAiB,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/D,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-module.spec.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/service-module.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const fixtures_1 = require("./fixtures");
|
|
5
|
+
const service_template_1 = require("../templates/service.template");
|
|
6
|
+
const module_template_1 = require("../templates/module.template");
|
|
7
|
+
(0, vitest_1.describe)("backend service template", () => {
|
|
8
|
+
(0, vitest_1.it)("injects AuditService into the constructor and super()", () => {
|
|
9
|
+
const out = (0, service_template_1.generateServiceFile)((0, fixtures_1.makeTemplateData)());
|
|
10
|
+
(0, vitest_1.expect)(out).toContain("AuditService");
|
|
11
|
+
(0, vitest_1.expect)(out).toContain("auditService: AuditService");
|
|
12
|
+
(0, vitest_1.expect)(out).toMatch(/super\(jsonApiService, widgetRepository, clsService, WidgetDescriptor\.model, auditService\)/);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.describe)("backend module template", () => {
|
|
16
|
+
(0, vitest_1.it)("registers with GraphModule and ModuleId", () => {
|
|
17
|
+
const out = (0, module_template_1.generateModuleFile)((0, fixtures_1.makeTemplateData)());
|
|
18
|
+
(0, vitest_1.expect)(out).toContain("GraphModule");
|
|
19
|
+
(0, vitest_1.expect)(out).toContain("GraphDescriptorRegistry");
|
|
20
|
+
(0, vitest_1.expect)(out).toContain('import { ModuleId } from "@test/shared"');
|
|
21
|
+
(0, vitest_1.expect)(out).toContain("this.graphRegistry.register({");
|
|
22
|
+
(0, vitest_1.expect)(out).toContain("moduleId: ModuleId.Widget");
|
|
23
|
+
(0, vitest_1.expect)(out).toContain("imports: [AuditModule, GraphModule]");
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)("exports the service by default and respects exportService:false", () => {
|
|
26
|
+
(0, vitest_1.expect)((0, module_template_1.generateModuleFile)((0, fixtures_1.makeTemplateData)())).toContain("exports: [WidgetService]");
|
|
27
|
+
(0, vitest_1.expect)((0, module_template_1.generateModuleFile)((0, fixtures_1.makeTemplateData)({ exportService: false }))).toContain("exports: []");
|
|
28
|
+
});
|
|
29
|
+
(0, vitest_1.it)("adds S3Module only when requiresS3", () => {
|
|
30
|
+
(0, vitest_1.expect)((0, module_template_1.generateModuleFile)((0, fixtures_1.makeTemplateData)({ requiresS3: true }))).toContain("S3Module");
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=service-module.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-module.spec.js","sourceRoot":"","sources":["../../../../scripts/generate-module/__tests__/service-module.spec.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,yCAA8C;AAC9C,oEAAoE;AACpE,kEAAkE;AAElE,IAAA,iBAAQ,EAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAA,WAAE,EAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,GAAG,GAAG,IAAA,sCAAmB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC;QACpD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACpD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,8FAA8F,CAAC,CAAC;IACtH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,IAAA,oCAAkB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC;QACnD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QACjD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;QACjE,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACnD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,IAAA,eAAM,EAAC,IAAA,oCAAkB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACrF,IAAA,eAAM,EAAC,IAAA,oCAAkB,EAAC,IAAA,2BAAgB,EAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,IAAA,eAAM,EAAC,IAAA,oCAAkB,EAAC,IAAA,2BAAgB,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../scripts/generate-module/generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../scripts/generate-module/generator.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiRlF"}
|
|
@@ -57,6 +57,8 @@ const controller_spec_template_1 = require("./templates/controller.spec.template
|
|
|
57
57
|
const dto_spec_template_1 = require("./templates/dto.spec.template");
|
|
58
58
|
const file_writer_1 = require("./utils/file-writer");
|
|
59
59
|
const module_registrar_1 = require("./utils/module-registrar");
|
|
60
|
+
const scope_detector_1 = require("./utils/scope-detector");
|
|
61
|
+
const dto_imports_1 = require("./utils/dto-imports");
|
|
60
62
|
const type_utils_1 = require("./utils/type-utils");
|
|
61
63
|
/**
|
|
62
64
|
* Main generator function
|
|
@@ -65,6 +67,8 @@ const type_utils_1 = require("./utils/type-utils");
|
|
|
65
67
|
*/
|
|
66
68
|
async function generateModule(options) {
|
|
67
69
|
const { jsonPath, dryRun = false, force = false, noRegister = false } = options;
|
|
70
|
+
// Resolve the host app's shared package scope (source of ModuleId) once.
|
|
71
|
+
const sharedScope = (0, scope_detector_1.detectSharedScope)({ override: options.sharedScope });
|
|
68
72
|
// 1. Load and parse JSON
|
|
69
73
|
console.info(`📖 Loading JSON schema from: ${jsonPath}`);
|
|
70
74
|
const jsonContent = fs.readFileSync(jsonPath, "utf-8");
|
|
@@ -129,6 +133,10 @@ async function generateModule(options) {
|
|
|
129
133
|
type: normalizedType,
|
|
130
134
|
required: !field.nullable,
|
|
131
135
|
tsType: (0, type_utils_1.getTsType)(normalizedType),
|
|
136
|
+
description: field.description,
|
|
137
|
+
kind: field.kind,
|
|
138
|
+
computed: field.computed,
|
|
139
|
+
readOnly: field.readOnly,
|
|
132
140
|
};
|
|
133
141
|
});
|
|
134
142
|
// Build alias metas only for relationships where multiple aliases target the same entity
|
|
@@ -171,6 +179,11 @@ async function generateModule(options) {
|
|
|
171
179
|
nodeName: names.camelCase,
|
|
172
180
|
isCompanyScoped: jsonSchema.isCompanyScoped !== false, // Default: true
|
|
173
181
|
targetDir: jsonSchema.targetDir,
|
|
182
|
+
sharedScope,
|
|
183
|
+
description: jsonSchema.description,
|
|
184
|
+
chat: jsonSchema.chat,
|
|
185
|
+
requiresS3: jsonSchema.requiresS3 === true,
|
|
186
|
+
exportService: jsonSchema.exportService !== false, // default: export
|
|
174
187
|
fields,
|
|
175
188
|
relationships,
|
|
176
189
|
aliasMetas,
|
|
@@ -222,18 +235,18 @@ async function generateModule(options) {
|
|
|
222
235
|
path: path.resolve(process.cwd(), `${basePath}/controllers/${names.kebabCase}.controller.ts`),
|
|
223
236
|
content: (0, controller_template_1.generateControllerFile)(templateData),
|
|
224
237
|
},
|
|
225
|
-
// DTOs
|
|
238
|
+
// DTOs (class-validator imports pruned to exactly what each file uses)
|
|
226
239
|
{
|
|
227
240
|
path: path.resolve(process.cwd(), `${basePath}/dtos/${names.kebabCase}.dto.ts`),
|
|
228
|
-
content: (0, dto_base_template_1.generateBaseDTOFile)(templateData),
|
|
241
|
+
content: (0, dto_imports_1.pruneClassValidatorImports)((0, dto_base_template_1.generateBaseDTOFile)(templateData)),
|
|
229
242
|
},
|
|
230
243
|
{
|
|
231
244
|
path: path.resolve(process.cwd(), `${basePath}/dtos/${names.kebabCase}.post.dto.ts`),
|
|
232
|
-
content: (0, dto_post_template_1.generatePostDTOFile)(templateData),
|
|
245
|
+
content: (0, dto_imports_1.pruneClassValidatorImports)((0, dto_post_template_1.generatePostDTOFile)(templateData)),
|
|
233
246
|
},
|
|
234
247
|
{
|
|
235
248
|
path: path.resolve(process.cwd(), `${basePath}/dtos/${names.kebabCase}.put.dto.ts`),
|
|
236
|
-
content: (0, dto_put_template_1.generatePutDTOFile)(templateData),
|
|
249
|
+
content: (0, dto_imports_1.pruneClassValidatorImports)((0, dto_put_template_1.generatePutDTOFile)(templateData)),
|
|
237
250
|
},
|
|
238
251
|
];
|
|
239
252
|
// Add relationship DTO file if there are MANY relationships
|
|
@@ -241,7 +254,7 @@ async function generateModule(options) {
|
|
|
241
254
|
if (relationshipDTOContent) {
|
|
242
255
|
filesToWrite.push({
|
|
243
256
|
path: path.resolve(process.cwd(), `${basePath}/dtos/${names.kebabCase}.relationship.dto.ts`),
|
|
244
|
-
content: relationshipDTOContent,
|
|
257
|
+
content: (0, dto_imports_1.pruneClassValidatorImports)(relationshipDTOContent),
|
|
245
258
|
});
|
|
246
259
|
}
|
|
247
260
|
// Add test files (co-located with source files)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../scripts/generate-module/generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../scripts/generate-module/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,7 +45,8 @@ program
|
|
|
45
45
|
.argument("<json-file>", "Path to JSON schema file")
|
|
46
46
|
.option("--dry-run", "Preview files without writing them", false)
|
|
47
47
|
.option("--force", "Overwrite existing files", false)
|
|
48
|
-
.option("--no-register", "Skip module registration in parent module"
|
|
48
|
+
.option("--no-register", "Skip module registration in parent module")
|
|
49
|
+
.option("--shared-scope <scope>", "Override the shared package scope that exports ModuleId (auto-detected by default)")
|
|
49
50
|
.action(async (jsonFile, options) => {
|
|
50
51
|
try {
|
|
51
52
|
const jsonPath = path.resolve(process.cwd(), jsonFile);
|
|
@@ -59,6 +60,7 @@ program
|
|
|
59
60
|
dryRun: options.dryRun,
|
|
60
61
|
force: options.force,
|
|
61
62
|
noRegister: !options.register,
|
|
63
|
+
sharedScope: options.sharedScope,
|
|
62
64
|
});
|
|
63
65
|
}
|
|
64
66
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../scripts/generate-module/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,2CAA6B;AAC7B,2CAA6C;AAE7C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACnD,MAAM,CAAC,WAAW,EAAE,oCAAoC,EAAE,KAAK,CAAC;KAChE,MAAM,CAAC,SAAS,EAAE,0BAA0B,EAAE,KAAK,CAAC;KACpD,MAAM,CAAC,eAAe,EAAE,2CAA2C,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../scripts/generate-module/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,2CAA6B;AAC7B,2CAA6C;AAE7C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACnD,MAAM,CAAC,WAAW,EAAE,oCAAoC,EAAE,KAAK,CAAC;KAChE,MAAM,CAAC,SAAS,EAAE,0BAA0B,EAAE,KAAK,CAAC;KACpD,MAAM,CAAC,eAAe,EAAE,2CAA2C,CAAC;KACpE,MAAM,CAAC,wBAAwB,EAAE,oFAAoF,CAAC;KACtH,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAAO,EAAE,EAAE;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAEvD,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAElE,MAAM,IAAA,0BAAc,EAAC;YACnB,QAAQ;YACR,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,CAAC,OAAO,CAAC,QAAQ;YAC7B,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.template.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/entity.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,kCAAkC,CAAC;AA2BxF;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"entity.template.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/entity.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,kCAAkC,CAAC;AA2BxF;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAiL7D"}
|
|
@@ -77,21 +77,37 @@ function generateEntityFile(data) {
|
|
|
77
77
|
metaImportsByPath.get(importPath).push(rel.model);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
-
// Build field definitions for descriptor
|
|
81
|
-
const
|
|
80
|
+
// Build field definitions for descriptor (readOnly fields go under computed{}, not here)
|
|
81
|
+
const writableFields = fields.filter((f) => !f.readOnly && !f.computed);
|
|
82
|
+
const fieldDefinitions = writableFields
|
|
82
83
|
.map((field) => {
|
|
83
|
-
const parts = [];
|
|
84
|
-
|
|
85
|
-
if (field.required) {
|
|
84
|
+
const parts = [`type: "${field.type}"`];
|
|
85
|
+
if (field.required)
|
|
86
86
|
parts.push(`required: true`);
|
|
87
|
-
|
|
87
|
+
if (field.description)
|
|
88
|
+
parts.push(`description: ${JSON.stringify(field.description)}`);
|
|
89
|
+
if (field.kind)
|
|
90
|
+
parts.push(`kind: { type: "${field.kind.type}" }`);
|
|
88
91
|
return ` ${field.name}: { ${parts.join(", ")} },`;
|
|
89
92
|
})
|
|
90
93
|
.join("\n");
|
|
94
|
+
// Build computed{} block from fields carrying a `computed` expression
|
|
95
|
+
const computedFields = fields.filter((f) => f.computed);
|
|
96
|
+
const computedBlock = computedFields.length
|
|
97
|
+
? `\n computed: {\n${computedFields
|
|
98
|
+
.map((f) => {
|
|
99
|
+
const expr = f.computed.trim();
|
|
100
|
+
const desc = f.description ? `\n description: ${JSON.stringify(f.description)},` : "";
|
|
101
|
+
return ` ${f.name}: {\n compute: (p) => ${expr},${desc}\n },`;
|
|
102
|
+
})
|
|
103
|
+
.join("\n")}\n },\n`
|
|
104
|
+
: "";
|
|
91
105
|
// Build relationship definitions for descriptor
|
|
92
106
|
const relationshipDefinitions = relationships
|
|
93
107
|
.map((rel) => {
|
|
94
108
|
const parts = [];
|
|
109
|
+
if (rel.description)
|
|
110
|
+
parts.push(`description: ${JSON.stringify(rel.description)}`);
|
|
95
111
|
parts.push(`model: ${rel.model}`);
|
|
96
112
|
parts.push(`direction: "${rel.direction}"`);
|
|
97
113
|
parts.push(`relationship: "${rel.relationship}"`);
|
|
@@ -162,11 +178,13 @@ ${data.isCompanyScoped ? " company: Company;\n" : ""}${relationships
|
|
|
162
178
|
*/
|
|
163
179
|
export const ${names.pascalCase}Descriptor = defineEntity<${names.pascalCase}>()({
|
|
164
180
|
...${names.camelCase}Meta,
|
|
165
|
-
${
|
|
181
|
+
${data.description ? `\n description: ${JSON.stringify(data.description)},\n` : ""}${data.chat
|
|
182
|
+
? `\n chat: {\n summary: (data) => ${data.chat.summary},\n textSearchFields: ${JSON.stringify(data.chat.textSearchFields)},\n },\n`
|
|
183
|
+
: ""}${!data.isCompanyScoped ? "\n isCompanyScoped: false,\n" : ""}
|
|
166
184
|
fields: {
|
|
167
185
|
${fieldDefinitions}
|
|
168
186
|
},
|
|
169
|
-
|
|
187
|
+
${computedBlock}
|
|
170
188
|
relationships: {
|
|
171
189
|
${relationshipDefinitions}
|
|
172
190
|
},
|