@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/cli/main.js
CHANGED
|
@@ -1154,18 +1154,27 @@ function refRootIdentifier(refName) {
|
|
|
1154
1154
|
function hasSource(src) {
|
|
1155
1155
|
return !!(src.schema || src.zodText || src.zodRef);
|
|
1156
1156
|
}
|
|
1157
|
+
function escapeRegExp(s) {
|
|
1158
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1159
|
+
}
|
|
1160
|
+
var wordBoundaryRegexCache = /* @__PURE__ */ new Map();
|
|
1161
|
+
function wordBoundaryRegex(token) {
|
|
1162
|
+
let re = wordBoundaryRegexCache.get(token);
|
|
1163
|
+
if (re === void 0) {
|
|
1164
|
+
re = new RegExp(`\\b${escapeRegExp(token)}\\b`, "g");
|
|
1165
|
+
wordBoundaryRegexCache.set(token, re);
|
|
1166
|
+
}
|
|
1167
|
+
return re;
|
|
1168
|
+
}
|
|
1157
1169
|
function applyRenames(text, renames) {
|
|
1158
1170
|
if (!renames || renames.size === 0) return text;
|
|
1159
1171
|
let out = text;
|
|
1160
1172
|
for (const [from, to] of renames) {
|
|
1161
1173
|
if (from === to) continue;
|
|
1162
|
-
out = out.replace(
|
|
1174
|
+
out = out.replace(wordBoundaryRegex(from), to);
|
|
1163
1175
|
}
|
|
1164
1176
|
return out;
|
|
1165
1177
|
}
|
|
1166
|
-
function escapeRegExp(s) {
|
|
1167
|
-
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1168
|
-
}
|
|
1169
1178
|
function isSelfReferential(name, text) {
|
|
1170
1179
|
return new RegExp(`\\b${escapeRegExp(name)}\\b`).test(text);
|
|
1171
1180
|
}
|
|
@@ -1177,7 +1186,23 @@ function planNestedSchemas(entries) {
|
|
|
1177
1186
|
const local = Object.entries(entry.nestedSchemas);
|
|
1178
1187
|
if (local.length === 0) continue;
|
|
1179
1188
|
const rename = /* @__PURE__ */ new Map();
|
|
1180
|
-
|
|
1189
|
+
const renameValues = /* @__PURE__ */ new Set();
|
|
1190
|
+
const setRename = (key, value) => {
|
|
1191
|
+
const prev = rename.get(key);
|
|
1192
|
+
rename.set(key, value);
|
|
1193
|
+
if (prev !== void 0 && prev !== value) {
|
|
1194
|
+
let stillUsed = false;
|
|
1195
|
+
for (const v of rename.values()) {
|
|
1196
|
+
if (v === prev) {
|
|
1197
|
+
stillUsed = true;
|
|
1198
|
+
break;
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
if (!stillUsed) renameValues.delete(prev);
|
|
1202
|
+
}
|
|
1203
|
+
renameValues.add(value);
|
|
1204
|
+
};
|
|
1205
|
+
for (const [name] of local) setRename(name, name);
|
|
1181
1206
|
const textFor = (name) => {
|
|
1182
1207
|
const raw = entry.nestedSchemas?.[name] ?? "";
|
|
1183
1208
|
return applyRenames(raw, rename);
|
|
@@ -1195,11 +1220,11 @@ function planNestedSchemas(entries) {
|
|
|
1195
1220
|
if (existing === text) continue;
|
|
1196
1221
|
let i = 2;
|
|
1197
1222
|
let candidate = `${name}_${i}`;
|
|
1198
|
-
while (globalSchemas.has(candidate) && globalSchemas.get(candidate) !== textFor(name) ||
|
|
1223
|
+
while (globalSchemas.has(candidate) && globalSchemas.get(candidate) !== textFor(name) || renameValues.has(candidate)) {
|
|
1199
1224
|
i += 1;
|
|
1200
1225
|
candidate = `${name}_${i}`;
|
|
1201
1226
|
}
|
|
1202
|
-
|
|
1227
|
+
setRename(name, candidate);
|
|
1203
1228
|
changed = true;
|
|
1204
1229
|
}
|
|
1205
1230
|
}
|
|
@@ -2494,6 +2519,7 @@ function extractSchemaFromDto(classDecl, sourceFile, project) {
|
|
|
2494
2519
|
warnings: [],
|
|
2495
2520
|
warnedDecorators: /* @__PURE__ */ new Set(),
|
|
2496
2521
|
emittedClasses: /* @__PURE__ */ new Map(),
|
|
2522
|
+
usedSchemaNames: /* @__PURE__ */ new Set(),
|
|
2497
2523
|
visiting: /* @__PURE__ */ new Set(),
|
|
2498
2524
|
recursiveSchemas: /* @__PURE__ */ new Set(),
|
|
2499
2525
|
depth: 0,
|
|
@@ -2679,6 +2705,7 @@ function buildNestedReference(className, fromFile, ctx, typeArgs = []) {
|
|
|
2679
2705
|
if (ctx.visiting.has(cacheKey)) {
|
|
2680
2706
|
const reserved = ctx.emittedClasses.get(cacheKey) ?? aliasFor(schemaBase, ctx);
|
|
2681
2707
|
ctx.emittedClasses.set(cacheKey, reserved);
|
|
2708
|
+
ctx.usedSchemaNames.add(reserved);
|
|
2682
2709
|
ctx.recursiveSchemas.add(reserved);
|
|
2683
2710
|
if (!ctx.warnedDecorators.has(`recursive:${reserved}`)) {
|
|
2684
2711
|
ctx.warnedDecorators.add(`recursive:${reserved}`);
|
|
@@ -2712,6 +2739,7 @@ function buildNestedReference(className, fromFile, ctx, typeArgs = []) {
|
|
|
2712
2739
|
});
|
|
2713
2740
|
for (const [k, v] of newBindings) ctx.typeBindings.set(k, v);
|
|
2714
2741
|
ctx.emittedClasses.set(cacheKey, schemaName);
|
|
2742
|
+
ctx.usedSchemaNames.add(schemaName);
|
|
2715
2743
|
ctx.visiting.add(cacheKey);
|
|
2716
2744
|
ctx.depth += 1;
|
|
2717
2745
|
const childNode = buildObject(resolved.decl, resolved.file, ctx);
|
|
@@ -2719,15 +2747,14 @@ function buildNestedReference(className, fromFile, ctx, typeArgs = []) {
|
|
|
2719
2747
|
ctx.visiting.delete(cacheKey);
|
|
2720
2748
|
for (const [k] of newBindings) ctx.typeBindings.delete(k);
|
|
2721
2749
|
ctx.named.set(schemaName, childNode);
|
|
2750
|
+
ctx.usedSchemaNames.add(schemaName);
|
|
2722
2751
|
return { kind: "ref", name: schemaName };
|
|
2723
2752
|
}
|
|
2724
2753
|
function aliasFor(className, ctx) {
|
|
2725
2754
|
const baseName = `${className}Schema`;
|
|
2726
2755
|
let candidate = baseName;
|
|
2727
2756
|
let i = 1;
|
|
2728
|
-
|
|
2729
|
-
for (const v of ctx.emittedClasses.values()) used.add(v);
|
|
2730
|
-
while (used.has(candidate)) {
|
|
2757
|
+
while (ctx.usedSchemaNames.has(candidate)) {
|
|
2731
2758
|
candidate = `${baseName}_${i}`;
|
|
2732
2759
|
i += 1;
|
|
2733
2760
|
}
|
|
@@ -4411,7 +4438,7 @@ async function watch(config, onChange) {
|
|
|
4411
4438
|
}
|
|
4412
4439
|
|
|
4413
4440
|
// src/index.ts
|
|
4414
|
-
var VERSION = "0.5.
|
|
4441
|
+
var VERSION = "0.5.1";
|
|
4415
4442
|
|
|
4416
4443
|
// src/cli/codegen.ts
|
|
4417
4444
|
async function runCodegen(opts = {}) {
|