@sculptor/cli 0.2.4 → 0.3.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.
@@ -0,0 +1,37 @@
1
+ export type PackageFileType = "controller" | "service" | "repository" | "middleware" | "module" | "dto" | "route" | "type";
2
+ export interface PackageFileRecord {
3
+ type: PackageFileType;
4
+ path: string;
5
+ }
6
+ export interface PackageRecord {
7
+ name: string;
8
+ path: string;
9
+ index: string;
10
+ files: PackageFileRecord[];
11
+ }
12
+ export interface PackageRegistryArtifact {
13
+ packages: Record<string, PackageRecord>;
14
+ files: PackageFileRecord[];
15
+ }
16
+ export interface PackageScanResult {
17
+ packages: PackageRecord[];
18
+ files: PackageFileRecord[];
19
+ }
20
+ export declare const PACKAGE_REGISTRY_FILE = "sculptor.packages.json";
21
+ export declare const getPackageRegistryPath: (rootDir: string) => string;
22
+ export declare const loadPackageRegistry: (rootDir: string) => PackageRegistryArtifact;
23
+ export declare const savePackageRegistry: (rootDir: string, registry: PackageRegistryArtifact) => void;
24
+ export declare const scanPackageRegistry: (rootDir: string) => PackageScanResult;
25
+ export declare const scanPackageIndexes: (rootDir: string) => PackageRecord[];
26
+ export declare const syncPackageRegistry: (rootDir: string) => PackageRegistryArtifact;
27
+ export declare const renderPackageIndex: (record: PackageRecord) => string;
28
+ export declare const inferPackageNameFromPath: (packagePath: string) => string;
29
+ export declare const inferPackagePath: (rootDir: string, packageName: string, explicitPath?: string) => string;
30
+ export declare const inferPackageIndexPath: (packagePath: string) => string;
31
+ export declare const buildPackageRecord: (rootDir: string, packageName: string, explicitPath?: string) => PackageRecord;
32
+ export declare const readPackageSource: (filePath: string) => string;
33
+ export declare const upsertFileIntoRegistry: (registry: PackageRegistryArtifact, filePath: string) => PackageRegistryArtifact;
34
+ export declare const removeFileFromRegistry: (registry: PackageRegistryArtifact, filePath: string) => PackageRegistryArtifact;
35
+ export declare const getOwningPackage: (registry: PackageRegistryArtifact, filePath: string) => PackageRecord | undefined;
36
+ export declare const renderPackageIndexForRecord: (record: PackageRecord) => string;
37
+ export declare const updatePackageIndexForRecord: (filePath: string, record: PackageRecord) => void;
@@ -0,0 +1,477 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import ts from "typescript";
4
+ import { loadConfig } from "@sculptor/config";
5
+ export const PACKAGE_REGISTRY_FILE = "sculptor.packages.json";
6
+ const isPlainObject = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
7
+ const toPascalCase = (value) => value
8
+ .split(/[^a-zA-Z0-9]+/)
9
+ .filter(Boolean)
10
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
11
+ .join("");
12
+ const toCamelCase = (value) => {
13
+ const pascal = toPascalCase(value);
14
+ return pascal.charAt(0).toLowerCase() + pascal.slice(1);
15
+ };
16
+ const normalizeRelativePath = (value) => value.replace(/\\/g, "/").replace(/^\/+/, "").replace(/\/+$/, "");
17
+ const readJson = (filePath) => {
18
+ if (!fs.existsSync(filePath)) {
19
+ return undefined;
20
+ }
21
+ const raw = fs.readFileSync(filePath, "utf8");
22
+ if (!raw.trim()) {
23
+ return undefined;
24
+ }
25
+ return JSON.parse(raw);
26
+ };
27
+ const writeJson = (filePath, value) => {
28
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
29
+ fs.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
30
+ };
31
+ const getSrcRoot = (rootDir) => String(loadConfig(rootDir).framework.project?.srcRoot ?? "src");
32
+ const isLocalModule = (specifier) => specifier.startsWith(".") || specifier.startsWith("/");
33
+ const toTsPath = (specifier) => {
34
+ if (!specifier.endsWith(".js") && !specifier.endsWith(".ts")) {
35
+ return specifier;
36
+ }
37
+ return specifier.replace(/\.js$/, ".ts");
38
+ };
39
+ const inferFileType = (filePath) => {
40
+ if (filePath.endsWith(".controller.ts")) {
41
+ return "controller";
42
+ }
43
+ if (filePath.endsWith(".service.ts")) {
44
+ return "service";
45
+ }
46
+ if (filePath.endsWith(".repository.ts")) {
47
+ return "repository";
48
+ }
49
+ if (filePath.endsWith(".middleware.ts")) {
50
+ return "middleware";
51
+ }
52
+ if (filePath.endsWith(".module.ts")) {
53
+ return "module";
54
+ }
55
+ if (filePath.endsWith(".route.ts") || filePath.endsWith(".route.handler.ts")) {
56
+ return "route";
57
+ }
58
+ if (filePath.endsWith(".dto.ts")) {
59
+ return "dto";
60
+ }
61
+ return "type";
62
+ };
63
+ const inferSymbolFromFile = (filePath) => {
64
+ const base = path.posix.basename(filePath).replace(/\.ts$/, "");
65
+ if (base.endsWith(".route.handler")) {
66
+ return `${toCamelCase(base.replace(/\.route\.handler$/, ""))}Handler`;
67
+ }
68
+ if (base.endsWith(".route")) {
69
+ return toCamelCase(base.replace(/\.route$/, ""));
70
+ }
71
+ if (base.endsWith(".middleware")) {
72
+ return `${toCamelCase(base.replace(/\.middleware$/, ""))}Middleware`;
73
+ }
74
+ if (base.endsWith(".service")) {
75
+ return `${toPascalCase(base.replace(/\.service$/, ""))}Service`;
76
+ }
77
+ if (base.endsWith(".repository")) {
78
+ return `${toPascalCase(base.replace(/\.repository$/, ""))}Repository`;
79
+ }
80
+ if (base.endsWith(".controller")) {
81
+ return `${toPascalCase(base.replace(/\.controller$/, ""))}Controller`;
82
+ }
83
+ if (base.endsWith(".module")) {
84
+ return `${toPascalCase(base.replace(/\.module$/, ""))}Module`;
85
+ }
86
+ if (base.endsWith(".dto")) {
87
+ return `${toPascalCase(base.replace(/\.dto$/, ""))}Dto`;
88
+ }
89
+ if (base.endsWith(".types")) {
90
+ return `${toPascalCase(base.replace(/\.types$/, ""))}Types`;
91
+ }
92
+ return `${toPascalCase(base)}Type`;
93
+ };
94
+ const collectTsFiles = (dir, rootDir = dir) => {
95
+ if (!fs.existsSync(dir)) {
96
+ return [];
97
+ }
98
+ const files = [];
99
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
100
+ const fullPath = path.join(dir, entry.name);
101
+ if (entry.isDirectory()) {
102
+ files.push(...collectTsFiles(fullPath, rootDir));
103
+ continue;
104
+ }
105
+ if (!entry.isFile() || !entry.name.endsWith(".ts")) {
106
+ continue;
107
+ }
108
+ files.push(normalizeRelativePath(path.relative(rootDir, fullPath)));
109
+ }
110
+ return files;
111
+ };
112
+ const fileBelongsToPackage = (packagePath, filePath) => {
113
+ const normalizedPackagePath = normalizeRelativePath(packagePath);
114
+ const normalizedFilePath = normalizeRelativePath(filePath);
115
+ return normalizedFilePath.startsWith(`${normalizedPackagePath}/`) && normalizedFilePath !== `${normalizedPackagePath}/index.ts`;
116
+ };
117
+ const getDecorators = (node) => ts.canHaveDecorators(node) ? ts.getDecorators(node) ?? [] : [];
118
+ const getPackageDecorator = (node) => {
119
+ for (const decorator of getDecorators(node)) {
120
+ const expression = decorator.expression;
121
+ if (!ts.isCallExpression(expression)) {
122
+ continue;
123
+ }
124
+ const callee = expression.expression;
125
+ if (ts.isIdentifier(callee) && callee.text === "Package") {
126
+ return expression;
127
+ }
128
+ }
129
+ return undefined;
130
+ };
131
+ const parsePackageMetadata = (rootDir, filePath) => {
132
+ const sourceText = fs.readFileSync(filePath, "utf8");
133
+ const sourceFile = ts.createSourceFile(filePath, sourceText, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
134
+ const classes = sourceFile.statements.filter(ts.isClassDeclaration);
135
+ const decoratedClass = classes.find((node) => getPackageDecorator(node));
136
+ if (!decoratedClass) {
137
+ return undefined;
138
+ }
139
+ const decorator = getPackageDecorator(decoratedClass);
140
+ const argument = decorator?.arguments[0];
141
+ if (!argument || !ts.isObjectLiteralExpression(argument)) {
142
+ throw new Error(`Malformed @Package() metadata in ${filePath}.`);
143
+ }
144
+ const values = new Map();
145
+ for (const property of argument.properties) {
146
+ if (!ts.isPropertyAssignment(property)) {
147
+ continue;
148
+ }
149
+ const name = ts.isIdentifier(property.name) ? property.name.text : property.name.getText(sourceFile);
150
+ values.set(name, property.initializer);
151
+ }
152
+ const getString = (key, fallback = "") => {
153
+ const value = values.get(key);
154
+ if (!value || !ts.isStringLiteralLike(value)) {
155
+ return fallback;
156
+ }
157
+ return value.text;
158
+ };
159
+ const name = getString("name", decoratedClass.name?.text ?? "");
160
+ const packagePath = getString("path", "");
161
+ if (!name || !packagePath) {
162
+ throw new Error(`Malformed @Package() metadata in ${filePath}.`);
163
+ }
164
+ return {
165
+ name,
166
+ path: packagePath,
167
+ index: normalizeRelativePath(path.relative(rootDir, filePath))
168
+ };
169
+ };
170
+ export const getPackageRegistryPath = (rootDir) => path.join(rootDir, PACKAGE_REGISTRY_FILE);
171
+ export const loadPackageRegistry = (rootDir) => {
172
+ const filePath = getPackageRegistryPath(rootDir);
173
+ const data = readJson(filePath);
174
+ if (!data) {
175
+ return { packages: {}, files: [] };
176
+ }
177
+ return {
178
+ packages: data.packages ?? {},
179
+ files: data.files ?? []
180
+ };
181
+ };
182
+ export const savePackageRegistry = (rootDir, registry) => {
183
+ writeJson(getPackageRegistryPath(rootDir), registry);
184
+ };
185
+ export const scanPackageRegistry = (rootDir) => {
186
+ const srcRoot = getSrcRoot(rootDir);
187
+ const sourceRoot = path.join(rootDir, srcRoot);
188
+ const packages = [];
189
+ const visit = (dir) => {
190
+ if (!fs.existsSync(dir)) {
191
+ return;
192
+ }
193
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
194
+ const fullPath = path.join(dir, entry.name);
195
+ if (entry.isDirectory()) {
196
+ visit(fullPath);
197
+ continue;
198
+ }
199
+ if (!entry.isFile() || entry.name !== "index.ts") {
200
+ continue;
201
+ }
202
+ const packageMeta = parsePackageMetadata(rootDir, fullPath);
203
+ if (!packageMeta) {
204
+ continue;
205
+ }
206
+ packages.push({
207
+ ...packageMeta,
208
+ files: []
209
+ });
210
+ }
211
+ };
212
+ visit(sourceRoot);
213
+ const allTsFiles = collectTsFiles(sourceRoot, rootDir);
214
+ const ownedFiles = new Set();
215
+ for (const file of allTsFiles) {
216
+ if (file === PACKAGE_REGISTRY_FILE || file.endsWith(".d.ts") || file.endsWith("index.ts")) {
217
+ continue;
218
+ }
219
+ const owner = [...packages]
220
+ .filter((pkg) => fileBelongsToPackage(pkg.path, file))
221
+ .sort((left, right) => right.path.length - left.path.length)[0];
222
+ const nextFile = {
223
+ type: inferFileType(file),
224
+ path: file
225
+ };
226
+ if (owner) {
227
+ owner.files.push(nextFile);
228
+ ownedFiles.add(file);
229
+ }
230
+ }
231
+ const unpackaged = [];
232
+ for (const file of allTsFiles) {
233
+ if (file === PACKAGE_REGISTRY_FILE || file.endsWith(".d.ts") || file.endsWith("index.ts")) {
234
+ continue;
235
+ }
236
+ if (ownedFiles.has(file)) {
237
+ continue;
238
+ }
239
+ unpackaged.push({
240
+ type: inferFileType(file),
241
+ path: file
242
+ });
243
+ }
244
+ return {
245
+ packages: packages
246
+ .map((pkg) => ({ ...pkg, files: pkg.files.sort((left, right) => left.path.localeCompare(right.path)) }))
247
+ .sort((left, right) => left.name.localeCompare(right.name)),
248
+ files: unpackaged.sort((left, right) => left.path.localeCompare(right.path))
249
+ };
250
+ };
251
+ export const scanPackageIndexes = (rootDir) => scanPackageRegistry(rootDir).packages;
252
+ export const syncPackageRegistry = (rootDir) => {
253
+ const scanned = scanPackageRegistry(rootDir);
254
+ const registry = {
255
+ packages: Object.fromEntries(scanned.packages.map((pkg) => [pkg.name, pkg])),
256
+ files: scanned.files
257
+ };
258
+ savePackageRegistry(rootDir, registry);
259
+ return registry;
260
+ };
261
+ const derivePackageIndexView = (record) => {
262
+ const ownedFiles = record.files.filter((file) => file.path !== record.index);
263
+ const controllerFiles = ownedFiles.filter((file) => file.path.endsWith(".controller.ts"));
264
+ const serviceFiles = ownedFiles.filter((file) => file.path.endsWith(".service.ts"));
265
+ const repositoryFiles = ownedFiles.filter((file) => file.path.endsWith(".repository.ts"));
266
+ const middlewareFiles = ownedFiles.filter((file) => file.path.endsWith(".middleware.ts"));
267
+ const routeFiles = ownedFiles.filter((file) => file.path.endsWith(".route.ts"));
268
+ const routeHandlerFiles = ownedFiles.filter((file) => file.path.endsWith(".route.handler.ts"));
269
+ const dtoFiles = ownedFiles.filter((file) => file.path.endsWith(".dto.ts"));
270
+ const typeFiles = ownedFiles.filter((file) => file.path.endsWith(".types.ts") || file.path.endsWith(".type.ts"));
271
+ const importableFiles = [
272
+ ...controllerFiles,
273
+ ...serviceFiles,
274
+ ...repositoryFiles,
275
+ ...middlewareFiles,
276
+ ...routeFiles,
277
+ ...dtoFiles
278
+ ];
279
+ const exportFiles = [
280
+ ...controllerFiles,
281
+ ...serviceFiles,
282
+ ...repositoryFiles,
283
+ ...middlewareFiles,
284
+ ...routeFiles,
285
+ ...routeHandlerFiles,
286
+ ...dtoFiles
287
+ ];
288
+ const packageExportFiles = [
289
+ ...serviceFiles,
290
+ ...repositoryFiles,
291
+ ...middlewareFiles,
292
+ ...dtoFiles
293
+ ];
294
+ const renderArray = (values) => values.length === 0 ? "[]" : `[\n${values.map((value) => ` ${value}`).join(",\n")}\n ]`;
295
+ const imports = importableFiles
296
+ .map((file) => {
297
+ const symbol = inferSymbolFromFile(file.path);
298
+ const relative = normalizeRelativePath(path.posix.relative(record.path, file.path)).replace(/\.ts$/, ".js");
299
+ return `import { ${symbol} } from "./${relative}";`;
300
+ })
301
+ .join("\n");
302
+ const exports = [...exportFiles, ...typeFiles]
303
+ .map((file) => {
304
+ const relative = normalizeRelativePath(path.posix.relative(record.path, file.path)).replace(/\.ts$/, ".js");
305
+ if (file.path.endsWith(".types.ts") || file.path.endsWith(".type.ts")) {
306
+ return `export type { ${inferSymbolFromFile(file.path)} } from "./${relative}";`;
307
+ }
308
+ return `export * from "./${relative}";`;
309
+ })
310
+ .join("\n");
311
+ const packageBlock = `@Package({
312
+ name: "${record.name}",
313
+ path: "${record.path}",
314
+ imports: [],
315
+ exports: ${renderArray(packageExportFiles.map((file) => inferSymbolFromFile(file.path)))},
316
+ controllers: ${renderArray(controllerFiles.map((file) => inferSymbolFromFile(file.path)))},
317
+ services: ${renderArray(serviceFiles.map((file) => inferSymbolFromFile(file.path)))},
318
+ repositories: ${renderArray(repositoryFiles.map((file) => inferSymbolFromFile(file.path)))},
319
+ middlewares: ${renderArray(middlewareFiles.map((file) => inferSymbolFromFile(file.path)))},
320
+ routes: ${renderArray(routeFiles.map((file) => inferSymbolFromFile(file.path)))}
321
+ })
322
+ export class ${toPascalCase(record.name)}Package {}`;
323
+ return { imports, exports, packageBlock };
324
+ };
325
+ export const renderPackageIndex = (record) => {
326
+ const sections = derivePackageIndexView(record);
327
+ return `/**\n * @generated true\n */\nimport { Package } from "@sculptor/core";\n\n// [sculptor:imports:start]\n${sections.imports}\n// [sculptor:imports:end]\n\n// [sculptor:exports:start]\n${sections.exports}\n// [sculptor:exports:end]\n\n// [sculptor:package:start]\n${sections.packageBlock}\n// [sculptor:package:end]\n`;
328
+ };
329
+ export const inferPackageNameFromPath = (packagePath) => normalizeRelativePath(path.posix.basename(packagePath));
330
+ export const inferPackagePath = (rootDir, packageName, explicitPath) => {
331
+ const srcRoot = getSrcRoot(rootDir);
332
+ const packageFolder = normalizeRelativePath(packageName);
333
+ if (explicitPath) {
334
+ return normalizeRelativePath(path.posix.join(normalizeRelativePath(explicitPath), packageFolder));
335
+ }
336
+ return normalizeRelativePath(path.posix.join(srcRoot, packageFolder));
337
+ };
338
+ export const inferPackageIndexPath = (packagePath) => normalizeRelativePath(path.posix.join(packagePath, "index.ts"));
339
+ export const buildPackageRecord = (rootDir, packageName, explicitPath) => {
340
+ const packagePath = inferPackagePath(rootDir, packageName, explicitPath);
341
+ const index = inferPackageIndexPath(packagePath);
342
+ const normalizedPackageName = normalizeRelativePath(packageName);
343
+ const files = [
344
+ { type: "controller", path: normalizeRelativePath(path.posix.join(packagePath, `${normalizedPackageName}.controller.ts`)) },
345
+ { type: "service", path: normalizeRelativePath(path.posix.join(packagePath, `${normalizedPackageName}.service.ts`)) },
346
+ { type: "repository", path: normalizeRelativePath(path.posix.join(packagePath, `${normalizedPackageName}.repository.ts`)) },
347
+ { type: "dto", path: normalizeRelativePath(path.posix.join(packagePath, `${normalizedPackageName}.dto.ts`)) },
348
+ { type: "type", path: normalizeRelativePath(path.posix.join(packagePath, `${normalizedPackageName}.types.ts`)) }
349
+ ];
350
+ return {
351
+ name: normalizedPackageName,
352
+ path: packagePath,
353
+ index,
354
+ files,
355
+ };
356
+ };
357
+ export const readPackageSource = (filePath) => {
358
+ const sourceText = fs.readFileSync(filePath, "utf8");
359
+ return sourceText;
360
+ };
361
+ const isFileOwnedByPackage = (record, filePath) => {
362
+ const normalized = normalizeRelativePath(filePath);
363
+ return normalized.startsWith(`${record.path}/`) || normalized === record.index;
364
+ };
365
+ export const upsertFileIntoRegistry = (registry, filePath) => {
366
+ const normalizedPath = normalizeRelativePath(filePath);
367
+ const fileType = inferFileType(normalizedPath);
368
+ for (const record of Object.values(registry.packages)) {
369
+ if (normalizedPath === record.index) {
370
+ return registry;
371
+ }
372
+ if (!isFileOwnedByPackage(record, normalizedPath)) {
373
+ continue;
374
+ }
375
+ const existingIndex = record.files.findIndex((entry) => entry.path === normalizedPath);
376
+ const nextFile = {
377
+ type: fileType,
378
+ path: normalizedPath
379
+ };
380
+ if (existingIndex >= 0) {
381
+ record.files[existingIndex] = nextFile;
382
+ }
383
+ else {
384
+ record.files.push(nextFile);
385
+ }
386
+ return registry;
387
+ }
388
+ const existing = registry.files.findIndex((entry) => entry.path === normalizedPath);
389
+ const nextFile = {
390
+ type: fileType,
391
+ path: normalizedPath
392
+ };
393
+ if (existing >= 0) {
394
+ registry.files[existing] = nextFile;
395
+ }
396
+ else {
397
+ registry.files.push(nextFile);
398
+ }
399
+ return registry;
400
+ };
401
+ export const removeFileFromRegistry = (registry, filePath) => {
402
+ const normalizedPath = normalizeRelativePath(filePath);
403
+ for (const record of Object.values(registry.packages)) {
404
+ if (normalizedPath === record.index) {
405
+ return registry;
406
+ }
407
+ if (!isFileOwnedByPackage(record, normalizedPath)) {
408
+ continue;
409
+ }
410
+ record.files = record.files.filter((entry) => entry.path !== normalizedPath);
411
+ return registry;
412
+ }
413
+ registry.files = registry.files.filter((entry) => entry.path !== normalizedPath);
414
+ return registry;
415
+ };
416
+ export const getOwningPackage = (registry, filePath) => {
417
+ const normalizedPath = normalizeRelativePath(filePath);
418
+ return Object.values(registry.packages).find((record) => isFileOwnedByPackage(record, normalizedPath));
419
+ };
420
+ export const renderPackageIndexForRecord = (record) => renderPackageIndex(record);
421
+ const generatedMarkers = {
422
+ imports: {
423
+ start: "// [sculptor:imports:start]",
424
+ end: "// [sculptor:imports:end]"
425
+ },
426
+ exports: {
427
+ start: "// [sculptor:exports:start]",
428
+ end: "// [sculptor:exports:end]"
429
+ },
430
+ package: {
431
+ start: "// [sculptor:package:start]",
432
+ end: "// [sculptor:package:end]"
433
+ }
434
+ };
435
+ const replaceMarkerBlock = (source, section, content) => {
436
+ const { start, end } = generatedMarkers[section];
437
+ const startIndex = source.indexOf(start);
438
+ const endIndex = source.indexOf(end);
439
+ if (startIndex < 0 || endIndex < 0 || endIndex < startIndex) {
440
+ throw new Error(`Malformed package index markers for ${section}.`);
441
+ }
442
+ if (source.indexOf(start, startIndex + start.length) !== -1 || source.indexOf(end, endIndex + end.length) !== -1) {
443
+ throw new Error(`Malformed package index markers for ${section}.`);
444
+ }
445
+ return `${source.slice(0, startIndex + start.length)}\n${content}\n${source.slice(endIndex)}`;
446
+ };
447
+ const renderPackageIndexSections = (record) => {
448
+ const sections = derivePackageIndexView(record);
449
+ return {
450
+ imports: sections.imports,
451
+ exports: sections.exports,
452
+ package: sections.packageBlock
453
+ };
454
+ };
455
+ export const updatePackageIndexForRecord = (filePath, record) => {
456
+ const next = renderPackageIndex(record);
457
+ if (!fs.existsSync(filePath)) {
458
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
459
+ fs.writeFileSync(filePath, next, "utf8");
460
+ return;
461
+ }
462
+ const current = fs.readFileSync(filePath, "utf8");
463
+ for (const section of Object.keys(generatedMarkers)) {
464
+ if (!current.includes(generatedMarkers[section].start) || !current.includes(generatedMarkers[section].end)) {
465
+ throw new Error(`Package index markers are missing or malformed in ${filePath}. Refusing to rewrite the file unsafely.`);
466
+ }
467
+ }
468
+ let updated = current;
469
+ const sections = renderPackageIndexSections(record);
470
+ updated = replaceMarkerBlock(updated, "imports", sections.imports);
471
+ updated = replaceMarkerBlock(updated, "exports", sections.exports);
472
+ updated = replaceMarkerBlock(updated, "package", sections.package);
473
+ if (updated !== current) {
474
+ fs.writeFileSync(filePath, updated, "utf8");
475
+ }
476
+ };
477
+ //# sourceMappingURL=package-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-registry.js","sourceRoot":"","sources":["../src/package-registry.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,11 @@ export type { DevServer, GenerateKind, ScaffoldMode, ScaffoldProjectMetadata, Ty
4
4
  export declare const controllerHelp = "# Controller Generator\n\n## Usage\n\n```bash\nsc generate controller user\nsc g c user\nsc generate controller user in src/app/controllers\nsc g c user --functional\n```\n\n## Output\n\n- `controllers/*.controller.ts`\n- controller-first by default\n- pass `--functional` to opt into paired functional route and handler files\n";
