create-orchid-orm 0.4.2 → 0.4.3
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 +20 -20
- package/dist/bin.js.map +1 -1
- package/dist/lib.js +20 -20
- package/dist/lib.js.map +1 -1
- package/dist/lib.mjs +20 -20
- package/dist/lib.mjs.map +1 -1
- package/package.json +1 -8
package/dist/bin.js
CHANGED
|
@@ -195,18 +195,18 @@ async function setupPackageJSON(config) {
|
|
|
195
195
|
if (config.esm) json = { name: json.name, type: "module", ...json };
|
|
196
196
|
const scripts = json.scripts ?? (json.scripts = {});
|
|
197
197
|
if (config.runner === "vite-node") {
|
|
198
|
-
scripts.db = "vite-node src/db/
|
|
198
|
+
scripts.db = "vite-node src/db/db-script.ts --";
|
|
199
199
|
scripts["build:migrations"] = "vite build --config vite.migrations.mts";
|
|
200
|
-
scripts["db:compiled"] = "node dist/db/
|
|
200
|
+
scripts["db:compiled"] = "node dist/db/db-script.mjs";
|
|
201
201
|
} else if (config.runner === "tsx") {
|
|
202
|
-
scripts.db = "NODE_ENV=development tsx src/db/
|
|
202
|
+
scripts.db = "NODE_ENV=development tsx src/db/db-script.ts";
|
|
203
203
|
scripts["build:migrations"] = "rimraf dist/db && node esbuild.migrations.mjs";
|
|
204
|
-
scripts["db:compiled"] = "NODE_ENV=production node dist/db/
|
|
204
|
+
scripts["db:compiled"] = "NODE_ENV=production node dist/db/db-script.mjs";
|
|
205
205
|
} else {
|
|
206
|
-
scripts.db = `${config.runner} src/db/
|
|
206
|
+
scripts.db = `${config.runner} src/db/db-script.ts`;
|
|
207
207
|
if (config.runner === "ts-node") {
|
|
208
208
|
scripts.build = "tsc";
|
|
209
|
-
scripts["db:compiled"] = "node dist/
|
|
209
|
+
scripts["db:compiled"] = "node dist/db-script.js";
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
if (!json.dependencies) json.dependencies = {};
|
|
@@ -288,7 +288,7 @@ node_modules`;
|
|
|
288
288
|
}
|
|
289
289
|
|
|
290
290
|
async function setupBaseTable(config) {
|
|
291
|
-
const filePath = path.join(config.dbDirPath, "
|
|
291
|
+
const filePath = path.join(config.dbDirPath, "base-table.ts");
|
|
292
292
|
const { timestamp } = config;
|
|
293
293
|
const customTimestamp = timestamp && timestamp !== "string";
|
|
294
294
|
const columnTypesComment = customTimestamp ? "" : "// ";
|
|
@@ -327,7 +327,7 @@ async function setupDemoTables(config) {
|
|
|
327
327
|
await fs.writeFile(
|
|
328
328
|
path.join(tablesDir, "post.table.ts"),
|
|
329
329
|
`import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';
|
|
330
|
-
import { BaseTable } from '../
|
|
330
|
+
import { BaseTable } from '../base-table';
|
|
331
331
|
import { CommentTable } from './comment.table';
|
|
332
332
|
|
|
333
333
|
// Post type returned from database.
|
|
@@ -360,7 +360,7 @@ export class PostTable extends BaseTable {
|
|
|
360
360
|
await fs.writeFile(
|
|
361
361
|
path.join(tablesDir, "comment.table.ts"),
|
|
362
362
|
`import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';
|
|
363
|
-
import { BaseTable } from '../
|
|
363
|
+
import { BaseTable } from '../base-table';
|
|
364
364
|
import { PostTable } from './post.table';
|
|
365
365
|
|
|
366
366
|
// Comment type returned from database.
|
|
@@ -460,15 +460,15 @@ export const db = orchidORM(config.database, {${tables}
|
|
|
460
460
|
}
|
|
461
461
|
|
|
462
462
|
async function setupMigrationScript(config) {
|
|
463
|
-
const filePath = path.join(config.dbDirPath, "
|
|
463
|
+
const filePath = path.join(config.dbDirPath, "db-script.ts");
|
|
464
464
|
const migrations = config.runner === "vite-node" ? "migrations: import.meta.glob('./migrations/*.ts')" : "migrationsPath: './migrations'";
|
|
465
465
|
await fs.writeFile(
|
|
466
466
|
filePath,
|
|
467
467
|
`import { rakeDb } from 'orchid-orm/migrations/postgres-js';
|
|
468
468
|
import { config } from './config';
|
|
469
|
-
import { BaseTable } from './
|
|
469
|
+
import { BaseTable } from './base-table';
|
|
470
470
|
|
|
471
|
-
export const change = rakeDb(${config.testDatabase ? "config.allDatabases" : "config.database"}, {
|
|
471
|
+
export const change = rakeDb.run(${config.testDatabase ? "config.allDatabases" : "config.database"}, {
|
|
472
472
|
baseTable: BaseTable,
|
|
473
473
|
dbPath: './db',
|
|
474
474
|
${migrations},
|
|
@@ -489,10 +489,10 @@ async function createDemoMigrations(config) {
|
|
|
489
489
|
await fs.mkdir(migrationsPath, { recursive: true });
|
|
490
490
|
if (!config.demoTables) return;
|
|
491
491
|
const now = /* @__PURE__ */ new Date();
|
|
492
|
-
const postPath = path.join(migrationsPath, `
|
|
492
|
+
const postPath = path.join(migrationsPath, `0001_create-post.ts`);
|
|
493
493
|
await fs.writeFile(
|
|
494
494
|
postPath,
|
|
495
|
-
`import { change } from '../
|
|
495
|
+
`import { change } from '../db-script';
|
|
496
496
|
|
|
497
497
|
change(async (db) => {
|
|
498
498
|
await db.createTable('post', (t) => ({
|
|
@@ -505,10 +505,10 @@ change(async (db) => {
|
|
|
505
505
|
`
|
|
506
506
|
);
|
|
507
507
|
now.setTime(now.getTime() + 1e3);
|
|
508
|
-
const commentPath = path.join(migrationsPath, `
|
|
508
|
+
const commentPath = path.join(migrationsPath, `0002_create-comment.ts`);
|
|
509
509
|
await fs.writeFile(
|
|
510
510
|
commentPath,
|
|
511
|
-
`import { change } from '../
|
|
511
|
+
`import { change } from '../db-script';
|
|
512
512
|
|
|
513
513
|
change(async (db) => {
|
|
514
514
|
await db.createTable('comment', (t) => ({
|
|
@@ -576,9 +576,9 @@ export default defineConfig({
|
|
|
576
576
|
build: {
|
|
577
577
|
outDir: resolve(__dirname, "dist", "db"),
|
|
578
578
|
lib: {
|
|
579
|
-
entry: resolve(__dirname, "src/db/
|
|
579
|
+
entry: resolve(__dirname, "src/db/db-script.ts"),
|
|
580
580
|
formats: ["es"],
|
|
581
|
-
fileName: "
|
|
581
|
+
fileName: "db-script",
|
|
582
582
|
},
|
|
583
583
|
rollupOptions: {
|
|
584
584
|
external: ["orchid-orm"],
|
|
@@ -598,7 +598,7 @@ export default defineConfig({
|
|
|
598
598
|
|
|
599
599
|
await Promise.all([
|
|
600
600
|
build({
|
|
601
|
-
entryPoints: ["src/db/
|
|
601
|
+
entryPoints: ["src/db/db-script.ts"],
|
|
602
602
|
bundle: true,
|
|
603
603
|
platform: "node",
|
|
604
604
|
format: "esm",
|
|
@@ -622,7 +622,7 @@ await Promise.all([
|
|
|
622
622
|
format: "esm",
|
|
623
623
|
outdir: "dist/db/migrations",
|
|
624
624
|
outExtension: { '.js': '.mjs' },
|
|
625
|
-
external: ['../
|
|
625
|
+
external: ['../db-script'],
|
|
626
626
|
plugins: [{
|
|
627
627
|
name: 'add-js-suffix',
|
|
628
628
|
setup(build) {
|
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 getLatestPackageVersion('postgres', '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\": \"es2020\",\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/postgres-js';\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/postgres-js';\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","import { 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 getLatestPackageVersion('postgres', '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/db-script.ts --';\n scripts['build:migrations'] = 'vite build --config vite.migrations.mts';\n scripts['db:compiled'] = 'node dist/db/db-script.mjs';\n } else if (config.runner === 'tsx') {\n scripts.db = 'NODE_ENV=development tsx src/db/db-script.ts';\n scripts['build:migrations'] =\n 'rimraf dist/db && node esbuild.migrations.mjs';\n scripts['db:compiled'] = 'NODE_ENV=production node dist/db/db-script.mjs';\n } else {\n scripts.db = `${config.runner} src/db/db-script.ts`;\n\n if (config.runner === 'ts-node') {\n scripts.build = 'tsc';\n scripts['db:compiled'] = 'node dist/db-script.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\": \"es2020\",\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, 'base-table.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 '../base-table';\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 '../base-table';\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/postgres-js';\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, 'db-script.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/postgres-js';\nimport { config } from './config';\nimport { BaseTable } from './base-table';\n\nexport const change = rakeDb.run(${\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_create-post.ts`);\n await fs.writeFile(\n postPath,\n `import { change } from '../db-script';\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_create-comment.ts`);\n await fs.writeFile(\n commentPath,\n `import { change } from '../db-script';\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/db-script.ts\"),\n formats: [\"es\"],\n fileName: \"db-script\",\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/db-script.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: ['../db-script'],\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","import { 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
|
@@ -194,18 +194,18 @@ async function setupPackageJSON(config) {
|
|
|
194
194
|
if (config.esm) json = { name: json.name, type: "module", ...json };
|
|
195
195
|
const scripts = json.scripts ?? (json.scripts = {});
|
|
196
196
|
if (config.runner === "vite-node") {
|
|
197
|
-
scripts.db = "vite-node src/db/
|
|
197
|
+
scripts.db = "vite-node src/db/db-script.ts --";
|
|
198
198
|
scripts["build:migrations"] = "vite build --config vite.migrations.mts";
|
|
199
|
-
scripts["db:compiled"] = "node dist/db/
|
|
199
|
+
scripts["db:compiled"] = "node dist/db/db-script.mjs";
|
|
200
200
|
} else if (config.runner === "tsx") {
|
|
201
|
-
scripts.db = "NODE_ENV=development tsx src/db/
|
|
201
|
+
scripts.db = "NODE_ENV=development tsx src/db/db-script.ts";
|
|
202
202
|
scripts["build:migrations"] = "rimraf dist/db && node esbuild.migrations.mjs";
|
|
203
|
-
scripts["db:compiled"] = "NODE_ENV=production node dist/db/
|
|
203
|
+
scripts["db:compiled"] = "NODE_ENV=production node dist/db/db-script.mjs";
|
|
204
204
|
} else {
|
|
205
|
-
scripts.db = `${config.runner} src/db/
|
|
205
|
+
scripts.db = `${config.runner} src/db/db-script.ts`;
|
|
206
206
|
if (config.runner === "ts-node") {
|
|
207
207
|
scripts.build = "tsc";
|
|
208
|
-
scripts["db:compiled"] = "node dist/
|
|
208
|
+
scripts["db:compiled"] = "node dist/db-script.js";
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
if (!json.dependencies) json.dependencies = {};
|
|
@@ -287,7 +287,7 @@ node_modules`;
|
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
async function setupBaseTable(config) {
|
|
290
|
-
const filePath = path.join(config.dbDirPath, "
|
|
290
|
+
const filePath = path.join(config.dbDirPath, "base-table.ts");
|
|
291
291
|
const { timestamp } = config;
|
|
292
292
|
const customTimestamp = timestamp && timestamp !== "string";
|
|
293
293
|
const columnTypesComment = customTimestamp ? "" : "// ";
|
|
@@ -326,7 +326,7 @@ async function setupDemoTables(config) {
|
|
|
326
326
|
await fs.writeFile(
|
|
327
327
|
path.join(tablesDir, "post.table.ts"),
|
|
328
328
|
`import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';
|
|
329
|
-
import { BaseTable } from '../
|
|
329
|
+
import { BaseTable } from '../base-table';
|
|
330
330
|
import { CommentTable } from './comment.table';
|
|
331
331
|
|
|
332
332
|
// Post type returned from database.
|
|
@@ -359,7 +359,7 @@ export class PostTable extends BaseTable {
|
|
|
359
359
|
await fs.writeFile(
|
|
360
360
|
path.join(tablesDir, "comment.table.ts"),
|
|
361
361
|
`import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';
|
|
362
|
-
import { BaseTable } from '../
|
|
362
|
+
import { BaseTable } from '../base-table';
|
|
363
363
|
import { PostTable } from './post.table';
|
|
364
364
|
|
|
365
365
|
// Comment type returned from database.
|
|
@@ -459,15 +459,15 @@ export const db = orchidORM(config.database, {${tables}
|
|
|
459
459
|
}
|
|
460
460
|
|
|
461
461
|
async function setupMigrationScript(config) {
|
|
462
|
-
const filePath = path.join(config.dbDirPath, "
|
|
462
|
+
const filePath = path.join(config.dbDirPath, "db-script.ts");
|
|
463
463
|
const migrations = config.runner === "vite-node" ? "migrations: import.meta.glob('./migrations/*.ts')" : "migrationsPath: './migrations'";
|
|
464
464
|
await fs.writeFile(
|
|
465
465
|
filePath,
|
|
466
466
|
`import { rakeDb } from 'orchid-orm/migrations/postgres-js';
|
|
467
467
|
import { config } from './config';
|
|
468
|
-
import { BaseTable } from './
|
|
468
|
+
import { BaseTable } from './base-table';
|
|
469
469
|
|
|
470
|
-
export const change = rakeDb(${config.testDatabase ? "config.allDatabases" : "config.database"}, {
|
|
470
|
+
export const change = rakeDb.run(${config.testDatabase ? "config.allDatabases" : "config.database"}, {
|
|
471
471
|
baseTable: BaseTable,
|
|
472
472
|
dbPath: './db',
|
|
473
473
|
${migrations},
|
|
@@ -488,10 +488,10 @@ async function createDemoMigrations(config) {
|
|
|
488
488
|
await fs.mkdir(migrationsPath, { recursive: true });
|
|
489
489
|
if (!config.demoTables) return;
|
|
490
490
|
const now = /* @__PURE__ */ new Date();
|
|
491
|
-
const postPath = path.join(migrationsPath, `
|
|
491
|
+
const postPath = path.join(migrationsPath, `0001_create-post.ts`);
|
|
492
492
|
await fs.writeFile(
|
|
493
493
|
postPath,
|
|
494
|
-
`import { change } from '../
|
|
494
|
+
`import { change } from '../db-script';
|
|
495
495
|
|
|
496
496
|
change(async (db) => {
|
|
497
497
|
await db.createTable('post', (t) => ({
|
|
@@ -504,10 +504,10 @@ change(async (db) => {
|
|
|
504
504
|
`
|
|
505
505
|
);
|
|
506
506
|
now.setTime(now.getTime() + 1e3);
|
|
507
|
-
const commentPath = path.join(migrationsPath, `
|
|
507
|
+
const commentPath = path.join(migrationsPath, `0002_create-comment.ts`);
|
|
508
508
|
await fs.writeFile(
|
|
509
509
|
commentPath,
|
|
510
|
-
`import { change } from '../
|
|
510
|
+
`import { change } from '../db-script';
|
|
511
511
|
|
|
512
512
|
change(async (db) => {
|
|
513
513
|
await db.createTable('comment', (t) => ({
|
|
@@ -575,9 +575,9 @@ export default defineConfig({
|
|
|
575
575
|
build: {
|
|
576
576
|
outDir: resolve(__dirname, "dist", "db"),
|
|
577
577
|
lib: {
|
|
578
|
-
entry: resolve(__dirname, "src/db/
|
|
578
|
+
entry: resolve(__dirname, "src/db/db-script.ts"),
|
|
579
579
|
formats: ["es"],
|
|
580
|
-
fileName: "
|
|
580
|
+
fileName: "db-script",
|
|
581
581
|
},
|
|
582
582
|
rollupOptions: {
|
|
583
583
|
external: ["orchid-orm"],
|
|
@@ -597,7 +597,7 @@ export default defineConfig({
|
|
|
597
597
|
|
|
598
598
|
await Promise.all([
|
|
599
599
|
build({
|
|
600
|
-
entryPoints: ["src/db/
|
|
600
|
+
entryPoints: ["src/db/db-script.ts"],
|
|
601
601
|
bundle: true,
|
|
602
602
|
platform: "node",
|
|
603
603
|
format: "esm",
|
|
@@ -621,7 +621,7 @@ await Promise.all([
|
|
|
621
621
|
format: "esm",
|
|
622
622
|
outdir: "dist/db/migrations",
|
|
623
623
|
outExtension: { '.js': '.mjs' },
|
|
624
|
-
external: ['../
|
|
624
|
+
external: ['../db-script'],
|
|
625
625
|
plugins: [{
|
|
626
626
|
name: 'add-js-suffix',
|
|
627
627
|
setup(build) {
|
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 getLatestPackageVersion('postgres', '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\": \"es2020\",\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/postgres-js';\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/postgres-js';\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 getLatestPackageVersion('postgres', '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/db-script.ts --';\n scripts['build:migrations'] = 'vite build --config vite.migrations.mts';\n scripts['db:compiled'] = 'node dist/db/db-script.mjs';\n } else if (config.runner === 'tsx') {\n scripts.db = 'NODE_ENV=development tsx src/db/db-script.ts';\n scripts['build:migrations'] =\n 'rimraf dist/db && node esbuild.migrations.mjs';\n scripts['db:compiled'] = 'NODE_ENV=production node dist/db/db-script.mjs';\n } else {\n scripts.db = `${config.runner} src/db/db-script.ts`;\n\n if (config.runner === 'ts-node') {\n scripts.build = 'tsc';\n scripts['db:compiled'] = 'node dist/db-script.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\": \"es2020\",\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, 'base-table.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 '../base-table';\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 '../base-table';\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/postgres-js';\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, 'db-script.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/postgres-js';\nimport { config } from './config';\nimport { BaseTable } from './base-table';\n\nexport const change = rakeDb.run(${\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_create-post.ts`);\n await fs.writeFile(\n postPath,\n `import { change } from '../db-script';\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_create-comment.ts`);\n await fs.writeFile(\n commentPath,\n `import { change } from '../db-script';\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/db-script.ts\"),\n formats: [\"es\"],\n fileName: \"db-script\",\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/db-script.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: ['../db-script'],\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
|
@@ -192,18 +192,18 @@ async function setupPackageJSON(config) {
|
|
|
192
192
|
if (config.esm) json = { name: json.name, type: "module", ...json };
|
|
193
193
|
const scripts = json.scripts ?? (json.scripts = {});
|
|
194
194
|
if (config.runner === "vite-node") {
|
|
195
|
-
scripts.db = "vite-node src/db/
|
|
195
|
+
scripts.db = "vite-node src/db/db-script.ts --";
|
|
196
196
|
scripts["build:migrations"] = "vite build --config vite.migrations.mts";
|
|
197
|
-
scripts["db:compiled"] = "node dist/db/
|
|
197
|
+
scripts["db:compiled"] = "node dist/db/db-script.mjs";
|
|
198
198
|
} else if (config.runner === "tsx") {
|
|
199
|
-
scripts.db = "NODE_ENV=development tsx src/db/
|
|
199
|
+
scripts.db = "NODE_ENV=development tsx src/db/db-script.ts";
|
|
200
200
|
scripts["build:migrations"] = "rimraf dist/db && node esbuild.migrations.mjs";
|
|
201
|
-
scripts["db:compiled"] = "NODE_ENV=production node dist/db/
|
|
201
|
+
scripts["db:compiled"] = "NODE_ENV=production node dist/db/db-script.mjs";
|
|
202
202
|
} else {
|
|
203
|
-
scripts.db = `${config.runner} src/db/
|
|
203
|
+
scripts.db = `${config.runner} src/db/db-script.ts`;
|
|
204
204
|
if (config.runner === "ts-node") {
|
|
205
205
|
scripts.build = "tsc";
|
|
206
|
-
scripts["db:compiled"] = "node dist/
|
|
206
|
+
scripts["db:compiled"] = "node dist/db-script.js";
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
if (!json.dependencies) json.dependencies = {};
|
|
@@ -285,7 +285,7 @@ node_modules`;
|
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
async function setupBaseTable(config) {
|
|
288
|
-
const filePath = join(config.dbDirPath, "
|
|
288
|
+
const filePath = join(config.dbDirPath, "base-table.ts");
|
|
289
289
|
const { timestamp } = config;
|
|
290
290
|
const customTimestamp = timestamp && timestamp !== "string";
|
|
291
291
|
const columnTypesComment = customTimestamp ? "" : "// ";
|
|
@@ -324,7 +324,7 @@ async function setupDemoTables(config) {
|
|
|
324
324
|
await fs.writeFile(
|
|
325
325
|
join(tablesDir, "post.table.ts"),
|
|
326
326
|
`import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';
|
|
327
|
-
import { BaseTable } from '../
|
|
327
|
+
import { BaseTable } from '../base-table';
|
|
328
328
|
import { CommentTable } from './comment.table';
|
|
329
329
|
|
|
330
330
|
// Post type returned from database.
|
|
@@ -357,7 +357,7 @@ export class PostTable extends BaseTable {
|
|
|
357
357
|
await fs.writeFile(
|
|
358
358
|
join(tablesDir, "comment.table.ts"),
|
|
359
359
|
`import { Selectable, Updatable, Insertable, Queryable } from 'orchid-orm';
|
|
360
|
-
import { BaseTable } from '../
|
|
360
|
+
import { BaseTable } from '../base-table';
|
|
361
361
|
import { PostTable } from './post.table';
|
|
362
362
|
|
|
363
363
|
// Comment type returned from database.
|
|
@@ -457,15 +457,15 @@ export const db = orchidORM(config.database, {${tables}
|
|
|
457
457
|
}
|
|
458
458
|
|
|
459
459
|
async function setupMigrationScript(config) {
|
|
460
|
-
const filePath = join(config.dbDirPath, "
|
|
460
|
+
const filePath = join(config.dbDirPath, "db-script.ts");
|
|
461
461
|
const migrations = config.runner === "vite-node" ? "migrations: import.meta.glob('./migrations/*.ts')" : "migrationsPath: './migrations'";
|
|
462
462
|
await fs.writeFile(
|
|
463
463
|
filePath,
|
|
464
464
|
`import { rakeDb } from 'orchid-orm/migrations/postgres-js';
|
|
465
465
|
import { config } from './config';
|
|
466
|
-
import { BaseTable } from './
|
|
466
|
+
import { BaseTable } from './base-table';
|
|
467
467
|
|
|
468
|
-
export const change = rakeDb(${config.testDatabase ? "config.allDatabases" : "config.database"}, {
|
|
468
|
+
export const change = rakeDb.run(${config.testDatabase ? "config.allDatabases" : "config.database"}, {
|
|
469
469
|
baseTable: BaseTable,
|
|
470
470
|
dbPath: './db',
|
|
471
471
|
${migrations},
|
|
@@ -486,10 +486,10 @@ async function createDemoMigrations(config) {
|
|
|
486
486
|
await fs.mkdir(migrationsPath, { recursive: true });
|
|
487
487
|
if (!config.demoTables) return;
|
|
488
488
|
const now = /* @__PURE__ */ new Date();
|
|
489
|
-
const postPath = join(migrationsPath, `
|
|
489
|
+
const postPath = join(migrationsPath, `0001_create-post.ts`);
|
|
490
490
|
await fs.writeFile(
|
|
491
491
|
postPath,
|
|
492
|
-
`import { change } from '../
|
|
492
|
+
`import { change } from '../db-script';
|
|
493
493
|
|
|
494
494
|
change(async (db) => {
|
|
495
495
|
await db.createTable('post', (t) => ({
|
|
@@ -502,10 +502,10 @@ change(async (db) => {
|
|
|
502
502
|
`
|
|
503
503
|
);
|
|
504
504
|
now.setTime(now.getTime() + 1e3);
|
|
505
|
-
const commentPath = join(migrationsPath, `
|
|
505
|
+
const commentPath = join(migrationsPath, `0002_create-comment.ts`);
|
|
506
506
|
await fs.writeFile(
|
|
507
507
|
commentPath,
|
|
508
|
-
`import { change } from '../
|
|
508
|
+
`import { change } from '../db-script';
|
|
509
509
|
|
|
510
510
|
change(async (db) => {
|
|
511
511
|
await db.createTable('comment', (t) => ({
|
|
@@ -573,9 +573,9 @@ export default defineConfig({
|
|
|
573
573
|
build: {
|
|
574
574
|
outDir: resolve(__dirname, "dist", "db"),
|
|
575
575
|
lib: {
|
|
576
|
-
entry: resolve(__dirname, "src/db/
|
|
576
|
+
entry: resolve(__dirname, "src/db/db-script.ts"),
|
|
577
577
|
formats: ["es"],
|
|
578
|
-
fileName: "
|
|
578
|
+
fileName: "db-script",
|
|
579
579
|
},
|
|
580
580
|
rollupOptions: {
|
|
581
581
|
external: ["orchid-orm"],
|
|
@@ -595,7 +595,7 @@ export default defineConfig({
|
|
|
595
595
|
|
|
596
596
|
await Promise.all([
|
|
597
597
|
build({
|
|
598
|
-
entryPoints: ["src/db/
|
|
598
|
+
entryPoints: ["src/db/db-script.ts"],
|
|
599
599
|
bundle: true,
|
|
600
600
|
platform: "node",
|
|
601
601
|
format: "esm",
|
|
@@ -619,7 +619,7 @@ await Promise.all([
|
|
|
619
619
|
format: "esm",
|
|
620
620
|
outdir: "dist/db/migrations",
|
|
621
621
|
outExtension: { '.js': '.mjs' },
|
|
622
|
-
external: ['../
|
|
622
|
+
external: ['../db-script'],
|
|
623
623
|
plugins: [{
|
|
624
624
|
name: 'add-js-suffix',
|
|
625
625
|
setup(build) {
|
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 getLatestPackageVersion('postgres', '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\": \"es2020\",\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/postgres-js';\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/postgres-js';\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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"}
|
|
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 getLatestPackageVersion('postgres', '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/db-script.ts --';\n scripts['build:migrations'] = 'vite build --config vite.migrations.mts';\n scripts['db:compiled'] = 'node dist/db/db-script.mjs';\n } else if (config.runner === 'tsx') {\n scripts.db = 'NODE_ENV=development tsx src/db/db-script.ts';\n scripts['build:migrations'] =\n 'rimraf dist/db && node esbuild.migrations.mjs';\n scripts['db:compiled'] = 'NODE_ENV=production node dist/db/db-script.mjs';\n } else {\n scripts.db = `${config.runner} src/db/db-script.ts`;\n\n if (config.runner === 'ts-node') {\n scripts.build = 'tsc';\n scripts['db:compiled'] = 'node dist/db-script.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\": \"es2020\",\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, 'base-table.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 '../base-table';\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 '../base-table';\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/postgres-js';\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, 'db-script.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/postgres-js';\nimport { config } from './config';\nimport { BaseTable } from './base-table';\n\nexport const change = rakeDb.run(${\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_create-post.ts`);\n await fs.writeFile(\n postPath,\n `import { change } from '../db-script';\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_create-comment.ts`);\n await fs.writeFile(\n commentPath,\n `import { change } from '../db-script';\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/db-script.ts\"),\n formats: [\"es\"],\n fileName: \"db-script\",\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/db-script.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: ['../db-script'],\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,GAAK,EAAA;AACZ,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,IAAI,CAAA,OAAA,CAAA,EAAW,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,CAAE,CAAA,OAAO,CAAI,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,WAAgB,MAAS,GAAA,KAAA,CAAA;AAE7B,EAAA,IAAI,SAAW,EAAA,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,EAAO,OAAA;AAAA,IACL,GAAG,QAAA;AAAA,IACH,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;AACF;;AClHA,eAAsB,iBAAiB,MAAmC,EAAA;AACxE,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,uBAAA,CAAwB,YAAY,cAAc,CAAA;AAAA,IAClD,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,IAAM,EAAA,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,EAAI,IAAA,MAAA,CAAO,GAAK,EAAA,IAAA,GAAO,EAAE,IAAA,EAAM,KAAK,IAAM,EAAA,IAAA,EAAM,QAAU,EAAA,GAAG,IAAK,EAAA,CAAA;AAElE,EAAA,MAAM,OAAW,GAAA,IAAA,CAAK,OAAL,KAAA,IAAA,CAAK,UAAY,EAAC,CAAA,CAAA;AAEnC,EAAI,IAAA,MAAA,CAAO,WAAW,WAAa,EAAA;AACjC,IAAA,OAAA,CAAQ,EAAK,GAAA,kCAAA,CAAA;AACb,IAAA,OAAA,CAAQ,kBAAkB,CAAI,GAAA,yCAAA,CAAA;AAC9B,IAAA,OAAA,CAAQ,aAAa,CAAI,GAAA,4BAAA,CAAA;AAAA,GAC3B,MAAA,IAAW,MAAO,CAAA,MAAA,KAAW,KAAO,EAAA;AAClC,IAAA,OAAA,CAAQ,EAAK,GAAA,8CAAA,CAAA;AACb,IAAA,OAAA,CAAQ,kBAAkB,CACxB,GAAA,+CAAA,CAAA;AACF,IAAA,OAAA,CAAQ,aAAa,CAAI,GAAA,gDAAA,CAAA;AAAA,GACpB,MAAA;AACL,IAAQ,OAAA,CAAA,EAAA,GAAK,CAAG,EAAA,MAAA,CAAO,MAAM,CAAA,oBAAA,CAAA,CAAA;AAE7B,IAAI,IAAA,MAAA,CAAO,WAAW,SAAW,EAAA;AAC/B,MAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAChB,MAAA,OAAA,CAAQ,aAAa,CAAI,GAAA,wBAAA,CAAA;AAAA,KAC3B;AAAA,GACF;AAEA,EAAA,IAAI,CAAC,IAAA,CAAK,YAAc,EAAA,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,IAAA,CAAK,eAAiB,EAAA,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;;AC/FA,eAAsB,cAAc,MAAmC,EAAA;AACrE,EAAA,IAAI,OAAO,WAAa,EAAA,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,qBAAA,CAAA,GAEA,EACN,CAAA;AAAA;AAAA,eAEe,EAAA,MAAM,KAAK,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA,wBAAA,EAKtC,KACI,GAAA,CAAA;AAAA,aACK,EAAA,KAAK,KACV,EACN,CAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAIF,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,wBAAA,EAA6B,IAAI,CAAA,iCAAA,CAAA,CAAA;AAC5C,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,6BAAA,EAAkC,IAAI,CAAA,sCAAA,CAAA,CAAA;AACjD,IAAU,OAAA,GAAA,IAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,MAAM,GAAG,SAAU,CAAA,OAAA,EAAS,CAAG,EAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,CAAI,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,GAAG,SAAU,CAAA,aAAA,EAAe,CAAG,EAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,CAAI,CAAA,CAAA;AAAA,GACzD;AACF;;ACnBA,eAAsB,eAAe,MAAmC,EAAA;AACtE,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,MAAO,CAAA,SAAA,EAAW,eAAe,CAAA,CAAA;AAEvD,EAAM,MAAA,EAAE,WAAc,GAAA,MAAA,CAAA;AACtB,EAAM,MAAA,eAAA,GAAkB,aAAa,SAAc,KAAA,QAAA,CAAA;AACnD,EAAM,MAAA,kBAAA,GAAqB,kBAAkB,EAAK,GAAA,KAAA,CAAA;AAElD,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,yDAAA,CAAA,GACA,EACN,CAAA;AAAA;AAAA;AAAA;AAAA,qBAKE,EAAA,MAAA,CAAO,eAAe,IAClB,GAAA,CAAA;AAAA;AAAA,gBAAA,EAGJ,OAAO,UAAe,KAAA,KAAA,GAAQ,iBAAoB,GAAA,qBACpD,MACM,EACN,CAAA;AAAA;AAAA;AAAA,EAAA,EAGE,kBAAkB,CAAA;AAAA,EAAA,EAClB,kBAAkB,CAAA,OAAA,CAAA,CAAA;AAEpB,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAW,OAAA,IAAA,CAAA;AAAA,2BACc,EAAA,SAAA,KAAc,QAAW,GAAA,QAAA,GAAW,aAAa,CAAA;AAAA,8DAExE,EAAA,SAAA,KAAc,MAAS,GAAA,QAAA,GAAW,UACpC,CAAA,GAAA,CAAA,CAAA;AAAA,GACF;AAEA,EAAW,OAAA,IAAA,CAAA;AAAA,EAAA,EACT,kBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAMpB,EAAM,MAAA,EAAA,CAAG,SAAU,CAAA,QAAA,EAAU,OAAO,CAAA,CAAA;AACtC;;AC/CA,eAAsB,gBAAgB,MAAmC,EAAA;AACvE,EAAI,IAAA,CAAC,OAAO,UAAY,EAAA,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,EAAM,MAAA,aAAA,GAAgB,OAAO,UAAe,KAAA,IAAA,CAAA;AAE5C,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,mBAiBiB,EAAA,aAAA,GAAgB,qBAAqB,EAAE,CAAA;AAAA,kBACxC,EAAA,aAAA,GAAgB,wBAAwB,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAY5D,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,kBAqBgB,EAAA,aAAA,GAAgB,sBAAsB,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAY1D,CAAA;AACF;;AC9EA,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,kCAAA,EACgC,OAAO,CAAA;AAAA;AAAA,8CAAA,EAEK,MAAM,CAAA;AAAA;AAAA,CAAA;AAAA,GAGpD,CAAA;AACF;;ACtBA,eAAsB,qBAAqB,MAAmC,EAAA;AAC5E,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,MAAO,CAAA,SAAA,EAAW,cAAc,CAAA,CAAA;AAEtD,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,iCAKE,EAAA,MAAA,CAAO,YAAe,GAAA,qBAAA,GAAwB,iBAChD,CAAA;AAAA;AAAA;AAAA,EAAA,EAGA,UAAU,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAUZ,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,EAAI,IAAA,CAAC,OAAO,UAAY,EAAA,OAAA;AAExB,EAAM,MAAA,GAAA,uBAAU,IAAK,EAAA,CAAA;AAErB,EAAM,MAAA,QAAA,GAAW,IAAK,CAAA,cAAA,EAAgB,CAAqB,mBAAA,CAAA,CAAA,CAAA;AAC3D,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,CAAwB,sBAAA,CAAA,CAAA,CAAA;AACjE,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,EAAA,EAGA,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAKT,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,gBAIT,EAAA,YAAA,GAAe,2BAA2B,EAC5C,CAAA;AAAA,EAEA,YACI,GAAA,CAAA;AAAA,KACC,EAAA,YAAY,KACb,EACN,CAAA;AAAA,EAAA,EACI,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,EAKP,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA,EAAA,EAIH,GAAG,CAAA;AAAA,CACN,CAAA,CAAA;AACD;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-orchid-orm",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"description": "Initialize Orchid ORM",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "Roman Kushyn",
|
|
@@ -20,13 +20,6 @@
|
|
|
20
20
|
"types": "./dist/lib.d.ts"
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
|
-
"typesVersions": {
|
|
24
|
-
"*": {
|
|
25
|
-
"*": [
|
|
26
|
-
"dist/*.d.ts"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
23
|
"files": [
|
|
31
24
|
"dist"
|
|
32
25
|
],
|