@decaf-ts/for-nest 0.2.30 → 0.2.31
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/README.md +1 -1
- package/dist/for-nest.cjs +1 -1
- package/dist/for-nest.cjs.map +1 -1
- package/dist/for-nest.js +1 -1
- package/dist/for-nest.js.map +1 -1
- package/lib/cli-module.cjs +44 -9
- package/lib/cli-module.d.ts +9 -0
- package/lib/cli-module.js.map +1 -1
- package/lib/esm/cli-module.d.ts +9 -0
- package/lib/esm/cli-module.js +42 -9
- package/lib/esm/cli-module.js.map +1 -1
- package/lib/esm/factory/openapi/DtoBuilder.d.ts +21 -0
- package/lib/esm/factory/openapi/DtoBuilder.js +116 -90
- package/lib/esm/factory/openapi/DtoBuilder.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/factory/openapi/DtoBuilder.cjs +115 -89
- package/lib/factory/openapi/DtoBuilder.d.ts +21 -0
- package/lib/factory/openapi/DtoBuilder.js.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/package.json +2 -2
package/lib/esm/cli-module.js
CHANGED
|
@@ -7,6 +7,30 @@ import { normalizeImport } from "@decaf-ts/core";
|
|
|
7
7
|
import { InternalError } from "@decaf-ts/db-decorators";
|
|
8
8
|
import { NestFactory } from "@nestjs/core";
|
|
9
9
|
import { DocumentBuilder, SwaggerModule } from "@nestjs/swagger";
|
|
10
|
+
const defaultInputCandidates = [
|
|
11
|
+
"./lib/app.module.cjs",
|
|
12
|
+
"./lib/app.module.js",
|
|
13
|
+
"./src/app.module.ts",
|
|
14
|
+
];
|
|
15
|
+
function defaultCandidateExists(candidate) {
|
|
16
|
+
return fs.existsSync(path.join(process.cwd(), candidate));
|
|
17
|
+
}
|
|
18
|
+
export function resolveInputPath(input, exists = defaultCandidateExists, candidates = defaultInputCandidates) {
|
|
19
|
+
if (input)
|
|
20
|
+
return input;
|
|
21
|
+
const found = candidates.find((candidate) => exists(candidate));
|
|
22
|
+
return found || "./src/app.module.ts";
|
|
23
|
+
}
|
|
24
|
+
export function buildOutputFilePath(params) {
|
|
25
|
+
const { outputDir, pkgName, name, fileName, appendVersion = false, version, } = params;
|
|
26
|
+
const baseDir = path.resolve(outputDir);
|
|
27
|
+
const defaultPkgName = pkgName?.includes("/") ? pkgName.split("/").pop() : pkgName;
|
|
28
|
+
const resolvedRaw = (fileName || name || defaultPkgName || "api").replace(/[\\/]/g, "_");
|
|
29
|
+
const trimmed = resolvedRaw.replace(/^[._]+/, "");
|
|
30
|
+
const resolvedName = trimmed || "api";
|
|
31
|
+
const suffix = appendVersion && version ? `-${version}` : "";
|
|
32
|
+
return path.join(baseDir, `${resolvedName}${suffix}.json`);
|
|
33
|
+
}
|
|
10
34
|
async function bootApp(log, p) {
|
|
11
35
|
log = log.for(bootApp);
|
|
12
36
|
p = path.join(process.cwd(), p);
|
|
@@ -52,30 +76,39 @@ async function createSwagger(log, app, cfg) {
|
|
|
52
76
|
const compileCommand = new Command()
|
|
53
77
|
.name("export-api")
|
|
54
78
|
.description("exports the api in json format")
|
|
55
|
-
.option("--input <String>", "path to app module
|
|
79
|
+
.option("--input <String>", "path to app module (ts or compiled)")
|
|
56
80
|
.option("--output <String>", "output folder for api definition file", "./")
|
|
57
81
|
.option("--appendVersion <Boolean>", "if the version if to be appended to the json file name", false)
|
|
58
82
|
.option("--title [String]", "title of the OpenApi spec. defaults to name in package")
|
|
59
83
|
.option("--description [String]", "description of the OpenApi spec. defaults to description in package")
|
|
60
|
-
.option("--
|
|
84
|
+
.option("--fileName [String]", "file name (without json). defaults to name on package.json (last segment after slash)")
|
|
61
85
|
.action(async (options) => {
|
|
62
86
|
const pkg = JSON.parse(fs.readFileSync(path.join(process.cwd(), "package.json"), "utf-8"));
|
|
63
87
|
const version = pkg.version;
|
|
64
88
|
// eslint-disable-next-line prefer-const
|
|
65
|
-
let { title, name, description, output, input, appendVersion } = options;
|
|
89
|
+
let { title, name, fileName, description, output, input, appendVersion } = options;
|
|
66
90
|
const log = logger.for("export-api");
|
|
67
91
|
log.debug(`running with options: ${JSON.stringify(options)} for ${pkg.name} version ${version}`);
|
|
68
|
-
description = description
|
|
92
|
+
description = description || pkg.description;
|
|
69
93
|
title = title || pkg.name;
|
|
70
|
-
|
|
94
|
+
input = resolveInputPath(input);
|
|
95
|
+
const baseOutputDir = path.resolve(output);
|
|
71
96
|
try {
|
|
72
|
-
fs.statfsSync(
|
|
97
|
+
fs.statfsSync(baseOutputDir);
|
|
73
98
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
74
99
|
}
|
|
75
100
|
catch (e) {
|
|
76
|
-
fs.mkdirSync(
|
|
101
|
+
fs.mkdirSync(baseOutputDir, { recursive: true });
|
|
77
102
|
}
|
|
78
|
-
|
|
103
|
+
const outputPath = buildOutputFilePath({
|
|
104
|
+
outputDir: baseOutputDir,
|
|
105
|
+
pkgName: pkg.name,
|
|
106
|
+
name,
|
|
107
|
+
fileName,
|
|
108
|
+
appendVersion,
|
|
109
|
+
version,
|
|
110
|
+
});
|
|
111
|
+
log.debug(`writing spec to file: ${outputPath}`);
|
|
79
112
|
const app = await bootApp(log, input);
|
|
80
113
|
const document = await createSwagger(log, app, {
|
|
81
114
|
title,
|
|
@@ -83,7 +116,7 @@ const compileCommand = new Command()
|
|
|
83
116
|
version,
|
|
84
117
|
});
|
|
85
118
|
try {
|
|
86
|
-
fs.writeFileSync(
|
|
119
|
+
fs.writeFileSync(outputPath, JSON.stringify(document, null, 2), "utf8");
|
|
87
120
|
}
|
|
88
121
|
catch (e) {
|
|
89
122
|
throw new InternalError(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-module.js","sourceRoot":"","sources":["../../src/cli-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEjE,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,CAAS;IAC3C,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEvB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAChC,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,IAAI,aAAa,CAAC,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,GAAG,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IAElD,IAAI,GAAqB,CAAC;IAE1B,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE;YACxC,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,IAAI,aAAa,CAAC,CAAU,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,GAAqB;IAC3D,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,GAAqB,EACrB,GAA4D;IAE5D,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE;SACjC,QAAQ,CAAC,KAAK,CAAC;SACf,cAAc,CAAC,WAAW,CAAC;SAC3B,UAAU,CAAC,OAAO,CAAC;SACnB,KAAK,EAAE,CAAC;IAEX,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7B,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3D,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE;KACjC,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"cli-module.js","sourceRoot":"","sources":["../../src/cli-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,25 @@
|
|
|
1
1
|
import { OperationKeys } from "@decaf-ts/db-decorators";
|
|
2
2
|
import { Constructor } from "@decaf-ts/decoration";
|
|
3
3
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
4
|
+
/**
|
|
5
|
+
* Builds a Nest/Swagger DTO class for the given model and CRUD operation.
|
|
6
|
+
*
|
|
7
|
+
* Rules:
|
|
8
|
+
* - Only CREATE and UPDATE (and their bulk variants) produce a DTO;
|
|
9
|
+
* all other operations return the original model class unchanged.
|
|
10
|
+
* - @generated() properties (createdAt, updatedAt, createdBy, updatedBy,
|
|
11
|
+
* uuid, version, @composed pks, …) are **never** exposed in any DTO.
|
|
12
|
+
* - The @pk() property:
|
|
13
|
+
* • UPDATE – always included.
|
|
14
|
+
* • CREATE – included only when the pk is NOT auto-generated
|
|
15
|
+
* (checked via Model.pkProps().generated AND Model.generated()).
|
|
16
|
+
* - Relation properties (@oneToOne, @oneToMany, …):
|
|
17
|
+
* • CREATE – nested as DtoFor(CREATE, RelatedModel).
|
|
18
|
+
* • UPDATE – union of DtoFor(UPDATE, RelatedModel) **or** the
|
|
19
|
+
* related model's primary-key type (string / integer),
|
|
20
|
+
* expressed as a Swagger oneOf.
|
|
21
|
+
*
|
|
22
|
+
* Metadata.properties() now returns ALL properties across the prototype chain,
|
|
23
|
+
* so DTO inheritance is no longer needed; every DTO is a flat class.
|
|
24
|
+
*/
|
|
4
25
|
export declare function DtoFor<M extends Model>(op: OperationKeys, model: Constructor<M>): Constructor<any>;
|
|
@@ -2,38 +2,31 @@ import { BulkCrudOperationKeys, InternalError, OperationKeys, } from "@decaf-ts/
|
|
|
2
2
|
import { Metadata } from "@decaf-ts/decoration";
|
|
3
3
|
import { ApiProperty } from "./../../overrides/decoration.js";
|
|
4
4
|
import { Model, ValidationKeys } from "@decaf-ts/decorator-validation";
|
|
5
|
-
import {
|
|
5
|
+
import { TransactionOperationKeys } from "@decaf-ts/core";
|
|
6
6
|
import { toPascalCase } from "@decaf-ts/logging";
|
|
7
|
+
import { DECORATORS } from "./../../overrides/constants.js";
|
|
7
8
|
const dtoCache = new Map();
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
// ) {
|
|
30
|
-
// cacheData[key] = (model[key] as unknown as ICacheable[]).map((m) =>
|
|
31
|
-
// m.toCache()
|
|
32
|
-
// );
|
|
33
|
-
// } else cacheData[key] = model[key];
|
|
34
|
-
// }
|
|
35
|
-
// return (stringify ? JSON.stringify(cacheData) : cacheData) as any;
|
|
36
|
-
// }
|
|
9
|
+
/**
|
|
10
|
+
* Builds a Nest/Swagger DTO class for the given model and CRUD operation.
|
|
11
|
+
*
|
|
12
|
+
* Rules:
|
|
13
|
+
* - Only CREATE and UPDATE (and their bulk variants) produce a DTO;
|
|
14
|
+
* all other operations return the original model class unchanged.
|
|
15
|
+
* - @generated() properties (createdAt, updatedAt, createdBy, updatedBy,
|
|
16
|
+
* uuid, version, @composed pks, …) are **never** exposed in any DTO.
|
|
17
|
+
* - The @pk() property:
|
|
18
|
+
* • UPDATE – always included.
|
|
19
|
+
* • CREATE – included only when the pk is NOT auto-generated
|
|
20
|
+
* (checked via Model.pkProps().generated AND Model.generated()).
|
|
21
|
+
* - Relation properties (@oneToOne, @oneToMany, …):
|
|
22
|
+
* • CREATE – nested as DtoFor(CREATE, RelatedModel).
|
|
23
|
+
* • UPDATE – union of DtoFor(UPDATE, RelatedModel) **or** the
|
|
24
|
+
* related model's primary-key type (string / integer),
|
|
25
|
+
* expressed as a Swagger oneOf.
|
|
26
|
+
*
|
|
27
|
+
* Metadata.properties() now returns ALL properties across the prototype chain,
|
|
28
|
+
* so DTO inheritance is no longer needed; every DTO is a flat class.
|
|
29
|
+
*/
|
|
37
30
|
export function DtoFor(op, model) {
|
|
38
31
|
if (!TransactionOperationKeys.includes(op)) {
|
|
39
32
|
return model;
|
|
@@ -42,36 +35,16 @@ export function DtoFor(op, model) {
|
|
|
42
35
|
const cached = cache.get(model);
|
|
43
36
|
if (cached)
|
|
44
37
|
return cached;
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
const parentModel = ancestors.at(-1);
|
|
52
|
-
const parentDto = parentModel && Model.isModel(parentModel)
|
|
53
|
-
? cache.get(parentModel) || DtoFor(op, parentModel)
|
|
54
|
-
: Model;
|
|
55
|
-
class DynamicDTO extends parentDto {
|
|
38
|
+
const isUpdateOp = [
|
|
39
|
+
OperationKeys.UPDATE,
|
|
40
|
+
BulkCrudOperationKeys.UPDATE_ALL,
|
|
41
|
+
].includes(op);
|
|
42
|
+
class DynamicDTO {
|
|
56
43
|
}
|
|
57
44
|
cache.set(model, DynamicDTO);
|
|
58
45
|
Object.defineProperty(DynamicDTO, "name", {
|
|
59
46
|
value: `${toPascalCase(model.name)}${toPascalCase(op)}DTO`,
|
|
60
47
|
});
|
|
61
|
-
const schemaProps = Metadata.properties(model) || [];
|
|
62
|
-
const createdByMetadata = Metadata.get(model, PersistenceKeys.CREATED_BY);
|
|
63
|
-
const updatedByMetadata = Metadata.get(model, PersistenceKeys.UPDATED_BY);
|
|
64
|
-
const metadataOwnershipProps = [
|
|
65
|
-
...Object.keys(createdByMetadata || {}),
|
|
66
|
-
...Object.keys(updatedByMetadata || {}),
|
|
67
|
-
];
|
|
68
|
-
const manualOwnershipProps = ["createdBy", "updatedBy"].filter((prop) => schemaProps.includes(prop));
|
|
69
|
-
const ownershipProps = Array.from(new Set([...metadataOwnershipProps, ...manualOwnershipProps]));
|
|
70
|
-
const props = Array.from(new Set([...schemaProps, ...ownershipProps]));
|
|
71
|
-
const relations = collectRelations(model);
|
|
72
|
-
const relationProps = new Set(relations);
|
|
73
|
-
const generatedProps = props.filter((prop) => isGeneratedAcrossInheritance(model, prop));
|
|
74
|
-
const exceptions = new Set([...generatedProps, ...ownershipProps]);
|
|
75
48
|
const pkProp = (() => {
|
|
76
49
|
try {
|
|
77
50
|
return Model.pk(model);
|
|
@@ -80,19 +53,27 @@ export function DtoFor(op, model) {
|
|
|
80
53
|
return undefined;
|
|
81
54
|
}
|
|
82
55
|
})();
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
56
|
+
const pkIsGenerated = pkProp
|
|
57
|
+
? !!Model.pkProps(model)?.generated ||
|
|
58
|
+
isGeneratedAcrossInheritance(model, pkProp)
|
|
59
|
+
: false;
|
|
60
|
+
const allProps = Array.from(new Set(Metadata.properties(model) || []));
|
|
61
|
+
const relations = new Set(Model.relations(model) || []);
|
|
62
|
+
const scalarProps = allProps.filter((prop) => {
|
|
63
|
+
if (relations.has(prop))
|
|
86
64
|
return false;
|
|
87
|
-
if (
|
|
88
|
-
return isUpdateOp
|
|
65
|
+
if (prop === pkProp) {
|
|
66
|
+
return isUpdateOp || !pkIsGenerated;
|
|
89
67
|
}
|
|
68
|
+
if (isGeneratedAcrossInheritance(model, prop))
|
|
69
|
+
return false;
|
|
90
70
|
return true;
|
|
91
71
|
});
|
|
92
|
-
for (const prop of
|
|
93
|
-
const validation =
|
|
72
|
+
for (const prop of scalarProps) {
|
|
73
|
+
const validation = getValidationAcrossInheritance(model, prop);
|
|
94
74
|
const isRequired = !!validation?.[ValidationKeys.REQUIRED];
|
|
95
|
-
const typeHint =
|
|
75
|
+
const typeHint = getTypeAcrossInheritance(model, prop) ??
|
|
76
|
+
Reflect.getMetadata("design:type", model.prototype, prop);
|
|
96
77
|
const apiOptions = {
|
|
97
78
|
required: isRequired,
|
|
98
79
|
};
|
|
@@ -111,22 +92,6 @@ export function DtoFor(op, model) {
|
|
|
111
92
|
configurable: true,
|
|
112
93
|
});
|
|
113
94
|
}
|
|
114
|
-
function addRelation(relation, relationDto, isArray, isRequired) {
|
|
115
|
-
const apiOptions = {
|
|
116
|
-
type: relationDto,
|
|
117
|
-
required: isRequired,
|
|
118
|
-
isArray,
|
|
119
|
-
};
|
|
120
|
-
ApiProperty(apiOptions)(DynamicDTO.prototype, relation);
|
|
121
|
-
Object.defineProperty(DynamicDTO.prototype, relation, {
|
|
122
|
-
value: undefined,
|
|
123
|
-
writable: true,
|
|
124
|
-
enumerable: true,
|
|
125
|
-
configurable: true,
|
|
126
|
-
});
|
|
127
|
-
Reflect.defineMetadata("design:type", isArray ? Array : relationDto, DynamicDTO.prototype, relation);
|
|
128
|
-
}
|
|
129
|
-
// Add processed relations back to the DTO
|
|
130
95
|
for (const relation of relations) {
|
|
131
96
|
const relationMeta = Metadata.relations(model, relation);
|
|
132
97
|
if (!relationMeta) {
|
|
@@ -143,23 +108,64 @@ export function DtoFor(op, model) {
|
|
|
143
108
|
continue;
|
|
144
109
|
}
|
|
145
110
|
const meta = Metadata.validationFor(model, relation);
|
|
111
|
+
const isArray = !!meta?.[ValidationKeys.LIST];
|
|
112
|
+
const isRequired = !!meta?.[ValidationKeys.REQUIRED];
|
|
146
113
|
const relationDto = DtoFor(op, relationType);
|
|
147
|
-
|
|
148
|
-
|
|
114
|
+
if (isUpdateOp) {
|
|
115
|
+
addRelationUpdate(DynamicDTO, relation, relationType, relationDto, isArray, isRequired);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
addRelation(DynamicDTO, relation, relationDto, isArray, isRequired);
|
|
119
|
+
}
|
|
149
120
|
}
|
|
150
121
|
return DynamicDTO;
|
|
151
122
|
}
|
|
152
|
-
function
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
123
|
+
function addRelation(DtoClass, relation, relationDto, isArray, isRequired) {
|
|
124
|
+
const apiOptions = {
|
|
125
|
+
type: relationDto,
|
|
126
|
+
required: isRequired,
|
|
127
|
+
isArray,
|
|
128
|
+
};
|
|
129
|
+
ApiProperty(apiOptions)(DtoClass.prototype, relation);
|
|
130
|
+
Reflect.defineMetadata("design:type", isArray ? Array : relationDto, DtoClass.prototype, relation);
|
|
131
|
+
Object.defineProperty(DtoClass.prototype, relation, {
|
|
132
|
+
value: undefined,
|
|
133
|
+
writable: true,
|
|
134
|
+
enumerable: true,
|
|
135
|
+
configurable: true,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function addRelationUpdate(DtoClass, relation, relationType, relationDto, isArray, isRequired) {
|
|
139
|
+
const extraModels = Reflect.getMetadata(DECORATORS.API_EXTRA_MODELS, DtoClass) || [];
|
|
140
|
+
if (!extraModels.includes(relationDto)) {
|
|
141
|
+
Reflect.defineMetadata(DECORATORS.API_EXTRA_MODELS, [...extraModels, relationDto], DtoClass);
|
|
158
142
|
}
|
|
159
|
-
|
|
143
|
+
const dtoRef = `#/components/schemas/${relationDto.name}`;
|
|
144
|
+
const pkTypeName = getPkOpenApiType(relationType);
|
|
145
|
+
const oneOfItems = [{ $ref: dtoRef }, { type: pkTypeName }];
|
|
146
|
+
const apiOptions = isArray
|
|
147
|
+
? { type: "array", required: isRequired, oneOf: oneOfItems }
|
|
148
|
+
: { type: Object, required: isRequired, oneOf: oneOfItems };
|
|
149
|
+
ApiProperty(apiOptions)(DtoClass.prototype, relation);
|
|
150
|
+
Reflect.defineMetadata("design:type", isArray ? Array : Object, DtoClass.prototype, relation);
|
|
151
|
+
Object.defineProperty(DtoClass.prototype, relation, {
|
|
152
|
+
value: undefined,
|
|
153
|
+
writable: true,
|
|
154
|
+
enumerable: true,
|
|
155
|
+
configurable: true,
|
|
156
|
+
});
|
|
160
157
|
}
|
|
161
|
-
function
|
|
162
|
-
|
|
158
|
+
function getPkOpenApiType(relationType) {
|
|
159
|
+
try {
|
|
160
|
+
const pkPropsMetadata = Model.pkProps(relationType);
|
|
161
|
+
const pkType = pkPropsMetadata?.type;
|
|
162
|
+
if (pkType === Number || pkType === BigInt)
|
|
163
|
+
return "integer";
|
|
164
|
+
return "string";
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return "string";
|
|
168
|
+
}
|
|
163
169
|
}
|
|
164
170
|
function isGeneratedAcrossInheritance(model, prop) {
|
|
165
171
|
let current = model;
|
|
@@ -170,6 +176,26 @@ function isGeneratedAcrossInheritance(model, prop) {
|
|
|
170
176
|
}
|
|
171
177
|
return false;
|
|
172
178
|
}
|
|
179
|
+
function getValidationAcrossInheritance(model, prop) {
|
|
180
|
+
let current = model;
|
|
181
|
+
while (current && current !== Object && current !== Function) {
|
|
182
|
+
const validation = Metadata.validationFor(current, prop);
|
|
183
|
+
if (validation)
|
|
184
|
+
return validation;
|
|
185
|
+
current = Object.getPrototypeOf(current);
|
|
186
|
+
}
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
function getTypeAcrossInheritance(model, prop) {
|
|
190
|
+
let current = model;
|
|
191
|
+
while (current && current !== Object && current !== Function) {
|
|
192
|
+
const type = Metadata.type(current, prop);
|
|
193
|
+
if (type)
|
|
194
|
+
return type;
|
|
195
|
+
current = Object.getPrototypeOf(current);
|
|
196
|
+
}
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
173
199
|
function getDtoCache(op) {
|
|
174
200
|
if (!dtoCache.has(op)) {
|
|
175
201
|
dtoCache.set(op, new WeakMap());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DtoBuilder.js","sourceRoot":"","sources":["../../../../src/factory/openapi/DtoBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAe,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,wCAAmC;AACzD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"DtoBuilder.js","sourceRoot":"","sources":["../../../../src/factory/openapi/DtoBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAe,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,wCAAmC;AACzD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,uCAAkC;AAEvD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAGrB,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,MAAM,CACpB,EAAiB,EACjB,KAAqB;IAErB,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,UAAU,GAAG;QACjB,aAAa,CAAC,MAAM;QACpB,qBAAqB,CAAC,UAAU;KACjC,CAAC,QAAQ,CAAC,EAAS,CAAC,CAAC;IAEtB,MAAM,UAAU;KAAG;IACnB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAE7B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE;QACxC,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,KAAK;KAC3D,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC;YACH,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,aAAa,GAAG,MAAM;QAC1B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAY,CAAC,EAAE,SAAS;YACxC,4BAA4B,CAAC,KAAK,EAAE,MAAgB,CAAC;QACvD,CAAC,CAAC,KAAK,CAAC;IAEV,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAU,KAAK,CAAC,SAAS,CAAC,KAAK,CAAc,IAAI,EAAE,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,UAAU,IAAI,CAAC,aAAa,CAAC;QACtC,CAAC;QAED,IAAI,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAE5D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,8BAA8B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,QAAQ,GACZ,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC;YACrC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE5D,MAAM,UAAU,GAAsC;YACpD,QAAQ,EAAE,UAAU;SACrB,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;QAC7B,CAAC;QAED,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAEpD,MAAM,UAAU,GACd,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC;QACxE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,cAAc,CACpB,aAAa,EACb,UAAU,EACV,UAAU,CAAC,SAAS,EACpB,IAAI,CACL,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE;YAChD,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,QAAe,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,aAAa,CAAC,yBAAyB,QAAQ,YAAY,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,YAAY,GACd,YAAY,CAAC,KAAyB,CAAC;QACzC,IAAI,OAAO,YAAY,KAAK,UAAU,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC7D,YAAY,GAAI,YAAoB,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;YACxD,MAAM,IAAI,aAAa,CAAC,qBAAqB,QAAQ,YAAY,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,QAAe,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,CAAC,CAAE,IAAY,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,CAAC,CAAE,IAAY,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAE7C,IAAI,UAAU,EAAE,CAAC;YACf,iBAAiB,CACf,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,OAAO,EACP,UAAU,CACX,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,WAAW,CAClB,QAAa,EACb,QAAgB,EAChB,WAAgB,EAChB,OAAgB,EAChB,UAAmB;IAEnB,MAAM,UAAU,GAAsC;QACpD,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,UAAU;QACpB,OAAO;KACR,CAAC;IACF,WAAW,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtD,OAAO,CAAC,cAAc,CACpB,aAAa,EACb,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAC7B,QAAQ,CAAC,SAAS,EAClB,QAAQ,CACT,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE;QAClD,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAa,EACb,QAAgB,EAChB,YAA8B,EAC9B,WAAgB,EAChB,OAAgB,EAChB,UAAmB;IAEnB,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,cAAc,CACpB,UAAU,CAAC,gBAAgB,EAC3B,CAAC,GAAG,WAAW,EAAE,WAAW,CAAC,EAC7B,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,wBAAwB,WAAW,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAsC,OAAO;QAC3D,CAAC,CAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAU;QACrE,CAAC,CAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAU,CAAC;IAEvE,WAAW,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtD,OAAO,CAAC,cAAc,CACpB,aAAa,EACb,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EACxB,QAAQ,CAAC,SAAS,EAClB,QAAQ,CACT,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE;QAClD,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,YAA8B;IACtD,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,YAAmB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,eAAe,EAAE,IAAI,CAAC;QACrC,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;QAC7D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAuB,EACvB,IAAY;IAEZ,IAAI,OAAO,GAAQ,KAAK,CAAC;IACzB,OAAO,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC7D,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,IAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,8BAA8B,CACrC,KAAuB,EACvB,IAAY;IAEZ,IAAI,OAAO,GAAQ,KAAK,CAAC;IACzB,OAAO,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,IAAW,CAAC,CAAC;QAChE,IAAI,UAAU;YAAE,OAAO,UAAiB,CAAC;QACzC,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAuB,EAAE,IAAY;IACrE,IAAI,OAAO,GAAQ,KAAK,CAAC;IACzB,OAAO,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAClB,EAAiB;IAEjB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;AAC3B,CAAC"}
|
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.js
CHANGED
|
@@ -39,7 +39,7 @@ export * from "./events-module/index.js";
|
|
|
39
39
|
* @constant
|
|
40
40
|
* @type {string}
|
|
41
41
|
*/
|
|
42
|
-
export const VERSION = "0.2.
|
|
42
|
+
export const VERSION = "0.2.30";
|
|
43
43
|
export const PACKAGE_NAME = "@decaf-ts/for-nest";
|
|
44
44
|
Metadata.registerLibrary(PACKAGE_NAME, VERSION);
|
|
45
45
|
//# sourceMappingURL=index.js.map
|