@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
@@ -4,19 +4,30 @@ export function infrastructureTemplate(config) {
4
4
  const appOptions = [];
5
5
  const devMode = config.devMode === true;
6
6
  const devPath = `'@objectifthunes/sandstone-sdk/dev'`;
7
+ const isSocketIo = config.realtime === 'socketio';
7
8
  // Core imports always needed
8
9
  imports.push(`import { createApp } from '@objectifthunes/sandstone-sdk'`);
9
- // Database
10
+ // ── Database ──────────────────────────────────────────────────────────────
10
11
  if (devMode) {
11
- imports.push(`import { createPgClient } from ${devPath}`);
12
- inits.push(`const db = createPgClient()`);
12
+ if (config.database === 'supabase') {
13
+ imports.push(`import { createSupabaseClient } from ${devPath}`);
14
+ inits.push(`const db = createSupabaseClient()`);
15
+ }
16
+ else {
17
+ imports.push(`import { createPgClient } from ${devPath}`);
18
+ inits.push(`const db = createPgClient()`);
19
+ }
20
+ }
21
+ else if (config.database === 'supabase') {
22
+ imports.push(`import { createSupabaseClient } from '@objectifthunes/sandstone-sdk/supabase'`);
23
+ inits.push(`const db = createSupabaseClient({ connectionString: process.env.DATABASE_URL! })`);
13
24
  }
14
25
  else {
15
26
  imports.push(`import { createPgClient } from '@objectifthunes/sandstone-sdk/pg'`);
16
27
  inits.push(`const db = createPgClient({ connectionString: process.env.DATABASE_URL! })`);
17
28
  }
18
29
  appOptions.push('db');
19
- // Logger
30
+ // ── Logger ────────────────────────────────────────────────────────────────
20
31
  if (devMode) {
21
32
  imports.push(`import { createPinoLogger } from ${devPath}`);
22
33
  inits.push(`const logger = createPinoLogger()`);
@@ -26,7 +37,7 @@ export function infrastructureTemplate(config) {
26
37
  inits.push(`const logger = createPinoLogger({ level: process.env.LOG_LEVEL ?? 'info' })`);
27
38
  }
28
39
  appOptions.push('logger');
29
- // Tokens
40
+ // ── Tokens ────────────────────────────────────────────────────────────────
30
41
  if (devMode) {
31
42
  imports.push(`import { createJoseSigner } from ${devPath}`);
32
43
  inits.push(`const tokens = createJoseSigner()`);
@@ -36,7 +47,19 @@ export function infrastructureTemplate(config) {
36
47
  inits.push(`const tokens = createJoseSigner({ secret: process.env.JWT_SECRET! })`);
37
48
  }
38
49
  appOptions.push('tokens');
39
- // Email
50
+ // ── Tracing ───────────────────────────────────────────────────────────────
51
+ if (config.tracing) {
52
+ if (devMode) {
53
+ imports.push(`import { createOtelTracer } from ${devPath}`);
54
+ inits.push(`const tracer = createOtelTracer()`);
55
+ }
56
+ else {
57
+ imports.push(`import { createOtelTracer } from '@objectifthunes/sandstone-sdk/otel'`);
58
+ inits.push(`const tracer = createOtelTracer({ serviceName: process.env.OTEL_SERVICE_NAME ?? 'app' })`);
59
+ }
60
+ appOptions.push('tracer');
61
+ }
62
+ // ── Email ─────────────────────────────────────────────────────────────────
40
63
  if (devMode && config.email) {
41
64
  imports.push(`import { createNodemailerTransport } from ${devPath}`);
42
65
  inits.push(`const emailTransport = createNodemailerTransport()`);
@@ -56,12 +79,12 @@ export function infrastructureTemplate(config) {
56
79
  })`);
57
80
  appOptions.push(`email: { transport: emailTransport, from: process.env.EMAIL_FROM ?? 'noreply@example.com' }`);
58
81
  }
59
- // Auth
82
+ // ── Auth ──────────────────────────────────────────────────────────────────
60
83
  if (config.auth) {
61
84
  const authOpts = [`otp: { length: 6, expiresIn: '10m' }`];
62
85
  appOptions.push(`auth: { ${authOpts.join(', ')} }`);
63
86
  }
64
- // Password hasher (for password+otp or all)
87
+ // ── Password hasher (for password+otp or all) ────────────────────────────
65
88
  if (config.auth === 'password+otp' || config.auth === 'all') {
66
89
  if (devMode) {
67
90
  imports.push(`import { createArgon2Hasher } from ${devPath}`);
@@ -71,22 +94,325 @@ export function infrastructureTemplate(config) {
71
94
  }
72
95
  inits.push(`const passwordHasher = createArgon2Hasher()`);
73
96
  }
74
- // OAuth (for oauth+otp or all)
75
- if (config.auth === 'oauth+otp' || config.auth === 'all') {
97
+ // ── OAuth providers (for oauth+otp or all) ───────────────────────────────
98
+ if ((config.auth === 'oauth+otp' || config.auth === 'all') && config.oauthProviders.length > 0) {
99
+ const providerMap = {
100
+ google: {
101
+ factory: 'createGoogleOAuth',
102
+ subpath: 'oauth-google',
103
+ envVars: `{
104
+ clientId: process.env.GOOGLE_CLIENT_ID!,
105
+ clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
106
+ }`,
107
+ },
108
+ github: {
109
+ factory: 'createGitHubOAuth',
110
+ subpath: 'oauth-github',
111
+ envVars: `{
112
+ clientId: process.env.GITHUB_CLIENT_ID!,
113
+ clientSecret: process.env.GITHUB_CLIENT_SECRET!,
114
+ }`,
115
+ },
116
+ apple: {
117
+ factory: 'createAppleOAuth',
118
+ subpath: 'oauth-apple',
119
+ envVars: `{
120
+ clientId: process.env.APPLE_CLIENT_ID!,
121
+ teamId: process.env.APPLE_TEAM_ID!,
122
+ keyId: process.env.APPLE_KEY_ID!,
123
+ privateKey: process.env.APPLE_PRIVATE_KEY!,
124
+ }`,
125
+ },
126
+ discord: {
127
+ factory: 'createDiscordOAuth',
128
+ subpath: 'oauth-discord',
129
+ envVars: `{
130
+ clientId: process.env.DISCORD_CLIENT_ID!,
131
+ clientSecret: process.env.DISCORD_CLIENT_SECRET!,
132
+ }`,
133
+ },
134
+ };
135
+ for (const provider of config.oauthProviders) {
136
+ const info = providerMap[provider];
137
+ if (!info)
138
+ continue;
139
+ const varName = `${provider}OAuth`;
140
+ if (devMode) {
141
+ imports.push(`import { ${info.factory} } from ${devPath}`);
142
+ inits.push(`const ${varName} = ${info.factory}()`);
143
+ }
144
+ else {
145
+ imports.push(`import { ${info.factory} } from '@objectifthunes/sandstone-sdk/${info.subpath}'`);
146
+ inits.push(`const ${varName} = ${info.factory}(${info.envVars})`);
147
+ }
148
+ }
149
+ }
150
+ // ── SMS ───────────────────────────────────────────────────────────────────
151
+ if (config.sms === 'twilio') {
76
152
  if (devMode) {
77
- imports.push(`import { createGoogleOAuth } from ${devPath}`);
78
- inits.push(`const googleOAuth = createGoogleOAuth()`);
153
+ imports.push(`import { createTwilioSms } from ${devPath}`);
154
+ inits.push(`const sms = createTwilioSms()`);
79
155
  }
80
156
  else {
81
- imports.push(`import { createGoogleOAuth } from '@objectifthunes/sandstone-sdk/oauth-google'`);
82
- inits.push(`const googleOAuth = createGoogleOAuth({
83
- clientId: process.env.GOOGLE_CLIENT_ID!,
84
- clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
85
- redirectUri: process.env.GOOGLE_REDIRECT_URI!,
157
+ imports.push(`import { createTwilioSms } from '@objectifthunes/sandstone-sdk/twilio'`);
158
+ inits.push(`const sms = createTwilioSms({
159
+ accountSid: process.env.TWILIO_ACCOUNT_SID!,
160
+ authToken: process.env.TWILIO_AUTH_TOKEN!,
161
+ defaultFrom: process.env.TWILIO_FROM_NUMBER!,
162
+ })`);
163
+ }
164
+ appOptions.push('sms');
165
+ }
166
+ else if (config.sms === 'sns') {
167
+ if (devMode) {
168
+ imports.push(`import { createSnsSms } from ${devPath}`);
169
+ inits.push(`const sms = createSnsSms()`);
170
+ }
171
+ else {
172
+ imports.push(`import { createSnsSms } from '@objectifthunes/sandstone-sdk/sns'`);
173
+ inits.push(`const sms = createSnsSms({
174
+ region: process.env.AWS_REGION!,
175
+ })`);
176
+ }
177
+ appOptions.push('sms');
178
+ }
179
+ // ── Push ──────────────────────────────────────────────────────────────────
180
+ if (config.push === 'fcm') {
181
+ if (devMode) {
182
+ imports.push(`import { createFcmPush } from ${devPath}`);
183
+ inits.push(`const push = createFcmPush()`);
184
+ }
185
+ else {
186
+ imports.push(`import { createFcmPush } from '@objectifthunes/sandstone-sdk/fcm'`);
187
+ inits.push(`const push = createFcmPush({
188
+ projectId: process.env.FCM_PROJECT_ID!,
189
+ clientEmail: process.env.FCM_CLIENT_EMAIL!,
190
+ privateKey: process.env.FCM_PRIVATE_KEY!,
191
+ })`);
192
+ }
193
+ appOptions.push('push');
194
+ }
195
+ else if (config.push === 'apns') {
196
+ if (devMode) {
197
+ imports.push(`import { createApnsPush } from ${devPath}`);
198
+ inits.push(`const push = createApnsPush()`);
199
+ }
200
+ else {
201
+ imports.push(`import { createApnsPush } from '@objectifthunes/sandstone-sdk/apns'`);
202
+ inits.push(`const push = createApnsPush({
203
+ keyId: process.env.APNS_KEY_ID!,
204
+ teamId: process.env.APNS_TEAM_ID!,
205
+ privateKey: process.env.APNS_PRIVATE_KEY!,
206
+ bundleId: process.env.APNS_BUNDLE_ID!,
207
+ })`);
208
+ }
209
+ appOptions.push('push');
210
+ }
211
+ else if (config.push === 'both') {
212
+ if (devMode) {
213
+ imports.push(`import { createFcmPush, createApnsPush } from ${devPath}`);
214
+ inits.push(`const fcmPush = createFcmPush()`);
215
+ inits.push(`const apnsPush = createApnsPush()`);
216
+ }
217
+ else {
218
+ imports.push(`import { createFcmPush } from '@objectifthunes/sandstone-sdk/fcm'`);
219
+ imports.push(`import { createApnsPush } from '@objectifthunes/sandstone-sdk/apns'`);
220
+ inits.push(`const fcmPush = createFcmPush({
221
+ projectId: process.env.FCM_PROJECT_ID!,
222
+ clientEmail: process.env.FCM_CLIENT_EMAIL!,
223
+ privateKey: process.env.FCM_PRIVATE_KEY!,
224
+ })`);
225
+ inits.push(`const apnsPush = createApnsPush({
226
+ keyId: process.env.APNS_KEY_ID!,
227
+ teamId: process.env.APNS_TEAM_ID!,
228
+ privateKey: process.env.APNS_PRIVATE_KEY!,
229
+ bundleId: process.env.APNS_BUNDLE_ID!,
230
+ })`);
231
+ }
232
+ // Use FCM as primary push; APNs available for fan-out wrapper
233
+ appOptions.push('push: fcmPush');
234
+ }
235
+ // ── Realtime ──────────────────────────────────────────────────────────────
236
+ if (config.realtime === 'pusher') {
237
+ if (devMode) {
238
+ imports.push(`import { createPusherRealtime } from ${devPath}`);
239
+ inits.push(`const realtime = createPusherRealtime()`);
240
+ }
241
+ else {
242
+ imports.push(`import { createPusherRealtime } from '@objectifthunes/sandstone-sdk/pusher'`);
243
+ inits.push(`const realtime = createPusherRealtime({
244
+ appId: process.env.PUSHER_APP_ID!,
245
+ key: process.env.PUSHER_KEY!,
246
+ secret: process.env.PUSHER_SECRET!,
247
+ cluster: process.env.PUSHER_CLUSTER!,
248
+ })`);
249
+ }
250
+ appOptions.push('realtime');
251
+ }
252
+ else if (config.realtime === 'ably') {
253
+ if (devMode) {
254
+ imports.push(`import { createAblyRealtime } from ${devPath}`);
255
+ inits.push(`const realtime = createAblyRealtime()`);
256
+ }
257
+ else {
258
+ imports.push(`import { createAblyRealtime } from '@objectifthunes/sandstone-sdk/ably'`);
259
+ inits.push(`const realtime = createAblyRealtime({
260
+ apiKey: process.env.ABLY_API_KEY!,
261
+ })`);
262
+ }
263
+ appOptions.push('realtime');
264
+ }
265
+ // socketio is handled in the export pattern below — needs HTTP server from main.ts
266
+ // ── Search ────────────────────────────────────────────────────────────────
267
+ if (config.search === 'meilisearch') {
268
+ if (devMode) {
269
+ imports.push(`import { createMeilisearchSearch } from ${devPath}`);
270
+ inits.push(`const search = createMeilisearchSearch()`);
271
+ }
272
+ else {
273
+ imports.push(`import { createMeilisearchSearch } from '@objectifthunes/sandstone-sdk/meilisearch'`);
274
+ inits.push(`const search = createMeilisearchSearch({
275
+ host: process.env.MEILISEARCH_HOST!,
276
+ apiKey: process.env.MEILISEARCH_API_KEY!,
277
+ })`);
278
+ }
279
+ appOptions.push('search');
280
+ }
281
+ else if (config.search === 'typesense') {
282
+ if (devMode) {
283
+ imports.push(`import { createTypesenseSearch } from ${devPath}`);
284
+ inits.push(`const search = createTypesenseSearch()`);
285
+ }
286
+ else {
287
+ imports.push(`import { createTypesenseSearch } from '@objectifthunes/sandstone-sdk/typesense'`);
288
+ inits.push(`const search = createTypesenseSearch({
289
+ host: process.env.TYPESENSE_HOST!,
290
+ port: Number(process.env.TYPESENSE_PORT ?? 8108),
291
+ apiKey: process.env.TYPESENSE_API_KEY!,
292
+ })`);
293
+ }
294
+ appOptions.push('search');
295
+ }
296
+ else if (config.search === 'pg-search') {
297
+ if (devMode) {
298
+ imports.push(`import { createPgSearch } from ${devPath}`);
299
+ inits.push(`const search = createPgSearch()`);
300
+ }
301
+ else {
302
+ imports.push(`import { createPgSearch } from '@objectifthunes/sandstone-sdk/pg-search'`);
303
+ inits.push(`const search = createPgSearch({ db })`);
304
+ }
305
+ appOptions.push('search');
306
+ }
307
+ // ── Queue ─────────────────────────────────────────────────────────────────
308
+ if (config.queue === 'bullmq') {
309
+ if (devMode) {
310
+ imports.push(`import { createBullMQQueue } from ${devPath}`);
311
+ inits.push(`const queue = createBullMQQueue()`);
312
+ }
313
+ else {
314
+ imports.push(`import { createBullMQQueue } from '@objectifthunes/sandstone-sdk/bullmq'`);
315
+ inits.push(`const queue = createBullMQQueue({
316
+ connection: {
317
+ host: new URL(process.env.REDIS_URL!).hostname,
318
+ port: Number(new URL(process.env.REDIS_URL!).port || 6379),
319
+ },
86
320
  })`);
87
321
  }
322
+ appOptions.push('queue');
88
323
  }
89
- // Payments
324
+ else if (config.queue === 'pg-boss') {
325
+ if (devMode) {
326
+ imports.push(`import { createPgBossQueue } from ${devPath}`);
327
+ inits.push(`const queue = createPgBossQueue()`);
328
+ }
329
+ else {
330
+ imports.push(`import { createPgBossQueue } from '@objectifthunes/sandstone-sdk/pg-boss'`);
331
+ inits.push(`const queue = createPgBossQueue({
332
+ connectionString: process.env.DATABASE_URL!,
333
+ })`);
334
+ }
335
+ appOptions.push('queue');
336
+ }
337
+ // ── Scheduler (only when queue is set) ────────────────────────────────────
338
+ if (config.scheduler && config.queue) {
339
+ if (devMode) {
340
+ imports.push(`import { createNodeCronTickSource } from ${devPath}`);
341
+ inits.push(`const nodeCronTickSource = createNodeCronTickSource()`);
342
+ }
343
+ else {
344
+ imports.push(`import { createNodeCronTickSource } from '@objectifthunes/sandstone-sdk/node-cron'`);
345
+ inits.push(`const nodeCronTickSource = createNodeCronTickSource()`);
346
+ }
347
+ appOptions.push(`scheduler: { tickSource: nodeCronTickSource, tasks: [] }`);
348
+ }
349
+ // ── Feature Flags ─────────────────────────────────────────────────────────
350
+ if (config.flags === 'pg-flags') {
351
+ if (devMode) {
352
+ imports.push(`import { createPgFlags } from ${devPath}`);
353
+ inits.push(`const flags = createPgFlags()`);
354
+ }
355
+ else {
356
+ imports.push(`import { createPgFlags } from '@objectifthunes/sandstone-sdk/pg-flags'`);
357
+ inits.push(`const flags = createPgFlags({ db })`);
358
+ }
359
+ appOptions.push('flags');
360
+ }
361
+ else if (config.flags === 'env-flags') {
362
+ if (devMode) {
363
+ imports.push(`import { createEnvFlags } from ${devPath}`);
364
+ inits.push(`const flags = createEnvFlags()`);
365
+ }
366
+ else {
367
+ imports.push(`import { createEnvFlags } from '@objectifthunes/sandstone-sdk/env-flags'`);
368
+ inits.push(`const flags = createEnvFlags({ prefix: 'FLAG_' })`);
369
+ }
370
+ appOptions.push('flags');
371
+ }
372
+ else if (config.flags === 'launchdarkly') {
373
+ if (devMode) {
374
+ imports.push(`import { createLaunchDarklyFlags } from ${devPath}`);
375
+ inits.push(`const flags = createLaunchDarklyFlags()`);
376
+ }
377
+ else {
378
+ imports.push(`import { createLaunchDarklyFlags } from '@objectifthunes/sandstone-sdk/launchdarkly'`);
379
+ inits.push(`const flags = createLaunchDarklyFlags({
380
+ sdkKey: process.env.LAUNCHDARKLY_SDK_KEY!,
381
+ })`);
382
+ }
383
+ appOptions.push('flags');
384
+ }
385
+ // ── Audit ─────────────────────────────────────────────────────────────────
386
+ if (config.audit) {
387
+ appOptions.push('audit: true');
388
+ }
389
+ // ── Authorization ─────────────────────────────────────────────────────────
390
+ if (config.authz === 'pg-authz') {
391
+ if (devMode) {
392
+ imports.push(`import { createPgAuthz } from ${devPath}`);
393
+ inits.push(`const authz = createPgAuthz()`);
394
+ }
395
+ else {
396
+ imports.push(`import { createPgAuthz } from '@objectifthunes/sandstone-sdk/pg-authz'`);
397
+ inits.push(`const authz = createPgAuthz({ db })`);
398
+ }
399
+ appOptions.push('authorization: authz');
400
+ }
401
+ else if (config.authz === 'casbin') {
402
+ if (devMode) {
403
+ imports.push(`import { createCasbinAuthz } from ${devPath}`);
404
+ inits.push(`const authz = createCasbinAuthz()`);
405
+ }
406
+ else {
407
+ imports.push(`import { createCasbinAuthz } from '@objectifthunes/sandstone-sdk/casbin'`);
408
+ inits.push(`const authz = createCasbinAuthz({
409
+ modelPath: './casbin/model.conf',
410
+ policyPath: './casbin/policy.csv',
411
+ })`);
412
+ }
413
+ appOptions.push('authorization: authz');
414
+ }
415
+ // ── Payments ──────────────────────────────────────────────────────────────
90
416
  if (config.payments === 'stripe') {
91
417
  if (devMode) {
92
418
  imports.push(`import { createStripeProvider } from ${devPath}`);
@@ -144,7 +470,7 @@ export function infrastructureTemplate(config) {
144
470
  }
145
471
  appOptions.push('payments: { provider: paymentProvider }');
146
472
  }
147
- // Storage
473
+ // ── Storage ───────────────────────────────────────────────────────────────
148
474
  if (config.storage === 's3') {
149
475
  if (devMode) {
150
476
  imports.push(`import { createS3Storage } from ${devPath}`);
@@ -155,10 +481,8 @@ export function infrastructureTemplate(config) {
155
481
  inits.push(`const storage = createS3Storage({
156
482
  bucket: process.env.S3_BUCKET!,
157
483
  region: process.env.S3_REGION!,
158
- credentials: {
159
- accessKeyId: process.env.S3_ACCESS_KEY_ID!,
160
- secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,
161
- },
484
+ accessKeyId: process.env.S3_ACCESS_KEY_ID!,
485
+ secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,
162
486
  })`);
163
487
  }
164
488
  }
@@ -189,7 +513,7 @@ export function infrastructureTemplate(config) {
189
513
  })`);
190
514
  }
191
515
  }
192
- // Cache
516
+ // ── Cache ─────────────────────────────────────────────────────────────────
193
517
  if (config.cache === 'upstash') {
194
518
  if (devMode) {
195
519
  imports.push(`import { createUpstashCache } from ${devPath}`);
@@ -203,12 +527,38 @@ export function infrastructureTemplate(config) {
203
527
  })`);
204
528
  }
205
529
  }
206
- // GraphQL
530
+ else if (config.cache === 'redis') {
531
+ if (devMode) {
532
+ imports.push(`import { createRedisCache } from ${devPath}`);
533
+ inits.push(`const cache = createRedisCache()`);
534
+ }
535
+ else {
536
+ imports.push(`import { createRedisCache } from '@objectifthunes/sandstone-sdk/redis'`);
537
+ inits.push(`const cache = createRedisCache({
538
+ url: process.env.REDIS_URL!,
539
+ })`);
540
+ }
541
+ }
542
+ else if (config.cache === 'memory') {
543
+ if (devMode) {
544
+ imports.push(`import { createMemoryCache } from ${devPath}`);
545
+ inits.push(`const cache = createMemoryCache()`);
546
+ }
547
+ else {
548
+ imports.push(`import { createMemoryCache } from '@objectifthunes/sandstone-sdk/memory'`);
549
+ inits.push(`const cache = createMemoryCache()`);
550
+ }
551
+ }
552
+ // ── GraphQL ───────────────────────────────────────────────────────────────
207
553
  if (config.graphql) {
208
- imports.push(`import { schema } from './schema.js'`);
554
+ imports.push(`import { schema } from './graphql/schema.js'`);
209
555
  appOptions.push(`graphql: { schema }`);
210
556
  }
211
- // Build the createApp call
557
+ // ── Dashboard ─────────────────────────────────────────────────────────────
558
+ if (config.dashboard) {
559
+ imports.push(`import { createDashboard } from '@objectifthunes/sandstone-sdk'`);
560
+ }
561
+ // ── Build the output ─────────────────────────────────────────────────────
212
562
  const optionsStr = appOptions
213
563
  .map((opt) => ` ${opt},`)
214
564
  .join('\n');
@@ -217,15 +567,60 @@ export function infrastructureTemplate(config) {
217
567
  parts.push('');
218
568
  parts.push(inits.join('\n\n'));
219
569
  parts.push('');
220
- parts.push(`export const app = await createApp({
570
+ // Socket.io special export pattern
571
+ if (isSocketIo) {
572
+ if (devMode) {
573
+ imports.push(`import { createSocketIoRealtime } from ${devPath}`);
574
+ }
575
+ else {
576
+ imports.push(`import { createSocketIoRealtime } from '@objectifthunes/sandstone-sdk/socketio'`);
577
+ }
578
+ imports.push(`import type { Server as HttpServer } from 'node:http'`);
579
+ // Rebuild parts with updated imports
580
+ parts.length = 0;
581
+ parts.push(imports.join('\n'));
582
+ parts.push('');
583
+ parts.push(inits.join('\n\n'));
584
+ parts.push('');
585
+ if (devMode) {
586
+ parts.push(`export function createRealtime(server: HttpServer) {
587
+ return createSocketIoRealtime()
588
+ }`);
589
+ }
590
+ else {
591
+ parts.push(`export function createRealtime(server: HttpServer) {
592
+ return createSocketIoRealtime({ server })
593
+ }`);
594
+ }
595
+ parts.push('');
596
+ parts.push(`export const appOptions = {
597
+ ${optionsStr}
598
+ }`);
599
+ }
600
+ else {
601
+ parts.push(`export const app = await createApp({
221
602
  ${optionsStr}
222
603
  })`);
223
- // Export extras that main.ts might need
604
+ }
605
+ // ── Dashboard handler export ──────────────────────────────────────────────
606
+ if (config.dashboard) {
607
+ parts.push('');
608
+ if (isSocketIo) {
609
+ parts.push(`// Dashboard must be created after app is constructed in main.ts`);
610
+ parts.push(`export { createDashboard }`);
611
+ }
612
+ else {
613
+ parts.push(`export const dashboardHandler = createDashboard(app, {
614
+ secret: process.env.DASHBOARD_SECRET,
615
+ })`);
616
+ }
617
+ }
618
+ // ── Export extras that main.ts might need ─────────────────────────────────
224
619
  if (config.storage) {
225
620
  parts.push('');
226
621
  parts.push('export { storage }');
227
622
  }
228
- if (config.cache === 'upstash') {
623
+ if (config.cache) {
229
624
  parts.push('');
230
625
  parts.push('export { cache }');
231
626
  }
@@ -233,9 +628,15 @@ ${optionsStr}
233
628
  parts.push('');
234
629
  parts.push('export { passwordHasher }');
235
630
  }
236
- if (config.auth === 'oauth+otp' || config.auth === 'all') {
631
+ if ((config.auth === 'oauth+otp' || config.auth === 'all') && config.oauthProviders.length > 0) {
632
+ const oauthExports = config.oauthProviders.map((p) => `${p}OAuth`).join(', ');
633
+ parts.push('');
634
+ parts.push(`export { ${oauthExports} }`);
635
+ }
636
+ if (config.push === 'both') {
237
637
  parts.push('');
238
- parts.push('export { googleOAuth }');
638
+ parts.push(`// APNs push available for fan-out wrapper`);
639
+ parts.push('export { apnsPush }');
239
640
  }
240
641
  parts.push('');
241
642
  return parts.join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"infrastructure.js","sourceRoot":"","sources":["../../src/templates/infrastructure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"infrastructure.js","sourceRoot":"","sources":["../../src/templates/infrastructure.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"main-express.d.ts","sourceRoot":"","sources":["../../src/templates/main-express.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAkDjE"}
1
+ {"version":3,"file":"main-express.d.ts","sourceRoot":"","sources":["../../src/templates/main-express.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAsIjE"}