@objectifthunes/create-sandstone 0.2.0 → 1.1.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 (114) hide show
  1. package/dist/cli.d.ts +3 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +31 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/commands/add-adapter.d.ts +2 -0
  6. package/dist/commands/add-adapter.d.ts.map +1 -0
  7. package/dist/commands/add-adapter.js +683 -0
  8. package/dist/commands/add-adapter.js.map +1 -0
  9. package/dist/commands/generate-adapter.d.ts +2 -0
  10. package/dist/commands/generate-adapter.d.ts.map +1 -0
  11. package/dist/commands/generate-adapter.js +467 -0
  12. package/dist/commands/generate-adapter.js.map +1 -0
  13. package/dist/commands/generate-entity.d.ts +2 -0
  14. package/dist/commands/generate-entity.d.ts.map +1 -0
  15. package/dist/commands/generate-entity.js +217 -0
  16. package/dist/commands/generate-entity.js.map +1 -0
  17. package/dist/generator.d.ts.map +1 -1
  18. package/dist/generator.js +92 -25
  19. package/dist/generator.js.map +1 -1
  20. package/dist/index.js +6 -5
  21. package/dist/index.js.map +1 -1
  22. package/dist/presets.d.ts +24 -4
  23. package/dist/presets.d.ts.map +1 -1
  24. package/dist/presets.js +42 -19
  25. package/dist/presets.js.map +1 -1
  26. package/dist/prompts.d.ts.map +1 -1
  27. package/dist/prompts.js +181 -7
  28. package/dist/prompts.js.map +1 -1
  29. package/dist/templates/auth-test.d.ts +3 -0
  30. package/dist/templates/auth-test.d.ts.map +1 -0
  31. package/dist/templates/auth-test.js +52 -0
  32. package/dist/templates/auth-test.js.map +1 -0
  33. package/dist/templates/claude-md.d.ts.map +1 -1
  34. package/dist/templates/claude-md.js +472 -4
  35. package/dist/templates/claude-md.js.map +1 -1
  36. package/dist/templates/docker-compose.d.ts.map +1 -1
  37. package/dist/templates/docker-compose.js +42 -0
  38. package/dist/templates/docker-compose.js.map +1 -1
  39. package/dist/templates/entities-repositories.d.ts +3 -0
  40. package/dist/templates/entities-repositories.d.ts.map +1 -0
  41. package/dist/templates/entities-repositories.js +19 -0
  42. package/dist/templates/entities-repositories.js.map +1 -0
  43. package/dist/templates/entities-types.d.ts +3 -0
  44. package/dist/templates/entities-types.d.ts.map +1 -0
  45. package/dist/templates/entities-types.js +24 -0
  46. package/dist/templates/entities-types.js.map +1 -0
  47. package/dist/templates/env-example.d.ts.map +1 -1
  48. package/dist/templates/env-example.js +81 -2
  49. package/dist/templates/env-example.js.map +1 -1
  50. package/dist/templates/graphql-auth.d.ts +3 -0
  51. package/dist/templates/graphql-auth.d.ts.map +1 -0
  52. package/dist/templates/graphql-auth.js +160 -0
  53. package/dist/templates/graphql-auth.js.map +1 -0
  54. package/dist/templates/graphql-enums.d.ts +2 -0
  55. package/dist/templates/graphql-enums.d.ts.map +1 -0
  56. package/dist/templates/graphql-enums.js +28 -0
  57. package/dist/templates/graphql-enums.js.map +1 -0
  58. package/dist/templates/graphql-helpers.d.ts +2 -0
  59. package/dist/templates/graphql-helpers.d.ts.map +1 -0
  60. package/dist/templates/graphql-helpers.js +134 -0
  61. package/dist/templates/graphql-helpers.js.map +1 -0
  62. package/dist/templates/graphql-inputs.d.ts +2 -0
  63. package/dist/templates/graphql-inputs.d.ts.map +1 -0
  64. package/dist/templates/graphql-inputs.js +28 -0
  65. package/dist/templates/graphql-inputs.js.map +1 -0
  66. package/dist/templates/graphql-schema.d.ts +3 -0
  67. package/dist/templates/graphql-schema.d.ts.map +1 -0
  68. package/dist/templates/graphql-schema.js +33 -0
  69. package/dist/templates/graphql-schema.js.map +1 -0
  70. package/dist/templates/graphql-types.d.ts +3 -0
  71. package/dist/templates/graphql-types.d.ts.map +1 -0
  72. package/dist/templates/graphql-types.js +61 -0
  73. package/dist/templates/graphql-types.js.map +1 -0
  74. package/dist/templates/graphql-validation.d.ts +3 -0
  75. package/dist/templates/graphql-validation.d.ts.map +1 -0
  76. package/dist/templates/graphql-validation.js +37 -0
  77. package/dist/templates/graphql-validation.js.map +1 -0
  78. package/dist/templates/health-e2e-test.d.ts +3 -0
  79. package/dist/templates/health-e2e-test.d.ts.map +1 -0
  80. package/dist/templates/health-e2e-test.js +50 -0
  81. package/dist/templates/health-e2e-test.js.map +1 -0
  82. package/dist/templates/infrastructure.d.ts.map +1 -1
  83. package/dist/templates/infrastructure.js +433 -32
  84. package/dist/templates/infrastructure.js.map +1 -1
  85. package/dist/templates/main-express.d.ts.map +1 -1
  86. package/dist/templates/main-express.js +87 -8
  87. package/dist/templates/main-express.js.map +1 -1
  88. package/dist/templates/main-fastify.d.ts +3 -0
  89. package/dist/templates/main-fastify.d.ts.map +1 -0
  90. package/dist/templates/main-fastify.js +73 -0
  91. package/dist/templates/main-fastify.js.map +1 -0
  92. package/dist/templates/main-hono.d.ts.map +1 -1
  93. package/dist/templates/main-hono.js +45 -9
  94. package/dist/templates/main-hono.js.map +1 -1
  95. package/dist/templates/package-json.d.ts.map +1 -1
  96. package/dist/templates/package-json.js +67 -3
  97. package/dist/templates/package-json.js.map +1 -1
  98. package/dist/templates/test-setup.d.ts +1 -1
  99. package/dist/templates/test-setup.d.ts.map +1 -1
  100. package/dist/templates/test-setup.js +10 -39
  101. package/dist/templates/test-setup.js.map +1 -1
  102. package/dist/templates/vitest-config.d.ts +2 -0
  103. package/dist/templates/vitest-config.d.ts.map +1 -0
  104. package/dist/templates/vitest-config.js +13 -0
  105. package/dist/templates/vitest-config.js.map +1 -0
  106. package/dist/templates/vitest-e2e-config.d.ts +2 -0
  107. package/dist/templates/vitest-e2e-config.d.ts.map +1 -0
  108. package/dist/templates/vitest-e2e-config.js +16 -0
  109. package/dist/templates/vitest-e2e-config.js.map +1 -0
  110. package/dist/templates/workers-index.d.ts +3 -0
  111. package/dist/templates/workers-index.d.ts.map +1 -0
  112. package/dist/templates/workers-index.js +19 -0
  113. package/dist/templates/workers-index.js.map +1 -0
  114. package/package.json +6 -2
