openkitt 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -0
- package/dist/ast/engine.d.ts +26 -0
- package/dist/ast/engine.js +130 -0
- package/dist/ast/engine.js.map +1 -0
- package/dist/ast/operations.d.ts +13 -0
- package/dist/ast/operations.js +329 -0
- package/dist/ast/operations.js.map +1 -0
- package/dist/ast/validator.d.ts +19 -0
- package/dist/ast/validator.js +281 -0
- package/dist/ast/validator.js.map +1 -0
- package/dist/audit/logger.d.ts +14 -0
- package/dist/audit/logger.js +102 -0
- package/dist/audit/logger.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.js +401 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/create-confirm.d.ts +13 -0
- package/dist/commands/create-confirm.js +38 -0
- package/dist/commands/create-confirm.js.map +1 -0
- package/dist/commands/create-infra.d.ts +20 -0
- package/dist/commands/create-infra.js +63 -0
- package/dist/commands/create-infra.js.map +1 -0
- package/dist/commands/create-manifest.d.ts +10 -0
- package/dist/commands/create-manifest.js +21 -0
- package/dist/commands/create-manifest.js.map +1 -0
- package/dist/commands/create-packages.d.ts +17 -0
- package/dist/commands/create-packages.js +69 -0
- package/dist/commands/create-packages.js.map +1 -0
- package/dist/commands/create-pipeline.d.ts +15 -0
- package/dist/commands/create-pipeline.js +57 -0
- package/dist/commands/create-pipeline.js.map +1 -0
- package/dist/commands/create-scaffolding.d.ts +12 -0
- package/dist/commands/create-scaffolding.js +137 -0
- package/dist/commands/create-scaffolding.js.map +1 -0
- package/dist/commands/create-staging.d.ts +13 -0
- package/dist/commands/create-staging.js +17 -0
- package/dist/commands/create-staging.js.map +1 -0
- package/dist/commands/create-transforms.d.ts +10 -0
- package/dist/commands/create-transforms.js +33 -0
- package/dist/commands/create-transforms.js.map +1 -0
- package/dist/commands/create.d.ts +2 -0
- package/dist/commands/create.js +155 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/delete.d.ts +2 -0
- package/dist/commands/delete.js +83 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/deploy.d.ts +5 -0
- package/dist/commands/deploy.js +371 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/domain.d.ts +2 -0
- package/dist/commands/domain.js +90 -0
- package/dist/commands/domain.js.map +1 -0
- package/dist/commands/env.d.ts +2 -0
- package/dist/commands/env.js +153 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/help.d.ts +3 -0
- package/dist/commands/help.js +107 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.js +217 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.js +142 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.js +235 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logs.d.ts +2 -0
- package/dist/commands/logs.js +90 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/publish.d.ts +2 -0
- package/dist/commands/publish.js +113 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/run.d.ts +14 -0
- package/dist/commands/run.js +196 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/settings.d.ts +3 -0
- package/dist/commands/settings.js +278 -0
- package/dist/commands/settings.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.js +88 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/versions.d.ts +2 -0
- package/dist/commands/versions.js +242 -0
- package/dist/commands/versions.js.map +1 -0
- package/dist/credentials/config.d.ts +12 -0
- package/dist/credentials/config.js +196 -0
- package/dist/credentials/config.js.map +1 -0
- package/dist/credentials/encryption.d.ts +9 -0
- package/dist/credentials/encryption.js +100 -0
- package/dist/credentials/encryption.js.map +1 -0
- package/dist/credentials/keychain.d.ts +8 -0
- package/dist/credentials/keychain.js +236 -0
- package/dist/credentials/keychain.js.map +1 -0
- package/dist/credentials/railway.d.ts +9 -0
- package/dist/credentials/railway.js +69 -0
- package/dist/credentials/railway.js.map +1 -0
- package/dist/llm/client.d.ts +59 -0
- package/dist/llm/client.js +530 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/operations.d.ts +39 -0
- package/dist/llm/operations.js +131 -0
- package/dist/llm/operations.js.map +1 -0
- package/dist/llm/rate-limiter.d.ts +20 -0
- package/dist/llm/rate-limiter.js +57 -0
- package/dist/llm/rate-limiter.js.map +1 -0
- package/dist/llm/scaffolding.d.ts +51 -0
- package/dist/llm/scaffolding.js +118 -0
- package/dist/llm/scaffolding.js.map +1 -0
- package/dist/manifest/drift.d.ts +6 -0
- package/dist/manifest/drift.js +45 -0
- package/dist/manifest/drift.js.map +1 -0
- package/dist/manifest/reader.d.ts +12 -0
- package/dist/manifest/reader.js +99 -0
- package/dist/manifest/reader.js.map +1 -0
- package/dist/manifest/types.d.ts +31 -0
- package/dist/manifest/types.js +2 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/manifest/writer.d.ts +9 -0
- package/dist/manifest/writer.js +142 -0
- package/dist/manifest/writer.js.map +1 -0
- package/dist/mcp/client.d.ts +21 -0
- package/dist/mcp/client.js +213 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/lifecycle.d.ts +12 -0
- package/dist/mcp/lifecycle.js +149 -0
- package/dist/mcp/lifecycle.js.map +1 -0
- package/dist/mcp/project-guard.d.ts +14 -0
- package/dist/mcp/project-guard.js +27 -0
- package/dist/mcp/project-guard.js.map +1 -0
- package/dist/prompts/operations.d.ts +1 -0
- package/dist/prompts/operations.js +160 -0
- package/dist/prompts/operations.js.map +1 -0
- package/dist/prompts/scaffolding.d.ts +1 -0
- package/dist/prompts/scaffolding.js +331 -0
- package/dist/prompts/scaffolding.js.map +1 -0
- package/dist/prompts/version.d.ts +2 -0
- package/dist/prompts/version.js +3 -0
- package/dist/prompts/version.js.map +1 -0
- package/dist/sandbox/command-allowlist.d.ts +6 -0
- package/dist/sandbox/command-allowlist.js +103 -0
- package/dist/sandbox/command-allowlist.js.map +1 -0
- package/dist/sandbox/package-allowlist.d.ts +6 -0
- package/dist/sandbox/package-allowlist.js +49 -0
- package/dist/sandbox/package-allowlist.js.map +1 -0
- package/dist/sandbox/scanner.d.ts +25 -0
- package/dist/sandbox/scanner.js +196 -0
- package/dist/sandbox/scanner.js.map +1 -0
- package/dist/sandbox/staging.d.ts +12 -0
- package/dist/sandbox/staging.js +107 -0
- package/dist/sandbox/staging.js.map +1 -0
- package/dist/scaffold/frameworks/express.d.ts +3 -0
- package/dist/scaffold/frameworks/express.js +242 -0
- package/dist/scaffold/frameworks/express.js.map +1 -0
- package/dist/scaffold/frameworks/hono.d.ts +3 -0
- package/dist/scaffold/frameworks/hono.js +238 -0
- package/dist/scaffold/frameworks/hono.js.map +1 -0
- package/dist/scaffold/frameworks/nextjs.d.ts +3 -0
- package/dist/scaffold/frameworks/nextjs.js +447 -0
- package/dist/scaffold/frameworks/nextjs.js.map +1 -0
- package/dist/scaffold/frameworks/tanstack-start.d.ts +3 -0
- package/dist/scaffold/frameworks/tanstack-start.js +280 -0
- package/dist/scaffold/frameworks/tanstack-start.js.map +1 -0
- package/dist/scaffold/index.d.ts +4 -0
- package/dist/scaffold/index.js +138 -0
- package/dist/scaffold/index.js.map +1 -0
- package/dist/scaffold/integrations/backend.d.ts +3 -0
- package/dist/scaffold/integrations/backend.js +403 -0
- package/dist/scaffold/integrations/backend.js.map +1 -0
- package/dist/scaffold/integrations/posthog.d.ts +2 -0
- package/dist/scaffold/integrations/posthog.js +21 -0
- package/dist/scaffold/integrations/posthog.js.map +1 -0
- package/dist/scaffold/integrations/sentry.d.ts +2 -0
- package/dist/scaffold/integrations/sentry.js +16 -0
- package/dist/scaffold/integrations/sentry.js.map +1 -0
- package/dist/scaffold/integrations/storybook.d.ts +2 -0
- package/dist/scaffold/integrations/storybook.js +79 -0
- package/dist/scaffold/integrations/storybook.js.map +1 -0
- package/dist/scaffold/integrations/vitest.d.ts +2 -0
- package/dist/scaffold/integrations/vitest.js +37 -0
- package/dist/scaffold/integrations/vitest.js.map +1 -0
- package/dist/scaffold/package-builder.d.ts +3 -0
- package/dist/scaffold/package-builder.js +136 -0
- package/dist/scaffold/package-builder.js.map +1 -0
- package/dist/scaffold/packages.d.ts +4 -0
- package/dist/scaffold/packages.js +144 -0
- package/dist/scaffold/packages.js.map +1 -0
- package/dist/scaffold/types.d.ts +20 -0
- package/dist/scaffold/types.js +2 -0
- package/dist/scaffold/types.js.map +1 -0
- package/dist/types.d.ts +11 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/auth-guard.d.ts +5 -0
- package/dist/utils/auth-guard.js +52 -0
- package/dist/utils/auth-guard.js.map +1 -0
- package/dist/utils/cleanup.d.ts +2 -0
- package/dist/utils/cleanup.js +37 -0
- package/dist/utils/cleanup.js.map +1 -0
- package/dist/utils/constraints.d.ts +11 -0
- package/dist/utils/constraints.js +162 -0
- package/dist/utils/constraints.js.map +1 -0
- package/dist/utils/display.d.ts +32 -0
- package/dist/utils/display.js +103 -0
- package/dist/utils/display.js.map +1 -0
- package/dist/utils/global-config.d.ts +8 -0
- package/dist/utils/global-config.js +39 -0
- package/dist/utils/global-config.js.map +1 -0
- package/dist/utils/pm.d.ts +4 -0
- package/dist/utils/pm.js +40 -0
- package/dist/utils/pm.js.map +1 -0
- package/dist/utils/prerequisites.d.ts +9 -0
- package/dist/utils/prerequisites.js +96 -0
- package/dist/utils/prerequisites.js.map +1 -0
- package/dist/utils/prompts.d.ts +25 -0
- package/dist/utils/prompts.js +148 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/validation.d.ts +9 -0
- package/dist/utils/validation.js +38 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/versions/compat.d.ts +13 -0
- package/dist/versions/compat.js +127 -0
- package/dist/versions/compat.js.map +1 -0
- package/dist/versions/integrity.d.ts +9 -0
- package/dist/versions/integrity.js +60 -0
- package/dist/versions/integrity.js.map +1 -0
- package/dist/versions/parser.d.ts +13 -0
- package/dist/versions/parser.js +106 -0
- package/dist/versions/parser.js.map +1 -0
- package/dist/versions/registry.d.ts +30 -0
- package/dist/versions/registry.js +165 -0
- package/dist/versions/registry.js.map +1 -0
- package/package.json +58 -0
- package/scripts/publish.sh +254 -0
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
function isBackend(framework) {
|
|
2
|
+
return framework === 'hono' || framework === 'express';
|
|
3
|
+
}
|
|
4
|
+
export function buildSharedIntegrationFiles(opts) {
|
|
5
|
+
const { appName, integrations, workspaceName, framework, appType } = opts;
|
|
6
|
+
const base = `apps/${appName}`;
|
|
7
|
+
const files = [];
|
|
8
|
+
const backend = isBackend(framework);
|
|
9
|
+
const isFrontend = appType === 'frontend';
|
|
10
|
+
const orm = integrations.includes('drizzle') ? 'drizzle' : integrations.includes('prisma') ? 'prisma' : null;
|
|
11
|
+
const db = integrations.includes('postgresql') ? 'postgresql'
|
|
12
|
+
: integrations.includes('mysql') ? 'mysql'
|
|
13
|
+
: integrations.includes('sqlite') ? 'sqlite'
|
|
14
|
+
: null;
|
|
15
|
+
if (orm === 'drizzle' && db) {
|
|
16
|
+
files.push(...buildDrizzleFiles(base, db, workspaceName));
|
|
17
|
+
files.push(...buildDbPackage(workspaceName, orm, db));
|
|
18
|
+
}
|
|
19
|
+
else if (orm === 'prisma' && db) {
|
|
20
|
+
files.push(...buildPrismaFiles(base, db, workspaceName));
|
|
21
|
+
files.push(...buildDbPackage(workspaceName, orm, db));
|
|
22
|
+
}
|
|
23
|
+
if (integrations.includes('better-auth')) {
|
|
24
|
+
files.push(...buildAuthFiles(base, workspaceName, backend));
|
|
25
|
+
}
|
|
26
|
+
if (integrations.includes('stripe')) {
|
|
27
|
+
files.push(buildStripeLib(base));
|
|
28
|
+
}
|
|
29
|
+
if (integrations.includes('polar')) {
|
|
30
|
+
files.push(buildPolarLib(base));
|
|
31
|
+
}
|
|
32
|
+
if (integrations.includes('resend')) {
|
|
33
|
+
files.push(buildResendLib(base));
|
|
34
|
+
}
|
|
35
|
+
if (integrations.includes('bullmq')) {
|
|
36
|
+
files.push(...buildBullMQPackage(workspaceName));
|
|
37
|
+
files.push(buildJobsConsumerLib(base, 'bullmq', workspaceName));
|
|
38
|
+
}
|
|
39
|
+
else if (integrations.includes('trigger-dev')) {
|
|
40
|
+
files.push(...buildTriggerDevPackage(workspaceName));
|
|
41
|
+
files.push(buildJobsConsumerLib(base, 'trigger-dev', workspaceName));
|
|
42
|
+
}
|
|
43
|
+
if (integrations.includes('playwright')) {
|
|
44
|
+
files.push(buildPlaywrightConfig(base));
|
|
45
|
+
}
|
|
46
|
+
if (isFrontend) {
|
|
47
|
+
files.push(...buildUiPackage(workspaceName));
|
|
48
|
+
files.push(...buildComponentsPackage(workspaceName));
|
|
49
|
+
if (integrations.includes('tailwindcss')) {
|
|
50
|
+
files.push(...buildTailwindConfigPackage(workspaceName));
|
|
51
|
+
}
|
|
52
|
+
if (framework === 'tanstack-start') {
|
|
53
|
+
files.push(...buildTanstackQueryPackage(workspaceName));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return files;
|
|
57
|
+
}
|
|
58
|
+
function buildDrizzleFiles(base, db, workspaceName) {
|
|
59
|
+
const clientKey = `drizzle-${db}`;
|
|
60
|
+
const pkgPath = `packages/db/clients/${clientKey}`;
|
|
61
|
+
const dialect = db === 'postgresql' ? 'postgresql' : db === 'mysql' ? 'mysql2' : 'sqlite';
|
|
62
|
+
const drizzleImport = db === 'postgresql'
|
|
63
|
+
? `import { drizzle } from 'drizzle-orm/node-postgres';\nimport { Pool } from 'pg';`
|
|
64
|
+
: db === 'mysql'
|
|
65
|
+
? `import { drizzle } from 'drizzle-orm/mysql2';\nimport mysql from 'mysql2/promise';`
|
|
66
|
+
: `import { drizzle } from 'drizzle-orm/better-sqlite3';\nimport Database from 'better-sqlite3';`;
|
|
67
|
+
const clientInit = db === 'postgresql'
|
|
68
|
+
? `const pool = new Pool({ connectionString: process.env.DATABASE_URL });\nexport const db = drizzle({ client: pool });`
|
|
69
|
+
: db === 'mysql'
|
|
70
|
+
? `const connection = await mysql.createConnection(process.env.DATABASE_URL!);\nexport const db = drizzle({ client: connection });`
|
|
71
|
+
: `const sqlite = new Database(process.env.DATABASE_URL ?? './dev.db');\nexport const db = drizzle({ client: sqlite });`;
|
|
72
|
+
const schema = db === 'postgresql'
|
|
73
|
+
? `import { pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core';\n\nexport const users = pgTable('users', {\n id: serial('id').primaryKey(),\n email: text('email').notNull().unique(),\n createdAt: timestamp('created_at').defaultNow(),\n});\n`
|
|
74
|
+
: db === 'mysql'
|
|
75
|
+
? `import { mysqlTable, serial, text, timestamp } from 'drizzle-orm/mysql-core';\n\nexport const users = mysqlTable('users', {\n id: serial('id').primaryKey(),\n email: text('email').notNull().unique(),\n createdAt: timestamp('created_at').defaultNow(),\n});\n`
|
|
76
|
+
: `import { sqliteTable, integer, text } from 'drizzle-orm/sqlite-core';\n\nexport const users = sqliteTable('users', {\n id: integer('id').primaryKey({ autoIncrement: true }),\n email: text('email').notNull().unique(),\n});\n`;
|
|
77
|
+
const migratorImport = db === 'postgresql'
|
|
78
|
+
? `drizzle-orm/node-postgres/migrator`
|
|
79
|
+
: db === 'mysql'
|
|
80
|
+
? `drizzle-orm/mysql2/migrator`
|
|
81
|
+
: `drizzle-orm/better-sqlite3/migrator`;
|
|
82
|
+
const migrateCall = db === 'sqlite'
|
|
83
|
+
? `migrate(db, { migrationsFolder: './drizzle' });`
|
|
84
|
+
: `await migrate(db, { migrationsFolder: './drizzle' });`;
|
|
85
|
+
return [
|
|
86
|
+
{
|
|
87
|
+
path: `${pkgPath}/index.ts`,
|
|
88
|
+
content: `${drizzleImport}\nimport * as schema from './schema.js';\n\n${clientInit}\n\nexport * from './schema.js';\n`,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
path: `${pkgPath}/schema.ts`,
|
|
92
|
+
content: schema,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
path: `${pkgPath}/migrate.ts`,
|
|
96
|
+
content: `import { migrate } from '${migratorImport}';\nimport { db } from './index.js';\n\n${migrateCall}\nconsole.log('Migrations complete');\nprocess.exit(0);\n`,
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
path: `${pkgPath}/package.json`,
|
|
100
|
+
content: JSON.stringify({
|
|
101
|
+
name: `@${workspaceName}/db-${db}`,
|
|
102
|
+
version: '0.0.1',
|
|
103
|
+
private: true,
|
|
104
|
+
type: 'module',
|
|
105
|
+
main: './index.ts',
|
|
106
|
+
types: './index.ts',
|
|
107
|
+
}, null, 2) + '\n',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
path: `${base}/src/lib/db.ts`,
|
|
111
|
+
content: `export { db } from '@${workspaceName}/db-${db}/index.js';\n`,
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
path: `${base}/drizzle.config.ts`,
|
|
115
|
+
content: `import { defineConfig } from 'drizzle-kit';\n\nexport default defineConfig({\n dialect: '${dialect}',\n schema: '../../packages/db/clients/drizzle-${db}/schema.ts',\n out: './drizzle',\n dbCredentials: {\n url: process.env.DATABASE_URL!,\n },\n});\n`,
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
}
|
|
119
|
+
function buildPrismaFiles(base, db, workspaceName) {
|
|
120
|
+
const provider = db === 'postgresql' ? 'postgresql' : db === 'mysql' ? 'mysql' : 'sqlite';
|
|
121
|
+
const clientKey = `prisma-${db}`;
|
|
122
|
+
const pkgPath = `packages/db/clients/${clientKey}`;
|
|
123
|
+
return [
|
|
124
|
+
{
|
|
125
|
+
path: `${pkgPath}/schema.prisma`,
|
|
126
|
+
content: `generator client {\n provider = "prisma-client-js"\n}\n\ndatasource db {\n provider = "${provider}"\n url = env("DATABASE_URL")\n}\n\nmodel User {\n id Int @id @default(autoincrement())\n email String @unique\n createdAt DateTime @default(now())\n}\n`,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
path: `${pkgPath}/index.ts`,
|
|
130
|
+
content: `import { PrismaClient } from '@prisma/client';\n\nconst globalForPrisma = globalThis as unknown as { prisma: PrismaClient };\n\nexport const prisma = globalForPrisma.prisma ?? new PrismaClient();\n\nif (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;\n`,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
path: `${pkgPath}/package.json`,
|
|
134
|
+
content: JSON.stringify({
|
|
135
|
+
name: `@${workspaceName}/db-${db}`,
|
|
136
|
+
version: '0.0.1',
|
|
137
|
+
private: true,
|
|
138
|
+
type: 'module',
|
|
139
|
+
main: './index.ts',
|
|
140
|
+
types: './index.ts',
|
|
141
|
+
}, null, 2) + '\n',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
path: `${base}/src/lib/db.ts`,
|
|
145
|
+
content: `export { prisma } from '@${workspaceName}/db-${db}/index.js';\n`,
|
|
146
|
+
},
|
|
147
|
+
];
|
|
148
|
+
}
|
|
149
|
+
function buildAuthFiles(base, workspaceName, backend) {
|
|
150
|
+
const appLibShim = backend
|
|
151
|
+
? `export { auth } from '@${workspaceName}/auth/index.js';\n`
|
|
152
|
+
: `export { authClient } from '@${workspaceName}/auth/index.js';\n`;
|
|
153
|
+
return [
|
|
154
|
+
{
|
|
155
|
+
path: `packages/auth/package.json`,
|
|
156
|
+
content: JSON.stringify({
|
|
157
|
+
name: `@${workspaceName}/auth`,
|
|
158
|
+
version: '0.0.1',
|
|
159
|
+
private: true,
|
|
160
|
+
type: 'module',
|
|
161
|
+
main: './src/index.ts',
|
|
162
|
+
types: './src/index.ts',
|
|
163
|
+
}, null, 2) + '\n',
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
path: `packages/auth/src/server.ts`,
|
|
167
|
+
content: `import { betterAuth } from 'better-auth';\n\nexport const auth = betterAuth({\n secret: process.env.BETTER_AUTH_SECRET!,\n baseURL: process.env.BETTER_AUTH_URL ?? 'http://localhost:3000',\n emailAndPassword: {\n enabled: true,\n },\n});\n`,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
path: `packages/auth/src/client.ts`,
|
|
171
|
+
content: `import { createAuthClient } from 'better-auth/client';\n\nexport const authClient = createAuthClient({\n baseURL: process.env.BETTER_AUTH_URL ?? 'http://localhost:3000',\n});\n`,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
path: `packages/auth/src/index.ts`,
|
|
175
|
+
content: `export * from './server.js';\nexport * from './client.js';\n`,
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
path: `${base}/src/lib/auth.ts`,
|
|
179
|
+
content: appLibShim,
|
|
180
|
+
},
|
|
181
|
+
];
|
|
182
|
+
}
|
|
183
|
+
function buildStripeLib(base) {
|
|
184
|
+
return {
|
|
185
|
+
path: `${base}/src/lib/stripe.ts`,
|
|
186
|
+
content: `import Stripe from 'stripe';\n\nexport const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {\n apiVersion: '2025-02-24.acacia',\n});\n`,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function buildPolarLib(base) {
|
|
190
|
+
return {
|
|
191
|
+
path: `${base}/src/lib/polar.ts`,
|
|
192
|
+
content: `import { Polar } from '@polar-sh/sdk';\n\nexport const polar = new Polar({\n accessToken: process.env.POLAR_ACCESS_TOKEN!,\n});\n`,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function buildResendLib(base) {
|
|
196
|
+
return {
|
|
197
|
+
path: `${base}/src/lib/resend.ts`,
|
|
198
|
+
content: `import { Resend } from 'resend';\n\nexport const resend = new Resend(process.env.RESEND_API_KEY!);\n`,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
function buildBullMQPackage(workspaceName) {
|
|
202
|
+
return [
|
|
203
|
+
{
|
|
204
|
+
path: `packages/jobs/src/queues.ts`,
|
|
205
|
+
content: `import { Queue } from 'bullmq';\nimport { connection } from './connection.js';\n\nexport const defaultQueue = new Queue('default', { connection });\n`,
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
path: `packages/jobs/src/connection.ts`,
|
|
209
|
+
content: `import IORedis from 'ioredis';\n\nexport const connection = new IORedis(process.env.REDIS_URL!, {\n maxRetriesPerRequest: null,\n});\n`,
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
path: `packages/jobs/src/workers.ts`,
|
|
213
|
+
content: `import { Worker } from 'bullmq';\nimport { connection } from './connection.js';\n\nexport const defaultWorker = new Worker(\n 'default',\n async (job) => {\n console.log('Processing job', job.id, job.data);\n },\n { connection },\n);\n`,
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
path: `packages/jobs/src/index.ts`,
|
|
217
|
+
content: `export * from './queues.js';\nexport * from './workers.js';\nexport * from './connection.js';\n`,
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
path: `packages/jobs/package.json`,
|
|
221
|
+
content: JSON.stringify({
|
|
222
|
+
name: `@${workspaceName}/jobs`,
|
|
223
|
+
version: '0.0.1',
|
|
224
|
+
private: true,
|
|
225
|
+
type: 'module',
|
|
226
|
+
main: './src/index.ts',
|
|
227
|
+
types: './src/index.ts',
|
|
228
|
+
}, null, 2) + '\n',
|
|
229
|
+
},
|
|
230
|
+
];
|
|
231
|
+
}
|
|
232
|
+
function buildTriggerDevPackage(workspaceName) {
|
|
233
|
+
return [
|
|
234
|
+
{
|
|
235
|
+
path: `packages/jobs/src/example-task.ts`,
|
|
236
|
+
content: `import { task } from '@trigger.dev/sdk';\n\nexport const exampleTask = task({\n id: 'example-task',\n run: async (payload: { message: string }) => {\n console.log(payload.message);\n },\n});\n`,
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
path: `packages/jobs/src/index.ts`,
|
|
240
|
+
content: `export * from './example-task.js';\n`,
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
path: `packages/jobs/package.json`,
|
|
244
|
+
content: JSON.stringify({
|
|
245
|
+
name: `@${workspaceName}/jobs`,
|
|
246
|
+
version: '0.0.1',
|
|
247
|
+
private: true,
|
|
248
|
+
type: 'module',
|
|
249
|
+
main: './src/index.ts',
|
|
250
|
+
types: './src/index.ts',
|
|
251
|
+
}, null, 2) + '\n',
|
|
252
|
+
},
|
|
253
|
+
];
|
|
254
|
+
}
|
|
255
|
+
function buildJobsConsumerLib(base, provider, workspaceName) {
|
|
256
|
+
const content = provider === 'bullmq'
|
|
257
|
+
? `export { defaultQueue } from '@${workspaceName}/jobs/index.js';\n`
|
|
258
|
+
: `export { exampleTask } from '@${workspaceName}/jobs/index.js';\n`;
|
|
259
|
+
return { path: `${base}/src/lib/jobs.ts`, content };
|
|
260
|
+
}
|
|
261
|
+
function buildPlaywrightConfig(base) {
|
|
262
|
+
return {
|
|
263
|
+
path: `${base}/playwright.config.ts`,
|
|
264
|
+
content: `import { defineConfig } from '@playwright/test';\n\nexport default defineConfig({\n testDir: './e2e',\n use: {\n baseURL: 'http://localhost:3000',\n },\n webServer: {\n command: 'bun run dev',\n url: 'http://localhost:3000',\n reuseExistingServer: !process.env.CI,\n },\n});\n`,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
function buildUiPackage(workspaceName) {
|
|
268
|
+
return [
|
|
269
|
+
{
|
|
270
|
+
path: `packages/ui/package.json`,
|
|
271
|
+
content: JSON.stringify({
|
|
272
|
+
name: `@${workspaceName}/ui`,
|
|
273
|
+
version: '0.0.1',
|
|
274
|
+
private: true,
|
|
275
|
+
type: 'module',
|
|
276
|
+
main: './src/index.ts',
|
|
277
|
+
types: './src/index.ts',
|
|
278
|
+
}, null, 2) + '\n',
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
path: `packages/ui/src/index.ts`,
|
|
282
|
+
content: `export {};
|
|
283
|
+
`,
|
|
284
|
+
},
|
|
285
|
+
];
|
|
286
|
+
}
|
|
287
|
+
function buildComponentsPackage(workspaceName) {
|
|
288
|
+
return [
|
|
289
|
+
{
|
|
290
|
+
path: `packages/components/package.json`,
|
|
291
|
+
content: JSON.stringify({
|
|
292
|
+
name: `@${workspaceName}/components`,
|
|
293
|
+
version: '0.0.1',
|
|
294
|
+
private: true,
|
|
295
|
+
type: 'module',
|
|
296
|
+
main: './src/index.ts',
|
|
297
|
+
types: './src/index.ts',
|
|
298
|
+
}, null, 2) + '\n',
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
path: `packages/components/src/index.ts`,
|
|
302
|
+
content: `export {};
|
|
303
|
+
`,
|
|
304
|
+
},
|
|
305
|
+
];
|
|
306
|
+
}
|
|
307
|
+
function buildTailwindConfigPackage(workspaceName) {
|
|
308
|
+
return [
|
|
309
|
+
{
|
|
310
|
+
path: `packages/tailwind-config/package.json`,
|
|
311
|
+
content: JSON.stringify({
|
|
312
|
+
name: `@${workspaceName}/tailwind-config`,
|
|
313
|
+
version: '0.0.1',
|
|
314
|
+
private: true,
|
|
315
|
+
type: 'module',
|
|
316
|
+
exports: {
|
|
317
|
+
'./preset.css': './preset.css',
|
|
318
|
+
},
|
|
319
|
+
}, null, 2) + '\n',
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
path: `packages/tailwind-config/preset.css`,
|
|
323
|
+
content: `@import 'tailwindcss';
|
|
324
|
+
|
|
325
|
+
@theme {
|
|
326
|
+
--font-sans: 'Inter', sans-serif;
|
|
327
|
+
}
|
|
328
|
+
`,
|
|
329
|
+
},
|
|
330
|
+
];
|
|
331
|
+
}
|
|
332
|
+
function buildTanstackQueryPackage(workspaceName) {
|
|
333
|
+
return [
|
|
334
|
+
{
|
|
335
|
+
path: `packages/tanstack-query/package.json`,
|
|
336
|
+
content: JSON.stringify({
|
|
337
|
+
name: `@${workspaceName}/tanstack-query`,
|
|
338
|
+
version: '0.0.1',
|
|
339
|
+
private: true,
|
|
340
|
+
type: 'module',
|
|
341
|
+
main: './src/index.ts',
|
|
342
|
+
types: './src/index.ts',
|
|
343
|
+
}, null, 2) + '\n',
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
path: `packages/tanstack-query/src/client.tsx`,
|
|
347
|
+
content: `import { QueryClient } from '@tanstack/react-query';
|
|
348
|
+
|
|
349
|
+
export function createQueryClient() {
|
|
350
|
+
return new QueryClient({
|
|
351
|
+
defaultOptions: {
|
|
352
|
+
queries: {
|
|
353
|
+
staleTime: 60 * 1000,
|
|
354
|
+
},
|
|
355
|
+
},
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
`,
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
path: `packages/tanstack-query/src/provider.tsx`,
|
|
362
|
+
content: `import { QueryClientProvider } from '@tanstack/react-query';
|
|
363
|
+
import { useState } from 'react';
|
|
364
|
+
import { createQueryClient } from './client.js';
|
|
365
|
+
|
|
366
|
+
export function TanstackQueryProvider({ children }: { children: React.ReactNode }) {
|
|
367
|
+
const [queryClient] = useState(() => createQueryClient());
|
|
368
|
+
return <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>;
|
|
369
|
+
}
|
|
370
|
+
`,
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
path: `packages/tanstack-query/src/index.ts`,
|
|
374
|
+
content: `export * from './client.js';
|
|
375
|
+
export * from './provider.js';
|
|
376
|
+
export * from '@tanstack/react-query';
|
|
377
|
+
`,
|
|
378
|
+
},
|
|
379
|
+
];
|
|
380
|
+
}
|
|
381
|
+
function buildDbPackage(workspaceName, orm, db) {
|
|
382
|
+
const clientKey = `${orm}-${db}`;
|
|
383
|
+
return [
|
|
384
|
+
{
|
|
385
|
+
path: `packages/db/package.json`,
|
|
386
|
+
content: JSON.stringify({
|
|
387
|
+
name: `@${workspaceName}/db`,
|
|
388
|
+
version: '0.0.1',
|
|
389
|
+
private: true,
|
|
390
|
+
type: 'module',
|
|
391
|
+
main: './src/index.ts',
|
|
392
|
+
types: './src/index.ts',
|
|
393
|
+
}, null, 2) + '\n',
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
path: `packages/db/src/index.ts`,
|
|
397
|
+
content: `export * from '../clients/${clientKey}/index.js';
|
|
398
|
+
`,
|
|
399
|
+
},
|
|
400
|
+
];
|
|
401
|
+
}
|
|
402
|
+
export { buildSharedIntegrationFiles as buildBackendIntegrationFiles };
|
|
403
|
+
//# sourceMappingURL=backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../../src/scaffold/integrations/backend.ts"],"names":[],"mappings":"AAIA,SAAS,SAAS,CAAC,SAAuB;IACxC,OAAO,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,SAAS,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAA2B;IACrE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC1E,MAAM,IAAI,GAAG,QAAQ,OAAO,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,KAAK,UAAU,CAAC;IAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7G,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY;QAC3D,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;YAC1C,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ;gBAC5C,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,GAAG,KAAK,SAAS,IAAI,EAAE,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;SAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,EAAE,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;QACrD,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,EAAU,EAAE,aAAqB;IACxE,MAAM,SAAS,GAAG,WAAW,EAAE,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,uBAAuB,SAAS,EAAE,CAAC;IAEnD,MAAM,OAAO,GAAG,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1F,MAAM,aAAa,GAAG,EAAE,KAAK,YAAY;QACvC,CAAC,CAAC,kFAAkF;QACpF,CAAC,CAAC,EAAE,KAAK,OAAO;YAChB,CAAC,CAAC,oFAAoF;YACtF,CAAC,CAAC,+FAA+F,CAAC;IAEpG,MAAM,UAAU,GAAG,EAAE,KAAK,YAAY;QACpC,CAAC,CAAC,sHAAsH;QACxH,CAAC,CAAC,EAAE,KAAK,OAAO;YAChB,CAAC,CAAC,iIAAiI;YACnI,CAAC,CAAC,sHAAsH,CAAC;IAE3H,MAAM,MAAM,GAAG,EAAE,KAAK,YAAY;QAChC,CAAC,CAAC,6PAA6P;QAC/P,CAAC,CAAC,EAAE,KAAK,OAAO;YAChB,CAAC,CAAC,sQAAsQ;YACxQ,CAAC,CAAC,mOAAmO,CAAC;IAIxO,MAAM,cAAc,GAAG,EAAE,KAAK,YAAY;QACxC,CAAC,CAAC,oCAAoC;QACtC,CAAC,CAAC,EAAE,KAAK,OAAO;YAChB,CAAC,CAAC,6BAA6B;YAC/B,CAAC,CAAC,qCAAqC,CAAC;IAE1C,MAAM,WAAW,GAAG,EAAE,KAAK,QAAQ;QACjC,CAAC,CAAC,iDAAiD;QACnD,CAAC,CAAC,uDAAuD,CAAC;IAC5D,OAAO;QACL;YACE,IAAI,EAAE,GAAG,OAAO,WAAW;YAC3B,OAAO,EAAE,GAAG,aAAa,+CAA+C,UAAU,oCAAoC;SACvH;QACD;YACE,IAAI,EAAE,GAAG,OAAO,YAAY;YAC5B,OAAO,EAAE,MAAM;SAChB;QACD;YACE,IAAI,EAAE,GAAG,OAAO,aAAa;YAC7B,OAAO,EAAE,4BAA4B,cAAc,2CAA2C,WAAW,2DAA2D;SACrK;QACD;YACE,IAAI,EAAE,GAAG,OAAO,eAAe;YAC/B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,aAAa,OAAO,EAAE,EAAE;gBAClC,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,YAAY;aACpB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;QACD;YACE,IAAI,EAAE,GAAG,IAAI,gBAAgB;YAC7B,OAAO,EAAE,wBAAwB,aAAa,OAAO,EAAE,eAAe;SACvE;QACD;YACE,IAAI,EAAE,GAAG,IAAI,oBAAoB;YACjC,OAAO,EAAE,6FAA6F,OAAO,oDAAoD,EAAE,yGAAyG;SAC7Q;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,EAAU,EAAE,aAAqB;IACvE,MAAM,QAAQ,GAAG,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1F,MAAM,SAAS,GAAG,UAAU,EAAE,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,uBAAuB,SAAS,EAAE,CAAC;IAEnD,OAAO;QACL;YACE,IAAI,EAAE,GAAG,OAAO,gBAAgB;YAChC,OAAO,EAAE,4FAA4F,QAAQ,qLAAqL;SACnS;QACD;YACE,IAAI,EAAE,GAAG,OAAO,WAAW;YAC3B,OAAO,EAAE,sRAAsR;SAChS;QACD;YACE,IAAI,EAAE,GAAG,OAAO,eAAe;YAC/B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,aAAa,OAAO,EAAE,EAAE;gBAClC,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,YAAY;aACpB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;QACD;YACE,IAAI,EAAE,GAAG,IAAI,gBAAgB;YAC7B,OAAO,EAAE,4BAA4B,aAAa,OAAO,EAAE,eAAe;SAC3E;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,aAAqB,EAAE,OAAgB;IAC3E,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,0BAA0B,aAAa,oBAAoB;QAC7D,CAAC,CAAC,gCAAgC,aAAa,oBAAoB,CAAC;IAEtE,OAAO;QACL;YACE,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,aAAa,OAAO;gBAC9B,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,gBAAgB;aACxB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,uPAAuP;SACjQ;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,mLAAmL;SAC7L;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,8DAA8D;SACxE;QACD;YACE,IAAI,EAAE,GAAG,IAAI,kBAAkB;YAC/B,OAAO,EAAE,UAAU;SACpB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO;QACL,IAAI,EAAE,GAAG,IAAI,oBAAoB;QACjC,OAAO,EAAE,+IAA+I;KACzJ,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO;QACL,IAAI,EAAE,GAAG,IAAI,mBAAmB;QAChC,OAAO,EAAE,oIAAoI;KAC9I,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO;QACL,IAAI,EAAE,GAAG,IAAI,oBAAoB;QACjC,OAAO,EAAE,sGAAsG;KAChH,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,aAAqB;IAC/C,OAAO;QACL;YACE,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,uJAAuJ;SACjK;QACD;YACE,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,yIAAyI;SACnJ;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,oPAAoP;SAC9P;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,iGAAiG;SAC3G;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,aAAa,OAAO;gBAC9B,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,gBAAgB;aACxB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,aAAqB;IACnD,OAAO;QACL;YACE,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,wMAAwM;SAClN;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,sCAAsC;SAChD;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,aAAa,OAAO;gBAC9B,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,gBAAgB;aACxB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,QAAgB,EAAE,aAAqB;IACjF,MAAM,OAAO,GAAG,QAAQ,KAAK,QAAQ;QACnC,CAAC,CAAC,kCAAkC,aAAa,oBAAoB;QACrE,CAAC,CAAC,iCAAiC,aAAa,oBAAoB,CAAC;IACvE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,kBAAkB,EAAE,OAAO,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO;QACL,IAAI,EAAE,GAAG,IAAI,uBAAuB;QACpC,OAAO,EAAE,uSAAuS;KACjT,CAAC;AACJ,CAAC;AAGD,SAAS,cAAc,CAAC,aAAqB;IAC3C,OAAO;QACL;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,aAAa,KAAK;gBAC5B,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,gBAAgB;aACxB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE;CACd;SACI;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,aAAqB;IACnD,OAAO;QACL;YACE,IAAI,EAAE,kCAAkC;YACxC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,aAAa,aAAa;gBACpC,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,gBAAgB;aACxB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;QACD;YACE,IAAI,EAAE,kCAAkC;YACxC,OAAO,EAAE;CACd;SACI;KACF,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,aAAqB;IACvD,OAAO;QACL;YACE,IAAI,EAAE,uCAAuC;YAC7C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,aAAa,kBAAkB;gBACzC,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,cAAc;iBAC/B;aACF,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;QACD;YACE,IAAI,EAAE,qCAAqC;YAC3C,OAAO,EAAE;;;;;CAKd;SACI;KACF,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,aAAqB;IACtD,OAAO;QACL;YACE,IAAI,EAAE,sCAAsC;YAC5C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,aAAa,iBAAiB;gBACxC,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,gBAAgB;aACxB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;QACD;YACE,IAAI,EAAE,wCAAwC;YAC9C,OAAO,EAAE;;;;;;;;;;;CAWd;SACI;QACD;YACE,IAAI,EAAE,0CAA0C;YAChD,OAAO,EAAE;;;;;;;;CAQd;SACI;QACD;YACE,IAAI,EAAE,sCAAsC;YAC5C,OAAO,EAAE;;;CAGd;SACI;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,aAAqB,EAAE,GAAW,EAAE,EAAU;IACpE,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC;IACjC,OAAO;QACL;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,aAAa,KAAK;gBAC5B,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,gBAAgB;aACxB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,6BAA6B,SAAS;CACpD;SACI;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,2BAA2B,IAAI,4BAA4B,EAAE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function buildPosthogFiles(opts) {
|
|
2
|
+
const { appName } = opts;
|
|
3
|
+
const base = `apps/${appName}`;
|
|
4
|
+
const provider = {
|
|
5
|
+
path: `${base}/src/analytics/posthog.ts`,
|
|
6
|
+
content: `import posthog from 'posthog-js';
|
|
7
|
+
|
|
8
|
+
export function initPosthog() {
|
|
9
|
+
if (typeof window === 'undefined') return;
|
|
10
|
+
const key = import.meta.env.VITE_POSTHOG_KEY;
|
|
11
|
+
const host = import.meta.env.VITE_POSTHOG_HOST ?? 'https://us.i.posthog.com';
|
|
12
|
+
if (!key) return;
|
|
13
|
+
posthog.init(key, { api_host: host, person_profiles: 'identified_only' });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { posthog };
|
|
17
|
+
`,
|
|
18
|
+
};
|
|
19
|
+
return [provider];
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=posthog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/scaffold/integrations/posthog.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,IAA2B;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,QAAQ,OAAO,EAAE,CAAC;IAE/B,MAAM,QAAQ,GAAiB;QAC7B,IAAI,EAAE,GAAG,IAAI,2BAA2B;QACxC,OAAO,EAAE;;;;;;;;;;;CAWZ;KACE,CAAC;IAEF,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function buildSentryFiles(opts) {
|
|
2
|
+
const { appName } = opts;
|
|
3
|
+
const base = `apps/${appName}`;
|
|
4
|
+
const serverInstrument = {
|
|
5
|
+
path: `${base}/instrument.server.mjs`,
|
|
6
|
+
content: `import * as Sentry from '@sentry/tanstackstart-react';
|
|
7
|
+
|
|
8
|
+
Sentry.init({
|
|
9
|
+
dsn: process.env.SENTRY_DSN,
|
|
10
|
+
tracesSampleRate: 1.0,
|
|
11
|
+
});
|
|
12
|
+
`,
|
|
13
|
+
};
|
|
14
|
+
return [serverInstrument];
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=sentry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../src/scaffold/integrations/sentry.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,IAA2B;IAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,QAAQ,OAAO,EAAE,CAAC;IAE/B,MAAM,gBAAgB,GAAiB;QACrC,IAAI,EAAE,GAAG,IAAI,wBAAwB;QACrC,OAAO,EAAE;;;;;;CAMZ;KACE,CAAC;IAEF,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export function buildStorybookFiles(opts) {
|
|
2
|
+
const { appName, framework } = opts;
|
|
3
|
+
const base = `apps/${appName}`;
|
|
4
|
+
const isTanstack = framework === 'tanstack-start';
|
|
5
|
+
const mainConfig = {
|
|
6
|
+
path: `${base}/.storybook/main.ts`,
|
|
7
|
+
content: `import type { StorybookConfig } from '@storybook/react-vite';
|
|
8
|
+
|
|
9
|
+
const config: StorybookConfig = {
|
|
10
|
+
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
|
|
11
|
+
addons: [
|
|
12
|
+
'@storybook/addon-essentials',
|
|
13
|
+
'@storybook/addon-interactions',
|
|
14
|
+
],
|
|
15
|
+
framework: {
|
|
16
|
+
name: '@storybook/react-vite',
|
|
17
|
+
options: {},
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export default config;
|
|
22
|
+
`,
|
|
23
|
+
};
|
|
24
|
+
const previewConfig = {
|
|
25
|
+
path: `${base}/.storybook/preview.ts`,
|
|
26
|
+
content: `import type { Preview } from '@storybook/react';
|
|
27
|
+
|
|
28
|
+
const preview: Preview = {
|
|
29
|
+
parameters: {
|
|
30
|
+
controls: {
|
|
31
|
+
matchers: {
|
|
32
|
+
color: /(background|color)$/i,
|
|
33
|
+
date: /Date$/i,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default preview;
|
|
40
|
+
`,
|
|
41
|
+
};
|
|
42
|
+
const exampleStory = {
|
|
43
|
+
path: `${base}/src/stories/Button.stories.tsx`,
|
|
44
|
+
content: `import type { Meta, StoryObj } from '@storybook/react';
|
|
45
|
+
|
|
46
|
+
function Button({ label, onClick }: { label: string; onClick?: () => void }) {
|
|
47
|
+
return (
|
|
48
|
+
<button
|
|
49
|
+
onClick={onClick}
|
|
50
|
+
style={{ padding: '0.5rem 1rem', cursor: 'pointer' }}
|
|
51
|
+
>
|
|
52
|
+
{label}
|
|
53
|
+
</button>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const meta: Meta<typeof Button> = {
|
|
58
|
+
title: 'Example/Button',
|
|
59
|
+
component: Button,
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export default meta;
|
|
63
|
+
type Story = StoryObj<typeof Button>;
|
|
64
|
+
|
|
65
|
+
export const Primary: Story = {
|
|
66
|
+
args: { label: 'Button' },
|
|
67
|
+
};
|
|
68
|
+
`,
|
|
69
|
+
};
|
|
70
|
+
const files = [mainConfig, previewConfig, exampleStory];
|
|
71
|
+
if (isTanstack) {
|
|
72
|
+
files.push({
|
|
73
|
+
path: `${base}/.storybook/vitest.setup.ts`,
|
|
74
|
+
content: `import '@testing-library/jest-dom';\n`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return files;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=storybook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../../src/scaffold/integrations/storybook.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,IAA2B;IAC7D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,IAAI,GAAG,QAAQ,OAAO,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,SAAS,KAAK,gBAAgB,CAAC;IAElD,MAAM,UAAU,GAAiB;QAC/B,IAAI,EAAE,GAAG,IAAI,qBAAqB;QAClC,OAAO,EAAE;;;;;;;;;;;;;;;CAeZ;KACE,CAAC;IAEF,MAAM,aAAa,GAAiB;QAClC,IAAI,EAAE,GAAG,IAAI,wBAAwB;QACrC,OAAO,EAAE;;;;;;;;;;;;;;CAcZ;KACE,CAAC;IAEF,MAAM,YAAY,GAAiB;QACjC,IAAI,EAAE,GAAG,IAAI,iCAAiC;QAC9C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBZ;KACE,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IAExD,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG,IAAI,6BAA6B;YAC1C,OAAO,EAAE,uCAAuC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function buildVitestFiles(opts) {
|
|
2
|
+
const { appName, versions } = opts;
|
|
3
|
+
const base = `apps/${appName}`;
|
|
4
|
+
const vitestVersion = versions['vitest'] ?? '4.0.18';
|
|
5
|
+
const config = {
|
|
6
|
+
path: `${base}/vitest.config.ts`,
|
|
7
|
+
content: `import { defineConfig } from 'vitest/config';
|
|
8
|
+
|
|
9
|
+
export default defineConfig({
|
|
10
|
+
test: {
|
|
11
|
+
environment: 'jsdom',
|
|
12
|
+
globals: true,
|
|
13
|
+
setupFiles: ['./src/test/setup.ts'],
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
`,
|
|
17
|
+
};
|
|
18
|
+
const setup = {
|
|
19
|
+
path: `${base}/src/test/setup.ts`,
|
|
20
|
+
content: `import '@testing-library/jest-dom';
|
|
21
|
+
`,
|
|
22
|
+
};
|
|
23
|
+
const exampleTest = {
|
|
24
|
+
path: `${base}/src/test/example.test.ts`,
|
|
25
|
+
content: `import { describe, expect, it } from 'vitest';
|
|
26
|
+
|
|
27
|
+
describe('example', () => {
|
|
28
|
+
it('should pass', () => {
|
|
29
|
+
expect(true).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
`,
|
|
33
|
+
};
|
|
34
|
+
void vitestVersion;
|
|
35
|
+
return [config, setup, exampleTest];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=vitest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.js","sourceRoot":"","sources":["../../../src/scaffold/integrations/vitest.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,IAA2B;IAC1D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,QAAQ,OAAO,EAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IAErD,MAAM,MAAM,GAAiB;QAC3B,IAAI,EAAE,GAAG,IAAI,mBAAmB;QAChC,OAAO,EAAE;;;;;;;;;CASZ;KACE,CAAC;IAEF,MAAM,KAAK,GAAiB;QAC1B,IAAI,EAAE,GAAG,IAAI,oBAAoB;QACjC,OAAO,EAAE;CACZ;KACE,CAAC;IAEF,MAAM,WAAW,GAAiB;QAChC,IAAI,EAAE,GAAG,IAAI,2BAA2B;QACxC,OAAO,EAAE;;;;;;;CAOZ;KACE,CAAC;IAEF,KAAK,aAAa,CAAC;IACnB,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC"}
|