@vasp-framework/generator 0.3.0 → 0.9.0

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.
Files changed (62) hide show
  1. package/README.md +2 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/generate.d.ts.map +1 -1
  4. package/dist/generate.js +35 -11
  5. package/dist/generate.js.map +1 -1
  6. package/dist/generators/ApiGenerator.d.ts +7 -0
  7. package/dist/generators/ApiGenerator.d.ts.map +1 -0
  8. package/dist/generators/ApiGenerator.js +54 -0
  9. package/dist/generators/ApiGenerator.js.map +1 -0
  10. package/dist/generators/AuthGenerator.d.ts.map +1 -1
  11. package/dist/generators/AuthGenerator.js +2 -0
  12. package/dist/generators/AuthGenerator.js.map +1 -1
  13. package/dist/generators/BackendGenerator.d.ts +1 -0
  14. package/dist/generators/BackendGenerator.d.ts.map +1 -1
  15. package/dist/generators/BackendGenerator.js +17 -0
  16. package/dist/generators/BackendGenerator.js.map +1 -1
  17. package/dist/generators/BaseGenerator.d.ts +8 -1
  18. package/dist/generators/BaseGenerator.d.ts.map +1 -1
  19. package/dist/generators/BaseGenerator.js +18 -1
  20. package/dist/generators/BaseGenerator.js.map +1 -1
  21. package/dist/generators/CrudGenerator.d.ts.map +1 -1
  22. package/dist/generators/CrudGenerator.js +14 -0
  23. package/dist/generators/CrudGenerator.js.map +1 -1
  24. package/dist/generators/DrizzleSchemaGenerator.d.ts.map +1 -1
  25. package/dist/generators/DrizzleSchemaGenerator.js +114 -6
  26. package/dist/generators/DrizzleSchemaGenerator.js.map +1 -1
  27. package/dist/generators/FrontendGenerator.d.ts.map +1 -1
  28. package/dist/generators/FrontendGenerator.js +8 -2
  29. package/dist/generators/FrontendGenerator.js.map +1 -1
  30. package/dist/generators/JobGenerator.js +1 -1
  31. package/dist/generators/JobGenerator.js.map +1 -1
  32. package/dist/generators/MiddlewareGenerator.d.ts +6 -0
  33. package/dist/generators/MiddlewareGenerator.d.ts.map +1 -0
  34. package/dist/generators/MiddlewareGenerator.js +26 -0
  35. package/dist/generators/MiddlewareGenerator.js.map +1 -0
  36. package/dist/generators/QueryActionGenerator.d.ts +2 -0
  37. package/dist/generators/QueryActionGenerator.d.ts.map +1 -1
  38. package/dist/generators/QueryActionGenerator.js +33 -2
  39. package/dist/generators/QueryActionGenerator.js.map +1 -1
  40. package/dist/generators/ScaffoldGenerator.d.ts.map +1 -1
  41. package/dist/generators/ScaffoldGenerator.js +79 -4
  42. package/dist/generators/ScaffoldGenerator.js.map +1 -1
  43. package/dist/generators/SeedGenerator.d.ts +6 -0
  44. package/dist/generators/SeedGenerator.d.ts.map +1 -0
  45. package/dist/generators/SeedGenerator.js +34 -0
  46. package/dist/generators/SeedGenerator.js.map +1 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +2 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/manifest/Manifest.d.ts +30 -0
  52. package/dist/manifest/Manifest.d.ts.map +1 -0
  53. package/dist/manifest/Manifest.js +60 -0
  54. package/dist/manifest/Manifest.js.map +1 -0
  55. package/dist/template/TemplateEngine.d.ts.map +1 -1
  56. package/dist/template/TemplateEngine.js +72 -7
  57. package/dist/template/TemplateEngine.js.map +1 -1
  58. package/dist/utils/fs.d.ts +13 -0
  59. package/dist/utils/fs.d.ts.map +1 -1
  60. package/dist/utils/fs.js +75 -2
  61. package/dist/utils/fs.js.map +1 -1
  62. package/package.json +1 -1