@@ -0,0 +1,217 @@
1
+ import { writeFile, mkdir, readdir } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { existsSync } from 'node:fs';
4
+ const TS_TO_SQL = {
5
+ string: 'TEXT',
6
+ number: 'INTEGER',
7
+ boolean: 'BOOLEAN',
8
+ Date: 'TIMESTAMPTZ',
9
+ uuid: 'UUID',
10
+ };
11
+ const TS_TO_GRAPHQL = {
12
+ string: 'GraphQLString',
13
+ number: 'GraphQLInt',
14
+ boolean: 'GraphQLBoolean',
15
+ Date: 'DateTimeScalar',
16
+ uuid: 'UUIDScalar',
17
+ };
18
+ function pascalToSnake(name) {
19
+ return name
20
+ .replace(/([A-Z])/g, (match, letter, offset) => offset > 0 ? `_${letter.toLowerCase()}` : letter.toLowerCase())
21
+ .replace(/_{2,}/g, '_');
22
+ }
23
+ const SAFE_IDENTIFIER = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
24
+ function assertSafeIdentifier(value, label) {
25
+ if (!SAFE_IDENTIFIER.test(value)) {
26
+ throw new Error(`Invalid ${label}: "${value}". Must match /^[a-zA-Z_][a-zA-Z0-9_]*$/ (letters, digits, underscores only, cannot start with a digit).`);
27
+ }
28
+ }
29
+ function parseFields(fieldsStr) {
30
+ return fieldsStr
31
+ .split(',')
32
+ .map((f) => f.trim())
33
+ .filter((f) => f.length > 0)
34
+ .map((f) => {
35
+ const parts = f.split(':').map((s) => s.trim());
36
+ if (parts.length !== 2 || !parts[0] || !parts[1]) {
37
+ throw new Error(`Invalid field definition: "${f}". Expected format: "name:type" (exactly one colon).`);
38
+ }
39
+ const name = parts[0];
40
+ const rawType = parts[1];
41
+ assertSafeIdentifier(name, 'field name');
42
+ const nullable = rawType.endsWith('?');
43
+ const type = nullable ? rawType.slice(0, -1) : rawType;
44
+ return { name, type, nullable };
45
+ });
46
+ }
47
+ function parseArgs(args) {
48
+ let name = null;
49
+ let fieldsStr = null;
50
+ for (let i = 0; i < args.length; i++) {
51
+ const arg = args[i];
52
+ if (arg === '--fields' || arg === '-f') {
53
+ fieldsStr = args[++i] ?? null;
54
+ }
55
+ else if (arg.startsWith('--fields=')) {
56
+ fieldsStr = arg.split('=').slice(1).join('=');
57
+ }
58
+ else if (!arg.startsWith('-')) {
59
+ name = arg;
60
+ }
61
+ }
62
+ if (!name) {
63
+ console.error('Error: Entity name is required.');
64
+ console.error('Usage: sandstone generate entity <Name> --fields "field:type, ..."');
65
+ process.exit(1);
66
+ }
67
+ if (!fieldsStr) {
68
+ console.error('Error: --fields is required.');
69
+ console.error('Usage: sandstone generate entity <Name> --fields "title:string, published:boolean"');
70
+ process.exit(1);
71
+ }
72
+ return { name, fields: parseFields(fieldsStr) };
73
+ }
74
+ async function detectNextMigrationNumber(migrationsDir) {
75
+ if (!existsSync(migrationsDir)) {
76
+ return '001';
77
+ }
78
+ const entries = await readdir(migrationsDir);
79
+ const numbers = entries
80
+ .map((e) => {
81
+ const match = e.match(/^(\d+)/);
82
+ return match ? parseInt(match[1], 10) : 0;
83
+ })
84
+ .filter((n) => n > 0);
85
+ if (numbers.length === 0)
86
+ return '001';
87
+ const next = Math.max(...numbers) + 1;
88
+ return String(next).padStart(3, '0');
89
+ }
90
+ function generateUpMigration(tableName, fields) {
91
+ const columns = [
92
+ ' id UUID PRIMARY KEY DEFAULT gen_random_uuid()',
93
+ ...fields.map((f) => {
94
+ const sqlType = TS_TO_SQL[f.type] ?? 'TEXT';
95
+ const nullable = f.nullable ? '' : ' NOT NULL';
96
+ return ` ${f.name} ${sqlType}${nullable}`;
97
+ }),
98
+ ' created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()',
99
+ ' updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()',
100
+ ];
101
+ let sql = `CREATE TABLE ${tableName} (\n${columns.join(',\n')}\n);\n`;
102
+ // Add indexes for UUID FK columns
103
+ for (const f of fields) {
104
+ if (f.type === 'uuid') {
105
+ sql += `\nCREATE INDEX idx_${tableName}_${f.name} ON ${tableName}(${f.name});\n`;
106
+ }
107
+ }
108
+ return sql;
109
+ }
110
+ function generateDownMigration(tableName) {
111
+ return `DROP TABLE IF EXISTS ${tableName};\n`;
112
+ }
113
+ function generateTypeScriptModule(entityName, tableName, fields) {
114
+ const tsFields = [
115
+ ' id: string;',
116
+ ...fields.map((f) => {
117
+ const tsType = f.type === 'uuid' ? 'string' : f.type;
118
+ const optional = f.nullable ? '?' : '';
119
+ return ` ${f.name}${optional}: ${tsType};`;
120
+ }),
121
+ ' created_at: Date;',
122
+ ' updated_at: Date;',
123
+ ];
124
+ return `import { createRepository } from '@objectifthunes/sandstone-sdk';
125
+ import type { Repository } from '@objectifthunes/sandstone-sdk';
126
+
127
+ export interface ${entityName} {
128
+ ${tsFields.join('\n')}
129
+ }
130
+
131
+ export const ${entityName.charAt(0).toLowerCase() + entityName.slice(1)}Repo: Repository<${entityName}> = createRepository<${entityName}>('${tableName}', {
132
+ primaryKey: 'id',
133
+ softDelete: false,
134
+ });
135
+ `;
136
+ }
137
+ function generateGraphQLSnippet(entityName, fields) {
138
+ const graphqlImports = new Set();
139
+ graphqlImports.add('GraphQLObjectType');
140
+ graphqlImports.add('GraphQLNonNull');
141
+ graphqlImports.add('GraphQLString');
142
+ const fieldEntries = [
143
+ ` id: { type: new GraphQLNonNull(UUIDScalar) },`,
144
+ ];
145
+ for (const f of fields) {
146
+ const gqlType = TS_TO_GRAPHQL[f.type] ?? 'GraphQLString';
147
+ graphqlImports.add(gqlType);
148
+ const wrapped = f.nullable ? gqlType : `new GraphQLNonNull(${gqlType})`;
149
+ fieldEntries.push(` ${f.name}: { type: ${wrapped} },`);
150
+ }
151
+ graphqlImports.add('DateTimeScalar');
152
+ fieldEntries.push(` created_at: { type: new GraphQLNonNull(DateTimeScalar) },`);
153
+ fieldEntries.push(` updated_at: { type: new GraphQLNonNull(DateTimeScalar) },`);
154
+ // Separate standard GraphQL types from Sandstone scalars
155
+ const standardTypes = [
156
+ 'GraphQLObjectType',
157
+ 'GraphQLNonNull',
158
+ 'GraphQLString',
159
+ 'GraphQLInt',
160
+ 'GraphQLBoolean',
161
+ ].filter((t) => graphqlImports.has(t));
162
+ const sandstoneScalars = ['DateTimeScalar', 'UUIDScalar', 'EmailScalar'].filter((t) => graphqlImports.has(t));
163
+ const lines = [];
164
+ lines.push(`import { ${standardTypes.join(', ')} } from 'graphql';`);
165
+ if (sandstoneScalars.length > 0) {
166
+ lines.push(`import { ${sandstoneScalars.join(', ')} } from '@objectifthunes/sandstone-sdk';`);
167
+ }
168
+ lines.push('');
169
+ lines.push(`export const ${entityName}Type = new GraphQLObjectType({`);
170
+ lines.push(` name: '${entityName}',`);
171
+ lines.push(` fields: () => ({`);
172
+ lines.push(fieldEntries.join('\n'));
173
+ lines.push(` }),`);
174
+ lines.push(`});`);
175
+ return lines.join('\n');
176
+ }
177
+ export async function generateEntity(args) {
178
+ const { name: entityName, fields } = parseArgs(args);
179
+ const snakeName = pascalToSnake(entityName);
180
+ const tableName = `${snakeName}s`;
181
+ assertSafeIdentifier(tableName, 'table name');
182
+ const cwd = process.cwd();
183
+ const migrationsDir = join(cwd, 'migrations');
184
+ const srcDir = join(cwd, 'src');
185
+ // Detect next migration number
186
+ const migrationNum = await detectNextMigrationNumber(migrationsDir);
187
+ // File paths
188
+ const upPath = join(migrationsDir, `${migrationNum}_create_${tableName}.up.sql`);
189
+ const downPath = join(migrationsDir, `${migrationNum}_create_${tableName}.down.sql`);
190
+ const entitiesDir = join(srcDir, 'entities');
191
+ const modulePath = join(entitiesDir, `${snakeName}.ts`);
192
+ // Generate content
193
+ const upSql = generateUpMigration(tableName, fields);
194
+ const downSql = generateDownMigration(tableName);
195
+ const tsModule = generateTypeScriptModule(entityName, tableName, fields);
196
+ const graphqlSnippet = generateGraphQLSnippet(entityName, fields);
197
+ // File paths for GraphQL type
198
+ const graphqlTypesDir = join(srcDir, 'graphql', 'types');
199
+ const graphqlTypePath = join(graphqlTypesDir, `${snakeName}.ts`);
200
+ // Write files
201
+ await mkdir(migrationsDir, { recursive: true });
202
+ await mkdir(entitiesDir, { recursive: true });
203
+ await mkdir(graphqlTypesDir, { recursive: true });
204
+ await writeFile(upPath, upSql, 'utf-8');
205
+ await writeFile(downPath, downSql, 'utf-8');
206
+ await writeFile(modulePath, tsModule, 'utf-8');
207
+ await writeFile(graphqlTypePath, graphqlSnippet + '\n', 'utf-8');
208
+ // Report
209
+ console.log(`\n Generated entity: ${entityName}\n`);
210
+ console.log(` Files created:`);
211
+ console.log(` migrations/${migrationNum}_create_${tableName}.up.sql`);
212
+ console.log(` migrations/${migrationNum}_create_${tableName}.down.sql`);
213
+ console.log(` src/entities/${snakeName}.ts`);
214
+ console.log(` src/graphql/types/${snakeName}.ts`);
215
+ console.log();
216
+ }
217
+ //# sourceMappingURL=generate-entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-entity.js","sourceRoot":"","sources":["../../src/commands/generate-entity.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAoBlD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CAqEnB"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgClD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CAiInB"}
package/dist/generator.js CHANGED
@@ -8,63 +8,130 @@ import { dockerComposeTemplate } from './templates/docker-compose.js';
8
8
  import { infrastructureTemplate } from './templates/infrastructure.js';