5
5
  export declare const moduleHelp = "# Module Generator\n\n## Usage\n\n```bash\nsc generate module user\nsc g mo user\n```\n";
6
6
  export declare const middlewareHelp = "# Middleware Generator\n\n## Usage\n\n```bash\nsc generate middleware auth\nsc g mw auth\n```\n";
7
+ export declare const repositoryHelp = "# Repository Generator\n\n## Usage\n\n```bash\nsc generate repository user\nsc g repo user\n```\n\n## Output\n\n- `*.repository.ts`\n- generates a `@Repository()` class\n";
8
+ export declare const dtoHelp = "# DTO Generator\n\n## Usage\n\n```bash\nsc generate dto user\nsc g dto user\n```\n\n## Output\n\n- `*.dto.ts`\n- generates an explicit DTO class\n";
7
9
  export declare const typeHelp = "# Type Generator\n\n## Usage\n\n```bash\nsc generate type user\nsc g t user\nsc g t user -i\nsc g t user -c\nsc g t user -e\n```\n\n## Flags\n\n- `-i`, `-interface` => `*.interface.ts`\n- `-c`, `-class` => `*.class.ts`\n- `-e`, `-enum` => `*.enum.ts`\n- default => `*.type.ts`\n";
8
10
  export declare const routeHelp = "# Route Generator\n\n## Usage\n\n```bash\nsc generate route user\nsc g r user\n```\n\n## Output\n\n- `*.route.ts`\n- `*.route.handler.ts`\n- uses `FunctionalRouter(prefix)`\n- generates a paired handler with try/catch and error middleware boilerplate\n";