@@ -11,6 +11,7 @@ export class ScaffoldGenerator extends BaseGenerator {
11
11
  'src/pages',
12
12
  'src/components',
13
13
  'src/lib',
14
+ 'shared',
14
15
  'drizzle',
15
16
  'drizzle/migrations',
16
17
  'server/routes/queries',
@@ -18,6 +19,10 @@ export class ScaffoldGenerator extends BaseGenerator {
18
19
  'server/middleware',
19
20
  'server/db',
20
21
  'tests',
22
+ 'tests/crud',
23
+ 'tests/auth',
24
+ 'tests/queries',
25
+ 'tests/actions',
21
26
  ...(this.ctx.isSpa
22
27
  ? ['src/vasp/client']
23
28
  : ['composables', 'plugins', 'pages', 'middleware']),
@@ -39,15 +44,49 @@ export class ScaffoldGenerator extends BaseGenerator {
39
44
  // .gitignore
40
45
  this.write('.gitignore', this.render('shared/.gitignore.hbs'));
41
46
  // .env.example
42
- this.write('.env.example', this.render('shared/.env.example.hbs', {
47
+ const envData = {
43
48
  backendPort: DEFAULT_BACKEND_PORT,
44
49
  frontendPort,
45
50
  authMethods: this.ctx.ast.auth?.methods ?? [],
51
+ };
52
+ this.write('.env.example', this.render('shared/.env.example.hbs', envData));
53
+ // .env (working copy so the app starts immediately)
54
+ this.write('.env', this.render('shared/.env.hbs', envData));
55
+ // README.md
56
+ this.write('README.md', this.render('shared/README.md.hbs', {
57
+ backendPort: DEFAULT_BACKEND_PORT,
46
58
  }));
47
59
  // tsconfig.json — only when typescript: true
48
60
  if (this.ctx.isTypeScript) {
49
61
  this.write('tsconfig.json', this.render('shared/tsconfig.json.hbs'));
50
62
  }
63
+ // shared/types — entity interfaces + query/action type stubs (TS only)
64
+ if (this.ctx.isTypeScript && this.ctx.ast.entities.length > 0) {
65
+ this.write('shared/types.ts', this.render('shared/shared/types.hbs', {
66
+ entities: this.ctx.ast.entities,
67
+ }));
68
+ }
69
+ // shared/validation — Valibot schemas derived from entities
70
+ if (this.ctx.ast.entities.length > 0) {
71
+ this.write(`shared/validation.${this.ctx.ext}`, this.render('shared/shared/validation.hbs', {
72
+ entities: this.ctx.ast.entities,
73
+ }));
74
+ }
75
+ // Test scaffold
76
+ this.write(`vitest.config.${this.ctx.ext}`, this.render(`shared/tests/vitest.config.${this.ctx.ext}.hbs`));
77
+ this.write(`tests/setup.${this.ctx.ext}`, this.render(`shared/tests/setup.${this.ctx.ext}.hbs`));
78
+ for (const crud of this.ctx.ast.cruds) {
79
+ this.write(`tests/crud/${crud.entity.toLowerCase()}.test.${this.ctx.ext}`, this.render(`shared/tests/crud/_entity.test.${this.ctx.ext}.hbs`, { entity: crud.entity }));
80
+ }
81
+ for (const query of this.ctx.ast.queries) {
82
+ this.write(`tests/queries/${query.name}.test.${this.ctx.ext}`, this.render(`shared/tests/queries/_query.test.${this.ctx.ext}.hbs`, { name: query.name }));
83
+ }
84
+ for (const action of this.ctx.ast.actions) {
85
+ this.write(`tests/actions/${action.name}.test.${this.ctx.ext}`, this.render(`shared/tests/actions/_action.test.${this.ctx.ext}.hbs`, { name: action.name }));
86
+ }
87
+ if (this.ctx.ast.auth) {
88
+ this.write(`tests/auth/login.test.${this.ctx.ext}`, this.render(`shared/tests/auth/login.test.${this.ctx.ext}.hbs`));
89
+ }
51
90
  // main.vasp (copy the source)
52
91
  this.write('main.vasp', this.generateMainVasp());
53
92
  }
@@ -62,11 +101,18 @@ export class ScaffoldGenerator extends BaseGenerator {
62
101
  ` db: ${ast.app.db}`,
63
102
  ` ssr: ${typeof ast.app.ssr === 'string' ? `"${ast.app.ssr}"` : ast.app.ssr}`,
64
103
  ` typescript: ${ast.app.typescript}`,
104
+ ...(ast.app.env && Object.keys(ast.app.env).length > 0
105
+ ? [
106
+ ` env: {`,
107
+ ...Object.entries(ast.app.env).map(([key, requirement]) => ` ${key}: ${requirement}`),
108
+ ` }`,
109
+ ]
110
+ : []),
65
111
  `}`,
66
112
  '',
67
113
  ];
68
114
  if (ast.auth) {
69
- lines.push(`auth ${ast.auth.name} {`, ` userEntity: ${ast.auth.userEntity}`, ` methods: [ ${ast.auth.methods.join(', ')} ]`, `}`, '');
115
+ lines.push(`auth ${ast.auth.name} {`, ` userEntity: ${ast.auth.userEntity}`, ` methods: [ ${ast.auth.methods.join(', ')} ]`, ...(ast.auth.roles && ast.auth.roles.length > 0 ? [` roles: [ ${ast.auth.roles.join(', ')} ]`] : []), `}`, '');
70
116
  }
71
117
  for (const route of ast.routes) {
72
118
  lines.push(`route ${route.name} {`, ` path: "${route.path}"`, ` to: ${route.to}`, `}`, '');
@@ -78,23 +124,52 @@ export class ScaffoldGenerator extends BaseGenerator {
78
124
  : `import { ${comp.namedExport} } from "${comp.source}"`;
79
125
  lines.push(`page ${page.name} {`, ` component: ${importStr}`, `}`, '');
80
126
  }
127
+ for (const entity of ast.entities) {
128
+ lines.push(`entity ${entity.name} {`);
129
+ for (const field of entity.fields) {
130
+ const mods = field.modifiers.map((m) => `@${m.replace('_', '(').replace('default_now', 'default(now)')}`).join(' ');
131
+ lines.push(` ${field.name}: ${field.type}${mods ? ' ' + mods : ''}`);
132
+ }
133
+ lines.push(`}`, '');
134
+ }
81
135
  for (const query of ast.queries) {
82
136
  const fn = query.fn;
83
137
  const fnStr = fn.kind === 'named'
84
138
  ? `import { ${fn.namedExport} } from "${fn.source}"`
85
139
  : `import ${fn.defaultExport} from "${fn.source}"`;
86
- lines.push(`query ${query.name} {`, ` fn: ${fnStr}`, ` entities: [${query.entities.join(', ')}]`, `}`, '');
140
+ lines.push(`query ${query.name} {`, ` fn: ${fnStr}`, ` entities: [${query.entities.join(', ')}]`, ...(query.auth ? [` auth: true`] : []), ...(query.roles && query.roles.length > 0 ? [` roles: [${query.roles.join(', ')}]`] : []), `}`, '');
87
141
  }
88
142
  for (const action of ast.actions) {
89
143
  const fn = action.fn;
90
144
  const fnStr = fn.kind === 'named'
91
145
  ? `import { ${fn.namedExport} } from "${fn.source}"`
92
146
  : `import ${fn.defaultExport} from "${fn.source}"`;
93
- lines.push(`action ${action.name} {`, ` fn: ${fnStr}`, ` entities: [${action.entities.join(', ')}]`, `}`, '');
147
+ lines.push(`action ${action.name} {`, ` fn: ${fnStr}`, ` entities: [${action.entities.join(', ')}]`, ...(action.auth ? [` auth: true`] : []), ...(action.roles && action.roles.length > 0 ? [` roles: [${action.roles.join(', ')}]`] : []), `}`, '');
148
+ }
149
+ for (const middleware of ast.middlewares ?? []) {
150
+ const fn = middleware.fn;
151
+ const fnStr = fn.kind === 'named'
152
+ ? `import { ${fn.namedExport} } from "${fn.source}"`
153
+ : `import ${fn.defaultExport} from "${fn.source}"`;
154
+ lines.push(`middleware ${middleware.name} {`, ` fn: ${fnStr}`, ` scope: ${middleware.scope}`, `}`, '');
155
+ }
156
+ for (const api of ast.apis ?? []) {
157
+ const fn = api.fn;
158
+ const fnStr = fn.kind === 'named'
159
+ ? `import { ${fn.namedExport} } from "${fn.source}"`
160
+ : `import ${fn.defaultExport} from "${fn.source}"`;
161
+ lines.push(`api ${api.name} {`, ` method: ${api.method}`, ` path: "${api.path}"`, ` fn: ${fnStr}`, ...(api.auth ? [` auth: true`] : []), ...(api.roles && api.roles.length > 0 ? [` roles: [${api.roles.join(', ')}]`] : []), `}`, '');
94
162
  }
95
163
  for (const crud of ast.cruds) {
96
164
  lines.push(`crud ${crud.name} {`, ` entity: ${crud.entity}`, ` operations: [${crud.operations.join(', ')}]`, `}`, '');
97
165
  }
166
+ if (ast.seed) {
167
+ const seedFn = ast.seed.fn;
168
+ const seedFnStr = seedFn.kind === 'named'
169
+ ? `import { ${seedFn.namedExport} } from "${seedFn.source}"`
170
+ : `import ${seedFn.defaultExport} from "${seedFn.source}"`;
171
+ lines.push(`seed {`, ` fn: ${seedFnStr}`, `}`, '');
172
+ }
98
173
  return lines.join('\n');
99
174
  }
100
175
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ScaffoldGenerator.js","sourceRoot":"","sources":["../../src/generators/ScaffoldGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScaffoldGenerator.js","sourceRoot":"","sources":["../../src/generators/ScaffoldGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { BaseGenerator } from './BaseGenerator.js';
2
+ export declare class SeedGenerator extends BaseGenerator {
3
+ run(): void;
4
+ private generateSeedStubIfMissing;
5
+ }
6
+ //# sourceMappingURL=SeedGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeedGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/SeedGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,GAAG,IAAI,IAAI;IAuBX,OAAO,CAAC,yBAAyB;CAalC"}
@@ -0,0 +1,34 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { BaseGenerator } from './BaseGenerator.js';
4
+ export class SeedGenerator extends BaseGenerator {
5
+ run() {
6
+ const { seed, app } = this.ctx.ast;
7
+ if (!seed)
8
+ return;
9
+ this.ctx.logger.info('Generating seed runner...');
10
+ const ext = this.ctx.ext;
11
+ const fn = seed.fn;
12
+ const seedImportName = fn.kind === 'named' ? fn.namedExport : fn.defaultExport;
13
+ const fnSource = this.resolveServerImport(fn.source, 'server/db/');
14
+ this.write(`server/db/seed.${ext}`, this.render('shared/server/db/seed.hbs', {
15
+ seedImportKind: fn.kind,
16
+ seedImportName,
17
+ fnSource,
18
+ }));
19
+ this.generateSeedStubIfMissing(fn.source, seedImportName);
20
+ }
21
+ generateSeedStubIfMissing(source, importName) {
22
+ if (!source.startsWith('@src/'))
23
+ return;
24
+ const relativePath = source.replace('@src/', 'src/');
25
+ const fullPath = join(this.ctx.outputDir, relativePath);
26
+ if (existsSync(fullPath))
27
+ return;
28
+ const content = this.ctx.isTypeScript
29
+ ? `export default async function ${importName}(context: { db: unknown }): Promise<void> {\n void context\n}\n`
30
+ : `export default async function ${importName}(context) {\n void context\n}\n`;
31
+ this.write(relativePath, content);
32
+ }
33
+ }
34
+ //# sourceMappingURL=SeedGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeedGenerator.js","sourceRoot":"","sources":["../../src/generators/SeedGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC9C,GAAG;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;QAClC,IAAI,CAAC,IAAI;YAAE,OAAM;QAEjB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QAEjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QAClB,MAAM,cAAc,GAAG,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAA;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAElE,IAAI,CAAC,KAAK,CACR,kBAAkB,GAAG,EAAE,EACvB,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE;YACvC,cAAc,EAAE,EAAE,CAAC,IAAI;YACvB,cAAc;YACd,QAAQ;SACT,CAAC,CACH,CAAA;QAED,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAC3D,CAAC;IAEO,yBAAyB,CAAC,MAAc,EAAE,UAAkB;QAClE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAM;QAEvC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QACvD,IAAI,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAM;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY;YACnC,CAAC,CAAC,iCAAiC,UAAU,kEAAkE;YAC/G,CAAC,CAAC,iCAAiC,UAAU,kCAAkC,CAAA;QAEjF,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
1
  export { generate } from './generate.js';
2
2
  export type { GeneratorContext } from './GeneratorContext.js';
3
+ export { Manifest, computeHash } from './manifest/Manifest.js';
4
+ export type { ManifestData, ManifestEntry } from './manifest/Manifest.js';
5
+ export { isPlaceholderValue, parseEnvFile } from './utils/fs.js';
3
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAC9D,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA"}
package/dist/index.js CHANGED
@@ -1,3 +1,5 @@
1
1
  // Phase 2: Generator public API
2
2
  export { generate } from './generate.js';
3
+ export { Manifest, computeHash } from './manifest/Manifest.js';
4
+ export { isPlaceholderValue, parseEnvFile } from './utils/fs.js';
3
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,30 @@
1
+ export interface ManifestEntry {
2
+ hash: string;
3
+ generator: string;
4
+ }
5
+ export interface ManifestData {
6
+ version: string;
7
+ generatedAt: string;
8
+ files: Record<string, ManifestEntry>;
9
+ }
10
+ export declare class Manifest {
11
+ private data;
12
+ constructor(version: string);
13
+ /** Record a generated file with its content hash and source generator. */
14
+ record(relativePath: string, content: string, generator: string): void;
15
+ /** Get the manifest entry for a given file path. */
16
+ getEntry(relativePath: string): ManifestEntry | undefined;
17
+ /** Check whether a file was tracked in this manifest. */
18
+ hasFile(relativePath: string): boolean;
19
+ /** All tracked files. */
20
+ get files(): Record<string, ManifestEntry>;
21
+ /** The Vasp version used for this generation. */
22
+ get version(): string;
23
+ /** Persist the manifest to `.vasp/manifest.json` in the output directory. */
24
+ save(outputDir: string): void;
25
+ /** Load an existing manifest from an output directory. Returns null if none exists. */
26
+ static load(outputDir: string): Manifest | null;
27
+ }
28
+ /** Compute a SHA-256 hex digest of the given content. */
29
+ export declare function computeHash(content: string): string;
30
+ //# sourceMappingURL=Manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../../src/manifest/Manifest.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACrC;AAKD,qBAAa,QAAQ;IACnB,OAAO,CAAC,IAAI,CAAc;gBAEd,OAAO,EAAE,MAAM;IAQ3B,0EAA0E;IAC1E,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOtE,oDAAoD;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIzD,yDAAyD;IACzD,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAItC,yBAAyB;IACzB,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAEzC;IAED,iDAAiD;IACjD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,6EAA6E;IAC7E,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAU7B,uFAAuF;IACvF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;CAShD;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -0,0 +1,60 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ const MANIFEST_DIR = '.vasp';
5
+ const MANIFEST_FILE = 'manifest.json';
6
+ export class Manifest {
7
+ data;
8
+ constructor(version) {
9
+ this.data = {
10
+ version,
11
+ generatedAt: new Date().toISOString(),
12
+ files: {},
13
+ };
14
+ }
15
+ /** Record a generated file with its content hash and source generator. */
16
+ record(relativePath, content, generator) {
17
+ this.data.files[relativePath] = {
18
+ hash: computeHash(content),
19
+ generator,
20
+ };
21
+ }
22
+ /** Get the manifest entry for a given file path. */
23
+ getEntry(relativePath) {
24
+ return this.data.files[relativePath];
25
+ }
26
+ /** Check whether a file was tracked in this manifest. */
27
+ hasFile(relativePath) {
28
+ return relativePath in this.data.files;
29
+ }
30
+ /** All tracked files. */
31
+ get files() {
32
+ return this.data.files;
33
+ }
34
+ /** The Vasp version used for this generation. */
35
+ get version() {
36
+ return this.data.version;
37
+ }
38
+ /** Persist the manifest to `.vasp/manifest.json` in the output directory. */
39
+ save(outputDir) {
40
+ const manifestDir = join(outputDir, MANIFEST_DIR);
41
+ mkdirSync(manifestDir, { recursive: true });
42
+ writeFileSync(join(manifestDir, MANIFEST_FILE), JSON.stringify(this.data, null, 2), 'utf8');
43
+ }
44
+ /** Load an existing manifest from an output directory. Returns null if none exists. */
45
+ static load(outputDir) {
46
+ const manifestPath = join(outputDir, MANIFEST_DIR, MANIFEST_FILE);
47
+ if (!existsSync(manifestPath))
48
+ return null;
49
+ const raw = readFileSync(manifestPath, 'utf8');
50
+ const data = JSON.parse(raw);
51
+ const manifest = new Manifest(data.version);
52
+ manifest.data = data;
53
+ return manifest;
54
+ }
55
+ }
56
+ /** Compute a SHA-256 hex digest of the given content. */
57
+ export function computeHash(content) {
58
+ return createHash('sha256').update(content, 'utf8').digest('hex');
59
+ }
60
+ //# sourceMappingURL=Manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../../src/manifest/Manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAahC,MAAM,YAAY,GAAG,OAAO,CAAA;AAC5B,MAAM,aAAa,GAAG,eAAe,CAAA;AAErC,MAAM,OAAO,QAAQ;IACX,IAAI,CAAc;IAE1B,YAAY,OAAe;QACzB,IAAI,CAAC,IAAI,GAAG;YACV,OAAO;YACP,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,KAAK,EAAE,EAAE;SACV,CAAA;IACH,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,YAAoB,EAAE,OAAe,EAAE,SAAiB;QAC7D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG;YAC9B,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;YAC1B,SAAS;SACV,CAAA;IACH,CAAC;IAED,oDAAoD;IACpD,QAAQ,CAAC,YAAoB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACtC,CAAC;IAED,yDAAyD;IACzD,OAAO,CAAC,YAAoB;QAC1B,OAAO,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;IACxC,CAAC;IAED,yBAAyB;IACzB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;IACxB,CAAC;IAED,iDAAiD;IACjD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA;IAC1B,CAAC;IAED,6EAA6E;IAC7E,IAAI,CAAC,SAAiB;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QACjD,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3C,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAClC,MAAM,CACP,CAAA;IACH,CAAC;IAED,uFAAuF;IACvF,MAAM,CAAC,IAAI,CAAC,SAAiB;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;QACjE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAA;QAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAA;QAC5C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3C,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAA;QACpB,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF;AAED,yDAAyD;AACzD,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACnE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../../src/template/TemplateEngine.ts"],"names":[],"mappings":"AAOA,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;;IAOvC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAYhC;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAQ1D;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAInE;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,+BAA+B;IAC/B,IAAI,IAAI,MAAM,EAAE;IAMhB,OAAO,CAAC,eAAe;IAqDvB,OAAO,CAAC,OAAO;CAiBhB;AAID,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C"}
1
+ {"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../../src/template/TemplateEngine.ts"],"names":[],"mappings":"AAOA,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;;IAOvC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAYhC;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAQ1D;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAInE;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,+BAA+B;IAC/B,IAAI,IAAI,MAAM,EAAE;IAMhB,OAAO,CAAC,eAAe;IA+HvB,OAAO,CAAC,OAAO;CAiBhB;AAID,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C"}
@@ -78,24 +78,89 @@ export class TemplateEngine {
78
78
  this.hbs.registerHelper('importName', (imp) => {
79
79
  return imp.kind === 'default' ? (imp.defaultExport ?? '') : (imp.namedExport ?? '');
80
80
  });
81
+ /** tsFieldType: maps a Vasp field type to a TypeScript type string */
82
+ this.hbs.registerHelper('tsFieldType', (fieldType, enumValues) => {
83
+ if (fieldType === 'Enum' && Array.isArray(enumValues) && enumValues.length > 0) {
84
+ return enumValues.map((v) => `'${v}'`).join(' | ');
85
+ }
86
+ const tsMap = {
87
+ String: 'string',
88
+ Text: 'string',
89
+ Int: 'number',
90
+ Float: 'number',
91
+ Boolean: 'boolean',
92
+ DateTime: 'Date',
93
+ Json: 'unknown',
94
+ };
95
+ return tsMap[fieldType] ?? fieldType;
96
+ });
97
+ /** valibotSchema: maps a Vasp field type + nullability to a Valibot schema expression */
98
+ this.hbs.registerHelper('valibotSchema', (fieldType, nullable, optional, enumValues) => {
99
+ let base;
100
+ if (fieldType === 'Enum' && Array.isArray(enumValues) && enumValues.length > 0) {
101
+ const items = enumValues.map((v) => `'${v}'`).join(', ');
102
+ base = `v.picklist([${items}])`;
103
+ }
104
+ else {
105
+ const baseMap = {
106
+ String: 'v.pipe(v.string(), v.minLength(1))',
107
+ Text: 'v.pipe(v.string(), v.minLength(1))',
108
+ Int: 'v.number()',
109
+ Float: 'v.number()',
110
+ Boolean: 'v.boolean()',
111
+ DateTime: 'v.string()',
112
+ Json: 'v.unknown()',
113
+ };
114
+ base = baseMap[fieldType] ?? 'v.unknown()';
115
+ }
116
+ const isOptional = optional === true || optional === 'true';
117
+ if (nullable) {
118
+ return isOptional
119
+ ? `v.optional(v.nullable(${base}))`
120
+ : `v.nullable(${base})`;
121
+ }
122
+ return isOptional ? `v.optional(${base})` : base;
123
+ });
81
124
  /** drizzleColumn: maps a FieldType + modifiers to a Drizzle column call string */
82
- this.hbs.registerHelper('drizzleColumn', (fieldName, fieldType, modifiers) => {
125
+ this.hbs.registerHelper('drizzleColumn', (fieldName, fieldType, modifiers, nullable, defaultValue, isUpdatedAt) => {
83
126
  const typeMap = {
84
127
  String: 'text',
128
+ Text: 'text',
85
129
  Int: 'integer',
86
130
  Boolean: 'boolean',
87
131
  DateTime: 'timestamp',
88
132
  Float: 'doublePrecision',
133
+ Json: 'jsonb',
89
134
  };
90
135
  const drizzleFn = typeMap[fieldType] ?? 'text';
91
136
  let col = `${drizzleFn}('${toCamelCase(fieldName)}')`;
92
137
  if (Array.isArray(modifiers)) {
93
- if (modifiers.includes('id'))
94
- col += '.primaryKey()';
95
- if (modifiers.includes('unique'))
96
- col += '.unique()';
97
- if (modifiers.includes('default_now'))
98
- col += '.defaultNow()';
138
+ if (modifiers.includes('id')) {
139
+ // Use identity column for auto-incrementing integer primary keys
140
+ if (fieldType === 'Int') {
141
+ col = `integer('${toCamelCase(fieldName)}').primaryKey().generatedByDefaultAsIdentity()`;
142
+ }
143
+ else {
144
+ col += '.primaryKey()';
145
+ }
146
+ }
147
+ else {
148
+ // Non-PK columns: notNull by default unless @nullable
149
+ if (!nullable && !modifiers.includes('nullable'))
150
+ col += '.notNull()';
151
+ if (modifiers.includes('unique'))
152
+ col += '.unique()';
153
+ if (modifiers.includes('default_now') || defaultValue === 'now') {
154
+ col += '.defaultNow()';
155
+ }
156
+ else if (defaultValue !== undefined && defaultValue !== 'now') {
157
+ const isString = fieldType === 'String' || fieldType === 'Text';
158
+ col += isString ? `.default('${defaultValue}')` : `.default(${defaultValue})`;
159
+ }
160
+ if (isUpdatedAt || modifiers.includes('updatedAt')) {
161
+ col += '.$onUpdate(() => new Date())';
162
+ }
163
+ }
99
164
  }
100
165
  return col;
101
166
  });
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../../src/template/TemplateEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../../src/template/TemplateEngine.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,17 @@
2
2
  export declare function writeFile(filePath: string, content: string): void;
3
3
  /** Create a directory (and all parents). */
4
4
  export declare function ensureDir(dir: string): void;
5
+ /** Parse a .env file into key-value pairs. */
6
+ export declare function parseEnvFile(content: string): Record<string, string>;
7
+ /** Check if a .env value looks like a placeholder. */
8
+ export declare function isPlaceholderValue(value: string): boolean;
9
+ /**
10
+ * Copy all files from a staging directory to the real output directory.
11
+ * Optionally preserves `.env` if it already exists with non-placeholder values.
12
+ */
13
+ export declare function commitStagedFiles(stagingDir: string, realDir: string, options?: {
14
+ preserveEnv?: boolean;
15
+ }): void;
16
+ /** Remove a directory tree (no-op if it doesn't exist). */
17
+ export declare function cleanupDir(dir: string): void;
5
18
  //# sourceMappingURL=fs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAGA,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED,4CAA4C;AAC5C,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAGA,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED,4CAA4C;AAC5C,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUpE;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAezD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,IAAI,CAeN;AAuBD,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI5C"}
package/dist/utils/fs.js CHANGED
@@ -1,5 +1,5 @@
1
- import { mkdirSync, writeFileSync } from 'node:fs';
2
- import { dirname } from 'node:path';
1
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join, relative } from 'node:path';
3
3
  /** Write a file, creating parent directories as needed. */
4
4
  export function writeFile(filePath, content) {
5
5
  mkdirSync(dirname(filePath), { recursive: true });
@@ -9,4 +9,77 @@ export function writeFile(filePath, content) {
9
9
  export function ensureDir(dir) {
10
10
  mkdirSync(dir, { recursive: true });
11
11
  }
12
+ /** Parse a .env file into key-value pairs. */
13
+ export function parseEnvFile(content) {
14
+ const env = {};
15
+ for (const line of content.split('\n')) {
16
+ const trimmed = line.trim();
17
+ if (!trimmed || trimmed.startsWith('#'))
18
+ continue;
19
+ const eqIndex = trimmed.indexOf('=');
20
+ if (eqIndex === -1)
21
+ continue;
22
+ env[trimmed.slice(0, eqIndex).trim()] = trimmed.slice(eqIndex + 1).trim();
23
+ }
24
+ return env;
25
+ }
26
+ /** Check if a .env value looks like a placeholder. */
27
+ export function isPlaceholderValue(value) {
28
+ const v = value.trim();
29
+ if (!v)
30
+ return true;
31
+ const patterns = [
32
+ /^postgres:\/\/user:password@localhost/,
33
+ /^change-me/i,
34
+ /^your[_-]/i,
35
+ /^placeholder/i,
36
+ /^CHANGE_ME/,
37
+ /^<.+>$/,
38
+ /^changeme$/i,
39
+ /^secret$/i,
40
+ /^password$/i,
41
+ ];
42
+ return patterns.some(p => p.test(v));
43
+ }
44
+ /**
45
+ * Copy all files from a staging directory to the real output directory.
46
+ * Optionally preserves `.env` if it already exists with non-placeholder values.
47
+ */
48
+ export function commitStagedFiles(stagingDir, realDir, options = {}) {
49
+ const protectedFiles = new Set();
50
+ if (options.preserveEnv) {
51
+ const realEnvPath = join(realDir, '.env');
52
+ if (existsSync(realEnvPath)) {
53
+ const existing = parseEnvFile(readFileSync(realEnvPath, 'utf8'));
54
+ const dbUrl = existing['DATABASE_URL'];
55
+ if (dbUrl && !isPlaceholderValue(dbUrl)) {
56
+ protectedFiles.add('.env');
57
+ }
58
+ }
59
+ }
60
+ copyDirRecursive(stagingDir, realDir, stagingDir, protectedFiles);
61
+ }
62
+ function copyDirRecursive(src, dest, base, protectedFiles) {
63
+ mkdirSync(dest, { recursive: true });
64
+ for (const entry of readdirSync(src, { withFileTypes: true })) {
65
+ const srcPath = join(src, entry.name);
66
+ const destPath = join(dest, entry.name);
67
+ if (entry.isDirectory()) {
68
+ copyDirRecursive(srcPath, destPath, base, protectedFiles);
69
+ }
70
+ else {
71
+ const relPath = relative(base, srcPath);
72
+ if (protectedFiles.has(relPath))
73
+ continue;
74
+ mkdirSync(dirname(destPath), { recursive: true });
75
+ copyFileSync(srcPath, destPath);
76
+ }
77
+ }
78
+ }
79
+ /** Remove a directory tree (no-op if it doesn't exist). */
80
+ export function cleanupDir(dir) {
81
+ if (existsSync(dir)) {
82
+ rmSync(dir, { recursive: true, force: true });
83
+ }
84
+ }
12
85
  //# sourceMappingURL=fs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,2DAA2D;AAC3D,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAe;IACzD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC1C,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACrC,CAAC"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vasp-framework/generator",
3
- "version": "0.3.0",
3
+ "version": "0.9.0",
4
4
  "description": "Code generator: produces Elysia backend, Vue/Nuxt frontend, and @vasp-framework/client SDK from a VaspAST",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",