@danceroutine/tango-config 1.11.15 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"loader-CxZbw338.js","names":[],"sources":["../src/loader/defineConfig.ts","../src/loader/loadConfig.ts","../src/loader/loadConfigFromProjectRoot.ts","../src/loader/index.ts"],"sourcesContent":["import { TangoConfigSchema, type TangoConfig } from '../schema/index';\n\n/**\n * Define and validate Tango configuration at declaration time.\n */\nexport function defineConfig(cfg: unknown): TangoConfig {\n return TangoConfigSchema.parse(cfg) as TangoConfig;\n}\n","import { config as loadDotEnv } from 'dotenv';\nimport { TangoConfigSchema, type EnvConfig, type TangoConfig } from '../schema/index';\nimport type { LoadedConfig } from './LoadedConfig';\n\n/**\n * Load, validate, and environment-resolve Tango configuration.\n */\nexport function loadConfig(fromFile: () => unknown): LoadedConfig {\n loadDotEnv();\n\n const cfg = TangoConfigSchema.parse(fromFile()) as TangoConfig;\n const env = cfg.current;\n const current = mergeEnvOverrides(cfg.environments[env]);\n\n return { cfg, env, current };\n}\n\n/**\n * Merge process environment overrides into a base environment config.\n */\nfunction mergeEnvOverrides(envCfg: EnvConfig): EnvConfig {\n const result = structuredClone(envCfg);\n const env = process.env;\n\n if (env.TANGO_DB_ADAPTER) {\n result.db.adapter = env.TANGO_DB_ADAPTER as 'postgres' | 'sqlite';\n }\n\n if (env.DATABASE_URL || env.TANGO_DATABASE_URL) {\n result.db.url = env.TANGO_DATABASE_URL || env.DATABASE_URL;\n }\n\n if (env.TANGO_DB_HOST) result.db.host = env.TANGO_DB_HOST;\n if (env.TANGO_DB_PORT) result.db.port = Number(env.TANGO_DB_PORT);\n if (env.TANGO_DB_NAME) result.db.database = env.TANGO_DB_NAME;\n if (env.TANGO_DB_USER) result.db.user = env.TANGO_DB_USER;\n if (env.TANGO_DB_PASSWORD) result.db.password = env.TANGO_DB_PASSWORD;\n if (env.TANGO_SQLITE_FILENAME) result.db.filename = env.TANGO_SQLITE_FILENAME;\n\n if (env.TANGO_MIGRATIONS_DIR) result.migrations.dir = env.TANGO_MIGRATIONS_DIR;\n if (env.TANGO_MIGRATIONS_ONLINE) {\n result.migrations.online = env.TANGO_MIGRATIONS_ONLINE === 'true';\n }\n\n return result;\n}\n","import { existsSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { createJiti } from 'jiti';\nimport type { LoadedConfig } from './LoadedConfig';\nimport { loadConfig } from './loadConfig';\n\nconst DEFAULT_CONFIG_FILENAMES = [\n 'tango.config.ts',\n 'tango.config.mts',\n 'tango.config.cts',\n 'tango.config.js',\n 'tango.config.mjs',\n 'tango.config.cjs',\n] as const;\n\nexport interface ProjectConfigLoadOptions {\n projectRoot?: string;\n configPath?: string;\n}\n\nfunction resolveConfigPath(projectRoot: string, explicitPath?: string): string {\n if (explicitPath) {\n const absolutePath = resolve(projectRoot, explicitPath);\n if (!existsSync(absolutePath)) {\n throw new Error(`Unable to find Tango config at '${absolutePath}'.`);\n }\n return absolutePath;\n }\n\n for (const filename of DEFAULT_CONFIG_FILENAMES) {\n const absolutePath = resolve(projectRoot, filename);\n if (existsSync(absolutePath)) {\n return absolutePath;\n }\n }\n\n throw new Error(\n `Unable to find Tango config in '${projectRoot}'. Expected one of: ${DEFAULT_CONFIG_FILENAMES.join(', ')}.`\n );\n}\n\n/**\n * Resolve, load, and validate `tango.config.*` from a project root.\n */\nexport function loadConfigFromProjectRoot(options: ProjectConfigLoadOptions = {}): LoadedConfig {\n const projectRoot = options.projectRoot ?? process.cwd();\n const configPath = resolveConfigPath(projectRoot, options.configPath);\n const jiti = createJiti(resolve(projectRoot, 'package.json'), {\n interopDefault: true,\n moduleCache: true,\n });\n const loaded = jiti(configPath);\n\n return loadConfig(() => loaded);\n}\n","/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport type { LoadedConfig } from './LoadedConfig';\nexport { defineConfig } from './defineConfig';\nexport { loadConfig } from './loadConfig';\nexport { loadConfigFromProjectRoot } from './loadConfigFromProjectRoot';\nexport type { ProjectConfigLoadOptions } from './loadConfigFromProjectRoot';\n"],"mappings":";;;;;;;;;;AAKA,SAAgB,aAAa,KAA2B;CACpD,OAAO,kBAAkB,MAAM,GAAG;AACtC;;;;;;ACAA,SAAgB,WAAW,UAAuC;CAC9D,OAAW;CAEX,MAAM,MAAM,kBAAkB,MAAM,SAAS,CAAC;CAC9C,MAAM,MAAM,IAAI;CAGhB,OAAO;EAAE;EAAK;EAAK,SAFH,kBAAkB,IAAI,aAAa,IAE1B;CAAE;AAC/B;;;;AAKA,SAAS,kBAAkB,QAA8B;CACrD,MAAM,SAAS,gBAAgB,MAAM;CACrC,MAAM,MAAM,QAAQ;CAEpB,IAAI,IAAI,kBACJ,OAAO,GAAG,UAAU,IAAI;CAG5B,IAAI,IAAI,gBAAgB,IAAI,oBACxB,OAAO,GAAG,MAAM,IAAI,sBAAsB,IAAI;CAGlD,IAAI,IAAI,eAAe,OAAO,GAAG,OAAO,IAAI;CAC5C,IAAI,IAAI,eAAe,OAAO,GAAG,OAAO,OAAO,IAAI,aAAa;CAChE,IAAI,IAAI,eAAe,OAAO,GAAG,WAAW,IAAI;CAChD,IAAI,IAAI,eAAe,OAAO,GAAG,OAAO,IAAI;CAC5C,IAAI,IAAI,mBAAmB,OAAO,GAAG,WAAW,IAAI;CACpD,IAAI,IAAI,uBAAuB,OAAO,GAAG,WAAW,IAAI;CAExD,IAAI,IAAI,sBAAsB,OAAO,WAAW,MAAM,IAAI;CAC1D,IAAI,IAAI,yBACJ,OAAO,WAAW,SAAS,IAAI,4BAA4B;CAG/D,OAAO;AACX;;;ACvCA,MAAM,2BAA2B;CAC7B;CACA;CACA;CACA;CACA;CACA;AACJ;AAOA,SAAS,kBAAkB,aAAqB,cAA+B;CAC3E,IAAI,cAAc;EACd,MAAM,eAAe,QAAQ,aAAa,YAAY;EACtD,IAAI,CAAC,WAAW,YAAY,GACxB,MAAM,IAAI,MAAM,mCAAmC,aAAa,GAAG;EAEvE,OAAO;CACX;CAEA,KAAK,MAAM,YAAY,0BAA0B;EAC7C,MAAM,eAAe,QAAQ,aAAa,QAAQ;EAClD,IAAI,WAAW,YAAY,GACvB,OAAO;CAEf;CAEA,MAAM,IAAI,MACN,mCAAmC,YAAY,sBAAsB,yBAAyB,KAAK,IAAI,EAAE,EAC7G;AACJ;;;;AAKA,SAAgB,0BAA0B,UAAoC,CAAC,GAAiB;CAC5F,MAAM,cAAc,QAAQ,eAAe,QAAQ,IAAI;CACvD,MAAM,aAAa,kBAAkB,aAAa,QAAQ,UAAU;CAKpE,MAAM,SAJO,WAAW,QAAQ,aAAa,cAAc,GAAG;EAC1D,gBAAgB;EAChB,aAAa;CACjB,CACkB,EAAE,UAAU;CAE9B,OAAO,iBAAiB,MAAM;AAClC"}
1
+ {"version":3,"file":"loader-CxZbw338.js","names":[],"sources":["../src/loader/defineConfig.ts","../src/loader/loadConfig.ts","../src/loader/loadConfigFromProjectRoot.ts","../src/loader/index.ts"],"sourcesContent":["import { TangoConfigSchema, type TangoConfig } from '../schema/index';\n\n/**\n * Define and validate Tango configuration at declaration time.\n */\nexport function defineConfig(cfg: unknown): TangoConfig {\n return TangoConfigSchema.parse(cfg) as TangoConfig;\n}\n","import { config as loadDotEnv } from 'dotenv';\nimport { TangoConfigSchema, type EnvConfig, type TangoConfig } from '../schema/index';\nimport type { LoadedConfig } from './LoadedConfig';\n\n/**\n * Load, validate, and environment-resolve Tango configuration.\n */\nexport function loadConfig(fromFile: () => unknown): LoadedConfig {\n loadDotEnv();\n\n const cfg = TangoConfigSchema.parse(fromFile()) as TangoConfig;\n const env = cfg.current;\n const current = mergeEnvOverrides(cfg.environments[env]);\n\n return { cfg, env, current };\n}\n\n/**\n * Merge process environment overrides into a base environment config.\n */\nfunction mergeEnvOverrides(envCfg: EnvConfig): EnvConfig {\n const result = structuredClone(envCfg);\n const env = process.env;\n\n if (env.TANGO_DB_ADAPTER) {\n result.db.adapter = env.TANGO_DB_ADAPTER as 'postgres' | 'sqlite';\n }\n\n if (env.DATABASE_URL || env.TANGO_DATABASE_URL) {\n result.db.url = env.TANGO_DATABASE_URL || env.DATABASE_URL;\n }\n\n if (env.TANGO_DB_HOST) result.db.host = env.TANGO_DB_HOST;\n if (env.TANGO_DB_PORT) result.db.port = Number(env.TANGO_DB_PORT);\n if (env.TANGO_DB_NAME) result.db.database = env.TANGO_DB_NAME;\n if (env.TANGO_DB_USER) result.db.user = env.TANGO_DB_USER;\n if (env.TANGO_DB_PASSWORD) result.db.password = env.TANGO_DB_PASSWORD;\n if (env.TANGO_SQLITE_FILENAME) result.db.filename = env.TANGO_SQLITE_FILENAME;\n\n if (env.TANGO_MIGRATIONS_DIR) result.migrations.dir = env.TANGO_MIGRATIONS_DIR;\n if (env.TANGO_MIGRATIONS_ONLINE) {\n result.migrations.online = env.TANGO_MIGRATIONS_ONLINE === 'true';\n }\n\n return result;\n}\n","import { existsSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { createJiti } from 'jiti';\nimport type { LoadedConfig } from './LoadedConfig';\nimport { loadConfig } from './loadConfig';\n\nconst DEFAULT_CONFIG_FILENAMES = [\n 'tango.config.ts',\n 'tango.config.mts',\n 'tango.config.cts',\n 'tango.config.js',\n 'tango.config.mjs',\n 'tango.config.cjs',\n] as const;\n\nexport interface ProjectConfigLoadOptions {\n projectRoot?: string;\n configPath?: string;\n}\n\nfunction resolveConfigPath(projectRoot: string, explicitPath?: string): string {\n if (explicitPath) {\n const absolutePath = resolve(projectRoot, explicitPath);\n if (!existsSync(absolutePath)) {\n throw new Error(`Unable to find Tango config at '${absolutePath}'.`);\n }\n return absolutePath;\n }\n\n for (const filename of DEFAULT_CONFIG_FILENAMES) {\n const absolutePath = resolve(projectRoot, filename);\n if (existsSync(absolutePath)) {\n return absolutePath;\n }\n }\n\n throw new Error(\n `Unable to find Tango config in '${projectRoot}'. Expected one of: ${DEFAULT_CONFIG_FILENAMES.join(', ')}.`\n );\n}\n\n/**\n * Resolve, load, and validate `tango.config.*` from a project root.\n */\nexport function loadConfigFromProjectRoot(options: ProjectConfigLoadOptions = {}): LoadedConfig {\n const projectRoot = options.projectRoot ?? process.cwd();\n const configPath = resolveConfigPath(projectRoot, options.configPath);\n const jiti = createJiti(resolve(projectRoot, 'package.json'), {\n interopDefault: true,\n moduleCache: true,\n });\n const loaded = jiti(configPath);\n\n return loadConfig(() => loaded);\n}\n","/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport type { LoadedConfig } from './LoadedConfig';\nexport { defineConfig } from './defineConfig';\nexport { loadConfig } from './loadConfig';\nexport { loadConfigFromProjectRoot } from './loadConfigFromProjectRoot';\nexport type { ProjectConfigLoadOptions } from './loadConfigFromProjectRoot';\n"],"mappings":";;;;;;;;;;AAKA,SAAgB,aAAa,KAA2B;CACpD,OAAO,kBAAkB,MAAM,GAAG;AACtC;;;;;;ACAA,SAAgB,WAAW,UAAuC;CAC9D,OAAW;CAEX,MAAM,MAAM,kBAAkB,MAAM,SAAS,CAAC;CAC9C,MAAM,MAAM,IAAI;CAGhB,OAAO;EAAE;EAAK;EAAK,SAFH,kBAAkB,IAAI,aAAa,IAE1B;CAAE;AAC/B;;;;AAKA,SAAS,kBAAkB,QAA8B;CACrD,MAAM,SAAS,gBAAgB,MAAM;CACrC,MAAM,MAAM,QAAQ;CAEpB,IAAI,IAAI,kBACJ,OAAO,GAAG,UAAU,IAAI;CAG5B,IAAI,IAAI,gBAAgB,IAAI,oBACxB,OAAO,GAAG,MAAM,IAAI,sBAAsB,IAAI;CAGlD,IAAI,IAAI,eAAe,OAAO,GAAG,OAAO,IAAI;CAC5C,IAAI,IAAI,eAAe,OAAO,GAAG,OAAO,OAAO,IAAI,aAAa;CAChE,IAAI,IAAI,eAAe,OAAO,GAAG,WAAW,IAAI;CAChD,IAAI,IAAI,eAAe,OAAO,GAAG,OAAO,IAAI;CAC5C,IAAI,IAAI,mBAAmB,OAAO,GAAG,WAAW,IAAI;CACpD,IAAI,IAAI,uBAAuB,OAAO,GAAG,WAAW,IAAI;CAExD,IAAI,IAAI,sBAAsB,OAAO,WAAW,MAAM,IAAI;CAC1D,IAAI,IAAI,yBACJ,OAAO,WAAW,SAAS,IAAI,4BAA4B;CAG/D,OAAO;AACX;;;ACvCA,MAAM,2BAA2B;CAC7B;CACA;CACA;CACA;CACA;CACA;AACJ;AAOA,SAAS,kBAAkB,aAAqB,cAA+B;CAC3E,IAAI,cAAc;EACd,MAAM,eAAe,QAAQ,aAAa,YAAY;EACtD,IAAI,CAAC,WAAW,YAAY,GACxB,MAAM,IAAI,MAAM,mCAAmC,aAAa,GAAG;EAEvE,OAAO;CACX;CAEA,KAAK,MAAM,YAAY,0BAA0B;EAC7C,MAAM,eAAe,QAAQ,aAAa,QAAQ;EAClD,IAAI,WAAW,YAAY,GACvB,OAAO;CAEf;CAEA,MAAM,IAAI,MACN,mCAAmC,YAAY,sBAAsB,yBAAyB,KAAK,IAAI,EAAE,EAC7G;AACJ;;;;AAKA,SAAgB,0BAA0B,UAAoC,CAAC,GAAiB;CAC5F,MAAM,cAAc,QAAQ,eAAe,QAAQ,IAAI;CACvD,MAAM,aAAa,kBAAkB,aAAa,QAAQ,UAAU;CAKpE,MAAM,SAJO,WAAW,QAAQ,aAAa,cAAc,GAAG;EAC1D,gBAAgB;EAChB,aAAa;CACjB,CACkB,CAAC,CAAC,UAAU;CAE9B,OAAO,iBAAiB,MAAM;AAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-DJCXNVzy.js","names":[],"sources":["../src/schema/internal/InternalAdapterName.ts","../src/schema/AdapterName.ts","../src/schema/DbConfig.ts","../src/schema/MigrationsConfig.ts","../src/schema/internal/InternalEnvName.ts","../src/schema/EnvConfig.ts","../src/schema/TangoConfig.ts","../src/schema/index.ts"],"sourcesContent":["export const InternalAdapterName = {\n POSTGRES: 'postgres',\n SQLITE: 'sqlite',\n} as const;\n","import { z } from 'zod';\nimport { InternalAdapterName } from './internal/InternalAdapterName';\n\nexport type AdapterName = (typeof InternalAdapterName)[keyof typeof InternalAdapterName];\n\nexport const AdapterNameSchema: z.ZodTypeAny = z.enum(Object.values(InternalAdapterName));\n","import { z } from 'zod';\nimport { AdapterNameSchema, type AdapterName } from './AdapterName';\n\nexport type DbConfig = {\n adapter: AdapterName;\n url?: string;\n host?: string;\n port?: number;\n database?: string;\n user?: string;\n password?: string;\n filename?: string;\n maxConnections: number;\n};\n\nexport const DbConfigSchema: z.ZodTypeAny = z.object({\n adapter: AdapterNameSchema,\n url: z.string().optional(),\n host: z.string().optional(),\n port: z.coerce.number().optional(),\n database: z.string().optional(),\n user: z.string().optional(),\n password: z.string().optional(),\n filename: z.string().optional(),\n maxConnections: z.coerce.number().default(10),\n});\n","import { z } from 'zod';\n\nexport type MigrationsConfig = {\n dir: string;\n online: boolean;\n /** When false, `tango migrate` exits without applying. Default `true`. */\n autoApply: boolean;\n};\n\nexport const MigrationsConfigSchema: z.ZodTypeAny = z.object({\n dir: z.string().default('migrations'),\n online: z.boolean().default(false),\n autoApply: z.boolean().default(true),\n});\n","export const InternalEnvName = {\n DEVELOPMENT: 'development',\n TEST: 'test',\n PRODUCTION: 'production',\n} as const;\n","import { z } from 'zod';\nimport { DbConfigSchema, type DbConfig } from './DbConfig';\nimport { MigrationsConfigSchema, type MigrationsConfig } from './MigrationsConfig';\nimport { InternalEnvName } from './internal/InternalEnvName';\n\nexport type EnvName = (typeof InternalEnvName)[keyof typeof InternalEnvName];\n\nexport type EnvConfig = {\n name: EnvName;\n db: DbConfig;\n migrations: MigrationsConfig;\n};\n\nexport const EnvConfigSchema: z.ZodTypeAny = z.object({\n name: z.enum(Object.values(InternalEnvName)),\n db: DbConfigSchema,\n migrations: MigrationsConfigSchema.default({\n dir: 'migrations',\n online: false,\n }),\n});\n","import { z } from 'zod';\nimport { EnvConfigSchema, type EnvConfig, type EnvName } from './EnvConfig';\nimport { InternalEnvName } from './internal/InternalEnvName';\n\n/**\n * Root Tango framework configuration across deployment environments.\n */\nexport type TangoConfig = {\n current: EnvName;\n environments: {\n development: EnvConfig;\n test: EnvConfig;\n production: EnvConfig;\n };\n};\n\n/**\n * Runtime schema for validating Tango config files.\n */\nexport const TangoConfigSchema: z.ZodTypeAny = z.object({\n current: z.enum(Object.values(InternalEnvName)).default(InternalEnvName.DEVELOPMENT),\n environments: z.object({\n development: EnvConfigSchema,\n test: EnvConfigSchema,\n production: EnvConfigSchema,\n }),\n});\n","/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport type { AdapterName } from './AdapterName';\nexport { AdapterNameSchema } from './AdapterName';\n\nexport type { DbConfig } from './DbConfig';\nexport { DbConfigSchema } from './DbConfig';\n\nexport type { MigrationsConfig } from './MigrationsConfig';\nexport { MigrationsConfigSchema } from './MigrationsConfig';\n\nexport type { EnvConfig, EnvName } from './EnvConfig';\nexport { EnvConfigSchema } from './EnvConfig';\n\nexport type { TangoConfig } from './TangoConfig';\nexport { TangoConfigSchema } from './TangoConfig';\n"],"mappings":";;;;ACKA,MAAa,oBAAkC,EAAE,KAAK,OAAO,OAAO;CDJhE,UAAU;CACV,QAAQ;ACGwD,CAAmB,CAAC;;;ACUxF,MAAa,iBAA+B,EAAE,OAAO;CACjD,SAAS;CACT,KAAK,EAAE,OAAO,EAAE,SAAS;CACzB,MAAM,EAAE,OAAO,EAAE,SAAS;CAC1B,MAAM,EAAE,OAAO,OAAO,EAAE,SAAS;CACjC,UAAU,EAAE,OAAO,EAAE,SAAS;CAC9B,MAAM,EAAE,OAAO,EAAE,SAAS;CAC1B,UAAU,EAAE,OAAO,EAAE,SAAS;CAC9B,UAAU,EAAE,OAAO,EAAE,SAAS;CAC9B,gBAAgB,EAAE,OAAO,OAAO,EAAE,QAAQ,EAAE;AAChD,CAAC;;;AChBD,MAAa,yBAAuC,EAAE,OAAO;CACzD,KAAK,EAAE,OAAO,EAAE,QAAQ,YAAY;CACpC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,KAAK;CACjC,WAAW,EAAE,QAAQ,EAAE,QAAQ,IAAI;AACvC,CAAC;;;ACbD,MAAa,kBAAkB;CAC3B,aAAa;CACb,MAAM;CACN,YAAY;AAChB;;;ACSA,MAAa,kBAAgC,EAAE,OAAO;CAClD,MAAM,EAAE,KAAK,OAAO,OAAO,eAAe,CAAC;CAC3C,IAAI;CACJ,YAAY,uBAAuB,QAAQ;EACvC,KAAK;EACL,QAAQ;CACZ,CAAC;AACL,CAAC;;;;;;ACDD,MAAa,oBAAkC,EAAE,OAAO;CACpD,SAAS,EAAE,KAAK,OAAO,OAAO,eAAe,CAAC,EAAE,QAAQ,gBAAgB,WAAW;CACnF,cAAc,EAAE,OAAO;EACnB,aAAa;EACb,MAAM;EACN,YAAY;CAChB,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"schema-DJCXNVzy.js","names":[],"sources":["../src/schema/internal/InternalAdapterName.ts","../src/schema/AdapterName.ts","../src/schema/DbConfig.ts","../src/schema/MigrationsConfig.ts","../src/schema/internal/InternalEnvName.ts","../src/schema/EnvConfig.ts","../src/schema/TangoConfig.ts","../src/schema/index.ts"],"sourcesContent":["export const InternalAdapterName = {\n POSTGRES: 'postgres',\n SQLITE: 'sqlite',\n} as const;\n","import { z } from 'zod';\nimport { InternalAdapterName } from './internal/InternalAdapterName';\n\nexport type AdapterName = (typeof InternalAdapterName)[keyof typeof InternalAdapterName];\n\nexport const AdapterNameSchema: z.ZodTypeAny = z.enum(Object.values(InternalAdapterName));\n","import { z } from 'zod';\nimport { AdapterNameSchema, type AdapterName } from './AdapterName';\n\nexport type DbConfig = {\n adapter: AdapterName;\n url?: string;\n host?: string;\n port?: number;\n database?: string;\n user?: string;\n password?: string;\n filename?: string;\n maxConnections: number;\n};\n\nexport const DbConfigSchema: z.ZodTypeAny = z.object({\n adapter: AdapterNameSchema,\n url: z.string().optional(),\n host: z.string().optional(),\n port: z.coerce.number().optional(),\n database: z.string().optional(),\n user: z.string().optional(),\n password: z.string().optional(),\n filename: z.string().optional(),\n maxConnections: z.coerce.number().default(10),\n});\n","import { z } from 'zod';\n\nexport type MigrationsConfig = {\n dir: string;\n online: boolean;\n /** When false, `tango migrate` exits without applying. Default `true`. */\n autoApply: boolean;\n};\n\nexport const MigrationsConfigSchema: z.ZodTypeAny = z.object({\n dir: z.string().default('migrations'),\n online: z.boolean().default(false),\n autoApply: z.boolean().default(true),\n});\n","export const InternalEnvName = {\n DEVELOPMENT: 'development',\n TEST: 'test',\n PRODUCTION: 'production',\n} as const;\n","import { z } from 'zod';\nimport { DbConfigSchema, type DbConfig } from './DbConfig';\nimport { MigrationsConfigSchema, type MigrationsConfig } from './MigrationsConfig';\nimport { InternalEnvName } from './internal/InternalEnvName';\n\nexport type EnvName = (typeof InternalEnvName)[keyof typeof InternalEnvName];\n\nexport type EnvConfig = {\n name: EnvName;\n db: DbConfig;\n migrations: MigrationsConfig;\n};\n\nexport const EnvConfigSchema: z.ZodTypeAny = z.object({\n name: z.enum(Object.values(InternalEnvName)),\n db: DbConfigSchema,\n migrations: MigrationsConfigSchema.default({\n dir: 'migrations',\n online: false,\n }),\n});\n","import { z } from 'zod';\nimport { EnvConfigSchema, type EnvConfig, type EnvName } from './EnvConfig';\nimport { InternalEnvName } from './internal/InternalEnvName';\n\n/**\n * Root Tango framework configuration across deployment environments.\n */\nexport type TangoConfig = {\n current: EnvName;\n environments: {\n development: EnvConfig;\n test: EnvConfig;\n production: EnvConfig;\n };\n};\n\n/**\n * Runtime schema for validating Tango config files.\n */\nexport const TangoConfigSchema: z.ZodTypeAny = z.object({\n current: z.enum(Object.values(InternalEnvName)).default(InternalEnvName.DEVELOPMENT),\n environments: z.object({\n development: EnvConfigSchema,\n test: EnvConfigSchema,\n production: EnvConfigSchema,\n }),\n});\n","/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport type { AdapterName } from './AdapterName';\nexport { AdapterNameSchema } from './AdapterName';\n\nexport type { DbConfig } from './DbConfig';\nexport { DbConfigSchema } from './DbConfig';\n\nexport type { MigrationsConfig } from './MigrationsConfig';\nexport { MigrationsConfigSchema } from './MigrationsConfig';\n\nexport type { EnvConfig, EnvName } from './EnvConfig';\nexport { EnvConfigSchema } from './EnvConfig';\n\nexport type { TangoConfig } from './TangoConfig';\nexport { TangoConfigSchema } from './TangoConfig';\n"],"mappings":";;;;ACKA,MAAa,oBAAkC,EAAE,KAAK,OAAO,OAAO;CDJhE,UAAU;CACV,QAAQ;ACGwD,CAAmB,CAAC;;;ACUxF,MAAa,iBAA+B,EAAE,OAAO;CACjD,SAAS;CACT,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS;CACzB,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,MAAM,EAAE,OAAO,OAAO,CAAC,CAAC,SAAS;CACjC,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,gBAAgB,EAAE,OAAO,OAAO,CAAC,CAAC,QAAQ,EAAE;AAChD,CAAC;;;AChBD,MAAa,yBAAuC,EAAE,OAAO;CACzD,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,YAAY;CACpC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK;CACjC,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,IAAI;AACvC,CAAC;;;ACbD,MAAa,kBAAkB;CAC3B,aAAa;CACb,MAAM;CACN,YAAY;AAChB;;;ACSA,MAAa,kBAAgC,EAAE,OAAO;CAClD,MAAM,EAAE,KAAK,OAAO,OAAO,eAAe,CAAC;CAC3C,IAAI;CACJ,YAAY,uBAAuB,QAAQ;EACvC,KAAK;EACL,QAAQ;CACZ,CAAC;AACL,CAAC;;;;;;ACDD,MAAa,oBAAkC,EAAE,OAAO;CACpD,SAAS,EAAE,KAAK,OAAO,OAAO,eAAe,CAAC,CAAC,CAAC,QAAQ,gBAAgB,WAAW;CACnF,cAAc,EAAE,OAAO;EACnB,aAAa;EACb,MAAM;EACN,YAAY;CAChB,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danceroutine/tango-config",
3
- "version": "1.11.15",
3
+ "version": "1.12.1",
4
4
  "description": "Configuration loader with environment profiles for Tango",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/node": "^25.9.1",
45
- "tsdown": "^0.22.1",
45
+ "tsdown": "^0.22.2",
46
46
  "typescript": "^6.0.3",
47
47
  "vitest": "^4.1.8"
48
48
  },