@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.cjs
CHANGED
|
@@ -556,6 +556,7 @@ function extractSchemaFromDto(classDecl, sourceFile, project) {
|
|
|
556
556
|
warnings: [],
|
|
557
557
|
warnedDecorators: /* @__PURE__ */ new Set(),
|
|
558
558
|
emittedClasses: /* @__PURE__ */ new Map(),
|
|
559
|
+
usedSchemaNames: /* @__PURE__ */ new Set(),
|
|
559
560
|
visiting: /* @__PURE__ */ new Set(),
|
|
560
561
|
recursiveSchemas: /* @__PURE__ */ new Set(),
|
|
561
562
|
depth: 0,
|
|
@@ -741,6 +742,7 @@ function buildNestedReference(className, fromFile, ctx, typeArgs = []) {
|
|
|
741
742
|
if (ctx.visiting.has(cacheKey)) {
|
|
742
743
|
const reserved = ctx.emittedClasses.get(cacheKey) ?? aliasFor(schemaBase, ctx);
|
|
743
744
|
ctx.emittedClasses.set(cacheKey, reserved);
|
|
745
|
+
ctx.usedSchemaNames.add(reserved);
|
|
744
746
|
ctx.recursiveSchemas.add(reserved);
|
|
745
747
|
if (!ctx.warnedDecorators.has(`recursive:${reserved}`)) {
|
|
746
748
|
ctx.warnedDecorators.add(`recursive:${reserved}`);
|
|
@@ -774,6 +776,7 @@ function buildNestedReference(className, fromFile, ctx, typeArgs = []) {
|
|
|
774
776
|
});
|
|
775
777
|
for (const [k, v] of newBindings) ctx.typeBindings.set(k, v);
|
|
776
778
|
ctx.emittedClasses.set(cacheKey, schemaName);
|
|
779
|
+
ctx.usedSchemaNames.add(schemaName);
|
|
777
780
|
ctx.visiting.add(cacheKey);
|
|
778
781
|
ctx.depth += 1;
|
|
779
782
|
const childNode = buildObject(resolved.decl, resolved.file, ctx);
|
|
@@ -781,15 +784,14 @@ function buildNestedReference(className, fromFile, ctx, typeArgs = []) {
|
|
|
781
784
|
ctx.visiting.delete(cacheKey);
|
|
782
785
|
for (const [k] of newBindings) ctx.typeBindings.delete(k);
|
|
783
786
|
ctx.named.set(schemaName, childNode);
|
|
787
|
+
ctx.usedSchemaNames.add(schemaName);
|
|
784
788
|
return { kind: "ref", name: schemaName };
|
|
785
789
|
}
|
|
786
790
|
function aliasFor(className, ctx) {
|
|
787
791
|
const baseName = `${className}Schema`;
|
|
788
792
|
let candidate = baseName;
|
|
789
793
|
let i = 1;
|
|
790
|
-
|
|
791
|
-
for (const v of ctx.emittedClasses.values()) used.add(v);
|
|
792
|
-
while (used.has(candidate)) {
|
|
794
|
+
while (ctx.usedSchemaNames.has(candidate)) {
|
|
793
795
|
candidate = `${baseName}_${i}`;
|
|
794
796
|
i += 1;
|
|
795
797
|
}
|
|
@@ -3255,18 +3257,27 @@ function refRootIdentifier(refName) {
|
|
|
3255
3257
|
function hasSource(src) {
|
|
3256
3258
|
return !!(src.schema || src.zodText || src.zodRef);
|
|
3257
3259
|
}
|
|
3260
|
+
function escapeRegExp(s) {
|
|
3261
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
3262
|
+
}
|
|
3263
|
+
var wordBoundaryRegexCache = /* @__PURE__ */ new Map();
|
|
3264
|
+
function wordBoundaryRegex(token) {
|
|
3265
|
+
let re = wordBoundaryRegexCache.get(token);
|
|
3266
|
+
if (re === void 0) {
|
|
3267
|
+
re = new RegExp(`\\b${escapeRegExp(token)}\\b`, "g");
|
|
3268
|
+
wordBoundaryRegexCache.set(token, re);
|
|
3269
|
+
}
|
|
3270
|
+
return re;
|
|
3271
|
+
}
|
|
3258
3272
|
function applyRenames(text, renames) {
|
|
3259
3273
|
if (!renames || renames.size === 0) return text;
|
|
3260
3274
|
let out = text;
|
|
3261
3275
|
for (const [from, to] of renames) {
|
|
3262
3276
|
if (from === to) continue;
|
|
3263
|
-
out = out.replace(
|
|
3277
|
+
out = out.replace(wordBoundaryRegex(from), to);
|
|
3264
3278
|
}
|
|
3265
3279
|
return out;
|
|
3266
3280
|
}
|
|
3267
|
-
function escapeRegExp(s) {
|
|
3268
|
-
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
3269
|
-
}
|
|
3270
3281
|
function isSelfReferential(name, text) {
|
|
3271
3282
|
return new RegExp(`\\b${escapeRegExp(name)}\\b`).test(text);
|
|
3272
3283
|
}
|
|
@@ -3278,7 +3289,23 @@ function planNestedSchemas(entries) {
|
|
|
3278
3289
|
const local = Object.entries(entry.nestedSchemas);
|
|
3279
3290
|
if (local.length === 0) continue;
|
|
3280
3291
|
const rename = /* @__PURE__ */ new Map();
|
|
3281
|
-
|
|
3292
|
+
const renameValues = /* @__PURE__ */ new Set();
|
|
3293
|
+
const setRename = (key, value) => {
|
|
3294
|
+
const prev = rename.get(key);
|
|
3295
|
+
rename.set(key, value);
|
|
3296
|
+
if (prev !== void 0 && prev !== value) {
|
|
3297
|
+
let stillUsed = false;
|
|
3298
|
+
for (const v of rename.values()) {
|
|
3299
|
+
if (v === prev) {
|
|
3300
|
+
stillUsed = true;
|
|
3301
|
+
break;
|
|
3302
|
+
}
|
|
3303
|
+
}
|
|
3304
|
+
if (!stillUsed) renameValues.delete(prev);
|
|
3305
|
+
}
|
|
3306
|
+
renameValues.add(value);
|
|
3307
|
+
};
|
|
3308
|
+
for (const [name] of local) setRename(name, name);
|
|
3282
3309
|
const textFor = (name) => {
|
|
3283
3310
|
const raw = entry.nestedSchemas?.[name] ?? "";
|
|
3284
3311
|
return applyRenames(raw, rename);
|
|
@@ -3296,11 +3323,11 @@ function planNestedSchemas(entries) {
|
|
|
3296
3323
|
if (existing === text) continue;
|
|
3297
3324
|
let i = 2;
|
|
3298
3325
|
let candidate = `${name}_${i}`;
|
|
3299
|
-
while (globalSchemas.has(candidate) && globalSchemas.get(candidate) !== textFor(name) ||
|
|
3326
|
+
while (globalSchemas.has(candidate) && globalSchemas.get(candidate) !== textFor(name) || renameValues.has(candidate)) {
|
|
3300
3327
|
i += 1;
|
|
3301
3328
|
candidate = `${name}_${i}`;
|
|
3302
3329
|
}
|
|
3303
|
-
|
|
3330
|
+
setRename(name, candidate);
|
|
3304
3331
|
changed = true;
|
|
3305
3332
|
}
|
|
3306
3333
|
}
|