9
- export declare const generateHelp = "# Generate\n\n## Usage\n\n```bash\nsc generate controller user\nsc generate service user\nsc generate module user\nsc generate middleware auth\nsc generate type user\nsc generate route user\n```\n\n## Aliases\n\n- `sc g`\n- `controller` -> `c`\n- `service` -> `s`\n- `module` -> `m` / `mo`\n- `middleware` -> `mw`\n- `type` -> `t`\n- `route` -> `r`\n\n## Path\n\n- append `in <path>` to write into a custom directory\n- default output for types is `src/app/types`\n- controller generators are controller-first by default; pass `--functional` only when you want the paired functional route files\n- route generators always emit the paired functional route and handler files\n";
11
+ export declare const generateHelp = "# Generate\n\n## Usage\n\n```bash\nsc generate controller user\nsc generate service user\nsc generate module user\nsc generate middleware auth\nsc generate repository user\nsc generate dto user\nsc generate type user\nsc generate route user\nsc generate pkg user\nsc generate package user\n```\n\n## Aliases\n\n- `sc g`\n- `controller` -> `c`\n- `service` -> `s`\n- `module` -> `m` / `mo`\n- `middleware` -> `mw`\n- `repository` -> `repo`\n- `dto` -> `dto`\n- `type` -> `t`\n- `route` -> `r`\n- `pkg` -> `pkg`\n- `package` -> `package`\n\n## Path\n\n- append `in <path>` to write into a custom directory\n- default output for types is `src/app/types`\n- default output for repositories is `src/app/repositories`\n- default output for DTOs is `src/app/dtos`\n- package generation uses the configured `project.srcRoot` unless `in` is provided\n- controller generators are controller-first by default; pass `--functional` only when you want the paired functional route files\n- route generators always emit the paired functional route and handler files\n";
10
12
  export declare const readModeFromFlags: (flags: string[], fallback: ScaffoldMode) => ScaffoldMode;
