@dudousxd/nestjs-codegen 0.5.0 → 0.5.1
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/CHANGELOG.md +6 -0
- package/dist/cli/main.cjs +38 -11
- package/dist/cli/main.cjs.map +1 -1
- package/dist/cli/main.js +38 -11
- package/dist/cli/main.js.map +1 -1
- package/dist/index.cjs +38 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +38 -11
- package/dist/index.js.map +1 -1
- package/dist/nest/index.cjs +37 -10
- package/dist/nest/index.cjs.map +1 -1
- package/dist/nest/index.js +37 -10
- package/dist/nest/index.js.map +1 -1
- package/package.json +1 -1
package/dist/nest/index.js
CHANGED
|
@@ -530,6 +530,7 @@ function extractSchemaFromDto(classDecl, sourceFile, project) {
|
|
|
530
530
|
warnings: [],
|
|
531
531
|
warnedDecorators: /* @__PURE__ */ new Set(),
|
|
532
532
|
emittedClasses: /* @__PURE__ */ new Map(),
|
|
533
|
+
usedSchemaNames: /* @__PURE__ */ new Set(),
|
|
533
534
|
visiting: /* @__PURE__ */ new Set(),
|
|
534
535
|
recursiveSchemas: /* @__PURE__ */ new Set(),
|
|
535
536
|
depth: 0,
|
|
@@ -715,6 +716,7 @@ function buildNestedReference(className, fromFile, ctx, typeArgs = []) {
|
|
|
715
716
|
if (ctx.visiting.has(cacheKey)) {
|
|
716
717
|
const reserved = ctx.emittedClasses.get(cacheKey) ?? aliasFor(schemaBase, ctx);
|
|
717
718
|
ctx.emittedClasses.set(cacheKey, reserved);
|
|
719
|
+
ctx.usedSchemaNames.add(reserved);
|
|
718
720
|
ctx.recursiveSchemas.add(reserved);
|
|
719
721
|
if (!ctx.warnedDecorators.has(`recursive:${reserved}`)) {
|
|
720
722
|
ctx.warnedDecorators.add(`recursive:${reserved}`);
|
|
@@ -748,6 +750,7 @@ function buildNestedReference(className, fromFile, ctx, typeArgs = []) {
|
|
|
748
750
|
});
|
|
749
751
|
for (const [k, v] of newBindings) ctx.typeBindings.set(k, v);
|
|
750
752
|
ctx.emittedClasses.set(cacheKey, schemaName);
|
|
753
|
+
ctx.usedSchemaNames.add(schemaName);
|
|
751
754
|
ctx.visiting.add(cacheKey);
|
|
752
755
|
ctx.depth += 1;
|
|
753
756
|
const childNode = buildObject(resolved.decl, resolved.file, ctx);
|
|
@@ -755,15 +758,14 @@ function buildNestedReference(className, fromFile, ctx, typeArgs = []) {
|
|
|
755
758
|
ctx.visiting.delete(cacheKey);
|
|
756
759
|
for (const [k] of newBindings) ctx.typeBindings.delete(k);
|
|
757
760
|
ctx.named.set(schemaName, childNode);
|
|
761
|
+
ctx.usedSchemaNames.add(schemaName);
|
|
758
762
|
return { kind: "ref", name: schemaName };
|
|
759
763
|
}
|
|
760
764
|
function aliasFor(className, ctx) {
|
|
761
765
|
const baseName = `${className}Schema`;
|
|
762
766
|
let candidate = baseName;
|
|
763
767
|
let i = 1;
|
|
764
|
-
|
|
765
|
-
for (const v of ctx.emittedClasses.values()) used.add(v);
|
|
766
|
-
while (used.has(candidate)) {
|
|
768
|
+
while (ctx.usedSchemaNames.has(candidate)) {
|
|
767
769
|
candidate = `${baseName}_${i}`;
|
|
768
770
|
i += 1;
|
|
769
771
|
}
|
|
@@ -3234,18 +3236,27 @@ function refRootIdentifier(refName) {
|
|
|
3234
3236
|
function hasSource(src) {
|
|
3235
3237
|
return !!(src.schema || src.zodText || src.zodRef);
|
|
3236
3238
|
}
|
|
3239
|
+
function escapeRegExp(s) {
|
|
3240
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
3241
|
+
}
|
|
3242
|
+
var wordBoundaryRegexCache = /* @__PURE__ */ new Map();
|
|
3243
|
+
function wordBoundaryRegex(token) {
|
|
3244
|
+
let re = wordBoundaryRegexCache.get(token);
|
|
3245
|
+
if (re === void 0) {
|
|
3246
|
+
re = new RegExp(`\\b${escapeRegExp(token)}\\b`, "g");
|
|
3247
|
+
wordBoundaryRegexCache.set(token, re);
|
|
3248
|
+
}
|
|
3249
|
+
return re;
|
|
3250
|
+
}
|
|
3237
3251
|
function applyRenames(text, renames) {
|
|
3238
3252
|
if (!renames || renames.size === 0) return text;
|
|
3239
3253
|
let out = text;
|
|
3240
3254
|
for (const [from, to] of renames) {
|
|
3241
3255
|
if (from === to) continue;
|
|
3242
|
-
out = out.replace(
|
|
3256
|
+
out = out.replace(wordBoundaryRegex(from), to);
|
|
3243
3257
|
}
|
|
3244
3258
|
return out;
|
|
3245
3259
|
}
|
|
3246
|
-
function escapeRegExp(s) {
|
|
3247
|
-
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
3248
|
-
}
|
|
3249
3260
|
function isSelfReferential(name, text) {
|
|
3250
3261
|
return new RegExp(`\\b${escapeRegExp(name)}\\b`).test(text);
|
|
3251
3262
|
}
|
|
@@ -3257,7 +3268,23 @@ function planNestedSchemas(entries) {
|
|
|
3257
3268
|
const local = Object.entries(entry.nestedSchemas);
|
|
3258
3269
|
if (local.length === 0) continue;
|
|
3259
3270
|
const rename = /* @__PURE__ */ new Map();
|
|
3260
|
-
|
|
3271
|
+
const renameValues = /* @__PURE__ */ new Set();
|
|
3272
|
+
const setRename = (key, value) => {
|
|
3273
|
+
const prev = rename.get(key);
|
|
3274
|
+
rename.set(key, value);
|
|
3275
|
+
if (prev !== void 0 && prev !== value) {
|
|
3276
|
+
let stillUsed = false;
|
|
3277
|
+
for (const v of rename.values()) {
|
|
3278
|
+
if (v === prev) {
|
|
3279
|
+
stillUsed = true;
|
|
3280
|
+
break;
|
|
3281
|
+
}
|
|
3282
|
+
}
|
|
3283
|
+
if (!stillUsed) renameValues.delete(prev);
|
|
3284
|
+
}
|
|
3285
|
+
renameValues.add(value);
|
|
3286
|
+
};
|
|
3287
|
+
for (const [name] of local) setRename(name, name);
|
|
3261
3288
|
const textFor = (name) => {
|
|
3262
3289
|
const raw = entry.nestedSchemas?.[name] ?? "";
|
|
3263
3290
|
return applyRenames(raw, rename);
|
|
@@ -3275,11 +3302,11 @@ function planNestedSchemas(entries) {
|
|
|
3275
3302
|
if (existing === text) continue;
|
|
3276
3303
|
let i = 2;
|
|
3277
3304
|
let candidate = `${name}_${i}`;
|
|
3278
|
-
while (globalSchemas.has(candidate) && globalSchemas.get(candidate) !== textFor(name) ||
|
|
3305
|
+
while (globalSchemas.has(candidate) && globalSchemas.get(candidate) !== textFor(name) || renameValues.has(candidate)) {
|
|
3279
3306
|
i += 1;
|
|
3280
3307
|
candidate = `${name}_${i}`;
|
|
3281
3308
|
}
|
|
3282
|
-
|
|
3309
|
+
setRename(name, candidate);
|
|
3283
3310
|
changed = true;
|
|
3284
3311
|
}
|
|
3285
3312
|
}
|