9
9
  import { mainExpressTemplate } from './templates/main-express.js';
10
10
  import { mainHonoTemplate } from './templates/main-hono.js';
11
- import { schemaTemplate } from './templates/schema.js';
12
- import { testSetupTemplate } from './templates/test-setup.js';
13
- import { migrationTemplate } from './templates/migration.js';
11
+ import { mainFastifyTemplate } from './templates/main-fastify.js';
14
12
  import { migrateScriptTemplate } from './templates/migrate-script.js';
15
13
  import { claudeMdTemplate } from './templates/claude-md.js';
14
+ import { entitiesTypesTemplate } from './templates/entities-types.js';
15
+ import { entitiesRepositoriesTemplate } from './templates/entities-repositories.js';
16
+ import { workersIndexTemplate } from './templates/workers-index.js';
17
+ import { vitestConfigTemplate } from './templates/vitest-config.js';
18
+ import { vitestE2eConfigTemplate } from './templates/vitest-e2e-config.js';
19
+ import { authTestTemplate } from './templates/auth-test.js';
20
+ import { healthE2eTestTemplate } from './templates/health-e2e-test.js';
21
+ import { graphqlSchemaTemplate } from './templates/graphql-schema.js';
22
+ import { graphqlAuthTemplate } from './templates/graphql-auth.js';
23
+ import { graphqlHelpersTemplate } from './templates/graphql-helpers.js';
24
+ import { graphqlEnumsTemplate } from './templates/graphql-enums.js';
25
+ import { graphqlInputsTemplate } from './templates/graphql-inputs.js';
26
+ import { graphqlTypesTemplate } from './templates/graphql-types.js';
27
+ import { graphqlValidationTemplate } from './templates/graphql-validation.js';
16
28
  export async function generateProject(targetDir, config) {
17
29
  const files = [];
18
- // Root config files
30
+ // ── Root config files ──────────────────────────────────────────────
19
31
  files.push({ path: 'package.json', content: packageJsonTemplate(config) });
20
32
  files.push({ path: 'tsconfig.json', content: tsconfigTemplate() });
21
33
  files.push({ path: '.gitignore', content: gitignoreTemplate() });
22
34
  files.push({ path: '.env.example', content: envExampleTemplate(config) });
35
+ files.push({ path: 'CLAUDE.md', content: claudeMdTemplate(config) });
23
36
  if (!config.devMode) {
24
37
  files.push({
25
38
  path: 'docker-compose.yml',
26
39
  content: dockerComposeTemplate(config),
27
40
  });
28
41
  }
29
- files.push({ path: 'CLAUDE.md', content: claudeMdTemplate(config) });
30
- // Source files
42
+ // ── Source files ───────────────────────────────────────────────────
31
43
  files.push({
32
44
  path: 'src/infrastructure.ts',
33
45
  content: infrastructureTemplate(config),
34
46
  });
35
47
  if (config.framework === 'express') {
36
- files.push({
37
- path: 'src/main.ts',
38
- content: mainExpressTemplate(config),
39
- });
48
+ files.push({ path: 'src/main.ts', content: mainExpressTemplate(config) });
40
49
  }
41
- else {
42
- files.push({
43
- path: 'src/main.ts',
44
- content: mainHonoTemplate(config),
45
- });
50
+ else if (config.framework === 'fastify') {
51
+ files.push({ path: 'src/main.ts', content: mainFastifyTemplate(config) });
46
52
  }
47
- if (config.graphql) {
48
- files.push({ path: 'src/schema.ts', content: schemaTemplate(config) });
53
+ else {
54
+ files.push({ path: 'src/main.ts', content: mainHonoTemplate(config) });
49
55
  }
50
- // Migrations
56
+ // ── Entities ───────────────────────────────────────────────────────
51
57
  files.push({
52
- path: 'migrations/001_notes.up.sql',
53
- content: migrationTemplate(),
58
+ path: 'src/entities/types.ts',
59
+ content: entitiesTypesTemplate(config),
54
60
  });
55
- // Scripts
61
+ files.push({
62
+ path: 'src/entities/repositories.ts',
63
+ content: entitiesRepositoriesTemplate(config),
64
+ });
65
+ // ── Workers ────────────────────────────────────────────────────────
66
+ files.push({
67
+ path: 'src/workers/index.ts',
68
+ content: workersIndexTemplate(config),
69
+ });
70
+ // ── GraphQL ────────────────────────────────────────────────────────
71
+ if (config.graphql) {
72
+ files.push({
73
+ path: 'src/graphql/schema.ts',
74
+ content: graphqlSchemaTemplate(config),
75
+ });
76
+ files.push({
77
+ path: 'src/graphql/auth.ts',
78
+ content: graphqlAuthTemplate(config),
79
+ });
80
+ files.push({
81
+ path: 'src/graphql/helpers.ts',
82
+ content: graphqlHelpersTemplate(),
83
+ });
84
+ files.push({
85
+ path: 'src/graphql/enums.ts',
86
+ content: graphqlEnumsTemplate(),
87
+ });
88
+ files.push({
89
+ path: 'src/graphql/inputs.ts',
90
+ content: graphqlInputsTemplate(),
91
+ });
92
+ files.push({
93
+ path: 'src/graphql/types.ts',
94
+ content: graphqlTypesTemplate(config),
95
+ });
96
+ files.push({
97
+ path: 'src/graphql/validation.ts',
98
+ content: graphqlValidationTemplate(config),
99
+ });
100
+ }
101
+ // ── Migrations ─────────────────────────────────────────────────────
102
+ files.push({ path: 'migrations/.gitkeep', content: '' });
103
+ // ── Scripts ────────────────────────────────────────────────────────
56
104
  files.push({
57
105
  path: 'scripts/migrate.ts',
58
106
  content: migrateScriptTemplate(),
59
107
  });
60
- // Tests
108
+ // ── Test configs ───────────────────────────────────────────────────
61
109
  if (config.tests) {
62
110
  files.push({
63
- path: 'tests/setup.ts',
64
- content: testSetupTemplate(config),
111
+ path: 'vitest.config.ts',
112
+ content: vitestConfigTemplate(),
113
+ });
114
+ }
115
+ if (config.e2e) {
116
+ files.push({
117
+ path: 'vitest.e2e.config.ts',
118
+ content: vitestE2eConfigTemplate(),
119
+ });
120
+ }
121
+ // ── Test files ─────────────────────────────────────────────────────
122
+ if (config.tests && config.auth) {
123
+ files.push({
124
+ path: 'tests/unit/auth.test.ts',
125
+ content: authTestTemplate(config),
126
+ });
127
+ }
128
+ if (config.e2e) {
129
+ files.push({
130
+ path: 'tests/e2e/health.test.ts',
131
+ content: healthE2eTestTemplate(config),
65
132
  });
66
133
  }
67
- // Ensure all directories exist, then write files
134
+ // ── Write all files ────────────────────────────────────────────────
68
135
  const createdFiles = [];
69
136
  for (const file of files) {
70
137
  const fullPath = join(targetDir, file.path);
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,17 +7,18 @@ import { generateProject } from './generator.js';
7
7
  import { PRESETS, isPresetName } from './presets.js';
8
8
  function printHelp() {
9
9
  console.log(`
10
- Usage: create-sandstone [project-name] [options]
10
+ Usage: npx @objectifthunes/create-sandstone [project-name] [options]
11
11
 
12
12
  Options:
13
13
  --yes, -y Non-interactive mode (use defaults or preset)
14
- --template, -t Use a preset template (saas, api, minimal)
14
+ --template, -t Use a preset template (complete, minimal, prototype)
15
15
  --help, -h Show this help message
16
16
 
17
17
  Examples:
18
18
  npx @objectifthunes/create-sandstone my-backend
19
- npx @objectifthunes/create-sandstone my-api --yes --template api
20
- npx @objectifthunes/create-sandstone my-saas -y -t saas
19
+ npx @objectifthunes/create-sandstone my-app --yes --template complete
20
+ npx @objectifthunes/create-sandstone my-app -y -t minimal
21
+ npx @objectifthunes/create-sandstone my-app -y -t prototype
21
22
  `);
22
23
  }
23
24
  function parseArgs(args) {
@@ -61,7 +62,7 @@ async function main() {
61
62
  // Non-interactive mode
62
63
  if (args.template) {
63
64
  if (!isPresetName(args.template)) {
64
- console.error(` Error: Unknown template "${args.template}". Available: saas, api, minimal`);
65
+ console.error(` Error: Unknown template "${args.template}". Available: complete, minimal, prototype`);
65
66
  process.exit(1);
66
67
  }
67
68
  config = { name: projectName, ...PRESETS[args.template] };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAY,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAsB,MAAM,cAAc,CAAC;AAEzE,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;GAYX,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAM/B,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACpC,GAAG,GAAG,IAAI,CAAC;QACb,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAChD,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/B,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACvC,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAEtD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,yCAAyC,SAAS,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,MAAqB,CAAC;IAE1B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,uBAAuB;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,KAAK,CACX,8BAA8B,IAAI,CAAC,QAAQ,kCAAkC,CAC9E,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,MAAM,CAAC;QAChB,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,0BAA0B;IAC1B,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,uBAAuB,WAAW,mBAAmB,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,yBAAyB;IACzB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEvD,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/presets.d.ts CHANGED
@@ -1,25 +1,45 @@
1
- export type Framework = 'express' | 'hono';
2
- export type Database = 'pg';
1
+ export type Framework = 'express' | 'hono' | 'fastify';
2
+ export type Database = 'pg' | 'supabase';
3
3
  export type AuthStrategy = 'otp' | 'password+otp' | 'oauth+otp' | 'all' | null;
4
+ export type OAuthProviderChoice = 'google' | 'github' | 'apple' | 'discord';
4
5
  export type EmailProvider = 'resend' | 'nodemailer' | null;
5
6
  export type PaymentProvider = 'stripe' | 'revenuecat' | 'paddle' | 'lemonsqueezy' | null;
6
7
  export type StorageProvider = 's3' | 'r2' | 'local' | null;
7
- export type CacheProvider = 'upstash' | null;
8
+ export type CacheProvider = 'upstash' | 'redis' | 'memory' | null;
9
+ export type SmsProvider = 'twilio' | 'sns' | null;
10
+ export type PushProvider = 'fcm' | 'apns' | 'both' | null;
11
+ export type RealtimeProvider = 'socketio' | 'pusher' | 'ably' | null;
12
+ export type SearchProvider = 'meilisearch' | 'typesense' | 'pg-search' | null;
13
+ export type QueueProvider = 'bullmq' | 'pg-boss' | null;
14
+ export type FlagProvider = 'pg-flags' | 'env-flags' | 'launchdarkly' | null;
15
+ export type AuthzProvider = 'pg-authz' | 'casbin' | null;
8
16
  export interface ProjectConfig {
9
17
  name: string;
10
18
  framework: Framework;
11
19
  database: Database;
12
20
  auth: AuthStrategy;
21
+ oauthProviders: OAuthProviderChoice[];
13
22
  email: EmailProvider;
14
23
  payments: PaymentProvider;
15
24
  storage: StorageProvider;
16
25
  cache: CacheProvider;
26
+ sms: SmsProvider;
27
+ push: PushProvider;
28
+ realtime: RealtimeProvider;
29
+ search: SearchProvider;
30
+ queue: QueueProvider;
31
+ scheduler: boolean;
32
+ flags: FlagProvider;
33
+ tracing: boolean;
34
+ audit: boolean;
35
+ authz: AuthzProvider;
17
36
  graphql: boolean;
37
+ dashboard: boolean;
18
38
  tests: boolean;
19
39
  e2e: boolean;
20
40
  devMode?: boolean;
21
41
  }
22
- export type PresetName = 'saas' | 'api' | 'minimal' | 'prototype';
42
+ export type PresetName = 'complete' | 'minimal' | 'prototype';
23
43
  export declare const PRESETS: Record<PresetName, Omit<ProjectConfig, 'name'>>;
24
44
  export declare function isPresetName(value: string): value is PresetName;
25
45
  //# sourceMappingURL=presets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC;AAC5B,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,cAAc,GAAG,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC;AACzF,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,CAAC;AAElE,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAqDnE,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,UAAU,CAAC;AACzC,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,cAAc,GAAG,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC;AAC/E,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAC5E,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC;AACzF,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAC1D,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;AACrE,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;AAC9E,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;AACxD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC;AAC5E,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAE9D,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CA4EnE,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D"}
package/dist/presets.js CHANGED
@@ -1,52 +1,75 @@
1
1
  export const PRESETS = {
2
- saas: {
3
- framework: 'express',
2
+ complete: {
3
+ framework: 'hono',
4
4
  database: 'pg',
5
5
  auth: 'all',
6
+ oauthProviders: ['github', 'discord'],
6
7
  email: 'resend',
7
8
  payments: 'stripe',
8
9
  storage: 's3',
9
- cache: 'upstash',
10
+ cache: 'redis',
11
+ sms: 'sns',
12
+ push: 'fcm',
13
+ realtime: 'pusher',
14
+ search: 'meilisearch',
15
+ queue: 'bullmq',
16
+ scheduler: true,
17
+ flags: 'pg-flags',
18
+ tracing: true,
19
+ audit: true,
20
+ authz: 'pg-authz',
10
21
  graphql: true,
22
+ dashboard: true,
11
23
  tests: true,
12
24
  e2e: true,
13
25
  devMode: false,
14
26
  },
15
- api: {
27
+ minimal: {
16
28
  framework: 'hono',
17
29
  database: 'pg',
18
30
  auth: 'otp',
31
+ oauthProviders: [],
19
32
  email: 'resend',
20
33
  payments: null,
21
34
  storage: null,
22
35
  cache: null,
36
+ sms: null,
37
+ push: null,
38
+ realtime: null,
39
+ search: null,
40
+ queue: null,
41
+ scheduler: false,
42
+ flags: null,
43
+ tracing: false,
44
+ audit: false,
45
+ authz: null,
23
46
  graphql: true,
24
- tests: true,
25
- e2e: false,
26
- devMode: false,
27
- },
28
- minimal: {
29
- framework: 'express',
30
- database: 'pg',
31
- auth: 'otp',
32
- email: 'nodemailer',
33
- payments: null,
34
- storage: null,
35
- cache: null,
36
- graphql: true,
47
+ dashboard: false,
37
48
  tests: true,
38
49
  e2e: false,
39
50
  devMode: false,
40
51
  },
41
52
  prototype: {
42
- framework: 'express',
53
+ framework: 'hono',
43
54
  database: 'pg',
44
55
  auth: 'otp',
45
- email: 'nodemailer',
56
+ oauthProviders: [],
57
+ email: 'resend',
46
58
  payments: null,
47
59
  storage: null,
48
60
  cache: null,
61
+ sms: null,
62
+ push: null,
63
+ realtime: null,
64
+ search: null,
65
+ queue: null,
66
+ scheduler: false,
67
+ flags: null,
68
+ tracing: false,
69
+ audit: false,
70
+ authz: null,
49
71
  graphql: true,
72
+ dashboard: false,
50
73
  tests: true,
51
74
  e2e: false,
52
75
  devMode: true,
@@ -1 +1 @@
1
- {"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAyBA,MAAM,CAAC,MAAM,OAAO,GAAoD;IACtE,IAAI,EAAE;QACJ,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,IAAI;QACT,OAAO,EAAE,KAAK;KACf;IACD,GAAG,EAAE;QACH,SAAS,EAAE,MAAM;QACjB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,KAAK;KACf;IACD,OAAO,EAAE;QACP,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,KAAK;KACf;IACD,SAAS,EAAE;QACT,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,IAAI;KACd;CACF,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,IAAI,OAAO,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AA6CA,MAAM,CAAC,MAAM,OAAO,GAAoD;IACtE,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM;QACjB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,KAAK;QACX,cAAc,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;QACrC,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,aAAa;QACrB,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,IAAI;QACT,OAAO,EAAE,KAAK;KACf;IACD,OAAO,EAAE;QACP,SAAS,EAAE,MAAM;QACjB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,KAAK;QACX,cAAc,EAAE,EAAE;QAClB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,KAAK;KACf;IACD,SAAS,EAAE;QACT,SAAS,EAAE,MAAM;QACjB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,KAAK;QACX,cAAc,EAAE,EAAE;QAClB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,IAAI;KACd;CACF,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,IAAI,OAAO,CAAC;AAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAOd,MAAM,cAAc,CAAC;AAEtB,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAiH5E"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAgBd,MAAM,cAAc,CAAC;AAEtB,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA+R5E"}