11
13
  export declare const parseGenerateMode: (mode: string | undefined, fallback: ScaffoldMode) => ScaffoldMode;
12
14
  type TemplateRegistryModule = typeof import("../../template-registry/dist/index.js");
package/dist/scaffold.js CHANGED
@@ -34,6 +34,34 @@ sc generate middleware auth
34
34
  sc g mw auth
35
35
  \`\`\`
36
36
  `;
37
+ export const repositoryHelp = `# Repository Generator
38
+
39
+ ## Usage
40
+
41
+ \`\`\`bash
42
+ sc generate repository user
43
+ sc g repo user
44
+ \`\`\`
45
+
46
+ ## Output
47
+
48
+ - \`*.repository.ts\`
49
+ - generates a \`@Repository()\` class
50
+ `;
51
+ export const dtoHelp = `# DTO Generator
52
+
53
+ ## Usage
54
+
55
+ \`\`\`bash
56
+ sc generate dto user
57
+ sc g dto user
58
+ \`\`\`
59
+
60
+ ## Output
61
+
62
+ - \`*.dto.ts\`
63
+ - generates an explicit DTO class
64
+ `;
37
65
  export const typeHelp = `# Type Generator
38
66
 
39
67
  ## Usage
@@ -78,8 +106,12 @@ sc generate controller user
78
106
  sc generate service user
79
107
  sc generate module user
80
108
  sc generate middleware auth
109
+ sc generate repository user
110
+ sc generate dto user
81
111
  sc generate type user
82
112
  sc generate route user
113
+ sc generate pkg user
114
+ sc generate package user
83
115
  \`\`\`
84
116
 
85
117
  ## Aliases
@@ -89,13 +121,20 @@ sc generate route user
89
121
  - \`service\` -> \`s\`
90
122
  - \`module\` -> \`m\` / \`mo\`
91
123
  - \`middleware\` -> \`mw\`
124
+ - \`repository\` -> \`repo\`
125
+ - \`dto\` -> \`dto\`
92
126
  - \`type\` -> \`t\`
93
127
  - \`route\` -> \`r\`
128
+ - \`pkg\` -> \`pkg\`
129
+ - \`package\` -> \`package\`
94
130
 
95
131
  ## Path
96
132
 
97
133
  - append \`in <path>\` to write into a custom directory
98
134
  - default output for types is \`src/app/types\`
135
+ - default output for repositories is \`src/app/repositories\`
136
+ - default output for DTOs is \`src/app/dtos\`
137
+ - package generation uses the configured \`project.srcRoot\` unless \`in\` is provided
99
138
  - controller generators are controller-first by default; pass \`--functional\` only when you want the paired functional route files
100
139
  - route generators always emit the paired functional route and handler files
101
140
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}