create-orchid-orm 0.2.4 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +15 -15
- package/dist/bin.js.map +1 -1
- package/dist/lib.js +15 -15
- package/dist/lib.js.map +1 -1
- package/dist/lib.mjs +15 -15
- package/dist/lib.mjs.map +1 -1
- package/package.json +1 -14
package/dist/bin.js
CHANGED
|
@@ -330,6 +330,9 @@ node_modules`;
|
|
|
330
330
|
|
|
331
331
|
async function setupBaseTable(config) {
|
|
332
332
|
const filePath = path.join(config.dbDirPath, "baseTable.ts");
|
|
333
|
+
const { timestamp } = config;
|
|
334
|
+
const customTimestamp = timestamp && timestamp !== "string";
|
|
335
|
+
const columnTypesComment = customTimestamp ? "" : "// ";
|
|
333
336
|
let content = `import { createBaseTable } from 'orchid-orm';${config.validation === "zod" ? `
|
|
334
337
|
import { zodSchemaConfig } from 'orchid-orm-schema-to-zod';` : config.validation === "valibot" ? `
|
|
335
338
|
import { valibotSchemaConfig } from 'orchid-orm-valibot';` : ""}
|
|
@@ -341,19 +344,15 @@ export const BaseTable = createBaseTable({
|
|
|
341
344
|
schemaConfig: ${config.validation === "zod" ? "zodSchemaConfig" : "valibotSchemaConfig"},` : ""}
|
|
342
345
|
|
|
343
346
|
// Customize column types for all tables.
|
|
344
|
-
columnTypes: (t) => ({
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
// it is only checked when validating with ${config.validation} schemas derived from the table.
|
|
348
|
-
text: (min = 0, max = Infinity) => t.text(min, max),`}`;
|
|
349
|
-
const { timestamp } = config;
|
|
350
|
-
if (timestamp && timestamp !== "string") {
|
|
347
|
+
${columnTypesComment}columnTypes: (t) => ({
|
|
348
|
+
${columnTypesComment} ...t,`;
|
|
349
|
+
if (customTimestamp) {
|
|
351
350
|
content += `
|
|
352
351
|
// Parse timestamps to ${timestamp === "number" ? "number" : "Date object"}.
|
|
353
352
|
timestamp: (precision?: number) => t.timestamp(precision).${timestamp === "date" ? "asDate" : "asNumber"}(),`;
|
|
354
353
|
}
|
|
355
354
|
content += `
|
|
356
|
-
}),
|
|
355
|
+
${columnTypesComment}}),
|
|
357
356
|
});
|
|
358
357
|
|
|
359
358
|
export const { sql } = BaseTable;
|
|
@@ -366,6 +365,7 @@ async function setupDemoTables(config) {
|
|
|
366
365
|
return;
|
|
367
366
|
const tablesDir = path.join(config.dbDirPath, "tables");
|
|
368
367
|
await fs.mkdir(tablesDir, { recursive: true });
|
|
368
|
+
const hasValidation = config.validation !== "no";
|
|
369
369
|
await fs.writeFile(
|
|
370
370
|
path.join(tablesDir, "post.table.ts"),
|
|
371
371
|
`import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';
|
|
@@ -385,15 +385,15 @@ export class PostTable extends BaseTable {
|
|
|
385
385
|
readonly table = 'post';
|
|
386
386
|
columns = this.setColumns((t) => ({
|
|
387
387
|
id: t.identity().primaryKey(),
|
|
388
|
-
title: t.text(3
|
|
389
|
-
text: t.text(20
|
|
388
|
+
title: t.text()${hasValidation ? ".min(3).max(100)" : ""}.unique(),
|
|
389
|
+
text: t.text()${hasValidation ? ".min(20).max(10000)" : ""},
|
|
390
390
|
...t.timestamps(),
|
|
391
391
|
}));
|
|
392
392
|
|
|
393
393
|
relations = {
|
|
394
394
|
comments: this.hasMany(() => CommentTable, {
|
|
395
|
-
|
|
396
|
-
|
|
395
|
+
columns: ['id'],
|
|
396
|
+
references: ['postId'],
|
|
397
397
|
}),
|
|
398
398
|
};
|
|
399
399
|
}
|
|
@@ -422,14 +422,14 @@ export class CommentTable extends BaseTable {
|
|
|
422
422
|
.integer()
|
|
423
423
|
.foreignKey(() => PostTable, 'id')
|
|
424
424
|
.index(),
|
|
425
|
-
text: t.text(5
|
|
425
|
+
text: t.text()${hasValidation ? ".min(5).max(1000)" : ""},
|
|
426
426
|
...t.timestamps(),
|
|
427
427
|
}));
|
|
428
428
|
|
|
429
429
|
relations = {
|
|
430
430
|
post: this.belongsTo(() => PostTable, {
|
|
431
|
-
|
|
432
|
-
|
|
431
|
+
columns: ['postId'],
|
|
432
|
+
references: ['id'],
|
|
433
433
|
}),
|
|
434
434
|
};
|
|
435
435
|
}
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sources":["../src/lib/utils.ts","../src/lib/getConfig.ts","../src/lib/init/setupPackageJSON.ts","../src/lib/init/setupTSConfig.ts","../src/lib/init/setupEnv.ts","../src/lib/init/setupGitIgnore.ts","../src/lib/init/setupBaseTable.ts","../src/lib/init/setupDemoTables.ts","../src/lib/init/setupConfig.ts","../src/lib/init/setupMainDb.ts","../src/lib/init/setupMigrationScript.ts","../src/lib/init/createDemoMigrations.ts","../src/lib/init/createDemoSeed.ts","../src/lib/init/setupRunner.ts","../src/lib/init.ts","../src/lib/greetAfterInstall.ts","../src/bin.ts"],"sourcesContent":["import fs from 'fs/promises';\nimport { basename } from 'path';\nimport https from 'https';\n\nexport async function readFileSafe(path: string) {\n try {\n return await fs.readFile(path, 'utf-8');\n } catch (err) {\n if ((err as unknown as { code: string }).code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n}\n\nexport type DependencyKind = 'dependencies' | 'devDependencies';\nexport function getLatestPackageVersion(\n name: string,\n kind: DependencyKind,\n): Promise<[string, { version: string; kind: DependencyKind }]> {\n return new Promise((resolve, reject) => {\n https\n .get(`https://registry.npmjs.org/${name}/latest`, (res) => {\n let data = '';\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () =>\n resolve([name, { version: `^${JSON.parse(data).version}`, kind }]),\n );\n })\n .on('error', reject);\n });\n}\n\nexport function getPackageManagerName(): 'npm' | 'yarn' | 'pnpm' | 'bun' {\n const { npm_execpath } = process.env;\n if (npm_execpath) {\n const name = basename(npm_execpath);\n if (/npm/.test(name)) {\n return 'npm';\n }\n if (/yarn/.test(name)) {\n return 'yarn';\n }\n if (/bun/.test(name)) {\n return 'bun';\n }\n }\n\n return 'pnpm';\n}\n","import prompts from 'prompts';\nimport { join, resolve, basename } from 'path';\nimport { InitConfig, UserProvidedConfig } from '../lib';\nimport { getPackageManagerName, readFileSafe } from './utils';\n\nexport async function getConfig(\n logger: { log(message: string): void } = console,\n): Promise<InitConfig | undefined> {\n let cancelled = false;\n\n logger.log('Welcome to Orchid ORM installer!');\n\n const isBun = getPackageManagerName() === 'bun';\n\n const response = await prompts<keyof UserProvidedConfig>(\n [\n {\n type: 'text',\n name: 'path',\n message: 'Where to install Orchid ORM?',\n initial: process.cwd(),\n },\n ...(isBun\n ? []\n : [\n {\n type: 'select' as const,\n name: 'runner' as const,\n message: 'Choose a tool for executing TS files',\n choices: [\n {\n title: 'tsx',\n value: 'tsx',\n },\n {\n title: 'vite-node',\n value: 'vite-node',\n },\n {\n title: 'ts-node',\n value: 'ts-node',\n },\n ],\n },\n ]),\n {\n type: 'select',\n name: 'timestamp',\n message: 'Return timestamps as:',\n choices: [\n {\n title: 'string (as returned from db)',\n value: 'string',\n },\n {\n title: 'number (epoch)',\n value: 'number',\n },\n {\n title: 'Date object',\n value: 'date',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'testDatabase',\n message: 'Add a separate database for tests?',\n },\n {\n type: 'select',\n name: 'validation',\n message: 'Integrate with a validation library?',\n choices: [\n {\n title: 'no',\n value: 'no',\n },\n {\n title: 'zod',\n value: 'zod',\n },\n {\n title: 'valibot',\n value: 'valibot',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'addTestFactory',\n message: 'Add record factories for writing tests?',\n },\n {\n type: 'confirm',\n name: 'demoTables',\n message: 'Add demo tables?',\n },\n ],\n {\n onCancel() {\n cancelled = true;\n },\n },\n );\n\n if (isBun) response.runner = 'bun';\n\n if (cancelled) return;\n\n const path = resolve(response.path);\n const tsConfigPath = join(path, 'tsconfig.json');\n const hasTsConfig = await readFileSafe(tsConfigPath);\n const dbDirPath = join(path, 'src', 'db');\n\n return {\n ...response,\n hasTsConfig: !!hasTsConfig,\n path: resolve(response.path),\n dbDirPath,\n projectName: basename(path),\n esm: response.runner !== 'ts-node',\n };\n}\n","import { InitConfig } from '../../lib';\nimport {\n DependencyKind,\n getLatestPackageVersion,\n readFileSafe,\n} from '../utils';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupPackageJSON(config: InitConfig): Promise<void> {\n const pairs = await Promise.all([\n getLatestPackageVersion('dotenv', 'dependencies'),\n getLatestPackageVersion('orchid-orm', 'dependencies'),\n config.validation === 'zod'\n ? getLatestPackageVersion('orchid-orm-schema-to-zod', 'dependencies')\n : config.validation === 'valibot'\n ? getLatestPackageVersion('orchid-orm-valibot', 'dependencies')\n : undefined,\n config.validation === 'valibot' &&\n getLatestPackageVersion('valibot', 'dependencies'),\n config.addTestFactory &&\n getLatestPackageVersion('orchid-orm-test-factory', 'devDependencies'),\n getLatestPackageVersion('@types/node', 'devDependencies'),\n getLatestPackageVersion('typescript', 'devDependencies'),\n config.runner === 'vite-node' &&\n getLatestPackageVersion('vite', 'devDependencies'),\n config.runner !== 'bun' &&\n (config.runner === 'tsx'\n ? ([\n 'tsx',\n {\n // 4.9.1 is broken in tsx: https://github.com/privatenumber/tsx/issues/543\n version: '4.9.0',\n kind: 'devDependencies',\n },\n ] as [string, { version: string; kind: DependencyKind }])\n : getLatestPackageVersion(config.runner, 'devDependencies')),\n config.runner === 'vite-node' &&\n getLatestPackageVersion(\n 'rollup-plugin-node-externals',\n 'devDependencies',\n ),\n config.runner === 'tsx' &&\n getLatestPackageVersion('esbuild', 'devDependencies'),\n config.runner === 'tsx' &&\n getLatestPackageVersion('rimraf', 'devDependencies'),\n ]);\n\n const deps: Record<string, string> = {};\n const devDeps: Record<string, string> = {};\n for (const item of pairs) {\n if (!item) continue;\n const [key, { version, kind }] = item;\n (kind === 'dependencies' ? deps : devDeps)[key] = version;\n }\n\n const packageJsonPath = join(config.path, 'package.json');\n const content = await readFileSafe(packageJsonPath);\n let json = content\n ? JSON.parse(content)\n : {\n name: config.projectName,\n };\n\n if (config.esm) json = { name: json.name, type: 'module', ...json };\n\n const scripts = (json.scripts ??= {});\n\n if (config.runner === 'vite-node') {\n scripts.db = 'vite-node src/db/dbScript.ts --';\n scripts['build:migrations'] = 'vite build --config vite.migrations.mts';\n scripts['db:compiled'] = 'node dist/db/dbScript.mjs';\n } else if (config.runner === 'tsx') {\n scripts.db = 'NODE_ENV=development tsx src/db/dbScript.ts';\n scripts['build:migrations'] =\n 'rimraf dist/db && node esbuild.migrations.mjs';\n scripts['db:compiled'] = 'NODE_ENV=production node dist/db/dbScript.mjs';\n } else {\n scripts.db = `${config.runner} src/db/dbScript.ts`;\n\n if (config.runner === 'ts-node') {\n scripts.build = 'tsc';\n scripts['db:compiled'] = 'node dist/dbScript.js';\n }\n }\n\n if (!json.dependencies) json.dependencies = {};\n\n for (const key in deps) {\n json.dependencies[key] = deps[key];\n }\n\n if (!json.devDependencies) json.devDependencies = {};\n for (const key in devDeps) {\n json.devDependencies[key] = devDeps[key];\n }\n\n await fs.writeFile(packageJsonPath, JSON.stringify(json, null, ' ') + '\\n');\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupTSConfig(config: InitConfig): Promise<void> {\n if (config.hasTsConfig) return;\n\n const module = config.runner === 'ts-node' ? 'commonjs' : 'esnext';\n const moduleResolution =\n config.runner === 'ts-node'\n ? ''\n : `\n \"moduleResolution\": \"bundler\",`;\n\n const types = config.runner === 'vite-node' ? `[\"vite/client\"]` : undefined;\n\n const tsConfigPath = join(config.path, 'tsconfig.json');\n await fs.writeFile(\n tsConfigPath,\n `{\n \"compilerOptions\": {${\n config.runner === 'ts-node'\n ? `\n \"outDir\": \"dist\",`\n : ''\n }\n \"target\": \"es2017\",\n \"module\": \"${module}\",${moduleResolution}\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true${\n types\n ? `,\n \"types\": ${types}`\n : ''\n }\n }\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupEnv(config: InitConfig): Promise<void> {\n const envPath = join(config.path, '.env');\n let content = ((await readFileSafe(envPath)) || '').trim();\n let changed = false;\n\n // by default, on Mac it is a username, on Linux it's postgres, on Windows it's postgres as well\n const user = process.platform === 'darwin' ? process.env.USER : 'postgres';\n\n // TODO: guess user and pw\n if (!content.match(/^DATABASE_URL=/m)) {\n content += `\\nDATABASE_URL=postgres://${user}:@localhost:5432/dbname?ssl=false`;\n changed = true;\n }\n\n if (config.testDatabase && !content.match(/^DATABASE_TEST_URL=/m)) {\n content += `\\nDATABASE_TEST_URL=postgres://${user}:@localhost:5432/dbname-test?ssl=false`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(envPath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupGitIgnore(config: InitConfig): Promise<void> {\n const gitignorePath = join(config.path, '.gitignore');\n let content = ((await readFileSafe(gitignorePath)) || '').trim();\n let changed = false;\n\n if (!content.match(/^node_modules\\b/m)) {\n content += `\\nnode_modules`;\n changed = true;\n }\n\n if (!content.match(/^.env\\b/m)) {\n content += `\\n.env.?*\\n!.env.example`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(gitignorePath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupBaseTable(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'baseTable.ts');\n\n let content = `import { createBaseTable } from 'orchid-orm';${\n config.validation === 'zod'\n ? `\\nimport { zodSchemaConfig } from 'orchid-orm-schema-to-zod';`\n : config.validation === 'valibot'\n ? `\\nimport { valibotSchemaConfig } from 'orchid-orm-valibot';`\n : ''\n }\n\nexport const BaseTable = createBaseTable({\n // Set \\`snakeCase\\` to \\`true\\` if columns in your database are in snake_case.\n // snakeCase: true,${\n config.validation !== 'no'\n ? `\n\n schemaConfig: ${\n config.validation === 'zod' ? 'zodSchemaConfig' : 'valibotSchemaConfig'\n },`\n : ''\n }\n\n // Customize column types for all tables.\n columnTypes: (t) => ({\n ...t,${\n config.validation === 'no'\n ? ''\n : `\n // Set min and max validations for all text columns,\n // it is only checked when validating with ${config.validation} schemas derived from the table.\n text: (min = 0, max = Infinity) => t.text(min, max),`\n }`;\n\n const { timestamp } = config;\n if (timestamp && timestamp !== 'string') {\n content += `\n // Parse timestamps to ${timestamp === 'number' ? 'number' : 'Date object'}.\n timestamp: (precision?: number) => t.timestamp(precision).${\n timestamp === 'date' ? 'asDate' : 'asNumber'\n }(),`;\n }\n\n content += `\n }),\n});\n\nexport const { sql } = BaseTable;\n`;\n\n await fs.writeFile(filePath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupDemoTables(config: InitConfig): Promise<void> {\n if (!config.demoTables) return;\n\n const tablesDir = join(config.dbDirPath, 'tables');\n await fs.mkdir(tablesDir, { recursive: true });\n\n await fs.writeFile(\n join(tablesDir, 'post.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { CommentTable } from './comment.table';\n\n// Post type returned from database.\nexport type Post = Selectable<PostTable>;\n// Post type for insertion.\nexport type PostNew = Insertable<PostTable>;\n// Post type for updates.\nexport type PostUpdate = Updatable<PostTable>;\n// Post type used by query methods such as \\`where\\`.\nexport type PostForQuery = Queryable<PostTable>;\n\nexport class PostTable extends BaseTable {\n readonly table = 'post';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n title: t.text(3, 100).unique(),\n text: t.text(20, 10000),\n ...t.timestamps(),\n }));\n\n relations = {\n comments: this.hasMany(() => CommentTable, {\n primaryKey: 'id',\n foreignKey: 'postId',\n }),\n };\n}\n`,\n );\n\n await fs.writeFile(\n join(tablesDir, 'comment.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { PostTable } from './post.table';\n\n// Comment type returned from database.\nexport type Comment = Selectable<CommentTable>;\n// Comment type for insertion.\nexport type CommentNew = Insertable<CommentTable>;\n// Comment type for updates.\nexport type CommentUpdate = Updatable<CommentTable>;\n// Comment type used by query methods such as \\`where\\`.\nexport type CommentForQuery = Queryable<CommentTable>;\n\nexport class CommentTable extends BaseTable {\n readonly table = 'comment';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n postId: t\n .integer()\n .foreignKey(() => PostTable, 'id')\n .index(),\n text: t.text(5, 1000),\n ...t.timestamps(),\n }));\n\n relations = {\n post: this.belongsTo(() => PostTable, {\n primaryKey: 'id',\n foreignKey: 'postId',\n }),\n };\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupConfig(config: InitConfig): Promise<void> {\n const configPath = join(config.dbDirPath, 'config.ts');\n\n let content = `import 'dotenv/config';\n\nconst database = {\n databaseURL: process.env.DATABASE_URL,\n};\nif (!database.databaseURL) throw new Error('DATABASE_URL is missing in .env');`;\n\n if (config.testDatabase) {\n content += `\n\nconst testDatabase = {\n databaseURL: process.env.DATABASE_TEST_URL,\n};\n\nconst allDatabases = [database];\n\nif (testDatabase.databaseURL) {\n allDatabases.push(testDatabase);\n}`;\n }\n\n content += `\n\nexport const config = {`;\n\n if (config.testDatabase) {\n content += `\n allDatabases,`;\n }\n\n if (config.testDatabase) {\n content += `\n database: process.env.NODE_ENV === 'test' ? testDatabase : database,`;\n } else {\n content += `\n database,`;\n }\n content += `\n};\n`;\n\n await fs.writeFile(configPath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMainDb(config: InitConfig): Promise<void> {\n let imports = '';\n let tables = '';\n if (config.demoTables) {\n imports += `\nimport { PostTable } from './tables/post.table';\nimport { CommentTable } from './tables/comment.table';`;\n tables += `\n post: PostTable,\n comment: CommentTable,`;\n }\n\n const dbPath = join(config.dbDirPath, 'db.ts');\n await fs.writeFile(\n dbPath,\n `import { orchidORM } from 'orchid-orm';\nimport { config } from './config';${imports}\n\nexport const db = orchidORM(config.database, {${tables}\n});\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMigrationScript(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'dbScript.ts');\n\n const migrations =\n config.runner === 'vite-node'\n ? \"migrations: import.meta.glob('./migrations/*.ts')\"\n : \"migrationsPath: './migrations'\";\n\n await fs.writeFile(\n filePath,\n `import { rakeDb } from 'orchid-orm/migrations';\nimport { config } from './config';\nimport { BaseTable } from './baseTable';\n\nexport const change = rakeDb(${\n config.testDatabase ? 'config.allDatabases' : 'config.database'\n }, {\n baseTable: BaseTable,\n dbPath: './db',\n ${migrations},\n commands: {\n async seed() {\n const { seed } = await import('./seed');\n await seed();\n },\n },\n import: (path) => import(path),\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoMigrations(config: InitConfig): Promise<void> {\n const migrationsPath = join(config.dbDirPath, 'migrations');\n await fs.mkdir(migrationsPath, { recursive: true });\n\n if (!config.demoTables) return;\n\n const now = new Date();\n\n const postPath = join(migrationsPath, `0001_createPost.ts`);\n await fs.writeFile(\n postPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('post', (t) => ({\n id: t.identity().primaryKey(),\n title: t.text().unique(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n\n now.setTime(now.getTime() + 1000);\n\n const commentPath = join(migrationsPath, `0002_createComment.ts`);\n await fs.writeFile(\n commentPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('comment', (t) => ({\n id: t.identity().primaryKey(),\n postId: t.integer().foreignKey('post', 'id').index(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoSeed(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'seed.ts');\n\n let content;\n if (config.demoTables) {\n content = `await db.post.findBy({ title: 'Sample post' }).orCreate({\n title: 'Post',\n text: 'This is a text for a sample post. It contains words, spaces, and punctuation.',\n comments: {\n create: [\n {\n text: 'Nice post!',\n },\n {\n text: \\`Too long, didn't read\\`,\n },\n ],\n },\n });`;\n } else {\n content = `// create records here`;\n }\n\n await fs.writeFile(\n filePath,\n `import { db } from './db';\n\nexport const seed = async () => {\n ${content}\n\n await db.$close();\n};\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport fs from 'fs/promises';\nimport { join } from 'path';\n\nexport async function setupRunner(config: InitConfig): Promise<void> {\n if (config.runner === 'vite-node') {\n await fs.writeFile(\n join(config.path, 'vite.migrations.mts'),\n `import { resolve } from \"path\";\nimport { defineConfig, PluginOption } from \"vite\";\nimport { nodeExternals } from \"rollup-plugin-node-externals\";\n\nexport default defineConfig({\n plugins: [\n {\n ...nodeExternals(),\n name: \"node-externals\",\n enforce: \"pre\",\n apply: \"build\",\n } as PluginOption\n ],\n build: {\n outDir: resolve(__dirname, \"dist\", \"db\"),\n lib: {\n entry: resolve(__dirname, \"src/db/dbScript.ts\"),\n formats: [\"es\"],\n fileName: \"dbScript\",\n },\n rollupOptions: {\n external: [\"orchid-orm\"],\n output: {\n entryFileNames: \"[name].mjs\",\n chunkFileNames: \"[name].[hash].mjs\",\n },\n },\n },\n})\n`,\n );\n } else if (config.runner === 'tsx') {\n await fs.writeFile(\n join(config.path, 'esbuild.migrations.mjs'),\n `import { build } from \"esbuild\";\n\nawait Promise.all([\n build({\n entryPoints: [\"src/db/dbScript.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db\",\n outExtension: { '.js': '.mjs' },\n banner: {\n js: \\`\n import __path from 'node:path';\n import { fileURLToPath as __fileURLToPath } from 'node:url';\n import { createRequire as __createRequire } from 'module';\n const require = __createRequire(import.meta.url);\n const __filename = __fileURLToPath(import.meta.url);\n const __dirname = __path.dirname(__filename);\n \\`,\n },\n }),\n build({\n entryPoints: [\"src/db/migrations/*.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db/migrations\",\n outExtension: { '.js': '.mjs' },\n external: ['../dbScript'],\n plugins: [{\n name: 'add-js-suffix',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.importer) {\n return { path: args.path + '.mjs', external: true }\n }\n })\n },\n }],\n }),\n]);\n`,\n );\n }\n}\n","import { InitConfig } from '../lib';\nimport fs from 'fs/promises';\nimport { setupPackageJSON } from './init/setupPackageJSON';\nimport { setupTSConfig } from './init/setupTSConfig';\nimport { setupEnv } from './init/setupEnv';\nimport { setupGitIgnore } from './init/setupGitIgnore';\nimport { setupBaseTable } from './init/setupBaseTable';\nimport { setupDemoTables } from './init/setupDemoTables';\nimport { setupConfig } from './init/setupConfig';\nimport { setupMainDb } from './init/setupMainDb';\nimport { setupMigrationScript } from './init/setupMigrationScript';\nimport { createDemoMigrations } from './init/createDemoMigrations';\nimport { createDemoSeed } from './init/createDemoSeed';\nimport { setupRunner } from './init/setupRunner';\n\nexport async function init(config: InitConfig): Promise<void> {\n await fs.mkdir(config.dbDirPath, { recursive: true });\n\n for (const key in initSteps) {\n await initSteps[key as keyof typeof initSteps](config);\n }\n}\n\nexport const initSteps = {\n setupPackageJSON,\n setupTSConfig,\n setupEnv,\n setupGitIgnore,\n setupBaseTable,\n setupDemoTables,\n setupConfig,\n setupMainDb,\n setupMigrationScript,\n createDemoMigrations,\n createDemoSeed,\n setupRunner,\n};\n","import { relative } from 'path';\nimport { InitConfig } from '../lib';\nimport { getPackageManagerName } from './utils';\n\nexport function greetAfterInstall(\n config: InitConfig,\n logger: { log(message: string): void } = console,\n) {\n const relativePath = relative(process.cwd(), config.path);\n const manager = getPackageManagerName();\n const run = manager === 'npm' ? `npm run` : manager;\n\n logger.log(`\nThank you for trying Orchid ORM!\n \nTo finish setup,${\n relativePath ? ` cd to the project and` : ''\n } install dependencies:\n${\n relativePath\n ? `\n> cd ${relativePath}`\n : ''\n}\n> ${manager} i\n\nEnter the correct database credentials to the .env file,\nthen create the database:\n\n> ${run} db create\n\nAnd run the migrations:\n\n> ${run} db migrate\n`);\n}\n","#!/usr/bin/env node\n\nimport { getConfig, init, greetAfterInstall } from './lib';\n\ngetConfig().then(\n (config) => config && init(config).then(() => greetAfterInstall(config)),\n);\n"],"names":["basename","path","resolve","join","relative"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bin.js","sources":["../src/lib/utils.ts","../src/lib/getConfig.ts","../src/lib/init/setupPackageJSON.ts","../src/lib/init/setupTSConfig.ts","../src/lib/init/setupEnv.ts","../src/lib/init/setupGitIgnore.ts","../src/lib/init/setupBaseTable.ts","../src/lib/init/setupDemoTables.ts","../src/lib/init/setupConfig.ts","../src/lib/init/setupMainDb.ts","../src/lib/init/setupMigrationScript.ts","../src/lib/init/createDemoMigrations.ts","../src/lib/init/createDemoSeed.ts","../src/lib/init/setupRunner.ts","../src/lib/init.ts","../src/lib/greetAfterInstall.ts","../src/bin.ts"],"sourcesContent":["import fs from 'fs/promises';\nimport { basename } from 'path';\nimport https from 'https';\n\nexport async function readFileSafe(path: string) {\n try {\n return await fs.readFile(path, 'utf-8');\n } catch (err) {\n if ((err as unknown as { code: string }).code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n}\n\nexport type DependencyKind = 'dependencies' | 'devDependencies';\nexport function getLatestPackageVersion(\n name: string,\n kind: DependencyKind,\n): Promise<[string, { version: string; kind: DependencyKind }]> {\n return new Promise((resolve, reject) => {\n https\n .get(`https://registry.npmjs.org/${name}/latest`, (res) => {\n let data = '';\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () =>\n resolve([name, { version: `^${JSON.parse(data).version}`, kind }]),\n );\n })\n .on('error', reject);\n });\n}\n\nexport function getPackageManagerName(): 'npm' | 'yarn' | 'pnpm' | 'bun' {\n const { npm_execpath } = process.env;\n if (npm_execpath) {\n const name = basename(npm_execpath);\n if (/npm/.test(name)) {\n return 'npm';\n }\n if (/yarn/.test(name)) {\n return 'yarn';\n }\n if (/bun/.test(name)) {\n return 'bun';\n }\n }\n\n return 'pnpm';\n}\n","import prompts from 'prompts';\nimport { join, resolve, basename } from 'path';\nimport { InitConfig, UserProvidedConfig } from '../lib';\nimport { getPackageManagerName, readFileSafe } from './utils';\n\nexport async function getConfig(\n logger: { log(message: string): void } = console,\n): Promise<InitConfig | undefined> {\n let cancelled = false;\n\n logger.log('Welcome to Orchid ORM installer!');\n\n const isBun = getPackageManagerName() === 'bun';\n\n const response = await prompts<keyof UserProvidedConfig>(\n [\n {\n type: 'text',\n name: 'path',\n message: 'Where to install Orchid ORM?',\n initial: process.cwd(),\n },\n ...(isBun\n ? []\n : [\n {\n type: 'select' as const,\n name: 'runner' as const,\n message: 'Choose a tool for executing TS files',\n choices: [\n {\n title: 'tsx',\n value: 'tsx',\n },\n {\n title: 'vite-node',\n value: 'vite-node',\n },\n {\n title: 'ts-node',\n value: 'ts-node',\n },\n ],\n },\n ]),\n {\n type: 'select',\n name: 'timestamp',\n message: 'Return timestamps as:',\n choices: [\n {\n title: 'string (as returned from db)',\n value: 'string',\n },\n {\n title: 'number (epoch)',\n value: 'number',\n },\n {\n title: 'Date object',\n value: 'date',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'testDatabase',\n message: 'Add a separate database for tests?',\n },\n {\n type: 'select',\n name: 'validation',\n message: 'Integrate with a validation library?',\n choices: [\n {\n title: 'no',\n value: 'no',\n },\n {\n title: 'zod',\n value: 'zod',\n },\n {\n title: 'valibot',\n value: 'valibot',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'addTestFactory',\n message: 'Add record factories for writing tests?',\n },\n {\n type: 'confirm',\n name: 'demoTables',\n message: 'Add demo tables?',\n },\n ],\n {\n onCancel() {\n cancelled = true;\n },\n },\n );\n\n if (isBun) response.runner = 'bun';\n\n if (cancelled) return;\n\n const path = resolve(response.path);\n const tsConfigPath = join(path, 'tsconfig.json');\n const hasTsConfig = await readFileSafe(tsConfigPath);\n const dbDirPath = join(path, 'src', 'db');\n\n return {\n ...response,\n hasTsConfig: !!hasTsConfig,\n path: resolve(response.path),\n dbDirPath,\n projectName: basename(path),\n esm: response.runner !== 'ts-node',\n };\n}\n","import { InitConfig } from '../../lib';\nimport {\n DependencyKind,\n getLatestPackageVersion,\n readFileSafe,\n} from '../utils';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupPackageJSON(config: InitConfig): Promise<void> {\n const pairs = await Promise.all([\n getLatestPackageVersion('dotenv', 'dependencies'),\n getLatestPackageVersion('orchid-orm', 'dependencies'),\n config.validation === 'zod'\n ? getLatestPackageVersion('orchid-orm-schema-to-zod', 'dependencies')\n : config.validation === 'valibot'\n ? getLatestPackageVersion('orchid-orm-valibot', 'dependencies')\n : undefined,\n config.validation === 'valibot' &&\n getLatestPackageVersion('valibot', 'dependencies'),\n config.addTestFactory &&\n getLatestPackageVersion('orchid-orm-test-factory', 'devDependencies'),\n getLatestPackageVersion('@types/node', 'devDependencies'),\n getLatestPackageVersion('typescript', 'devDependencies'),\n config.runner === 'vite-node' &&\n getLatestPackageVersion('vite', 'devDependencies'),\n config.runner !== 'bun' &&\n (config.runner === 'tsx'\n ? ([\n 'tsx',\n {\n // 4.9.1 is broken in tsx: https://github.com/privatenumber/tsx/issues/543\n version: '4.9.0',\n kind: 'devDependencies',\n },\n ] as [string, { version: string; kind: DependencyKind }])\n : getLatestPackageVersion(config.runner, 'devDependencies')),\n config.runner === 'vite-node' &&\n getLatestPackageVersion(\n 'rollup-plugin-node-externals',\n 'devDependencies',\n ),\n config.runner === 'tsx' &&\n getLatestPackageVersion('esbuild', 'devDependencies'),\n config.runner === 'tsx' &&\n getLatestPackageVersion('rimraf', 'devDependencies'),\n ]);\n\n const deps: Record<string, string> = {};\n const devDeps: Record<string, string> = {};\n for (const item of pairs) {\n if (!item) continue;\n const [key, { version, kind }] = item;\n (kind === 'dependencies' ? deps : devDeps)[key] = version;\n }\n\n const packageJsonPath = join(config.path, 'package.json');\n const content = await readFileSafe(packageJsonPath);\n let json = content\n ? JSON.parse(content)\n : {\n name: config.projectName,\n };\n\n if (config.esm) json = { name: json.name, type: 'module', ...json };\n\n const scripts = (json.scripts ??= {});\n\n if (config.runner === 'vite-node') {\n scripts.db = 'vite-node src/db/dbScript.ts --';\n scripts['build:migrations'] = 'vite build --config vite.migrations.mts';\n scripts['db:compiled'] = 'node dist/db/dbScript.mjs';\n } else if (config.runner === 'tsx') {\n scripts.db = 'NODE_ENV=development tsx src/db/dbScript.ts';\n scripts['build:migrations'] =\n 'rimraf dist/db && node esbuild.migrations.mjs';\n scripts['db:compiled'] = 'NODE_ENV=production node dist/db/dbScript.mjs';\n } else {\n scripts.db = `${config.runner} src/db/dbScript.ts`;\n\n if (config.runner === 'ts-node') {\n scripts.build = 'tsc';\n scripts['db:compiled'] = 'node dist/dbScript.js';\n }\n }\n\n if (!json.dependencies) json.dependencies = {};\n\n for (const key in deps) {\n json.dependencies[key] = deps[key];\n }\n\n if (!json.devDependencies) json.devDependencies = {};\n for (const key in devDeps) {\n json.devDependencies[key] = devDeps[key];\n }\n\n await fs.writeFile(packageJsonPath, JSON.stringify(json, null, ' ') + '\\n');\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupTSConfig(config: InitConfig): Promise<void> {\n if (config.hasTsConfig) return;\n\n const module = config.runner === 'ts-node' ? 'commonjs' : 'esnext';\n const moduleResolution =\n config.runner === 'ts-node'\n ? ''\n : `\n \"moduleResolution\": \"bundler\",`;\n\n const types = config.runner === 'vite-node' ? `[\"vite/client\"]` : undefined;\n\n const tsConfigPath = join(config.path, 'tsconfig.json');\n await fs.writeFile(\n tsConfigPath,\n `{\n \"compilerOptions\": {${\n config.runner === 'ts-node'\n ? `\n \"outDir\": \"dist\",`\n : ''\n }\n \"target\": \"es2017\",\n \"module\": \"${module}\",${moduleResolution}\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true${\n types\n ? `,\n \"types\": ${types}`\n : ''\n }\n }\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupEnv(config: InitConfig): Promise<void> {\n const envPath = join(config.path, '.env');\n let content = ((await readFileSafe(envPath)) || '').trim();\n let changed = false;\n\n // by default, on Mac it is a username, on Linux it's postgres, on Windows it's postgres as well\n const user = process.platform === 'darwin' ? process.env.USER : 'postgres';\n\n // TODO: guess user and pw\n if (!content.match(/^DATABASE_URL=/m)) {\n content += `\\nDATABASE_URL=postgres://${user}:@localhost:5432/dbname?ssl=false`;\n changed = true;\n }\n\n if (config.testDatabase && !content.match(/^DATABASE_TEST_URL=/m)) {\n content += `\\nDATABASE_TEST_URL=postgres://${user}:@localhost:5432/dbname-test?ssl=false`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(envPath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupGitIgnore(config: InitConfig): Promise<void> {\n const gitignorePath = join(config.path, '.gitignore');\n let content = ((await readFileSafe(gitignorePath)) || '').trim();\n let changed = false;\n\n if (!content.match(/^node_modules\\b/m)) {\n content += `\\nnode_modules`;\n changed = true;\n }\n\n if (!content.match(/^.env\\b/m)) {\n content += `\\n.env.?*\\n!.env.example`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(gitignorePath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupBaseTable(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'baseTable.ts');\n\n const { timestamp } = config;\n const customTimestamp = timestamp && timestamp !== 'string';\n const columnTypesComment = customTimestamp ? '' : '// ';\n\n let content = `import { createBaseTable } from 'orchid-orm';${\n config.validation === 'zod'\n ? `\\nimport { zodSchemaConfig } from 'orchid-orm-schema-to-zod';`\n : config.validation === 'valibot'\n ? `\\nimport { valibotSchemaConfig } from 'orchid-orm-valibot';`\n : ''\n }\n\nexport const BaseTable = createBaseTable({\n // Set \\`snakeCase\\` to \\`true\\` if columns in your database are in snake_case.\n // snakeCase: true,${\n config.validation !== 'no'\n ? `\n\n schemaConfig: ${\n config.validation === 'zod' ? 'zodSchemaConfig' : 'valibotSchemaConfig'\n },`\n : ''\n }\n\n // Customize column types for all tables.\n ${columnTypesComment}columnTypes: (t) => ({\n ${columnTypesComment} ...t,`;\n\n if (customTimestamp) {\n content += `\n // Parse timestamps to ${timestamp === 'number' ? 'number' : 'Date object'}.\n timestamp: (precision?: number) => t.timestamp(precision).${\n timestamp === 'date' ? 'asDate' : 'asNumber'\n }(),`;\n }\n\n content += `\n ${columnTypesComment}}),\n});\n\nexport const { sql } = BaseTable;\n`;\n\n await fs.writeFile(filePath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupDemoTables(config: InitConfig): Promise<void> {\n if (!config.demoTables) return;\n\n const tablesDir = join(config.dbDirPath, 'tables');\n await fs.mkdir(tablesDir, { recursive: true });\n\n const hasValidation = config.validation !== 'no';\n\n await fs.writeFile(\n join(tablesDir, 'post.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { CommentTable } from './comment.table';\n\n// Post type returned from database.\nexport type Post = Selectable<PostTable>;\n// Post type for insertion.\nexport type PostNew = Insertable<PostTable>;\n// Post type for updates.\nexport type PostUpdate = Updatable<PostTable>;\n// Post type used by query methods such as \\`where\\`.\nexport type PostForQuery = Queryable<PostTable>;\n\nexport class PostTable extends BaseTable {\n readonly table = 'post';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n title: t.text()${hasValidation ? '.min(3).max(100)' : ''}.unique(),\n text: t.text()${hasValidation ? '.min(20).max(10000)' : ''},\n ...t.timestamps(),\n }));\n\n relations = {\n comments: this.hasMany(() => CommentTable, {\n columns: ['id'],\n references: ['postId'],\n }),\n };\n}\n`,\n );\n\n await fs.writeFile(\n join(tablesDir, 'comment.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { PostTable } from './post.table';\n\n// Comment type returned from database.\nexport type Comment = Selectable<CommentTable>;\n// Comment type for insertion.\nexport type CommentNew = Insertable<CommentTable>;\n// Comment type for updates.\nexport type CommentUpdate = Updatable<CommentTable>;\n// Comment type used by query methods such as \\`where\\`.\nexport type CommentForQuery = Queryable<CommentTable>;\n\nexport class CommentTable extends BaseTable {\n readonly table = 'comment';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n postId: t\n .integer()\n .foreignKey(() => PostTable, 'id')\n .index(),\n text: t.text()${hasValidation ? '.min(5).max(1000)' : ''},\n ...t.timestamps(),\n }));\n\n relations = {\n post: this.belongsTo(() => PostTable, {\n columns: ['postId'],\n references: ['id'],\n }),\n };\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupConfig(config: InitConfig): Promise<void> {\n const configPath = join(config.dbDirPath, 'config.ts');\n\n let content = `import 'dotenv/config';\n\nconst database = {\n databaseURL: process.env.DATABASE_URL,\n};\nif (!database.databaseURL) throw new Error('DATABASE_URL is missing in .env');`;\n\n if (config.testDatabase) {\n content += `\n\nconst testDatabase = {\n databaseURL: process.env.DATABASE_TEST_URL,\n};\n\nconst allDatabases = [database];\n\nif (testDatabase.databaseURL) {\n allDatabases.push(testDatabase);\n}`;\n }\n\n content += `\n\nexport const config = {`;\n\n if (config.testDatabase) {\n content += `\n allDatabases,`;\n }\n\n if (config.testDatabase) {\n content += `\n database: process.env.NODE_ENV === 'test' ? testDatabase : database,`;\n } else {\n content += `\n database,`;\n }\n content += `\n};\n`;\n\n await fs.writeFile(configPath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMainDb(config: InitConfig): Promise<void> {\n let imports = '';\n let tables = '';\n if (config.demoTables) {\n imports += `\nimport { PostTable } from './tables/post.table';\nimport { CommentTable } from './tables/comment.table';`;\n tables += `\n post: PostTable,\n comment: CommentTable,`;\n }\n\n const dbPath = join(config.dbDirPath, 'db.ts');\n await fs.writeFile(\n dbPath,\n `import { orchidORM } from 'orchid-orm';\nimport { config } from './config';${imports}\n\nexport const db = orchidORM(config.database, {${tables}\n});\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMigrationScript(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'dbScript.ts');\n\n const migrations =\n config.runner === 'vite-node'\n ? \"migrations: import.meta.glob('./migrations/*.ts')\"\n : \"migrationsPath: './migrations'\";\n\n await fs.writeFile(\n filePath,\n `import { rakeDb } from 'orchid-orm/migrations';\nimport { config } from './config';\nimport { BaseTable } from './baseTable';\n\nexport const change = rakeDb(${\n config.testDatabase ? 'config.allDatabases' : 'config.database'\n }, {\n baseTable: BaseTable,\n dbPath: './db',\n ${migrations},\n commands: {\n async seed() {\n const { seed } = await import('./seed');\n await seed();\n },\n },\n import: (path) => import(path),\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoMigrations(config: InitConfig): Promise<void> {\n const migrationsPath = join(config.dbDirPath, 'migrations');\n await fs.mkdir(migrationsPath, { recursive: true });\n\n if (!config.demoTables) return;\n\n const now = new Date();\n\n const postPath = join(migrationsPath, `0001_createPost.ts`);\n await fs.writeFile(\n postPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('post', (t) => ({\n id: t.identity().primaryKey(),\n title: t.text().unique(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n\n now.setTime(now.getTime() + 1000);\n\n const commentPath = join(migrationsPath, `0002_createComment.ts`);\n await fs.writeFile(\n commentPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('comment', (t) => ({\n id: t.identity().primaryKey(),\n postId: t.integer().foreignKey('post', 'id').index(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoSeed(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'seed.ts');\n\n let content;\n if (config.demoTables) {\n content = `await db.post.findBy({ title: 'Sample post' }).orCreate({\n title: 'Post',\n text: 'This is a text for a sample post. It contains words, spaces, and punctuation.',\n comments: {\n create: [\n {\n text: 'Nice post!',\n },\n {\n text: \\`Too long, didn't read\\`,\n },\n ],\n },\n });`;\n } else {\n content = `// create records here`;\n }\n\n await fs.writeFile(\n filePath,\n `import { db } from './db';\n\nexport const seed = async () => {\n ${content}\n\n await db.$close();\n};\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport fs from 'fs/promises';\nimport { join } from 'path';\n\nexport async function setupRunner(config: InitConfig): Promise<void> {\n if (config.runner === 'vite-node') {\n await fs.writeFile(\n join(config.path, 'vite.migrations.mts'),\n `import { resolve } from \"path\";\nimport { defineConfig, PluginOption } from \"vite\";\nimport { nodeExternals } from \"rollup-plugin-node-externals\";\n\nexport default defineConfig({\n plugins: [\n {\n ...nodeExternals(),\n name: \"node-externals\",\n enforce: \"pre\",\n apply: \"build\",\n } as PluginOption\n ],\n build: {\n outDir: resolve(__dirname, \"dist\", \"db\"),\n lib: {\n entry: resolve(__dirname, \"src/db/dbScript.ts\"),\n formats: [\"es\"],\n fileName: \"dbScript\",\n },\n rollupOptions: {\n external: [\"orchid-orm\"],\n output: {\n entryFileNames: \"[name].mjs\",\n chunkFileNames: \"[name].[hash].mjs\",\n },\n },\n },\n})\n`,\n );\n } else if (config.runner === 'tsx') {\n await fs.writeFile(\n join(config.path, 'esbuild.migrations.mjs'),\n `import { build } from \"esbuild\";\n\nawait Promise.all([\n build({\n entryPoints: [\"src/db/dbScript.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db\",\n outExtension: { '.js': '.mjs' },\n banner: {\n js: \\`\n import __path from 'node:path';\n import { fileURLToPath as __fileURLToPath } from 'node:url';\n import { createRequire as __createRequire } from 'module';\n const require = __createRequire(import.meta.url);\n const __filename = __fileURLToPath(import.meta.url);\n const __dirname = __path.dirname(__filename);\n \\`,\n },\n }),\n build({\n entryPoints: [\"src/db/migrations/*.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db/migrations\",\n outExtension: { '.js': '.mjs' },\n external: ['../dbScript'],\n plugins: [{\n name: 'add-js-suffix',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.importer) {\n return { path: args.path + '.mjs', external: true }\n }\n })\n },\n }],\n }),\n]);\n`,\n );\n }\n}\n","import { InitConfig } from '../lib';\nimport fs from 'fs/promises';\nimport { setupPackageJSON } from './init/setupPackageJSON';\nimport { setupTSConfig } from './init/setupTSConfig';\nimport { setupEnv } from './init/setupEnv';\nimport { setupGitIgnore } from './init/setupGitIgnore';\nimport { setupBaseTable } from './init/setupBaseTable';\nimport { setupDemoTables } from './init/setupDemoTables';\nimport { setupConfig } from './init/setupConfig';\nimport { setupMainDb } from './init/setupMainDb';\nimport { setupMigrationScript } from './init/setupMigrationScript';\nimport { createDemoMigrations } from './init/createDemoMigrations';\nimport { createDemoSeed } from './init/createDemoSeed';\nimport { setupRunner } from './init/setupRunner';\n\nexport async function init(config: InitConfig): Promise<void> {\n await fs.mkdir(config.dbDirPath, { recursive: true });\n\n for (const key in initSteps) {\n await initSteps[key as keyof typeof initSteps](config);\n }\n}\n\nexport const initSteps = {\n setupPackageJSON,\n setupTSConfig,\n setupEnv,\n setupGitIgnore,\n setupBaseTable,\n setupDemoTables,\n setupConfig,\n setupMainDb,\n setupMigrationScript,\n createDemoMigrations,\n createDemoSeed,\n setupRunner,\n};\n","import { relative } from 'path';\nimport { InitConfig } from '../lib';\nimport { getPackageManagerName } from './utils';\n\nexport function greetAfterInstall(\n config: InitConfig,\n logger: { log(message: string): void } = console,\n) {\n const relativePath = relative(process.cwd(), config.path);\n const manager = getPackageManagerName();\n const run = manager === 'npm' ? `npm run` : manager;\n\n logger.log(`\nThank you for trying Orchid ORM!\n \nTo finish setup,${\n relativePath ? ` cd to the project and` : ''\n } install dependencies:\n${\n relativePath\n ? `\n> cd ${relativePath}`\n : ''\n}\n> ${manager} i\n\nEnter the correct database credentials to the .env file,\nthen create the database:\n\n> ${run} db create\n\nAnd run the migrations:\n\n> ${run} db migrate\n`);\n}\n","#!/usr/bin/env node\n\nimport { getConfig, init, greetAfterInstall } from './lib';\n\ngetConfig().then(\n (config) => config && init(config).then(() => greetAfterInstall(config)),\n);\n"],"names":["basename","path","resolve","join","relative"],"mappings":"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"}
|
package/dist/lib.js
CHANGED
|
@@ -329,6 +329,9 @@ node_modules`;
|
|
|
329
329
|
|
|
330
330
|
async function setupBaseTable(config) {
|
|
331
331
|
const filePath = path.join(config.dbDirPath, "baseTable.ts");
|
|
332
|
+
const { timestamp } = config;
|
|
333
|
+
const customTimestamp = timestamp && timestamp !== "string";
|
|
334
|
+
const columnTypesComment = customTimestamp ? "" : "// ";
|
|
332
335
|
let content = `import { createBaseTable } from 'orchid-orm';${config.validation === "zod" ? `
|
|
333
336
|
import { zodSchemaConfig } from 'orchid-orm-schema-to-zod';` : config.validation === "valibot" ? `
|
|
334
337
|
import { valibotSchemaConfig } from 'orchid-orm-valibot';` : ""}
|
|
@@ -340,19 +343,15 @@ export const BaseTable = createBaseTable({
|
|
|
340
343
|
schemaConfig: ${config.validation === "zod" ? "zodSchemaConfig" : "valibotSchemaConfig"},` : ""}
|
|
341
344
|
|
|
342
345
|
// Customize column types for all tables.
|
|
343
|
-
columnTypes: (t) => ({
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
// it is only checked when validating with ${config.validation} schemas derived from the table.
|
|
347
|
-
text: (min = 0, max = Infinity) => t.text(min, max),`}`;
|
|
348
|
-
const { timestamp } = config;
|
|
349
|
-
if (timestamp && timestamp !== "string") {
|
|
346
|
+
${columnTypesComment}columnTypes: (t) => ({
|
|
347
|
+
${columnTypesComment} ...t,`;
|
|
348
|
+
if (customTimestamp) {
|
|
350
349
|
content += `
|
|
351
350
|
// Parse timestamps to ${timestamp === "number" ? "number" : "Date object"}.
|
|
352
351
|
timestamp: (precision?: number) => t.timestamp(precision).${timestamp === "date" ? "asDate" : "asNumber"}(),`;
|
|
353
352
|
}
|
|
354
353
|
content += `
|
|
355
|
-
}),
|
|
354
|
+
${columnTypesComment}}),
|
|
356
355
|
});
|
|
357
356
|
|
|
358
357
|
export const { sql } = BaseTable;
|
|
@@ -365,6 +364,7 @@ async function setupDemoTables(config) {
|
|
|
365
364
|
return;
|
|
366
365
|
const tablesDir = path.join(config.dbDirPath, "tables");
|
|
367
366
|
await fs.mkdir(tablesDir, { recursive: true });
|
|
367
|
+
const hasValidation = config.validation !== "no";
|
|
368
368
|
await fs.writeFile(
|
|
369
369
|
path.join(tablesDir, "post.table.ts"),
|
|
370
370
|
`import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';
|
|
@@ -384,15 +384,15 @@ export class PostTable extends BaseTable {
|
|
|
384
384
|
readonly table = 'post';
|
|
385
385
|
columns = this.setColumns((t) => ({
|
|
386
386
|
id: t.identity().primaryKey(),
|
|
387
|
-
title: t.text(3
|
|
388
|
-
text: t.text(20
|
|
387
|
+
title: t.text()${hasValidation ? ".min(3).max(100)" : ""}.unique(),
|
|
388
|
+
text: t.text()${hasValidation ? ".min(20).max(10000)" : ""},
|
|
389
389
|
...t.timestamps(),
|
|
390
390
|
}));
|
|
391
391
|
|
|
392
392
|
relations = {
|
|
393
393
|
comments: this.hasMany(() => CommentTable, {
|
|
394
|
-
|
|
395
|
-
|
|
394
|
+
columns: ['id'],
|
|
395
|
+
references: ['postId'],
|
|
396
396
|
}),
|
|
397
397
|
};
|
|
398
398
|
}
|
|
@@ -421,14 +421,14 @@ export class CommentTable extends BaseTable {
|
|
|
421
421
|
.integer()
|
|
422
422
|
.foreignKey(() => PostTable, 'id')
|
|
423
423
|
.index(),
|
|
424
|
-
text: t.text(5
|
|
424
|
+
text: t.text()${hasValidation ? ".min(5).max(1000)" : ""},
|
|
425
425
|
...t.timestamps(),
|
|
426
426
|
}));
|
|
427
427
|
|
|
428
428
|
relations = {
|
|
429
429
|
post: this.belongsTo(() => PostTable, {
|
|
430
|
-
|
|
431
|
-
|
|
430
|
+
columns: ['postId'],
|
|
431
|
+
references: ['id'],
|
|
432
432
|
}),
|
|
433
433
|
};
|
|
434
434
|
}
|
package/dist/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sources":["../src/lib/utils.ts","../src/lib/getConfig.ts","../src/lib/init/setupPackageJSON.ts","../src/lib/init/setupTSConfig.ts","../src/lib/init/setupEnv.ts","../src/lib/init/setupGitIgnore.ts","../src/lib/init/setupBaseTable.ts","../src/lib/init/setupDemoTables.ts","../src/lib/init/setupConfig.ts","../src/lib/init/setupMainDb.ts","../src/lib/init/setupMigrationScript.ts","../src/lib/init/createDemoMigrations.ts","../src/lib/init/createDemoSeed.ts","../src/lib/init/setupRunner.ts","../src/lib/init.ts","../src/lib/greetAfterInstall.ts"],"sourcesContent":["import fs from 'fs/promises';\nimport { basename } from 'path';\nimport https from 'https';\n\nexport async function readFileSafe(path: string) {\n try {\n return await fs.readFile(path, 'utf-8');\n } catch (err) {\n if ((err as unknown as { code: string }).code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n}\n\nexport type DependencyKind = 'dependencies' | 'devDependencies';\nexport function getLatestPackageVersion(\n name: string,\n kind: DependencyKind,\n): Promise<[string, { version: string; kind: DependencyKind }]> {\n return new Promise((resolve, reject) => {\n https\n .get(`https://registry.npmjs.org/${name}/latest`, (res) => {\n let data = '';\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () =>\n resolve([name, { version: `^${JSON.parse(data).version}`, kind }]),\n );\n })\n .on('error', reject);\n });\n}\n\nexport function getPackageManagerName(): 'npm' | 'yarn' | 'pnpm' | 'bun' {\n const { npm_execpath } = process.env;\n if (npm_execpath) {\n const name = basename(npm_execpath);\n if (/npm/.test(name)) {\n return 'npm';\n }\n if (/yarn/.test(name)) {\n return 'yarn';\n }\n if (/bun/.test(name)) {\n return 'bun';\n }\n }\n\n return 'pnpm';\n}\n","import prompts from 'prompts';\nimport { join, resolve, basename } from 'path';\nimport { InitConfig, UserProvidedConfig } from '../lib';\nimport { getPackageManagerName, readFileSafe } from './utils';\n\nexport async function getConfig(\n logger: { log(message: string): void } = console,\n): Promise<InitConfig | undefined> {\n let cancelled = false;\n\n logger.log('Welcome to Orchid ORM installer!');\n\n const isBun = getPackageManagerName() === 'bun';\n\n const response = await prompts<keyof UserProvidedConfig>(\n [\n {\n type: 'text',\n name: 'path',\n message: 'Where to install Orchid ORM?',\n initial: process.cwd(),\n },\n ...(isBun\n ? []\n : [\n {\n type: 'select' as const,\n name: 'runner' as const,\n message: 'Choose a tool for executing TS files',\n choices: [\n {\n title: 'tsx',\n value: 'tsx',\n },\n {\n title: 'vite-node',\n value: 'vite-node',\n },\n {\n title: 'ts-node',\n value: 'ts-node',\n },\n ],\n },\n ]),\n {\n type: 'select',\n name: 'timestamp',\n message: 'Return timestamps as:',\n choices: [\n {\n title: 'string (as returned from db)',\n value: 'string',\n },\n {\n title: 'number (epoch)',\n value: 'number',\n },\n {\n title: 'Date object',\n value: 'date',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'testDatabase',\n message: 'Add a separate database for tests?',\n },\n {\n type: 'select',\n name: 'validation',\n message: 'Integrate with a validation library?',\n choices: [\n {\n title: 'no',\n value: 'no',\n },\n {\n title: 'zod',\n value: 'zod',\n },\n {\n title: 'valibot',\n value: 'valibot',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'addTestFactory',\n message: 'Add record factories for writing tests?',\n },\n {\n type: 'confirm',\n name: 'demoTables',\n message: 'Add demo tables?',\n },\n ],\n {\n onCancel() {\n cancelled = true;\n },\n },\n );\n\n if (isBun) response.runner = 'bun';\n\n if (cancelled) return;\n\n const path = resolve(response.path);\n const tsConfigPath = join(path, 'tsconfig.json');\n const hasTsConfig = await readFileSafe(tsConfigPath);\n const dbDirPath = join(path, 'src', 'db');\n\n return {\n ...response,\n hasTsConfig: !!hasTsConfig,\n path: resolve(response.path),\n dbDirPath,\n projectName: basename(path),\n esm: response.runner !== 'ts-node',\n };\n}\n","import { InitConfig } from '../../lib';\nimport {\n DependencyKind,\n getLatestPackageVersion,\n readFileSafe,\n} from '../utils';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupPackageJSON(config: InitConfig): Promise<void> {\n const pairs = await Promise.all([\n getLatestPackageVersion('dotenv', 'dependencies'),\n getLatestPackageVersion('orchid-orm', 'dependencies'),\n config.validation === 'zod'\n ? getLatestPackageVersion('orchid-orm-schema-to-zod', 'dependencies')\n : config.validation === 'valibot'\n ? getLatestPackageVersion('orchid-orm-valibot', 'dependencies')\n : undefined,\n config.validation === 'valibot' &&\n getLatestPackageVersion('valibot', 'dependencies'),\n config.addTestFactory &&\n getLatestPackageVersion('orchid-orm-test-factory', 'devDependencies'),\n getLatestPackageVersion('@types/node', 'devDependencies'),\n getLatestPackageVersion('typescript', 'devDependencies'),\n config.runner === 'vite-node' &&\n getLatestPackageVersion('vite', 'devDependencies'),\n config.runner !== 'bun' &&\n (config.runner === 'tsx'\n ? ([\n 'tsx',\n {\n // 4.9.1 is broken in tsx: https://github.com/privatenumber/tsx/issues/543\n version: '4.9.0',\n kind: 'devDependencies',\n },\n ] as [string, { version: string; kind: DependencyKind }])\n : getLatestPackageVersion(config.runner, 'devDependencies')),\n config.runner === 'vite-node' &&\n getLatestPackageVersion(\n 'rollup-plugin-node-externals',\n 'devDependencies',\n ),\n config.runner === 'tsx' &&\n getLatestPackageVersion('esbuild', 'devDependencies'),\n config.runner === 'tsx' &&\n getLatestPackageVersion('rimraf', 'devDependencies'),\n ]);\n\n const deps: Record<string, string> = {};\n const devDeps: Record<string, string> = {};\n for (const item of pairs) {\n if (!item) continue;\n const [key, { version, kind }] = item;\n (kind === 'dependencies' ? deps : devDeps)[key] = version;\n }\n\n const packageJsonPath = join(config.path, 'package.json');\n const content = await readFileSafe(packageJsonPath);\n let json = content\n ? JSON.parse(content)\n : {\n name: config.projectName,\n };\n\n if (config.esm) json = { name: json.name, type: 'module', ...json };\n\n const scripts = (json.scripts ??= {});\n\n if (config.runner === 'vite-node') {\n scripts.db = 'vite-node src/db/dbScript.ts --';\n scripts['build:migrations'] = 'vite build --config vite.migrations.mts';\n scripts['db:compiled'] = 'node dist/db/dbScript.mjs';\n } else if (config.runner === 'tsx') {\n scripts.db = 'NODE_ENV=development tsx src/db/dbScript.ts';\n scripts['build:migrations'] =\n 'rimraf dist/db && node esbuild.migrations.mjs';\n scripts['db:compiled'] = 'NODE_ENV=production node dist/db/dbScript.mjs';\n } else {\n scripts.db = `${config.runner} src/db/dbScript.ts`;\n\n if (config.runner === 'ts-node') {\n scripts.build = 'tsc';\n scripts['db:compiled'] = 'node dist/dbScript.js';\n }\n }\n\n if (!json.dependencies) json.dependencies = {};\n\n for (const key in deps) {\n json.dependencies[key] = deps[key];\n }\n\n if (!json.devDependencies) json.devDependencies = {};\n for (const key in devDeps) {\n json.devDependencies[key] = devDeps[key];\n }\n\n await fs.writeFile(packageJsonPath, JSON.stringify(json, null, ' ') + '\\n');\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupTSConfig(config: InitConfig): Promise<void> {\n if (config.hasTsConfig) return;\n\n const module = config.runner === 'ts-node' ? 'commonjs' : 'esnext';\n const moduleResolution =\n config.runner === 'ts-node'\n ? ''\n : `\n \"moduleResolution\": \"bundler\",`;\n\n const types = config.runner === 'vite-node' ? `[\"vite/client\"]` : undefined;\n\n const tsConfigPath = join(config.path, 'tsconfig.json');\n await fs.writeFile(\n tsConfigPath,\n `{\n \"compilerOptions\": {${\n config.runner === 'ts-node'\n ? `\n \"outDir\": \"dist\",`\n : ''\n }\n \"target\": \"es2017\",\n \"module\": \"${module}\",${moduleResolution}\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true${\n types\n ? `,\n \"types\": ${types}`\n : ''\n }\n }\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupEnv(config: InitConfig): Promise<void> {\n const envPath = join(config.path, '.env');\n let content = ((await readFileSafe(envPath)) || '').trim();\n let changed = false;\n\n // by default, on Mac it is a username, on Linux it's postgres, on Windows it's postgres as well\n const user = process.platform === 'darwin' ? process.env.USER : 'postgres';\n\n // TODO: guess user and pw\n if (!content.match(/^DATABASE_URL=/m)) {\n content += `\\nDATABASE_URL=postgres://${user}:@localhost:5432/dbname?ssl=false`;\n changed = true;\n }\n\n if (config.testDatabase && !content.match(/^DATABASE_TEST_URL=/m)) {\n content += `\\nDATABASE_TEST_URL=postgres://${user}:@localhost:5432/dbname-test?ssl=false`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(envPath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupGitIgnore(config: InitConfig): Promise<void> {\n const gitignorePath = join(config.path, '.gitignore');\n let content = ((await readFileSafe(gitignorePath)) || '').trim();\n let changed = false;\n\n if (!content.match(/^node_modules\\b/m)) {\n content += `\\nnode_modules`;\n changed = true;\n }\n\n if (!content.match(/^.env\\b/m)) {\n content += `\\n.env.?*\\n!.env.example`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(gitignorePath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupBaseTable(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'baseTable.ts');\n\n let content = `import { createBaseTable } from 'orchid-orm';${\n config.validation === 'zod'\n ? `\\nimport { zodSchemaConfig } from 'orchid-orm-schema-to-zod';`\n : config.validation === 'valibot'\n ? `\\nimport { valibotSchemaConfig } from 'orchid-orm-valibot';`\n : ''\n }\n\nexport const BaseTable = createBaseTable({\n // Set \\`snakeCase\\` to \\`true\\` if columns in your database are in snake_case.\n // snakeCase: true,${\n config.validation !== 'no'\n ? `\n\n schemaConfig: ${\n config.validation === 'zod' ? 'zodSchemaConfig' : 'valibotSchemaConfig'\n },`\n : ''\n }\n\n // Customize column types for all tables.\n columnTypes: (t) => ({\n ...t,${\n config.validation === 'no'\n ? ''\n : `\n // Set min and max validations for all text columns,\n // it is only checked when validating with ${config.validation} schemas derived from the table.\n text: (min = 0, max = Infinity) => t.text(min, max),`\n }`;\n\n const { timestamp } = config;\n if (timestamp && timestamp !== 'string') {\n content += `\n // Parse timestamps to ${timestamp === 'number' ? 'number' : 'Date object'}.\n timestamp: (precision?: number) => t.timestamp(precision).${\n timestamp === 'date' ? 'asDate' : 'asNumber'\n }(),`;\n }\n\n content += `\n }),\n});\n\nexport const { sql } = BaseTable;\n`;\n\n await fs.writeFile(filePath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupDemoTables(config: InitConfig): Promise<void> {\n if (!config.demoTables) return;\n\n const tablesDir = join(config.dbDirPath, 'tables');\n await fs.mkdir(tablesDir, { recursive: true });\n\n await fs.writeFile(\n join(tablesDir, 'post.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { CommentTable } from './comment.table';\n\n// Post type returned from database.\nexport type Post = Selectable<PostTable>;\n// Post type for insertion.\nexport type PostNew = Insertable<PostTable>;\n// Post type for updates.\nexport type PostUpdate = Updatable<PostTable>;\n// Post type used by query methods such as \\`where\\`.\nexport type PostForQuery = Queryable<PostTable>;\n\nexport class PostTable extends BaseTable {\n readonly table = 'post';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n title: t.text(3, 100).unique(),\n text: t.text(20, 10000),\n ...t.timestamps(),\n }));\n\n relations = {\n comments: this.hasMany(() => CommentTable, {\n primaryKey: 'id',\n foreignKey: 'postId',\n }),\n };\n}\n`,\n );\n\n await fs.writeFile(\n join(tablesDir, 'comment.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { PostTable } from './post.table';\n\n// Comment type returned from database.\nexport type Comment = Selectable<CommentTable>;\n// Comment type for insertion.\nexport type CommentNew = Insertable<CommentTable>;\n// Comment type for updates.\nexport type CommentUpdate = Updatable<CommentTable>;\n// Comment type used by query methods such as \\`where\\`.\nexport type CommentForQuery = Queryable<CommentTable>;\n\nexport class CommentTable extends BaseTable {\n readonly table = 'comment';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n postId: t\n .integer()\n .foreignKey(() => PostTable, 'id')\n .index(),\n text: t.text(5, 1000),\n ...t.timestamps(),\n }));\n\n relations = {\n post: this.belongsTo(() => PostTable, {\n primaryKey: 'id',\n foreignKey: 'postId',\n }),\n };\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupConfig(config: InitConfig): Promise<void> {\n const configPath = join(config.dbDirPath, 'config.ts');\n\n let content = `import 'dotenv/config';\n\nconst database = {\n databaseURL: process.env.DATABASE_URL,\n};\nif (!database.databaseURL) throw new Error('DATABASE_URL is missing in .env');`;\n\n if (config.testDatabase) {\n content += `\n\nconst testDatabase = {\n databaseURL: process.env.DATABASE_TEST_URL,\n};\n\nconst allDatabases = [database];\n\nif (testDatabase.databaseURL) {\n allDatabases.push(testDatabase);\n}`;\n }\n\n content += `\n\nexport const config = {`;\n\n if (config.testDatabase) {\n content += `\n allDatabases,`;\n }\n\n if (config.testDatabase) {\n content += `\n database: process.env.NODE_ENV === 'test' ? testDatabase : database,`;\n } else {\n content += `\n database,`;\n }\n content += `\n};\n`;\n\n await fs.writeFile(configPath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMainDb(config: InitConfig): Promise<void> {\n let imports = '';\n let tables = '';\n if (config.demoTables) {\n imports += `\nimport { PostTable } from './tables/post.table';\nimport { CommentTable } from './tables/comment.table';`;\n tables += `\n post: PostTable,\n comment: CommentTable,`;\n }\n\n const dbPath = join(config.dbDirPath, 'db.ts');\n await fs.writeFile(\n dbPath,\n `import { orchidORM } from 'orchid-orm';\nimport { config } from './config';${imports}\n\nexport const db = orchidORM(config.database, {${tables}\n});\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMigrationScript(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'dbScript.ts');\n\n const migrations =\n config.runner === 'vite-node'\n ? \"migrations: import.meta.glob('./migrations/*.ts')\"\n : \"migrationsPath: './migrations'\";\n\n await fs.writeFile(\n filePath,\n `import { rakeDb } from 'orchid-orm/migrations';\nimport { config } from './config';\nimport { BaseTable } from './baseTable';\n\nexport const change = rakeDb(${\n config.testDatabase ? 'config.allDatabases' : 'config.database'\n }, {\n baseTable: BaseTable,\n dbPath: './db',\n ${migrations},\n commands: {\n async seed() {\n const { seed } = await import('./seed');\n await seed();\n },\n },\n import: (path) => import(path),\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoMigrations(config: InitConfig): Promise<void> {\n const migrationsPath = join(config.dbDirPath, 'migrations');\n await fs.mkdir(migrationsPath, { recursive: true });\n\n if (!config.demoTables) return;\n\n const now = new Date();\n\n const postPath = join(migrationsPath, `0001_createPost.ts`);\n await fs.writeFile(\n postPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('post', (t) => ({\n id: t.identity().primaryKey(),\n title: t.text().unique(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n\n now.setTime(now.getTime() + 1000);\n\n const commentPath = join(migrationsPath, `0002_createComment.ts`);\n await fs.writeFile(\n commentPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('comment', (t) => ({\n id: t.identity().primaryKey(),\n postId: t.integer().foreignKey('post', 'id').index(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoSeed(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'seed.ts');\n\n let content;\n if (config.demoTables) {\n content = `await db.post.findBy({ title: 'Sample post' }).orCreate({\n title: 'Post',\n text: 'This is a text for a sample post. It contains words, spaces, and punctuation.',\n comments: {\n create: [\n {\n text: 'Nice post!',\n },\n {\n text: \\`Too long, didn't read\\`,\n },\n ],\n },\n });`;\n } else {\n content = `// create records here`;\n }\n\n await fs.writeFile(\n filePath,\n `import { db } from './db';\n\nexport const seed = async () => {\n ${content}\n\n await db.$close();\n};\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport fs from 'fs/promises';\nimport { join } from 'path';\n\nexport async function setupRunner(config: InitConfig): Promise<void> {\n if (config.runner === 'vite-node') {\n await fs.writeFile(\n join(config.path, 'vite.migrations.mts'),\n `import { resolve } from \"path\";\nimport { defineConfig, PluginOption } from \"vite\";\nimport { nodeExternals } from \"rollup-plugin-node-externals\";\n\nexport default defineConfig({\n plugins: [\n {\n ...nodeExternals(),\n name: \"node-externals\",\n enforce: \"pre\",\n apply: \"build\",\n } as PluginOption\n ],\n build: {\n outDir: resolve(__dirname, \"dist\", \"db\"),\n lib: {\n entry: resolve(__dirname, \"src/db/dbScript.ts\"),\n formats: [\"es\"],\n fileName: \"dbScript\",\n },\n rollupOptions: {\n external: [\"orchid-orm\"],\n output: {\n entryFileNames: \"[name].mjs\",\n chunkFileNames: \"[name].[hash].mjs\",\n },\n },\n },\n})\n`,\n );\n } else if (config.runner === 'tsx') {\n await fs.writeFile(\n join(config.path, 'esbuild.migrations.mjs'),\n `import { build } from \"esbuild\";\n\nawait Promise.all([\n build({\n entryPoints: [\"src/db/dbScript.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db\",\n outExtension: { '.js': '.mjs' },\n banner: {\n js: \\`\n import __path from 'node:path';\n import { fileURLToPath as __fileURLToPath } from 'node:url';\n import { createRequire as __createRequire } from 'module';\n const require = __createRequire(import.meta.url);\n const __filename = __fileURLToPath(import.meta.url);\n const __dirname = __path.dirname(__filename);\n \\`,\n },\n }),\n build({\n entryPoints: [\"src/db/migrations/*.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db/migrations\",\n outExtension: { '.js': '.mjs' },\n external: ['../dbScript'],\n plugins: [{\n name: 'add-js-suffix',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.importer) {\n return { path: args.path + '.mjs', external: true }\n }\n })\n },\n }],\n }),\n]);\n`,\n );\n }\n}\n","import { InitConfig } from '../lib';\nimport fs from 'fs/promises';\nimport { setupPackageJSON } from './init/setupPackageJSON';\nimport { setupTSConfig } from './init/setupTSConfig';\nimport { setupEnv } from './init/setupEnv';\nimport { setupGitIgnore } from './init/setupGitIgnore';\nimport { setupBaseTable } from './init/setupBaseTable';\nimport { setupDemoTables } from './init/setupDemoTables';\nimport { setupConfig } from './init/setupConfig';\nimport { setupMainDb } from './init/setupMainDb';\nimport { setupMigrationScript } from './init/setupMigrationScript';\nimport { createDemoMigrations } from './init/createDemoMigrations';\nimport { createDemoSeed } from './init/createDemoSeed';\nimport { setupRunner } from './init/setupRunner';\n\nexport async function init(config: InitConfig): Promise<void> {\n await fs.mkdir(config.dbDirPath, { recursive: true });\n\n for (const key in initSteps) {\n await initSteps[key as keyof typeof initSteps](config);\n }\n}\n\nexport const initSteps = {\n setupPackageJSON,\n setupTSConfig,\n setupEnv,\n setupGitIgnore,\n setupBaseTable,\n setupDemoTables,\n setupConfig,\n setupMainDb,\n setupMigrationScript,\n createDemoMigrations,\n createDemoSeed,\n setupRunner,\n};\n","import { relative } from 'path';\nimport { InitConfig } from '../lib';\nimport { getPackageManagerName } from './utils';\n\nexport function greetAfterInstall(\n config: InitConfig,\n logger: { log(message: string): void } = console,\n) {\n const relativePath = relative(process.cwd(), config.path);\n const manager = getPackageManagerName();\n const run = manager === 'npm' ? `npm run` : manager;\n\n logger.log(`\nThank you for trying Orchid ORM!\n \nTo finish setup,${\n relativePath ? ` cd to the project and` : ''\n } install dependencies:\n${\n relativePath\n ? `\n> cd ${relativePath}`\n : ''\n}\n> ${manager} i\n\nEnter the correct database credentials to the .env file,\nthen create the database:\n\n> ${run} db create\n\nAnd run the migrations:\n\n> ${run} db migrate\n`);\n}\n"],"names":["basename","path","resolve","join","relative"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lib.js","sources":["../src/lib/utils.ts","../src/lib/getConfig.ts","../src/lib/init/setupPackageJSON.ts","../src/lib/init/setupTSConfig.ts","../src/lib/init/setupEnv.ts","../src/lib/init/setupGitIgnore.ts","../src/lib/init/setupBaseTable.ts","../src/lib/init/setupDemoTables.ts","../src/lib/init/setupConfig.ts","../src/lib/init/setupMainDb.ts","../src/lib/init/setupMigrationScript.ts","../src/lib/init/createDemoMigrations.ts","../src/lib/init/createDemoSeed.ts","../src/lib/init/setupRunner.ts","../src/lib/init.ts","../src/lib/greetAfterInstall.ts"],"sourcesContent":["import fs from 'fs/promises';\nimport { basename } from 'path';\nimport https from 'https';\n\nexport async function readFileSafe(path: string) {\n try {\n return await fs.readFile(path, 'utf-8');\n } catch (err) {\n if ((err as unknown as { code: string }).code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n}\n\nexport type DependencyKind = 'dependencies' | 'devDependencies';\nexport function getLatestPackageVersion(\n name: string,\n kind: DependencyKind,\n): Promise<[string, { version: string; kind: DependencyKind }]> {\n return new Promise((resolve, reject) => {\n https\n .get(`https://registry.npmjs.org/${name}/latest`, (res) => {\n let data = '';\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () =>\n resolve([name, { version: `^${JSON.parse(data).version}`, kind }]),\n );\n })\n .on('error', reject);\n });\n}\n\nexport function getPackageManagerName(): 'npm' | 'yarn' | 'pnpm' | 'bun' {\n const { npm_execpath } = process.env;\n if (npm_execpath) {\n const name = basename(npm_execpath);\n if (/npm/.test(name)) {\n return 'npm';\n }\n if (/yarn/.test(name)) {\n return 'yarn';\n }\n if (/bun/.test(name)) {\n return 'bun';\n }\n }\n\n return 'pnpm';\n}\n","import prompts from 'prompts';\nimport { join, resolve, basename } from 'path';\nimport { InitConfig, UserProvidedConfig } from '../lib';\nimport { getPackageManagerName, readFileSafe } from './utils';\n\nexport async function getConfig(\n logger: { log(message: string): void } = console,\n): Promise<InitConfig | undefined> {\n let cancelled = false;\n\n logger.log('Welcome to Orchid ORM installer!');\n\n const isBun = getPackageManagerName() === 'bun';\n\n const response = await prompts<keyof UserProvidedConfig>(\n [\n {\n type: 'text',\n name: 'path',\n message: 'Where to install Orchid ORM?',\n initial: process.cwd(),\n },\n ...(isBun\n ? []\n : [\n {\n type: 'select' as const,\n name: 'runner' as const,\n message: 'Choose a tool for executing TS files',\n choices: [\n {\n title: 'tsx',\n value: 'tsx',\n },\n {\n title: 'vite-node',\n value: 'vite-node',\n },\n {\n title: 'ts-node',\n value: 'ts-node',\n },\n ],\n },\n ]),\n {\n type: 'select',\n name: 'timestamp',\n message: 'Return timestamps as:',\n choices: [\n {\n title: 'string (as returned from db)',\n value: 'string',\n },\n {\n title: 'number (epoch)',\n value: 'number',\n },\n {\n title: 'Date object',\n value: 'date',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'testDatabase',\n message: 'Add a separate database for tests?',\n },\n {\n type: 'select',\n name: 'validation',\n message: 'Integrate with a validation library?',\n choices: [\n {\n title: 'no',\n value: 'no',\n },\n {\n title: 'zod',\n value: 'zod',\n },\n {\n title: 'valibot',\n value: 'valibot',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'addTestFactory',\n message: 'Add record factories for writing tests?',\n },\n {\n type: 'confirm',\n name: 'demoTables',\n message: 'Add demo tables?',\n },\n ],\n {\n onCancel() {\n cancelled = true;\n },\n },\n );\n\n if (isBun) response.runner = 'bun';\n\n if (cancelled) return;\n\n const path = resolve(response.path);\n const tsConfigPath = join(path, 'tsconfig.json');\n const hasTsConfig = await readFileSafe(tsConfigPath);\n const dbDirPath = join(path, 'src', 'db');\n\n return {\n ...response,\n hasTsConfig: !!hasTsConfig,\n path: resolve(response.path),\n dbDirPath,\n projectName: basename(path),\n esm: response.runner !== 'ts-node',\n };\n}\n","import { InitConfig } from '../../lib';\nimport {\n DependencyKind,\n getLatestPackageVersion,\n readFileSafe,\n} from '../utils';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupPackageJSON(config: InitConfig): Promise<void> {\n const pairs = await Promise.all([\n getLatestPackageVersion('dotenv', 'dependencies'),\n getLatestPackageVersion('orchid-orm', 'dependencies'),\n config.validation === 'zod'\n ? getLatestPackageVersion('orchid-orm-schema-to-zod', 'dependencies')\n : config.validation === 'valibot'\n ? getLatestPackageVersion('orchid-orm-valibot', 'dependencies')\n : undefined,\n config.validation === 'valibot' &&\n getLatestPackageVersion('valibot', 'dependencies'),\n config.addTestFactory &&\n getLatestPackageVersion('orchid-orm-test-factory', 'devDependencies'),\n getLatestPackageVersion('@types/node', 'devDependencies'),\n getLatestPackageVersion('typescript', 'devDependencies'),\n config.runner === 'vite-node' &&\n getLatestPackageVersion('vite', 'devDependencies'),\n config.runner !== 'bun' &&\n (config.runner === 'tsx'\n ? ([\n 'tsx',\n {\n // 4.9.1 is broken in tsx: https://github.com/privatenumber/tsx/issues/543\n version: '4.9.0',\n kind: 'devDependencies',\n },\n ] as [string, { version: string; kind: DependencyKind }])\n : getLatestPackageVersion(config.runner, 'devDependencies')),\n config.runner === 'vite-node' &&\n getLatestPackageVersion(\n 'rollup-plugin-node-externals',\n 'devDependencies',\n ),\n config.runner === 'tsx' &&\n getLatestPackageVersion('esbuild', 'devDependencies'),\n config.runner === 'tsx' &&\n getLatestPackageVersion('rimraf', 'devDependencies'),\n ]);\n\n const deps: Record<string, string> = {};\n const devDeps: Record<string, string> = {};\n for (const item of pairs) {\n if (!item) continue;\n const [key, { version, kind }] = item;\n (kind === 'dependencies' ? deps : devDeps)[key] = version;\n }\n\n const packageJsonPath = join(config.path, 'package.json');\n const content = await readFileSafe(packageJsonPath);\n let json = content\n ? JSON.parse(content)\n : {\n name: config.projectName,\n };\n\n if (config.esm) json = { name: json.name, type: 'module', ...json };\n\n const scripts = (json.scripts ??= {});\n\n if (config.runner === 'vite-node') {\n scripts.db = 'vite-node src/db/dbScript.ts --';\n scripts['build:migrations'] = 'vite build --config vite.migrations.mts';\n scripts['db:compiled'] = 'node dist/db/dbScript.mjs';\n } else if (config.runner === 'tsx') {\n scripts.db = 'NODE_ENV=development tsx src/db/dbScript.ts';\n scripts['build:migrations'] =\n 'rimraf dist/db && node esbuild.migrations.mjs';\n scripts['db:compiled'] = 'NODE_ENV=production node dist/db/dbScript.mjs';\n } else {\n scripts.db = `${config.runner} src/db/dbScript.ts`;\n\n if (config.runner === 'ts-node') {\n scripts.build = 'tsc';\n scripts['db:compiled'] = 'node dist/dbScript.js';\n }\n }\n\n if (!json.dependencies) json.dependencies = {};\n\n for (const key in deps) {\n json.dependencies[key] = deps[key];\n }\n\n if (!json.devDependencies) json.devDependencies = {};\n for (const key in devDeps) {\n json.devDependencies[key] = devDeps[key];\n }\n\n await fs.writeFile(packageJsonPath, JSON.stringify(json, null, ' ') + '\\n');\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupTSConfig(config: InitConfig): Promise<void> {\n if (config.hasTsConfig) return;\n\n const module = config.runner === 'ts-node' ? 'commonjs' : 'esnext';\n const moduleResolution =\n config.runner === 'ts-node'\n ? ''\n : `\n \"moduleResolution\": \"bundler\",`;\n\n const types = config.runner === 'vite-node' ? `[\"vite/client\"]` : undefined;\n\n const tsConfigPath = join(config.path, 'tsconfig.json');\n await fs.writeFile(\n tsConfigPath,\n `{\n \"compilerOptions\": {${\n config.runner === 'ts-node'\n ? `\n \"outDir\": \"dist\",`\n : ''\n }\n \"target\": \"es2017\",\n \"module\": \"${module}\",${moduleResolution}\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true${\n types\n ? `,\n \"types\": ${types}`\n : ''\n }\n }\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupEnv(config: InitConfig): Promise<void> {\n const envPath = join(config.path, '.env');\n let content = ((await readFileSafe(envPath)) || '').trim();\n let changed = false;\n\n // by default, on Mac it is a username, on Linux it's postgres, on Windows it's postgres as well\n const user = process.platform === 'darwin' ? process.env.USER : 'postgres';\n\n // TODO: guess user and pw\n if (!content.match(/^DATABASE_URL=/m)) {\n content += `\\nDATABASE_URL=postgres://${user}:@localhost:5432/dbname?ssl=false`;\n changed = true;\n }\n\n if (config.testDatabase && !content.match(/^DATABASE_TEST_URL=/m)) {\n content += `\\nDATABASE_TEST_URL=postgres://${user}:@localhost:5432/dbname-test?ssl=false`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(envPath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupGitIgnore(config: InitConfig): Promise<void> {\n const gitignorePath = join(config.path, '.gitignore');\n let content = ((await readFileSafe(gitignorePath)) || '').trim();\n let changed = false;\n\n if (!content.match(/^node_modules\\b/m)) {\n content += `\\nnode_modules`;\n changed = true;\n }\n\n if (!content.match(/^.env\\b/m)) {\n content += `\\n.env.?*\\n!.env.example`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(gitignorePath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupBaseTable(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'baseTable.ts');\n\n const { timestamp } = config;\n const customTimestamp = timestamp && timestamp !== 'string';\n const columnTypesComment = customTimestamp ? '' : '// ';\n\n let content = `import { createBaseTable } from 'orchid-orm';${\n config.validation === 'zod'\n ? `\\nimport { zodSchemaConfig } from 'orchid-orm-schema-to-zod';`\n : config.validation === 'valibot'\n ? `\\nimport { valibotSchemaConfig } from 'orchid-orm-valibot';`\n : ''\n }\n\nexport const BaseTable = createBaseTable({\n // Set \\`snakeCase\\` to \\`true\\` if columns in your database are in snake_case.\n // snakeCase: true,${\n config.validation !== 'no'\n ? `\n\n schemaConfig: ${\n config.validation === 'zod' ? 'zodSchemaConfig' : 'valibotSchemaConfig'\n },`\n : ''\n }\n\n // Customize column types for all tables.\n ${columnTypesComment}columnTypes: (t) => ({\n ${columnTypesComment} ...t,`;\n\n if (customTimestamp) {\n content += `\n // Parse timestamps to ${timestamp === 'number' ? 'number' : 'Date object'}.\n timestamp: (precision?: number) => t.timestamp(precision).${\n timestamp === 'date' ? 'asDate' : 'asNumber'\n }(),`;\n }\n\n content += `\n ${columnTypesComment}}),\n});\n\nexport const { sql } = BaseTable;\n`;\n\n await fs.writeFile(filePath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupDemoTables(config: InitConfig): Promise<void> {\n if (!config.demoTables) return;\n\n const tablesDir = join(config.dbDirPath, 'tables');\n await fs.mkdir(tablesDir, { recursive: true });\n\n const hasValidation = config.validation !== 'no';\n\n await fs.writeFile(\n join(tablesDir, 'post.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { CommentTable } from './comment.table';\n\n// Post type returned from database.\nexport type Post = Selectable<PostTable>;\n// Post type for insertion.\nexport type PostNew = Insertable<PostTable>;\n// Post type for updates.\nexport type PostUpdate = Updatable<PostTable>;\n// Post type used by query methods such as \\`where\\`.\nexport type PostForQuery = Queryable<PostTable>;\n\nexport class PostTable extends BaseTable {\n readonly table = 'post';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n title: t.text()${hasValidation ? '.min(3).max(100)' : ''}.unique(),\n text: t.text()${hasValidation ? '.min(20).max(10000)' : ''},\n ...t.timestamps(),\n }));\n\n relations = {\n comments: this.hasMany(() => CommentTable, {\n columns: ['id'],\n references: ['postId'],\n }),\n };\n}\n`,\n );\n\n await fs.writeFile(\n join(tablesDir, 'comment.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { PostTable } from './post.table';\n\n// Comment type returned from database.\nexport type Comment = Selectable<CommentTable>;\n// Comment type for insertion.\nexport type CommentNew = Insertable<CommentTable>;\n// Comment type for updates.\nexport type CommentUpdate = Updatable<CommentTable>;\n// Comment type used by query methods such as \\`where\\`.\nexport type CommentForQuery = Queryable<CommentTable>;\n\nexport class CommentTable extends BaseTable {\n readonly table = 'comment';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n postId: t\n .integer()\n .foreignKey(() => PostTable, 'id')\n .index(),\n text: t.text()${hasValidation ? '.min(5).max(1000)' : ''},\n ...t.timestamps(),\n }));\n\n relations = {\n post: this.belongsTo(() => PostTable, {\n columns: ['postId'],\n references: ['id'],\n }),\n };\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupConfig(config: InitConfig): Promise<void> {\n const configPath = join(config.dbDirPath, 'config.ts');\n\n let content = `import 'dotenv/config';\n\nconst database = {\n databaseURL: process.env.DATABASE_URL,\n};\nif (!database.databaseURL) throw new Error('DATABASE_URL is missing in .env');`;\n\n if (config.testDatabase) {\n content += `\n\nconst testDatabase = {\n databaseURL: process.env.DATABASE_TEST_URL,\n};\n\nconst allDatabases = [database];\n\nif (testDatabase.databaseURL) {\n allDatabases.push(testDatabase);\n}`;\n }\n\n content += `\n\nexport const config = {`;\n\n if (config.testDatabase) {\n content += `\n allDatabases,`;\n }\n\n if (config.testDatabase) {\n content += `\n database: process.env.NODE_ENV === 'test' ? testDatabase : database,`;\n } else {\n content += `\n database,`;\n }\n content += `\n};\n`;\n\n await fs.writeFile(configPath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMainDb(config: InitConfig): Promise<void> {\n let imports = '';\n let tables = '';\n if (config.demoTables) {\n imports += `\nimport { PostTable } from './tables/post.table';\nimport { CommentTable } from './tables/comment.table';`;\n tables += `\n post: PostTable,\n comment: CommentTable,`;\n }\n\n const dbPath = join(config.dbDirPath, 'db.ts');\n await fs.writeFile(\n dbPath,\n `import { orchidORM } from 'orchid-orm';\nimport { config } from './config';${imports}\n\nexport const db = orchidORM(config.database, {${tables}\n});\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMigrationScript(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'dbScript.ts');\n\n const migrations =\n config.runner === 'vite-node'\n ? \"migrations: import.meta.glob('./migrations/*.ts')\"\n : \"migrationsPath: './migrations'\";\n\n await fs.writeFile(\n filePath,\n `import { rakeDb } from 'orchid-orm/migrations';\nimport { config } from './config';\nimport { BaseTable } from './baseTable';\n\nexport const change = rakeDb(${\n config.testDatabase ? 'config.allDatabases' : 'config.database'\n }, {\n baseTable: BaseTable,\n dbPath: './db',\n ${migrations},\n commands: {\n async seed() {\n const { seed } = await import('./seed');\n await seed();\n },\n },\n import: (path) => import(path),\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoMigrations(config: InitConfig): Promise<void> {\n const migrationsPath = join(config.dbDirPath, 'migrations');\n await fs.mkdir(migrationsPath, { recursive: true });\n\n if (!config.demoTables) return;\n\n const now = new Date();\n\n const postPath = join(migrationsPath, `0001_createPost.ts`);\n await fs.writeFile(\n postPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('post', (t) => ({\n id: t.identity().primaryKey(),\n title: t.text().unique(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n\n now.setTime(now.getTime() + 1000);\n\n const commentPath = join(migrationsPath, `0002_createComment.ts`);\n await fs.writeFile(\n commentPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('comment', (t) => ({\n id: t.identity().primaryKey(),\n postId: t.integer().foreignKey('post', 'id').index(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoSeed(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'seed.ts');\n\n let content;\n if (config.demoTables) {\n content = `await db.post.findBy({ title: 'Sample post' }).orCreate({\n title: 'Post',\n text: 'This is a text for a sample post. It contains words, spaces, and punctuation.',\n comments: {\n create: [\n {\n text: 'Nice post!',\n },\n {\n text: \\`Too long, didn't read\\`,\n },\n ],\n },\n });`;\n } else {\n content = `// create records here`;\n }\n\n await fs.writeFile(\n filePath,\n `import { db } from './db';\n\nexport const seed = async () => {\n ${content}\n\n await db.$close();\n};\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport fs from 'fs/promises';\nimport { join } from 'path';\n\nexport async function setupRunner(config: InitConfig): Promise<void> {\n if (config.runner === 'vite-node') {\n await fs.writeFile(\n join(config.path, 'vite.migrations.mts'),\n `import { resolve } from \"path\";\nimport { defineConfig, PluginOption } from \"vite\";\nimport { nodeExternals } from \"rollup-plugin-node-externals\";\n\nexport default defineConfig({\n plugins: [\n {\n ...nodeExternals(),\n name: \"node-externals\",\n enforce: \"pre\",\n apply: \"build\",\n } as PluginOption\n ],\n build: {\n outDir: resolve(__dirname, \"dist\", \"db\"),\n lib: {\n entry: resolve(__dirname, \"src/db/dbScript.ts\"),\n formats: [\"es\"],\n fileName: \"dbScript\",\n },\n rollupOptions: {\n external: [\"orchid-orm\"],\n output: {\n entryFileNames: \"[name].mjs\",\n chunkFileNames: \"[name].[hash].mjs\",\n },\n },\n },\n})\n`,\n );\n } else if (config.runner === 'tsx') {\n await fs.writeFile(\n join(config.path, 'esbuild.migrations.mjs'),\n `import { build } from \"esbuild\";\n\nawait Promise.all([\n build({\n entryPoints: [\"src/db/dbScript.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db\",\n outExtension: { '.js': '.mjs' },\n banner: {\n js: \\`\n import __path from 'node:path';\n import { fileURLToPath as __fileURLToPath } from 'node:url';\n import { createRequire as __createRequire } from 'module';\n const require = __createRequire(import.meta.url);\n const __filename = __fileURLToPath(import.meta.url);\n const __dirname = __path.dirname(__filename);\n \\`,\n },\n }),\n build({\n entryPoints: [\"src/db/migrations/*.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db/migrations\",\n outExtension: { '.js': '.mjs' },\n external: ['../dbScript'],\n plugins: [{\n name: 'add-js-suffix',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.importer) {\n return { path: args.path + '.mjs', external: true }\n }\n })\n },\n }],\n }),\n]);\n`,\n );\n }\n}\n","import { InitConfig } from '../lib';\nimport fs from 'fs/promises';\nimport { setupPackageJSON } from './init/setupPackageJSON';\nimport { setupTSConfig } from './init/setupTSConfig';\nimport { setupEnv } from './init/setupEnv';\nimport { setupGitIgnore } from './init/setupGitIgnore';\nimport { setupBaseTable } from './init/setupBaseTable';\nimport { setupDemoTables } from './init/setupDemoTables';\nimport { setupConfig } from './init/setupConfig';\nimport { setupMainDb } from './init/setupMainDb';\nimport { setupMigrationScript } from './init/setupMigrationScript';\nimport { createDemoMigrations } from './init/createDemoMigrations';\nimport { createDemoSeed } from './init/createDemoSeed';\nimport { setupRunner } from './init/setupRunner';\n\nexport async function init(config: InitConfig): Promise<void> {\n await fs.mkdir(config.dbDirPath, { recursive: true });\n\n for (const key in initSteps) {\n await initSteps[key as keyof typeof initSteps](config);\n }\n}\n\nexport const initSteps = {\n setupPackageJSON,\n setupTSConfig,\n setupEnv,\n setupGitIgnore,\n setupBaseTable,\n setupDemoTables,\n setupConfig,\n setupMainDb,\n setupMigrationScript,\n createDemoMigrations,\n createDemoSeed,\n setupRunner,\n};\n","import { relative } from 'path';\nimport { InitConfig } from '../lib';\nimport { getPackageManagerName } from './utils';\n\nexport function greetAfterInstall(\n config: InitConfig,\n logger: { log(message: string): void } = console,\n) {\n const relativePath = relative(process.cwd(), config.path);\n const manager = getPackageManagerName();\n const run = manager === 'npm' ? `npm run` : manager;\n\n logger.log(`\nThank you for trying Orchid ORM!\n \nTo finish setup,${\n relativePath ? ` cd to the project and` : ''\n } install dependencies:\n${\n relativePath\n ? `\n> cd ${relativePath}`\n : ''\n}\n> ${manager} i\n\nEnter the correct database credentials to the .env file,\nthen create the database:\n\n> ${run} db create\n\nAnd run the migrations:\n\n> ${run} db migrate\n`);\n}\n"],"names":["basename","path","resolve","join","relative"],"mappings":"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"}
|
package/dist/lib.mjs
CHANGED
|
@@ -327,6 +327,9 @@ node_modules`;
|
|
|
327
327
|
|
|
328
328
|
async function setupBaseTable(config) {
|
|
329
329
|
const filePath = join(config.dbDirPath, "baseTable.ts");
|
|
330
|
+
const { timestamp } = config;
|
|
331
|
+
const customTimestamp = timestamp && timestamp !== "string";
|
|
332
|
+
const columnTypesComment = customTimestamp ? "" : "// ";
|
|
330
333
|
let content = `import { createBaseTable } from 'orchid-orm';${config.validation === "zod" ? `
|
|
331
334
|
import { zodSchemaConfig } from 'orchid-orm-schema-to-zod';` : config.validation === "valibot" ? `
|
|
332
335
|
import { valibotSchemaConfig } from 'orchid-orm-valibot';` : ""}
|
|
@@ -338,19 +341,15 @@ export const BaseTable = createBaseTable({
|
|
|
338
341
|
schemaConfig: ${config.validation === "zod" ? "zodSchemaConfig" : "valibotSchemaConfig"},` : ""}
|
|
339
342
|
|
|
340
343
|
// Customize column types for all tables.
|
|
341
|
-
columnTypes: (t) => ({
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
// it is only checked when validating with ${config.validation} schemas derived from the table.
|
|
345
|
-
text: (min = 0, max = Infinity) => t.text(min, max),`}`;
|
|
346
|
-
const { timestamp } = config;
|
|
347
|
-
if (timestamp && timestamp !== "string") {
|
|
344
|
+
${columnTypesComment}columnTypes: (t) => ({
|
|
345
|
+
${columnTypesComment} ...t,`;
|
|
346
|
+
if (customTimestamp) {
|
|
348
347
|
content += `
|
|
349
348
|
// Parse timestamps to ${timestamp === "number" ? "number" : "Date object"}.
|
|
350
349
|
timestamp: (precision?: number) => t.timestamp(precision).${timestamp === "date" ? "asDate" : "asNumber"}(),`;
|
|
351
350
|
}
|
|
352
351
|
content += `
|
|
353
|
-
}),
|
|
352
|
+
${columnTypesComment}}),
|
|
354
353
|
});
|
|
355
354
|
|
|
356
355
|
export const { sql } = BaseTable;
|
|
@@ -363,6 +362,7 @@ async function setupDemoTables(config) {
|
|
|
363
362
|
return;
|
|
364
363
|
const tablesDir = join(config.dbDirPath, "tables");
|
|
365
364
|
await fs.mkdir(tablesDir, { recursive: true });
|
|
365
|
+
const hasValidation = config.validation !== "no";
|
|
366
366
|
await fs.writeFile(
|
|
367
367
|
join(tablesDir, "post.table.ts"),
|
|
368
368
|
`import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';
|
|
@@ -382,15 +382,15 @@ export class PostTable extends BaseTable {
|
|
|
382
382
|
readonly table = 'post';
|
|
383
383
|
columns = this.setColumns((t) => ({
|
|
384
384
|
id: t.identity().primaryKey(),
|
|
385
|
-
title: t.text(3
|
|
386
|
-
text: t.text(20
|
|
385
|
+
title: t.text()${hasValidation ? ".min(3).max(100)" : ""}.unique(),
|
|
386
|
+
text: t.text()${hasValidation ? ".min(20).max(10000)" : ""},
|
|
387
387
|
...t.timestamps(),
|
|
388
388
|
}));
|
|
389
389
|
|
|
390
390
|
relations = {
|
|
391
391
|
comments: this.hasMany(() => CommentTable, {
|
|
392
|
-
|
|
393
|
-
|
|
392
|
+
columns: ['id'],
|
|
393
|
+
references: ['postId'],
|
|
394
394
|
}),
|
|
395
395
|
};
|
|
396
396
|
}
|
|
@@ -419,14 +419,14 @@ export class CommentTable extends BaseTable {
|
|
|
419
419
|
.integer()
|
|
420
420
|
.foreignKey(() => PostTable, 'id')
|
|
421
421
|
.index(),
|
|
422
|
-
text: t.text(5
|
|
422
|
+
text: t.text()${hasValidation ? ".min(5).max(1000)" : ""},
|
|
423
423
|
...t.timestamps(),
|
|
424
424
|
}));
|
|
425
425
|
|
|
426
426
|
relations = {
|
|
427
427
|
post: this.belongsTo(() => PostTable, {
|
|
428
|
-
|
|
429
|
-
|
|
428
|
+
columns: ['postId'],
|
|
429
|
+
references: ['id'],
|
|
430
430
|
}),
|
|
431
431
|
};
|
|
432
432
|
}
|
package/dist/lib.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.mjs","sources":["../src/lib/utils.ts","../src/lib/getConfig.ts","../src/lib/init/setupPackageJSON.ts","../src/lib/init/setupTSConfig.ts","../src/lib/init/setupEnv.ts","../src/lib/init/setupGitIgnore.ts","../src/lib/init/setupBaseTable.ts","../src/lib/init/setupDemoTables.ts","../src/lib/init/setupConfig.ts","../src/lib/init/setupMainDb.ts","../src/lib/init/setupMigrationScript.ts","../src/lib/init/createDemoMigrations.ts","../src/lib/init/createDemoSeed.ts","../src/lib/init/setupRunner.ts","../src/lib/init.ts","../src/lib/greetAfterInstall.ts"],"sourcesContent":["import fs from 'fs/promises';\nimport { basename } from 'path';\nimport https from 'https';\n\nexport async function readFileSafe(path: string) {\n try {\n return await fs.readFile(path, 'utf-8');\n } catch (err) {\n if ((err as unknown as { code: string }).code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n}\n\nexport type DependencyKind = 'dependencies' | 'devDependencies';\nexport function getLatestPackageVersion(\n name: string,\n kind: DependencyKind,\n): Promise<[string, { version: string; kind: DependencyKind }]> {\n return new Promise((resolve, reject) => {\n https\n .get(`https://registry.npmjs.org/${name}/latest`, (res) => {\n let data = '';\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () =>\n resolve([name, { version: `^${JSON.parse(data).version}`, kind }]),\n );\n })\n .on('error', reject);\n });\n}\n\nexport function getPackageManagerName(): 'npm' | 'yarn' | 'pnpm' | 'bun' {\n const { npm_execpath } = process.env;\n if (npm_execpath) {\n const name = basename(npm_execpath);\n if (/npm/.test(name)) {\n return 'npm';\n }\n if (/yarn/.test(name)) {\n return 'yarn';\n }\n if (/bun/.test(name)) {\n return 'bun';\n }\n }\n\n return 'pnpm';\n}\n","import prompts from 'prompts';\nimport { join, resolve, basename } from 'path';\nimport { InitConfig, UserProvidedConfig } from '../lib';\nimport { getPackageManagerName, readFileSafe } from './utils';\n\nexport async function getConfig(\n logger: { log(message: string): void } = console,\n): Promise<InitConfig | undefined> {\n let cancelled = false;\n\n logger.log('Welcome to Orchid ORM installer!');\n\n const isBun = getPackageManagerName() === 'bun';\n\n const response = await prompts<keyof UserProvidedConfig>(\n [\n {\n type: 'text',\n name: 'path',\n message: 'Where to install Orchid ORM?',\n initial: process.cwd(),\n },\n ...(isBun\n ? []\n : [\n {\n type: 'select' as const,\n name: 'runner' as const,\n message: 'Choose a tool for executing TS files',\n choices: [\n {\n title: 'tsx',\n value: 'tsx',\n },\n {\n title: 'vite-node',\n value: 'vite-node',\n },\n {\n title: 'ts-node',\n value: 'ts-node',\n },\n ],\n },\n ]),\n {\n type: 'select',\n name: 'timestamp',\n message: 'Return timestamps as:',\n choices: [\n {\n title: 'string (as returned from db)',\n value: 'string',\n },\n {\n title: 'number (epoch)',\n value: 'number',\n },\n {\n title: 'Date object',\n value: 'date',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'testDatabase',\n message: 'Add a separate database for tests?',\n },\n {\n type: 'select',\n name: 'validation',\n message: 'Integrate with a validation library?',\n choices: [\n {\n title: 'no',\n value: 'no',\n },\n {\n title: 'zod',\n value: 'zod',\n },\n {\n title: 'valibot',\n value: 'valibot',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'addTestFactory',\n message: 'Add record factories for writing tests?',\n },\n {\n type: 'confirm',\n name: 'demoTables',\n message: 'Add demo tables?',\n },\n ],\n {\n onCancel() {\n cancelled = true;\n },\n },\n );\n\n if (isBun) response.runner = 'bun';\n\n if (cancelled) return;\n\n const path = resolve(response.path);\n const tsConfigPath = join(path, 'tsconfig.json');\n const hasTsConfig = await readFileSafe(tsConfigPath);\n const dbDirPath = join(path, 'src', 'db');\n\n return {\n ...response,\n hasTsConfig: !!hasTsConfig,\n path: resolve(response.path),\n dbDirPath,\n projectName: basename(path),\n esm: response.runner !== 'ts-node',\n };\n}\n","import { InitConfig } from '../../lib';\nimport {\n DependencyKind,\n getLatestPackageVersion,\n readFileSafe,\n} from '../utils';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupPackageJSON(config: InitConfig): Promise<void> {\n const pairs = await Promise.all([\n getLatestPackageVersion('dotenv', 'dependencies'),\n getLatestPackageVersion('orchid-orm', 'dependencies'),\n config.validation === 'zod'\n ? getLatestPackageVersion('orchid-orm-schema-to-zod', 'dependencies')\n : config.validation === 'valibot'\n ? getLatestPackageVersion('orchid-orm-valibot', 'dependencies')\n : undefined,\n config.validation === 'valibot' &&\n getLatestPackageVersion('valibot', 'dependencies'),\n config.addTestFactory &&\n getLatestPackageVersion('orchid-orm-test-factory', 'devDependencies'),\n getLatestPackageVersion('@types/node', 'devDependencies'),\n getLatestPackageVersion('typescript', 'devDependencies'),\n config.runner === 'vite-node' &&\n getLatestPackageVersion('vite', 'devDependencies'),\n config.runner !== 'bun' &&\n (config.runner === 'tsx'\n ? ([\n 'tsx',\n {\n // 4.9.1 is broken in tsx: https://github.com/privatenumber/tsx/issues/543\n version: '4.9.0',\n kind: 'devDependencies',\n },\n ] as [string, { version: string; kind: DependencyKind }])\n : getLatestPackageVersion(config.runner, 'devDependencies')),\n config.runner === 'vite-node' &&\n getLatestPackageVersion(\n 'rollup-plugin-node-externals',\n 'devDependencies',\n ),\n config.runner === 'tsx' &&\n getLatestPackageVersion('esbuild', 'devDependencies'),\n config.runner === 'tsx' &&\n getLatestPackageVersion('rimraf', 'devDependencies'),\n ]);\n\n const deps: Record<string, string> = {};\n const devDeps: Record<string, string> = {};\n for (const item of pairs) {\n if (!item) continue;\n const [key, { version, kind }] = item;\n (kind === 'dependencies' ? deps : devDeps)[key] = version;\n }\n\n const packageJsonPath = join(config.path, 'package.json');\n const content = await readFileSafe(packageJsonPath);\n let json = content\n ? JSON.parse(content)\n : {\n name: config.projectName,\n };\n\n if (config.esm) json = { name: json.name, type: 'module', ...json };\n\n const scripts = (json.scripts ??= {});\n\n if (config.runner === 'vite-node') {\n scripts.db = 'vite-node src/db/dbScript.ts --';\n scripts['build:migrations'] = 'vite build --config vite.migrations.mts';\n scripts['db:compiled'] = 'node dist/db/dbScript.mjs';\n } else if (config.runner === 'tsx') {\n scripts.db = 'NODE_ENV=development tsx src/db/dbScript.ts';\n scripts['build:migrations'] =\n 'rimraf dist/db && node esbuild.migrations.mjs';\n scripts['db:compiled'] = 'NODE_ENV=production node dist/db/dbScript.mjs';\n } else {\n scripts.db = `${config.runner} src/db/dbScript.ts`;\n\n if (config.runner === 'ts-node') {\n scripts.build = 'tsc';\n scripts['db:compiled'] = 'node dist/dbScript.js';\n }\n }\n\n if (!json.dependencies) json.dependencies = {};\n\n for (const key in deps) {\n json.dependencies[key] = deps[key];\n }\n\n if (!json.devDependencies) json.devDependencies = {};\n for (const key in devDeps) {\n json.devDependencies[key] = devDeps[key];\n }\n\n await fs.writeFile(packageJsonPath, JSON.stringify(json, null, ' ') + '\\n');\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupTSConfig(config: InitConfig): Promise<void> {\n if (config.hasTsConfig) return;\n\n const module = config.runner === 'ts-node' ? 'commonjs' : 'esnext';\n const moduleResolution =\n config.runner === 'ts-node'\n ? ''\n : `\n \"moduleResolution\": \"bundler\",`;\n\n const types = config.runner === 'vite-node' ? `[\"vite/client\"]` : undefined;\n\n const tsConfigPath = join(config.path, 'tsconfig.json');\n await fs.writeFile(\n tsConfigPath,\n `{\n \"compilerOptions\": {${\n config.runner === 'ts-node'\n ? `\n \"outDir\": \"dist\",`\n : ''\n }\n \"target\": \"es2017\",\n \"module\": \"${module}\",${moduleResolution}\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true${\n types\n ? `,\n \"types\": ${types}`\n : ''\n }\n }\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupEnv(config: InitConfig): Promise<void> {\n const envPath = join(config.path, '.env');\n let content = ((await readFileSafe(envPath)) || '').trim();\n let changed = false;\n\n // by default, on Mac it is a username, on Linux it's postgres, on Windows it's postgres as well\n const user = process.platform === 'darwin' ? process.env.USER : 'postgres';\n\n // TODO: guess user and pw\n if (!content.match(/^DATABASE_URL=/m)) {\n content += `\\nDATABASE_URL=postgres://${user}:@localhost:5432/dbname?ssl=false`;\n changed = true;\n }\n\n if (config.testDatabase && !content.match(/^DATABASE_TEST_URL=/m)) {\n content += `\\nDATABASE_TEST_URL=postgres://${user}:@localhost:5432/dbname-test?ssl=false`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(envPath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupGitIgnore(config: InitConfig): Promise<void> {\n const gitignorePath = join(config.path, '.gitignore');\n let content = ((await readFileSafe(gitignorePath)) || '').trim();\n let changed = false;\n\n if (!content.match(/^node_modules\\b/m)) {\n content += `\\nnode_modules`;\n changed = true;\n }\n\n if (!content.match(/^.env\\b/m)) {\n content += `\\n.env.?*\\n!.env.example`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(gitignorePath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupBaseTable(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'baseTable.ts');\n\n let content = `import { createBaseTable } from 'orchid-orm';${\n config.validation === 'zod'\n ? `\\nimport { zodSchemaConfig } from 'orchid-orm-schema-to-zod';`\n : config.validation === 'valibot'\n ? `\\nimport { valibotSchemaConfig } from 'orchid-orm-valibot';`\n : ''\n }\n\nexport const BaseTable = createBaseTable({\n // Set \\`snakeCase\\` to \\`true\\` if columns in your database are in snake_case.\n // snakeCase: true,${\n config.validation !== 'no'\n ? `\n\n schemaConfig: ${\n config.validation === 'zod' ? 'zodSchemaConfig' : 'valibotSchemaConfig'\n },`\n : ''\n }\n\n // Customize column types for all tables.\n columnTypes: (t) => ({\n ...t,${\n config.validation === 'no'\n ? ''\n : `\n // Set min and max validations for all text columns,\n // it is only checked when validating with ${config.validation} schemas derived from the table.\n text: (min = 0, max = Infinity) => t.text(min, max),`\n }`;\n\n const { timestamp } = config;\n if (timestamp && timestamp !== 'string') {\n content += `\n // Parse timestamps to ${timestamp === 'number' ? 'number' : 'Date object'}.\n timestamp: (precision?: number) => t.timestamp(precision).${\n timestamp === 'date' ? 'asDate' : 'asNumber'\n }(),`;\n }\n\n content += `\n }),\n});\n\nexport const { sql } = BaseTable;\n`;\n\n await fs.writeFile(filePath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupDemoTables(config: InitConfig): Promise<void> {\n if (!config.demoTables) return;\n\n const tablesDir = join(config.dbDirPath, 'tables');\n await fs.mkdir(tablesDir, { recursive: true });\n\n await fs.writeFile(\n join(tablesDir, 'post.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { CommentTable } from './comment.table';\n\n// Post type returned from database.\nexport type Post = Selectable<PostTable>;\n// Post type for insertion.\nexport type PostNew = Insertable<PostTable>;\n// Post type for updates.\nexport type PostUpdate = Updatable<PostTable>;\n// Post type used by query methods such as \\`where\\`.\nexport type PostForQuery = Queryable<PostTable>;\n\nexport class PostTable extends BaseTable {\n readonly table = 'post';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n title: t.text(3, 100).unique(),\n text: t.text(20, 10000),\n ...t.timestamps(),\n }));\n\n relations = {\n comments: this.hasMany(() => CommentTable, {\n primaryKey: 'id',\n foreignKey: 'postId',\n }),\n };\n}\n`,\n );\n\n await fs.writeFile(\n join(tablesDir, 'comment.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { PostTable } from './post.table';\n\n// Comment type returned from database.\nexport type Comment = Selectable<CommentTable>;\n// Comment type for insertion.\nexport type CommentNew = Insertable<CommentTable>;\n// Comment type for updates.\nexport type CommentUpdate = Updatable<CommentTable>;\n// Comment type used by query methods such as \\`where\\`.\nexport type CommentForQuery = Queryable<CommentTable>;\n\nexport class CommentTable extends BaseTable {\n readonly table = 'comment';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n postId: t\n .integer()\n .foreignKey(() => PostTable, 'id')\n .index(),\n text: t.text(5, 1000),\n ...t.timestamps(),\n }));\n\n relations = {\n post: this.belongsTo(() => PostTable, {\n primaryKey: 'id',\n foreignKey: 'postId',\n }),\n };\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupConfig(config: InitConfig): Promise<void> {\n const configPath = join(config.dbDirPath, 'config.ts');\n\n let content = `import 'dotenv/config';\n\nconst database = {\n databaseURL: process.env.DATABASE_URL,\n};\nif (!database.databaseURL) throw new Error('DATABASE_URL is missing in .env');`;\n\n if (config.testDatabase) {\n content += `\n\nconst testDatabase = {\n databaseURL: process.env.DATABASE_TEST_URL,\n};\n\nconst allDatabases = [database];\n\nif (testDatabase.databaseURL) {\n allDatabases.push(testDatabase);\n}`;\n }\n\n content += `\n\nexport const config = {`;\n\n if (config.testDatabase) {\n content += `\n allDatabases,`;\n }\n\n if (config.testDatabase) {\n content += `\n database: process.env.NODE_ENV === 'test' ? testDatabase : database,`;\n } else {\n content += `\n database,`;\n }\n content += `\n};\n`;\n\n await fs.writeFile(configPath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMainDb(config: InitConfig): Promise<void> {\n let imports = '';\n let tables = '';\n if (config.demoTables) {\n imports += `\nimport { PostTable } from './tables/post.table';\nimport { CommentTable } from './tables/comment.table';`;\n tables += `\n post: PostTable,\n comment: CommentTable,`;\n }\n\n const dbPath = join(config.dbDirPath, 'db.ts');\n await fs.writeFile(\n dbPath,\n `import { orchidORM } from 'orchid-orm';\nimport { config } from './config';${imports}\n\nexport const db = orchidORM(config.database, {${tables}\n});\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMigrationScript(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'dbScript.ts');\n\n const migrations =\n config.runner === 'vite-node'\n ? \"migrations: import.meta.glob('./migrations/*.ts')\"\n : \"migrationsPath: './migrations'\";\n\n await fs.writeFile(\n filePath,\n `import { rakeDb } from 'orchid-orm/migrations';\nimport { config } from './config';\nimport { BaseTable } from './baseTable';\n\nexport const change = rakeDb(${\n config.testDatabase ? 'config.allDatabases' : 'config.database'\n }, {\n baseTable: BaseTable,\n dbPath: './db',\n ${migrations},\n commands: {\n async seed() {\n const { seed } = await import('./seed');\n await seed();\n },\n },\n import: (path) => import(path),\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoMigrations(config: InitConfig): Promise<void> {\n const migrationsPath = join(config.dbDirPath, 'migrations');\n await fs.mkdir(migrationsPath, { recursive: true });\n\n if (!config.demoTables) return;\n\n const now = new Date();\n\n const postPath = join(migrationsPath, `0001_createPost.ts`);\n await fs.writeFile(\n postPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('post', (t) => ({\n id: t.identity().primaryKey(),\n title: t.text().unique(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n\n now.setTime(now.getTime() + 1000);\n\n const commentPath = join(migrationsPath, `0002_createComment.ts`);\n await fs.writeFile(\n commentPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('comment', (t) => ({\n id: t.identity().primaryKey(),\n postId: t.integer().foreignKey('post', 'id').index(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoSeed(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'seed.ts');\n\n let content;\n if (config.demoTables) {\n content = `await db.post.findBy({ title: 'Sample post' }).orCreate({\n title: 'Post',\n text: 'This is a text for a sample post. It contains words, spaces, and punctuation.',\n comments: {\n create: [\n {\n text: 'Nice post!',\n },\n {\n text: \\`Too long, didn't read\\`,\n },\n ],\n },\n });`;\n } else {\n content = `// create records here`;\n }\n\n await fs.writeFile(\n filePath,\n `import { db } from './db';\n\nexport const seed = async () => {\n ${content}\n\n await db.$close();\n};\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport fs from 'fs/promises';\nimport { join } from 'path';\n\nexport async function setupRunner(config: InitConfig): Promise<void> {\n if (config.runner === 'vite-node') {\n await fs.writeFile(\n join(config.path, 'vite.migrations.mts'),\n `import { resolve } from \"path\";\nimport { defineConfig, PluginOption } from \"vite\";\nimport { nodeExternals } from \"rollup-plugin-node-externals\";\n\nexport default defineConfig({\n plugins: [\n {\n ...nodeExternals(),\n name: \"node-externals\",\n enforce: \"pre\",\n apply: \"build\",\n } as PluginOption\n ],\n build: {\n outDir: resolve(__dirname, \"dist\", \"db\"),\n lib: {\n entry: resolve(__dirname, \"src/db/dbScript.ts\"),\n formats: [\"es\"],\n fileName: \"dbScript\",\n },\n rollupOptions: {\n external: [\"orchid-orm\"],\n output: {\n entryFileNames: \"[name].mjs\",\n chunkFileNames: \"[name].[hash].mjs\",\n },\n },\n },\n})\n`,\n );\n } else if (config.runner === 'tsx') {\n await fs.writeFile(\n join(config.path, 'esbuild.migrations.mjs'),\n `import { build } from \"esbuild\";\n\nawait Promise.all([\n build({\n entryPoints: [\"src/db/dbScript.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db\",\n outExtension: { '.js': '.mjs' },\n banner: {\n js: \\`\n import __path from 'node:path';\n import { fileURLToPath as __fileURLToPath } from 'node:url';\n import { createRequire as __createRequire } from 'module';\n const require = __createRequire(import.meta.url);\n const __filename = __fileURLToPath(import.meta.url);\n const __dirname = __path.dirname(__filename);\n \\`,\n },\n }),\n build({\n entryPoints: [\"src/db/migrations/*.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db/migrations\",\n outExtension: { '.js': '.mjs' },\n external: ['../dbScript'],\n plugins: [{\n name: 'add-js-suffix',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.importer) {\n return { path: args.path + '.mjs', external: true }\n }\n })\n },\n }],\n }),\n]);\n`,\n );\n }\n}\n","import { InitConfig } from '../lib';\nimport fs from 'fs/promises';\nimport { setupPackageJSON } from './init/setupPackageJSON';\nimport { setupTSConfig } from './init/setupTSConfig';\nimport { setupEnv } from './init/setupEnv';\nimport { setupGitIgnore } from './init/setupGitIgnore';\nimport { setupBaseTable } from './init/setupBaseTable';\nimport { setupDemoTables } from './init/setupDemoTables';\nimport { setupConfig } from './init/setupConfig';\nimport { setupMainDb } from './init/setupMainDb';\nimport { setupMigrationScript } from './init/setupMigrationScript';\nimport { createDemoMigrations } from './init/createDemoMigrations';\nimport { createDemoSeed } from './init/createDemoSeed';\nimport { setupRunner } from './init/setupRunner';\n\nexport async function init(config: InitConfig): Promise<void> {\n await fs.mkdir(config.dbDirPath, { recursive: true });\n\n for (const key in initSteps) {\n await initSteps[key as keyof typeof initSteps](config);\n }\n}\n\nexport const initSteps = {\n setupPackageJSON,\n setupTSConfig,\n setupEnv,\n setupGitIgnore,\n setupBaseTable,\n setupDemoTables,\n setupConfig,\n setupMainDb,\n setupMigrationScript,\n createDemoMigrations,\n createDemoSeed,\n setupRunner,\n};\n","import { relative } from 'path';\nimport { InitConfig } from '../lib';\nimport { getPackageManagerName } from './utils';\n\nexport function greetAfterInstall(\n config: InitConfig,\n logger: { log(message: string): void } = console,\n) {\n const relativePath = relative(process.cwd(), config.path);\n const manager = getPackageManagerName();\n const run = manager === 'npm' ? `npm run` : manager;\n\n logger.log(`\nThank you for trying Orchid ORM!\n \nTo finish setup,${\n relativePath ? ` cd to the project and` : ''\n } install dependencies:\n${\n relativePath\n ? `\n> cd ${relativePath}`\n : ''\n}\n> ${manager} i\n\nEnter the correct database credentials to the .env file,\nthen create the database:\n\n> ${run} db create\n\nAnd run the migrations:\n\n> ${run} db migrate\n`);\n}\n"],"names":[],"mappings":";;;;;AAIA,eAAsB,aAAa,IAAc,EAAA;AAC/C,EAAI,IAAA;AACF,IAAA,OAAO,MAAM,EAAA,CAAG,QAAS,CAAA,IAAA,EAAM,OAAO,CAAA,CAAA;AAAA,WAC/B,GAAP,EAAA;AACA,IAAK,IAAA,GAAA,CAAoC,SAAS,QAAU,EAAA;AAC1D,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACT;AACA,IAAM,MAAA,GAAA,CAAA;AAAA,GACR;AACF,CAAA;AAGgB,SAAA,uBAAA,CACd,MACA,IAC8D,EAAA;AAC9D,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAA,KAAA,CACG,GAAI,CAAA,CAAA,2BAAA,EAA8B,IAAe,CAAA,OAAA,CAAA,EAAA,CAAC,GAAQ,KAAA;AACzD,MAAA,IAAI,IAAO,GAAA,EAAA,CAAA;AACX,MAAA,GAAA,CAAI,EAAG,CAAA,MAAA,EAAQ,CAAC,KAAA,KAAW,QAAQ,KAAM,CAAA,CAAA;AACzC,MAAI,GAAA,CAAA,EAAA;AAAA,QAAG,KAAA;AAAA,QAAO,MACZ,OAAA,CAAQ,CAAC,IAAA,EAAM,EAAE,OAAS,EAAA,CAAA,CAAA,EAAI,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA,CAAE,OAAW,CAAA,CAAA,EAAA,IAAA,EAAM,CAAC,CAAA;AAAA,OACnE,CAAA;AAAA,KACD,CAAA,CACA,EAAG,CAAA,OAAA,EAAS,MAAM,CAAA,CAAA;AAAA,GACtB,CAAA,CAAA;AACH,CAAA;AAEO,SAAS,qBAAyD,GAAA;AACvE,EAAM,MAAA,EAAE,YAAa,EAAA,GAAI,OAAQ,CAAA,GAAA,CAAA;AACjC,EAAA,IAAI,YAAc,EAAA;AAChB,IAAM,MAAA,IAAA,GAAO,SAAS,YAAY,CAAA,CAAA;AAClC,IAAI,IAAA,KAAA,CAAM,IAAK,CAAA,IAAI,CAAG,EAAA;AACpB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AACA,IAAI,IAAA,MAAA,CAAO,IAAK,CAAA,IAAI,CAAG,EAAA;AACrB,MAAO,OAAA,MAAA,CAAA;AAAA,KACT;AACA,IAAI,IAAA,KAAA,CAAM,IAAK,CAAA,IAAI,CAAG,EAAA;AACpB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACF;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;;;;;;;;;;;;;;;;;;AC5CsB,eAAA,SAAA,CACpB,SAAyC,OACR,EAAA;AACjC,EAAA,IAAI,SAAY,GAAA,KAAA,CAAA;AAEhB,EAAA,MAAA,CAAO,IAAI,kCAAkC,CAAA,CAAA;AAE7C,EAAM,MAAA,KAAA,GAAQ,uBAA4B,KAAA,KAAA,CAAA;AAE1C,EAAA,MAAM,WAAW,MAAM,OAAA;AAAA,IACrB;AAAA,MACE;AAAA,QACE,IAAM,EAAA,MAAA;AAAA,QACN,IAAM,EAAA,MAAA;AAAA,QACN,OAAS,EAAA,8BAAA;AAAA,QACT,OAAA,EAAS,QAAQ,GAAI,EAAA;AAAA,OACvB;AAAA,MACA,GAAI,KACA,GAAA,EACA,GAAA;AAAA,QACE;AAAA,UACE,IAAM,EAAA,QAAA;AAAA,UACN,IAAM,EAAA,QAAA;AAAA,UACN,OAAS,EAAA,sCAAA;AAAA,UACT,OAAS,EAAA;AAAA,YACP;AAAA,cACE,KAAO,EAAA,KAAA;AAAA,cACP,KAAO,EAAA,KAAA;AAAA,aACT;AAAA,YACA;AAAA,cACE,KAAO,EAAA,WAAA;AAAA,cACP,KAAO,EAAA,WAAA;AAAA,aACT;AAAA,YACA;AAAA,cACE,KAAO,EAAA,SAAA;AAAA,cACP,KAAO,EAAA,SAAA;AAAA,aACT;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,MACJ;AAAA,QACE,IAAM,EAAA,QAAA;AAAA,QACN,IAAM,EAAA,WAAA;AAAA,QACN,OAAS,EAAA,uBAAA;AAAA,QACT,OAAS,EAAA;AAAA,UACP;AAAA,YACE,KAAO,EAAA,8BAAA;AAAA,YACP,KAAO,EAAA,QAAA;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAO,EAAA,gBAAA;AAAA,YACP,KAAO,EAAA,QAAA;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAO,EAAA,aAAA;AAAA,YACP,KAAO,EAAA,MAAA;AAAA,WACT;AAAA,SACF;AAAA,OACF;AAAA,MACA;AAAA,QACE,IAAM,EAAA,SAAA;AAAA,QACN,IAAM,EAAA,cAAA;AAAA,QACN,OAAS,EAAA,oCAAA;AAAA,OACX;AAAA,MACA;AAAA,QACE,IAAM,EAAA,QAAA;AAAA,QACN,IAAM,EAAA,YAAA;AAAA,QACN,OAAS,EAAA,sCAAA;AAAA,QACT,OAAS,EAAA;AAAA,UACP;AAAA,YACE,KAAO,EAAA,IAAA;AAAA,YACP,KAAO,EAAA,IAAA;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAO,EAAA,KAAA;AAAA,YACP,KAAO,EAAA,KAAA;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAO,EAAA,SAAA;AAAA,YACP,KAAO,EAAA,SAAA;AAAA,WACT;AAAA,SACF;AAAA,OACF;AAAA,MACA;AAAA,QACE,IAAM,EAAA,SAAA;AAAA,QACN,IAAM,EAAA,gBAAA;AAAA,QACN,OAAS,EAAA,yCAAA;AAAA,OACX;AAAA,MACA;AAAA,QACE,IAAM,EAAA,SAAA;AAAA,QACN,IAAM,EAAA,YAAA;AAAA,QACN,OAAS,EAAA,kBAAA;AAAA,OACX;AAAA,KACF;AAAA,IACA;AAAA,MACE,QAAW,GAAA;AACT,QAAY,SAAA,GAAA,IAAA,CAAA;AAAA,OACd;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAI,IAAA,KAAA;AAAO,IAAA,QAAA,CAAS,MAAS,GAAA,KAAA,CAAA;AAE7B,EAAI,IAAA,SAAA;AAAW,IAAA,OAAA;AAEf,EAAM,MAAA,IAAA,GAAO,OAAQ,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAClC,EAAM,MAAA,YAAA,GAAe,IAAK,CAAA,IAAA,EAAM,eAAe,CAAA,CAAA;AAC/C,EAAM,MAAA,WAAA,GAAc,MAAM,YAAA,CAAa,YAAY,CAAA,CAAA;AACnD,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,IAAM,EAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AAExC,EAAA,OAAO,mCACF,QADE,CAAA,EAAA;AAAA,IAEL,WAAA,EAAa,CAAC,CAAC,WAAA;AAAA,IACf,IAAA,EAAM,OAAQ,CAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IAC3B,SAAA;AAAA,IACA,WAAA,EAAa,SAAS,IAAI,CAAA;AAAA,IAC1B,GAAA,EAAK,SAAS,MAAW,KAAA,SAAA;AAAA,GAC3B,CAAA,CAAA;AACF;;;;;;;;;;;;;;;;;;AClHA,eAAsB,iBAAiB,MAAmC,EAAA;AAT1E,EAAA,IAAA,EAAA,CAAA;AAUE,EAAM,MAAA,KAAA,GAAQ,MAAM,OAAA,CAAQ,GAAI,CAAA;AAAA,IAC9B,uBAAA,CAAwB,UAAU,cAAc,CAAA;AAAA,IAChD,uBAAA,CAAwB,cAAc,cAAc,CAAA;AAAA,IACpD,MAAO,CAAA,UAAA,KAAe,KAClB,GAAA,uBAAA,CAAwB,0BAA4B,EAAA,cAAc,CAClE,GAAA,MAAA,CAAO,UAAe,KAAA,SAAA,GACtB,uBAAwB,CAAA,oBAAA,EAAsB,cAAc,CAC5D,GAAA,KAAA,CAAA;AAAA,IACJ,MAAO,CAAA,UAAA,KAAe,SACpB,IAAA,uBAAA,CAAwB,WAAW,cAAc,CAAA;AAAA,IACnD,MAAO,CAAA,cAAA,IACL,uBAAwB,CAAA,yBAAA,EAA2B,iBAAiB,CAAA;AAAA,IACtE,uBAAA,CAAwB,eAAe,iBAAiB,CAAA;AAAA,IACxD,uBAAA,CAAwB,cAAc,iBAAiB,CAAA;AAAA,IACvD,MAAO,CAAA,MAAA,KAAW,WAChB,IAAA,uBAAA,CAAwB,QAAQ,iBAAiB,CAAA;AAAA,IACnD,MAAO,CAAA,MAAA,KAAW,KACf,KAAA,MAAA,CAAO,WAAW,KACd,GAAA;AAAA,MACC,KAAA;AAAA,MACA;AAAA;AAAA,QAEE,OAAS,EAAA,OAAA;AAAA,QACT,IAAM,EAAA,iBAAA;AAAA,OACR;AAAA,KAEF,GAAA,uBAAA,CAAwB,MAAO,CAAA,MAAA,EAAQ,iBAAiB,CAAA,CAAA;AAAA,IAC9D,MAAA,CAAO,WAAW,WAChB,IAAA,uBAAA;AAAA,MACE,8BAAA;AAAA,MACA,iBAAA;AAAA,KACF;AAAA,IACF,MAAO,CAAA,MAAA,KAAW,KAChB,IAAA,uBAAA,CAAwB,WAAW,iBAAiB,CAAA;AAAA,IACtD,MAAO,CAAA,MAAA,KAAW,KAChB,IAAA,uBAAA,CAAwB,UAAU,iBAAiB,CAAA;AAAA,GACtD,CAAA,CAAA;AAED,EAAA,MAAM,OAA+B,EAAC,CAAA;AACtC,EAAA,MAAM,UAAkC,EAAC,CAAA;AACzC,EAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,IAAA,IAAI,CAAC,IAAA;AAAM,MAAA,SAAA;AACX,IAAA,MAAM,CAAC,GAAK,EAAA,EAAE,OAAS,EAAA,IAAA,EAAM,CAAI,GAAA,IAAA,CAAA;AACjC,IAAA,CAAC,IAAS,KAAA,cAAA,GAAiB,IAAO,GAAA,OAAA,EAAS,GAAG,CAAI,GAAA,OAAA,CAAA;AAAA,GACpD;AAEA,EAAA,MAAM,eAAkB,GAAA,IAAA,CAAK,MAAO,CAAA,IAAA,EAAM,cAAc,CAAA,CAAA;AACxD,EAAM,MAAA,OAAA,GAAU,MAAM,YAAA,CAAa,eAAe,CAAA,CAAA;AAClD,EAAA,IAAI,IAAO,GAAA,OAAA,GACP,IAAK,CAAA,KAAA,CAAM,OAAO,CAClB,GAAA;AAAA,IACE,MAAM,MAAO,CAAA,WAAA;AAAA,GACf,CAAA;AAEJ,EAAA,IAAI,MAAO,CAAA,GAAA;AAAK,IAAA,IAAA,GAAO,cAAE,CAAA,EAAA,IAAA,EAAM,IAAK,CAAA,IAAA,EAAM,MAAM,QAAa,EAAA,EAAA,IAAA,CAAA,CAAA;AAE7D,EAAA,MAAM,OAAW,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAL,KAAA,IAAA,GAAA,EAAA,GAAA,IAAA,CAAK,UAAY,EAAC,CAAA;AAEnC,EAAI,IAAA,MAAA,CAAO,WAAW,WAAa,EAAA;AACjC,IAAA,OAAA,CAAQ,EAAK,GAAA,iCAAA,CAAA;AACb,IAAA,OAAA,CAAQ,kBAAkB,CAAI,GAAA,yCAAA,CAAA;AAC9B,IAAA,OAAA,CAAQ,aAAa,CAAI,GAAA,2BAAA,CAAA;AAAA,GAC3B,MAAA,IAAW,MAAO,CAAA,MAAA,KAAW,KAAO,EAAA;AAClC,IAAA,OAAA,CAAQ,EAAK,GAAA,6CAAA,CAAA;AACb,IAAA,OAAA,CAAQ,kBAAkB,CACxB,GAAA,+CAAA,CAAA;AACF,IAAA,OAAA,CAAQ,aAAa,CAAI,GAAA,+CAAA,CAAA;AAAA,GACpB,MAAA;AACL,IAAQ,OAAA,CAAA,EAAA,GAAK,GAAG,MAAO,CAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;AAEvB,IAAI,IAAA,MAAA,CAAO,WAAW,SAAW,EAAA;AAC/B,MAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAChB,MAAA,OAAA,CAAQ,aAAa,CAAI,GAAA,uBAAA,CAAA;AAAA,KAC3B;AAAA,GACF;AAEA,EAAA,IAAI,CAAC,IAAK,CAAA,YAAA;AAAc,IAAA,IAAA,CAAK,eAAe,EAAC,CAAA;AAE7C,EAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,IAAA,IAAA,CAAK,YAAa,CAAA,GAAG,CAAI,GAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,GACnC;AAEA,EAAA,IAAI,CAAC,IAAK,CAAA,eAAA;AAAiB,IAAA,IAAA,CAAK,kBAAkB,EAAC,CAAA;AACnD,EAAA,KAAA,MAAW,OAAO,OAAS,EAAA;AACzB,IAAA,IAAA,CAAK,eAAgB,CAAA,GAAG,CAAI,GAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAAA,GACzC;AAEA,EAAM,MAAA,EAAA,CAAG,UAAU,eAAiB,EAAA,IAAA,CAAK,UAAU,IAAM,EAAA,IAAA,EAAM,IAAI,CAAA,GAAI,IAAI,CAAA,CAAA;AAC7E;;AC9FA,eAAsB,cAAc,MAAmC,EAAA;AACrE,EAAA,IAAI,MAAO,CAAA,WAAA;AAAa,IAAA,OAAA;AAExB,EAAA,MAAM,MAAS,GAAA,MAAA,CAAO,MAAW,KAAA,SAAA,GAAY,UAAa,GAAA,QAAA,CAAA;AAC1D,EAAA,MAAM,gBACJ,GAAA,MAAA,CAAO,MAAW,KAAA,SAAA,GACd,EACA,GAAA,CAAA;AAAA,kCAAA,CAAA,CAAA;AAGN,EAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,MAAW,KAAA,WAAA,GAAc,CAAoB,eAAA,CAAA,GAAA,KAAA,CAAA,CAAA;AAElE,EAAA,MAAM,YAAe,GAAA,IAAA,CAAK,MAAO,CAAA,IAAA,EAAM,eAAe,CAAA,CAAA;AACtD,EAAA,MAAM,EAAG,CAAA,SAAA;AAAA,IACP,YAAA;AAAA,IACA,CAAA;AAAA,sBAEA,EAAA,MAAA,CAAO,WAAW,SACd,GAAA,CAAA;AAAA,qBAEA,CAAA,GAAA,EAAA,CAAA;AAAA;AAAA,eAAA,EAGS,MAAW,CAAA,EAAA,EAAA,gBAAA,CAAA;AAAA;AAAA;AAAA;AAAA,wBAAA,EAKtB,KACI,GAAA,CAAA;AAAA,aAAA,EACK,KACL,CAAA,CAAA,GAAA,EAAA,CAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAKR,CAAA;AACF;;ACpCA,eAAsB,SAAS,MAAmC,EAAA;AAChE,EAAA,MAAM,OAAU,GAAA,IAAA,CAAK,MAAO,CAAA,IAAA,EAAM,MAAM,CAAA,CAAA;AACxC,EAAA,IAAI,WAAY,MAAM,YAAA,CAAa,OAAO,CAAA,IAAM,IAAI,IAAK,EAAA,CAAA;AACzD,EAAA,IAAI,OAAU,GAAA,KAAA,CAAA;AAGd,EAAA,MAAM,OAAO,OAAQ,CAAA,QAAA,KAAa,QAAW,GAAA,OAAA,CAAQ,IAAI,IAAO,GAAA,UAAA,CAAA;AAGhE,EAAA,IAAI,CAAC,OAAA,CAAQ,KAAM,CAAA,iBAAiB,CAAG,EAAA;AACrC,IAAW,OAAA,IAAA,CAAA;AAAA,wBAA6B,EAAA,IAAA,CAAA,iCAAA,CAAA,CAAA;AACxC,IAAU,OAAA,GAAA,IAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,OAAO,YAAgB,IAAA,CAAC,OAAQ,CAAA,KAAA,CAAM,sBAAsB,CAAG,EAAA;AACjE,IAAW,OAAA,IAAA,CAAA;AAAA,6BAAkC,EAAA,IAAA,CAAA,sCAAA,CAAA,CAAA;AAC7C,IAAU,OAAA,GAAA,IAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,MAAM,EAAG,CAAA,SAAA,CAAU,OAAS,EAAA,CAAA,EAAG,QAAQ,IAAK,EAAA,CAAA;AAAA,CAAK,CAAA,CAAA;AAAA,GACnD;AACF;;ACtBA,eAAsB,eAAe,MAAmC,EAAA;AACtE,EAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,MAAO,CAAA,IAAA,EAAM,YAAY,CAAA,CAAA;AACpD,EAAA,IAAI,WAAY,MAAM,YAAA,CAAa,aAAa,CAAA,IAAM,IAAI,IAAK,EAAA,CAAA;AAC/D,EAAA,IAAI,OAAU,GAAA,KAAA,CAAA;AAEd,EAAA,IAAI,CAAC,OAAA,CAAQ,KAAM,CAAA,kBAAkB,CAAG,EAAA;AACtC,IAAW,OAAA,IAAA,CAAA;AAAA,YAAA,CAAA,CAAA;AACX,IAAU,OAAA,GAAA,IAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,CAAC,OAAA,CAAQ,KAAM,CAAA,UAAU,CAAG,EAAA;AAC9B,IAAW,OAAA,IAAA,CAAA;AAAA;AAAA,aAAA,CAAA,CAAA;AACX,IAAU,OAAA,GAAA,IAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,MAAM,EAAG,CAAA,SAAA,CAAU,aAAe,EAAA,CAAA,EAAG,QAAQ,IAAK,EAAA,CAAA;AAAA,CAAK,CAAA,CAAA;AAAA,GACzD;AACF;;ACnBA,eAAsB,eAAe,MAAmC,EAAA;AACtE,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,MAAO,CAAA,SAAA,EAAW,cAAc,CAAA,CAAA;AAEtD,EAAA,IAAI,OAAU,GAAA,CAAA,6CAAA,EACZ,MAAO,CAAA,UAAA,KAAe,KAClB,GAAA,CAAA;AAAA,2DACA,CAAA,GAAA,MAAA,CAAO,eAAe,SACtB,GAAA,CAAA;AAAA,yDACA,CAAA,GAAA,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA,qBAMJ,EAAA,MAAA,CAAO,eAAe,IAClB,GAAA,CAAA;AAAA;AAAA,gBAAA,EAGJ,MAAO,CAAA,UAAA,KAAe,KAAQ,GAAA,iBAAA,GAAoB,qBAE9C,CAAA,CAAA,CAAA,GAAA,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA,SAMF,EAAA,MAAA,CAAO,UAAe,KAAA,IAAA,GAClB,EACA,GAAA,CAAA;AAAA;AAAA,+CAAA,EAEuC,MAAO,CAAA,UAAA,CAAA;AAAA,wDAAA,CAAA,CAAA,CAAA,CAAA;AAItD,EAAM,MAAA,EAAE,WAAc,GAAA,MAAA,CAAA;AACtB,EAAI,IAAA,SAAA,IAAa,cAAc,QAAU,EAAA;AACvC,IAAW,OAAA,IAAA,CAAA;AAAA,2BACc,EAAA,SAAA,KAAc,WAAW,QAAW,GAAA,aAAA,CAAA;AAAA,8DAE3D,EAAA,SAAA,KAAc,SAAS,QAAW,GAAA,UAAA,CAAA,GAAA,CAAA,CAAA;AAAA,GAEtC;AAEA,EAAW,OAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAOX,EAAM,MAAA,EAAA,CAAG,SAAU,CAAA,QAAA,EAAU,OAAO,CAAA,CAAA;AACtC;;ACnDA,eAAsB,gBAAgB,MAAmC,EAAA;AACvE,EAAA,IAAI,CAAC,MAAO,CAAA,UAAA;AAAY,IAAA,OAAA;AAExB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,MAAO,CAAA,SAAA,EAAW,QAAQ,CAAA,CAAA;AACjD,EAAA,MAAM,GAAG,KAAM,CAAA,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA,CAAA;AAE7C,EAAA,MAAM,EAAG,CAAA,SAAA;AAAA,IACP,IAAA,CAAK,WAAW,eAAe,CAAA;AAAA,IAC/B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GA8BF,CAAA;AAEA,EAAA,MAAM,EAAG,CAAA,SAAA;AAAA,IACP,IAAA,CAAK,WAAW,kBAAkB,CAAA;AAAA,IAClC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAiCF,CAAA;AACF;;AC5EA,eAAsB,YAAY,MAAmC,EAAA;AACnE,EAAA,MAAM,UAAa,GAAA,IAAA,CAAK,MAAO,CAAA,SAAA,EAAW,WAAW,CAAA,CAAA;AAErD,EAAA,IAAI,OAAU,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8EAAA,CAAA,CAAA;AAOd,EAAA,IAAI,OAAO,YAAc,EAAA;AACvB,IAAW,OAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA,CAAA;AAAA,GAWb;AAEA,EAAW,OAAA,IAAA,CAAA;AAAA;AAAA,uBAAA,CAAA,CAAA;AAIX,EAAA,IAAI,OAAO,YAAc,EAAA;AACvB,IAAW,OAAA,IAAA,CAAA;AAAA,eAAA,CAAA,CAAA;AAAA,GAEb;AAEA,EAAA,IAAI,OAAO,YAAc,EAAA;AACvB,IAAW,OAAA,IAAA,CAAA;AAAA,sEAAA,CAAA,CAAA;AAAA,GAEN,MAAA;AACL,IAAW,OAAA,IAAA,CAAA;AAAA,WAAA,CAAA,CAAA;AAAA,GAEb;AACA,EAAW,OAAA,IAAA,CAAA;AAAA;AAAA,CAAA,CAAA;AAIX,EAAM,MAAA,EAAA,CAAG,SAAU,CAAA,UAAA,EAAY,OAAO,CAAA,CAAA;AACxC;;AC7CA,eAAsB,YAAY,MAAmC,EAAA;AACnE,EAAA,IAAI,OAAU,GAAA,EAAA,CAAA;AACd,EAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AACb,EAAA,IAAI,OAAO,UAAY,EAAA;AACrB,IAAW,OAAA,IAAA,CAAA;AAAA;AAAA,sDAAA,CAAA,CAAA;AAGX,IAAU,MAAA,IAAA,CAAA;AAAA;AAAA,wBAAA,CAAA,CAAA;AAAA,GAGZ;AAEA,EAAA,MAAM,MAAS,GAAA,IAAA,CAAK,MAAO,CAAA,SAAA,EAAW,OAAO,CAAA,CAAA;AAC7C,EAAA,MAAM,EAAG,CAAA,SAAA;AAAA,IACP,MAAA;AAAA,IACA,CAAA;AAAA,kCACgC,EAAA,OAAA,CAAA;AAAA;AAAA,8CAEY,EAAA,MAAA,CAAA;AAAA;AAAA,CAAA;AAAA,GAG9C,CAAA;AACF;;ACtBA,eAAsB,qBAAqB,MAAmC,EAAA;AAC5E,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,MAAO,CAAA,SAAA,EAAW,aAAa,CAAA,CAAA;AAErD,EAAA,MAAM,UACJ,GAAA,MAAA,CAAO,MAAW,KAAA,WAAA,GACd,mDACA,GAAA,gCAAA,CAAA;AAEN,EAAA,MAAM,EAAG,CAAA,SAAA;AAAA,IACP,QAAA;AAAA,IACA,CAAA;AAAA;AAAA;AAAA;AAAA,6BAKE,EAAA,MAAA,CAAO,eAAe,qBAAwB,GAAA,iBAAA,CAAA;AAAA;AAAA;AAAA,EAIhD,EAAA,UAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAUF,CAAA;AACF;;AC9BA,eAAsB,qBAAqB,MAAmC,EAAA;AAC5E,EAAA,MAAM,cAAiB,GAAA,IAAA,CAAK,MAAO,CAAA,SAAA,EAAW,YAAY,CAAA,CAAA;AAC1D,EAAA,MAAM,GAAG,KAAM,CAAA,cAAA,EAAgB,EAAE,SAAA,EAAW,MAAM,CAAA,CAAA;AAElD,EAAA,IAAI,CAAC,MAAO,CAAA,UAAA;AAAY,IAAA,OAAA;AAExB,EAAM,MAAA,GAAA,uBAAU,IAAK,EAAA,CAAA;AAErB,EAAM,MAAA,QAAA,GAAW,IAAK,CAAA,cAAA,EAAgB,CAAoB,kBAAA,CAAA,CAAA,CAAA;AAC1D,EAAA,MAAM,EAAG,CAAA,SAAA;AAAA,IACP,QAAA;AAAA,IACA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAWF,CAAA;AAEA,EAAA,GAAA,CAAI,OAAQ,CAAA,GAAA,CAAI,OAAQ,EAAA,GAAI,GAAI,CAAA,CAAA;AAEhC,EAAM,MAAA,WAAA,GAAc,IAAK,CAAA,cAAA,EAAgB,CAAuB,qBAAA,CAAA,CAAA,CAAA;AAChE,EAAA,MAAM,EAAG,CAAA,SAAA;AAAA,IACP,WAAA;AAAA,IACA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAWF,CAAA;AACF;;ACzCA,eAAsB,eAAe,MAAmC,EAAA;AACtE,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,MAAO,CAAA,SAAA,EAAW,SAAS,CAAA,CAAA;AAEjD,EAAI,IAAA,OAAA,CAAA;AACJ,EAAA,IAAI,OAAO,UAAY,EAAA;AACrB,IAAU,OAAA,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAcL,MAAA;AACL,IAAU,OAAA,GAAA,CAAA,sBAAA,CAAA,CAAA;AAAA,GACZ;AAEA,EAAA,MAAM,EAAG,CAAA,SAAA;AAAA,IACP,QAAA;AAAA,IACA,CAAA;AAAA;AAAA;AAAA,EAGA,EAAA,OAAA,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAKF,CAAA;AACF;;AClCA,eAAsB,YAAY,MAAmC,EAAA;AACnE,EAAI,IAAA,MAAA,CAAO,WAAW,WAAa,EAAA;AACjC,IAAA,MAAM,EAAG,CAAA,SAAA;AAAA,MACP,IAAA,CAAK,MAAO,CAAA,IAAA,EAAM,qBAAqB,CAAA;AAAA,MACvC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,KA8BF,CAAA;AAAA,GACF,MAAA,IAAW,MAAO,CAAA,MAAA,KAAW,KAAO,EAAA;AAClC,IAAA,MAAM,EAAG,CAAA,SAAA;AAAA,MACP,IAAA,CAAK,MAAO,CAAA,IAAA,EAAM,wBAAwB,CAAA;AAAA,MAC1C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,KA0CF,CAAA;AAAA,GACF;AACF;;ACvEA,eAAsB,KAAK,MAAmC,EAAA;AAC5D,EAAA,MAAM,GAAG,KAAM,CAAA,MAAA,CAAO,WAAW,EAAE,SAAA,EAAW,MAAM,CAAA,CAAA;AAEpD,EAAA,KAAA,MAAW,OAAO,SAAW,EAAA;AAC3B,IAAM,MAAA,SAAA,CAAU,GAA6B,CAAA,CAAE,MAAM,CAAA,CAAA;AAAA,GACvD;AACF,CAAA;AAEO,MAAM,SAAY,GAAA;AAAA,EACvB,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AACF,CAAA;;AChCgB,SAAA,iBAAA,CACd,MACA,EAAA,MAAA,GAAyC,OACzC,EAAA;AACA,EAAA,MAAM,eAAe,QAAS,CAAA,OAAA,CAAQ,GAAI,EAAA,EAAG,OAAO,IAAI,CAAA,CAAA;AACxD,EAAA,MAAM,UAAU,qBAAsB,EAAA,CAAA;AACtC,EAAM,MAAA,GAAA,GAAM,OAAY,KAAA,KAAA,GAAQ,CAAY,OAAA,CAAA,GAAA,OAAA,CAAA;AAE5C,EAAA,MAAA,CAAO,GAAI,CAAA,CAAA;AAAA;AAAA;AAAA,gBAAA,EAIT,eAAe,CAA2B,sBAAA,CAAA,GAAA,EAAA,CAAA;AAAA,EAG5C,YACI,GAAA,CAAA;AAAA,KAAA,EACC,YACD,CAAA,CAAA,GAAA,EAAA,CAAA;AAAA,EAEF,EAAA,OAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,EAAA,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAIA,EAAA,GAAA,CAAA;AAAA,CACH,CAAA,CAAA;AACD;;;;"}
|
|
1
|
+
{"version":3,"file":"lib.mjs","sources":["../src/lib/utils.ts","../src/lib/getConfig.ts","../src/lib/init/setupPackageJSON.ts","../src/lib/init/setupTSConfig.ts","../src/lib/init/setupEnv.ts","../src/lib/init/setupGitIgnore.ts","../src/lib/init/setupBaseTable.ts","../src/lib/init/setupDemoTables.ts","../src/lib/init/setupConfig.ts","../src/lib/init/setupMainDb.ts","../src/lib/init/setupMigrationScript.ts","../src/lib/init/createDemoMigrations.ts","../src/lib/init/createDemoSeed.ts","../src/lib/init/setupRunner.ts","../src/lib/init.ts","../src/lib/greetAfterInstall.ts"],"sourcesContent":["import fs from 'fs/promises';\nimport { basename } from 'path';\nimport https from 'https';\n\nexport async function readFileSafe(path: string) {\n try {\n return await fs.readFile(path, 'utf-8');\n } catch (err) {\n if ((err as unknown as { code: string }).code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n}\n\nexport type DependencyKind = 'dependencies' | 'devDependencies';\nexport function getLatestPackageVersion(\n name: string,\n kind: DependencyKind,\n): Promise<[string, { version: string; kind: DependencyKind }]> {\n return new Promise((resolve, reject) => {\n https\n .get(`https://registry.npmjs.org/${name}/latest`, (res) => {\n let data = '';\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () =>\n resolve([name, { version: `^${JSON.parse(data).version}`, kind }]),\n );\n })\n .on('error', reject);\n });\n}\n\nexport function getPackageManagerName(): 'npm' | 'yarn' | 'pnpm' | 'bun' {\n const { npm_execpath } = process.env;\n if (npm_execpath) {\n const name = basename(npm_execpath);\n if (/npm/.test(name)) {\n return 'npm';\n }\n if (/yarn/.test(name)) {\n return 'yarn';\n }\n if (/bun/.test(name)) {\n return 'bun';\n }\n }\n\n return 'pnpm';\n}\n","import prompts from 'prompts';\nimport { join, resolve, basename } from 'path';\nimport { InitConfig, UserProvidedConfig } from '../lib';\nimport { getPackageManagerName, readFileSafe } from './utils';\n\nexport async function getConfig(\n logger: { log(message: string): void } = console,\n): Promise<InitConfig | undefined> {\n let cancelled = false;\n\n logger.log('Welcome to Orchid ORM installer!');\n\n const isBun = getPackageManagerName() === 'bun';\n\n const response = await prompts<keyof UserProvidedConfig>(\n [\n {\n type: 'text',\n name: 'path',\n message: 'Where to install Orchid ORM?',\n initial: process.cwd(),\n },\n ...(isBun\n ? []\n : [\n {\n type: 'select' as const,\n name: 'runner' as const,\n message: 'Choose a tool for executing TS files',\n choices: [\n {\n title: 'tsx',\n value: 'tsx',\n },\n {\n title: 'vite-node',\n value: 'vite-node',\n },\n {\n title: 'ts-node',\n value: 'ts-node',\n },\n ],\n },\n ]),\n {\n type: 'select',\n name: 'timestamp',\n message: 'Return timestamps as:',\n choices: [\n {\n title: 'string (as returned from db)',\n value: 'string',\n },\n {\n title: 'number (epoch)',\n value: 'number',\n },\n {\n title: 'Date object',\n value: 'date',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'testDatabase',\n message: 'Add a separate database for tests?',\n },\n {\n type: 'select',\n name: 'validation',\n message: 'Integrate with a validation library?',\n choices: [\n {\n title: 'no',\n value: 'no',\n },\n {\n title: 'zod',\n value: 'zod',\n },\n {\n title: 'valibot',\n value: 'valibot',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'addTestFactory',\n message: 'Add record factories for writing tests?',\n },\n {\n type: 'confirm',\n name: 'demoTables',\n message: 'Add demo tables?',\n },\n ],\n {\n onCancel() {\n cancelled = true;\n },\n },\n );\n\n if (isBun) response.runner = 'bun';\n\n if (cancelled) return;\n\n const path = resolve(response.path);\n const tsConfigPath = join(path, 'tsconfig.json');\n const hasTsConfig = await readFileSafe(tsConfigPath);\n const dbDirPath = join(path, 'src', 'db');\n\n return {\n ...response,\n hasTsConfig: !!hasTsConfig,\n path: resolve(response.path),\n dbDirPath,\n projectName: basename(path),\n esm: response.runner !== 'ts-node',\n };\n}\n","import { InitConfig } from '../../lib';\nimport {\n DependencyKind,\n getLatestPackageVersion,\n readFileSafe,\n} from '../utils';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupPackageJSON(config: InitConfig): Promise<void> {\n const pairs = await Promise.all([\n getLatestPackageVersion('dotenv', 'dependencies'),\n getLatestPackageVersion('orchid-orm', 'dependencies'),\n config.validation === 'zod'\n ? getLatestPackageVersion('orchid-orm-schema-to-zod', 'dependencies')\n : config.validation === 'valibot'\n ? getLatestPackageVersion('orchid-orm-valibot', 'dependencies')\n : undefined,\n config.validation === 'valibot' &&\n getLatestPackageVersion('valibot', 'dependencies'),\n config.addTestFactory &&\n getLatestPackageVersion('orchid-orm-test-factory', 'devDependencies'),\n getLatestPackageVersion('@types/node', 'devDependencies'),\n getLatestPackageVersion('typescript', 'devDependencies'),\n config.runner === 'vite-node' &&\n getLatestPackageVersion('vite', 'devDependencies'),\n config.runner !== 'bun' &&\n (config.runner === 'tsx'\n ? ([\n 'tsx',\n {\n // 4.9.1 is broken in tsx: https://github.com/privatenumber/tsx/issues/543\n version: '4.9.0',\n kind: 'devDependencies',\n },\n ] as [string, { version: string; kind: DependencyKind }])\n : getLatestPackageVersion(config.runner, 'devDependencies')),\n config.runner === 'vite-node' &&\n getLatestPackageVersion(\n 'rollup-plugin-node-externals',\n 'devDependencies',\n ),\n config.runner === 'tsx' &&\n getLatestPackageVersion('esbuild', 'devDependencies'),\n config.runner === 'tsx' &&\n getLatestPackageVersion('rimraf', 'devDependencies'),\n ]);\n\n const deps: Record<string, string> = {};\n const devDeps: Record<string, string> = {};\n for (const item of pairs) {\n if (!item) continue;\n const [key, { version, kind }] = item;\n (kind === 'dependencies' ? deps : devDeps)[key] = version;\n }\n\n const packageJsonPath = join(config.path, 'package.json');\n const content = await readFileSafe(packageJsonPath);\n let json = content\n ? JSON.parse(content)\n : {\n name: config.projectName,\n };\n\n if (config.esm) json = { name: json.name, type: 'module', ...json };\n\n const scripts = (json.scripts ??= {});\n\n if (config.runner === 'vite-node') {\n scripts.db = 'vite-node src/db/dbScript.ts --';\n scripts['build:migrations'] = 'vite build --config vite.migrations.mts';\n scripts['db:compiled'] = 'node dist/db/dbScript.mjs';\n } else if (config.runner === 'tsx') {\n scripts.db = 'NODE_ENV=development tsx src/db/dbScript.ts';\n scripts['build:migrations'] =\n 'rimraf dist/db && node esbuild.migrations.mjs';\n scripts['db:compiled'] = 'NODE_ENV=production node dist/db/dbScript.mjs';\n } else {\n scripts.db = `${config.runner} src/db/dbScript.ts`;\n\n if (config.runner === 'ts-node') {\n scripts.build = 'tsc';\n scripts['db:compiled'] = 'node dist/dbScript.js';\n }\n }\n\n if (!json.dependencies) json.dependencies = {};\n\n for (const key in deps) {\n json.dependencies[key] = deps[key];\n }\n\n if (!json.devDependencies) json.devDependencies = {};\n for (const key in devDeps) {\n json.devDependencies[key] = devDeps[key];\n }\n\n await fs.writeFile(packageJsonPath, JSON.stringify(json, null, ' ') + '\\n');\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupTSConfig(config: InitConfig): Promise<void> {\n if (config.hasTsConfig) return;\n\n const module = config.runner === 'ts-node' ? 'commonjs' : 'esnext';\n const moduleResolution =\n config.runner === 'ts-node'\n ? ''\n : `\n \"moduleResolution\": \"bundler\",`;\n\n const types = config.runner === 'vite-node' ? `[\"vite/client\"]` : undefined;\n\n const tsConfigPath = join(config.path, 'tsconfig.json');\n await fs.writeFile(\n tsConfigPath,\n `{\n \"compilerOptions\": {${\n config.runner === 'ts-node'\n ? `\n \"outDir\": \"dist\",`\n : ''\n }\n \"target\": \"es2017\",\n \"module\": \"${module}\",${moduleResolution}\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true${\n types\n ? `,\n \"types\": ${types}`\n : ''\n }\n }\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupEnv(config: InitConfig): Promise<void> {\n const envPath = join(config.path, '.env');\n let content = ((await readFileSafe(envPath)) || '').trim();\n let changed = false;\n\n // by default, on Mac it is a username, on Linux it's postgres, on Windows it's postgres as well\n const user = process.platform === 'darwin' ? process.env.USER : 'postgres';\n\n // TODO: guess user and pw\n if (!content.match(/^DATABASE_URL=/m)) {\n content += `\\nDATABASE_URL=postgres://${user}:@localhost:5432/dbname?ssl=false`;\n changed = true;\n }\n\n if (config.testDatabase && !content.match(/^DATABASE_TEST_URL=/m)) {\n content += `\\nDATABASE_TEST_URL=postgres://${user}:@localhost:5432/dbname-test?ssl=false`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(envPath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport { readFileSafe } from '../utils';\nimport fs from 'fs/promises';\n\nexport async function setupGitIgnore(config: InitConfig): Promise<void> {\n const gitignorePath = join(config.path, '.gitignore');\n let content = ((await readFileSafe(gitignorePath)) || '').trim();\n let changed = false;\n\n if (!content.match(/^node_modules\\b/m)) {\n content += `\\nnode_modules`;\n changed = true;\n }\n\n if (!content.match(/^.env\\b/m)) {\n content += `\\n.env.?*\\n!.env.example`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(gitignorePath, `${content.trim()}\\n`);\n }\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupBaseTable(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'baseTable.ts');\n\n const { timestamp } = config;\n const customTimestamp = timestamp && timestamp !== 'string';\n const columnTypesComment = customTimestamp ? '' : '// ';\n\n let content = `import { createBaseTable } from 'orchid-orm';${\n config.validation === 'zod'\n ? `\\nimport { zodSchemaConfig } from 'orchid-orm-schema-to-zod';`\n : config.validation === 'valibot'\n ? `\\nimport { valibotSchemaConfig } from 'orchid-orm-valibot';`\n : ''\n }\n\nexport const BaseTable = createBaseTable({\n // Set \\`snakeCase\\` to \\`true\\` if columns in your database are in snake_case.\n // snakeCase: true,${\n config.validation !== 'no'\n ? `\n\n schemaConfig: ${\n config.validation === 'zod' ? 'zodSchemaConfig' : 'valibotSchemaConfig'\n },`\n : ''\n }\n\n // Customize column types for all tables.\n ${columnTypesComment}columnTypes: (t) => ({\n ${columnTypesComment} ...t,`;\n\n if (customTimestamp) {\n content += `\n // Parse timestamps to ${timestamp === 'number' ? 'number' : 'Date object'}.\n timestamp: (precision?: number) => t.timestamp(precision).${\n timestamp === 'date' ? 'asDate' : 'asNumber'\n }(),`;\n }\n\n content += `\n ${columnTypesComment}}),\n});\n\nexport const { sql } = BaseTable;\n`;\n\n await fs.writeFile(filePath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupDemoTables(config: InitConfig): Promise<void> {\n if (!config.demoTables) return;\n\n const tablesDir = join(config.dbDirPath, 'tables');\n await fs.mkdir(tablesDir, { recursive: true });\n\n const hasValidation = config.validation !== 'no';\n\n await fs.writeFile(\n join(tablesDir, 'post.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { CommentTable } from './comment.table';\n\n// Post type returned from database.\nexport type Post = Selectable<PostTable>;\n// Post type for insertion.\nexport type PostNew = Insertable<PostTable>;\n// Post type for updates.\nexport type PostUpdate = Updatable<PostTable>;\n// Post type used by query methods such as \\`where\\`.\nexport type PostForQuery = Queryable<PostTable>;\n\nexport class PostTable extends BaseTable {\n readonly table = 'post';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n title: t.text()${hasValidation ? '.min(3).max(100)' : ''}.unique(),\n text: t.text()${hasValidation ? '.min(20).max(10000)' : ''},\n ...t.timestamps(),\n }));\n\n relations = {\n comments: this.hasMany(() => CommentTable, {\n columns: ['id'],\n references: ['postId'],\n }),\n };\n}\n`,\n );\n\n await fs.writeFile(\n join(tablesDir, 'comment.table.ts'),\n `import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';\nimport { BaseTable } from '../baseTable';\nimport { PostTable } from './post.table';\n\n// Comment type returned from database.\nexport type Comment = Selectable<CommentTable>;\n// Comment type for insertion.\nexport type CommentNew = Insertable<CommentTable>;\n// Comment type for updates.\nexport type CommentUpdate = Updatable<CommentTable>;\n// Comment type used by query methods such as \\`where\\`.\nexport type CommentForQuery = Queryable<CommentTable>;\n\nexport class CommentTable extends BaseTable {\n readonly table = 'comment';\n columns = this.setColumns((t) => ({\n id: t.identity().primaryKey(),\n postId: t\n .integer()\n .foreignKey(() => PostTable, 'id')\n .index(),\n text: t.text()${hasValidation ? '.min(5).max(1000)' : ''},\n ...t.timestamps(),\n }));\n\n relations = {\n post: this.belongsTo(() => PostTable, {\n columns: ['postId'],\n references: ['id'],\n }),\n };\n}\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupConfig(config: InitConfig): Promise<void> {\n const configPath = join(config.dbDirPath, 'config.ts');\n\n let content = `import 'dotenv/config';\n\nconst database = {\n databaseURL: process.env.DATABASE_URL,\n};\nif (!database.databaseURL) throw new Error('DATABASE_URL is missing in .env');`;\n\n if (config.testDatabase) {\n content += `\n\nconst testDatabase = {\n databaseURL: process.env.DATABASE_TEST_URL,\n};\n\nconst allDatabases = [database];\n\nif (testDatabase.databaseURL) {\n allDatabases.push(testDatabase);\n}`;\n }\n\n content += `\n\nexport const config = {`;\n\n if (config.testDatabase) {\n content += `\n allDatabases,`;\n }\n\n if (config.testDatabase) {\n content += `\n database: process.env.NODE_ENV === 'test' ? testDatabase : database,`;\n } else {\n content += `\n database,`;\n }\n content += `\n};\n`;\n\n await fs.writeFile(configPath, content);\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMainDb(config: InitConfig): Promise<void> {\n let imports = '';\n let tables = '';\n if (config.demoTables) {\n imports += `\nimport { PostTable } from './tables/post.table';\nimport { CommentTable } from './tables/comment.table';`;\n tables += `\n post: PostTable,\n comment: CommentTable,`;\n }\n\n const dbPath = join(config.dbDirPath, 'db.ts');\n await fs.writeFile(\n dbPath,\n `import { orchidORM } from 'orchid-orm';\nimport { config } from './config';${imports}\n\nexport const db = orchidORM(config.database, {${tables}\n});\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport { join } from 'path';\nimport fs from 'fs/promises';\n\nexport async function setupMigrationScript(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'dbScript.ts');\n\n const migrations =\n config.runner === 'vite-node'\n ? \"migrations: import.meta.glob('./migrations/*.ts')\"\n : \"migrationsPath: './migrations'\";\n\n await fs.writeFile(\n filePath,\n `import { rakeDb } from 'orchid-orm/migrations';\nimport { config } from './config';\nimport { BaseTable } from './baseTable';\n\nexport const change = rakeDb(${\n config.testDatabase ? 'config.allDatabases' : 'config.database'\n }, {\n baseTable: BaseTable,\n dbPath: './db',\n ${migrations},\n commands: {\n async seed() {\n const { seed } = await import('./seed');\n await seed();\n },\n },\n import: (path) => import(path),\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoMigrations(config: InitConfig): Promise<void> {\n const migrationsPath = join(config.dbDirPath, 'migrations');\n await fs.mkdir(migrationsPath, { recursive: true });\n\n if (!config.demoTables) return;\n\n const now = new Date();\n\n const postPath = join(migrationsPath, `0001_createPost.ts`);\n await fs.writeFile(\n postPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('post', (t) => ({\n id: t.identity().primaryKey(),\n title: t.text().unique(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n\n now.setTime(now.getTime() + 1000);\n\n const commentPath = join(migrationsPath, `0002_createComment.ts`);\n await fs.writeFile(\n commentPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('comment', (t) => ({\n id: t.identity().primaryKey(),\n postId: t.integer().foreignKey('post', 'id').index(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n}\n","import { join } from 'path';\nimport fs from 'fs/promises';\nimport { InitConfig } from '../../lib';\n\nexport async function createDemoSeed(config: InitConfig): Promise<void> {\n const filePath = join(config.dbDirPath, 'seed.ts');\n\n let content;\n if (config.demoTables) {\n content = `await db.post.findBy({ title: 'Sample post' }).orCreate({\n title: 'Post',\n text: 'This is a text for a sample post. It contains words, spaces, and punctuation.',\n comments: {\n create: [\n {\n text: 'Nice post!',\n },\n {\n text: \\`Too long, didn't read\\`,\n },\n ],\n },\n });`;\n } else {\n content = `// create records here`;\n }\n\n await fs.writeFile(\n filePath,\n `import { db } from './db';\n\nexport const seed = async () => {\n ${content}\n\n await db.$close();\n};\n`,\n );\n}\n","import { InitConfig } from '../../lib';\nimport fs from 'fs/promises';\nimport { join } from 'path';\n\nexport async function setupRunner(config: InitConfig): Promise<void> {\n if (config.runner === 'vite-node') {\n await fs.writeFile(\n join(config.path, 'vite.migrations.mts'),\n `import { resolve } from \"path\";\nimport { defineConfig, PluginOption } from \"vite\";\nimport { nodeExternals } from \"rollup-plugin-node-externals\";\n\nexport default defineConfig({\n plugins: [\n {\n ...nodeExternals(),\n name: \"node-externals\",\n enforce: \"pre\",\n apply: \"build\",\n } as PluginOption\n ],\n build: {\n outDir: resolve(__dirname, \"dist\", \"db\"),\n lib: {\n entry: resolve(__dirname, \"src/db/dbScript.ts\"),\n formats: [\"es\"],\n fileName: \"dbScript\",\n },\n rollupOptions: {\n external: [\"orchid-orm\"],\n output: {\n entryFileNames: \"[name].mjs\",\n chunkFileNames: \"[name].[hash].mjs\",\n },\n },\n },\n})\n`,\n );\n } else if (config.runner === 'tsx') {\n await fs.writeFile(\n join(config.path, 'esbuild.migrations.mjs'),\n `import { build } from \"esbuild\";\n\nawait Promise.all([\n build({\n entryPoints: [\"src/db/dbScript.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db\",\n outExtension: { '.js': '.mjs' },\n banner: {\n js: \\`\n import __path from 'node:path';\n import { fileURLToPath as __fileURLToPath } from 'node:url';\n import { createRequire as __createRequire } from 'module';\n const require = __createRequire(import.meta.url);\n const __filename = __fileURLToPath(import.meta.url);\n const __dirname = __path.dirname(__filename);\n \\`,\n },\n }),\n build({\n entryPoints: [\"src/db/migrations/*.ts\"],\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n outdir: \"dist/db/migrations\",\n outExtension: { '.js': '.mjs' },\n external: ['../dbScript'],\n plugins: [{\n name: 'add-js-suffix',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.importer) {\n return { path: args.path + '.mjs', external: true }\n }\n })\n },\n }],\n }),\n]);\n`,\n );\n }\n}\n","import { InitConfig } from '../lib';\nimport fs from 'fs/promises';\nimport { setupPackageJSON } from './init/setupPackageJSON';\nimport { setupTSConfig } from './init/setupTSConfig';\nimport { setupEnv } from './init/setupEnv';\nimport { setupGitIgnore } from './init/setupGitIgnore';\nimport { setupBaseTable } from './init/setupBaseTable';\nimport { setupDemoTables } from './init/setupDemoTables';\nimport { setupConfig } from './init/setupConfig';\nimport { setupMainDb } from './init/setupMainDb';\nimport { setupMigrationScript } from './init/setupMigrationScript';\nimport { createDemoMigrations } from './init/createDemoMigrations';\nimport { createDemoSeed } from './init/createDemoSeed';\nimport { setupRunner } from './init/setupRunner';\n\nexport async function init(config: InitConfig): Promise<void> {\n await fs.mkdir(config.dbDirPath, { recursive: true });\n\n for (const key in initSteps) {\n await initSteps[key as keyof typeof initSteps](config);\n }\n}\n\nexport const initSteps = {\n setupPackageJSON,\n setupTSConfig,\n setupEnv,\n setupGitIgnore,\n setupBaseTable,\n setupDemoTables,\n setupConfig,\n setupMainDb,\n setupMigrationScript,\n createDemoMigrations,\n createDemoSeed,\n setupRunner,\n};\n","import { relative } from 'path';\nimport { InitConfig } from '../lib';\nimport { getPackageManagerName } from './utils';\n\nexport function greetAfterInstall(\n config: InitConfig,\n logger: { log(message: string): void } = console,\n) {\n const relativePath = relative(process.cwd(), config.path);\n const manager = getPackageManagerName();\n const run = manager === 'npm' ? `npm run` : manager;\n\n logger.log(`\nThank you for trying Orchid ORM!\n \nTo finish setup,${\n relativePath ? ` cd to the project and` : ''\n } install dependencies:\n${\n relativePath\n ? `\n> cd ${relativePath}`\n : ''\n}\n> ${manager} i\n\nEnter the correct database credentials to the .env file,\nthen create the database:\n\n> ${run} db create\n\nAnd run the migrations:\n\n> ${run} db migrate\n`);\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-orchid-orm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Initialize Orchid ORM",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "Roman Kushyn",
|
|
@@ -23,19 +23,6 @@
|
|
|
23
23
|
"files": [
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
|
-
"jest": {
|
|
27
|
-
"rootDir": "src",
|
|
28
|
-
"coverageDirectory": "../coverage",
|
|
29
|
-
"setupFiles": [
|
|
30
|
-
"dotenv/config"
|
|
31
|
-
],
|
|
32
|
-
"setupFilesAfterEnv": [
|
|
33
|
-
"../../../jest-setup.ts"
|
|
34
|
-
],
|
|
35
|
-
"transform": {
|
|
36
|
-
"^.+\\.ts$": "@swc/jest"
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
26
|
"dependencies": {
|
|
40
27
|
"prompts": "^2.4.2"
|
|
41
28
|
},
|