@danceroutine/tango-config 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +9 -0
- package/dist/index.js +4 -0
- package/dist/loader/LoadedConfig.d.ts +6 -0
- package/dist/loader/defineConfig.d.ts +2 -0
- package/dist/loader/index.d.ts +6 -0
- package/dist/loader/index.js +4 -0
- package/dist/loader/loadConfig.d.ts +2 -0
- package/dist/loader-De9vxa5D.js +48 -0
- package/dist/loader-De9vxa5D.js.map +1 -0
- package/dist/schema/AdapterName.d.ts +3 -0
- package/dist/schema/DbConfig.d.ts +14 -0
- package/dist/schema/EnvConfig.d.ts +10 -0
- package/dist/schema/MigrationsConfig.d.ts +6 -0
- package/dist/schema/TangoConfig.d.ts +11 -0
- package/dist/schema/index.d.ts +13 -0
- package/dist/schema/index.js +3 -0
- package/dist/schema-D6LCZS5E.js +80 -0
- package/dist/schema-D6LCZS5E.js.map +1 -0
- package/package.json +54 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundled exports for Django-style domain drill-down imports, plus curated
|
|
3
|
+
* top-level symbols for TS-native ergonomic imports.
|
|
4
|
+
*/
|
|
5
|
+
export * as schema from './schema/index';
|
|
6
|
+
export * as loader from './loader/index';
|
|
7
|
+
export { defineConfig, loadConfig, type LoadedConfig } from './loader/index';
|
|
8
|
+
export type { AdapterName, DbConfig, EnvConfig, EnvName, MigrationsConfig, TangoConfig } from './schema/index';
|
|
9
|
+
export { AdapterNameSchema, DbConfigSchema, EnvConfigSchema, MigrationsConfigSchema, TangoConfigSchema, } from './schema/index';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AdapterNameSchema, DbConfigSchema, EnvConfigSchema, MigrationsConfigSchema, TangoConfigSchema, schema_exports } from "./schema-D6LCZS5E.js";
|
|
2
|
+
import { defineConfig, loadConfig, loader_exports } from "./loader-De9vxa5D.js";
|
|
3
|
+
|
|
4
|
+
export { AdapterNameSchema, DbConfigSchema, EnvConfigSchema, MigrationsConfigSchema, TangoConfigSchema, defineConfig, loadConfig, loader_exports as loader, schema_exports as schema };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { TangoConfigSchema, __export } from "./schema-D6LCZS5E.js";
|
|
2
|
+
import { config as loadDotEnv } from "dotenv";
|
|
3
|
+
|
|
4
|
+
//#region src/loader/defineConfig.ts
|
|
5
|
+
function defineConfig(cfg) {
|
|
6
|
+
return TangoConfigSchema.parse(cfg);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/loader/loadConfig.ts
|
|
11
|
+
function loadConfig(fromFile) {
|
|
12
|
+
loadDotEnv();
|
|
13
|
+
const cfg = TangoConfigSchema.parse(fromFile());
|
|
14
|
+
const env = cfg.current;
|
|
15
|
+
const current = mergeEnvOverrides(cfg.environments[env]);
|
|
16
|
+
return {
|
|
17
|
+
cfg,
|
|
18
|
+
env,
|
|
19
|
+
current
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function mergeEnvOverrides(envCfg) {
|
|
23
|
+
const result = structuredClone(envCfg);
|
|
24
|
+
const env = process.env;
|
|
25
|
+
if (env.TANGO_DB_ADAPTER) result.db.adapter = env.TANGO_DB_ADAPTER;
|
|
26
|
+
if (env.DATABASE_URL || env.TANGO_DATABASE_URL) result.db.url = env.TANGO_DATABASE_URL || env.DATABASE_URL;
|
|
27
|
+
if (env.TANGO_DB_HOST) result.db.host = env.TANGO_DB_HOST;
|
|
28
|
+
if (env.TANGO_DB_PORT) result.db.port = Number(env.TANGO_DB_PORT);
|
|
29
|
+
if (env.TANGO_DB_NAME) result.db.database = env.TANGO_DB_NAME;
|
|
30
|
+
if (env.TANGO_DB_USER) result.db.user = env.TANGO_DB_USER;
|
|
31
|
+
if (env.TANGO_DB_PASSWORD) result.db.password = env.TANGO_DB_PASSWORD;
|
|
32
|
+
if (env.TANGO_SQLITE_FILENAME) result.db.filename = env.TANGO_SQLITE_FILENAME;
|
|
33
|
+
if (env.TANGO_MIGRATIONS_DIR) result.migrations.dir = env.TANGO_MIGRATIONS_DIR;
|
|
34
|
+
if (env.TANGO_MIGRATIONS_ONLINE) result.migrations.online = env.TANGO_MIGRATIONS_ONLINE === "true";
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
//#endregion
|
|
39
|
+
//#region src/loader/index.ts
|
|
40
|
+
var loader_exports = {};
|
|
41
|
+
__export(loader_exports, {
|
|
42
|
+
defineConfig: () => defineConfig,
|
|
43
|
+
loadConfig: () => loadConfig
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
//#endregion
|
|
47
|
+
export { defineConfig, loadConfig, loader_exports };
|
|
48
|
+
//# sourceMappingURL=loader-De9vxa5D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-De9vxa5D.js","names":["cfg: unknown","fromFile: () => unknown","envCfg: EnvConfig"],"sources":["../src/loader/defineConfig.ts","../src/loader/loadConfig.ts","../src/loader/index.ts"],"sourcesContent":["import { TangoConfigSchema, type TangoConfig } from '../schema/index';\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\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\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","/**\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';\n"],"mappings":";;;;AAEO,SAAS,aAAaA,KAA2B;AACpD,QAAO,kBAAkB,MAAM,IAAI;AACtC;;;;ACAM,SAAS,WAAWC,UAAuC;AAC9D,aAAY;CAEZ,MAAM,MAAM,kBAAkB,MAAM,UAAU,CAAC;CAC/C,MAAM,MAAM,IAAI;CAChB,MAAM,UAAU,kBAAkB,IAAI,aAAa,KAAK;AAExD,QAAO;EAAE;EAAK;EAAK;CAAS;AAC/B;AAED,SAAS,kBAAkBC,QAA8B;CACrD,MAAM,SAAS,gBAAgB,OAAO;CACtC,MAAM,MAAM,QAAQ;AAEpB,KAAI,IAAI,iBACJ,QAAO,GAAG,UAAU,IAAI;AAG5B,KAAI,IAAI,gBAAgB,IAAI,mBACxB,QAAO,GAAG,MAAM,IAAI,sBAAsB,IAAI;AAGlD,KAAI,IAAI,cAAe,QAAO,GAAG,OAAO,IAAI;AAC5C,KAAI,IAAI,cAAe,QAAO,GAAG,OAAO,OAAO,IAAI,cAAc;AACjE,KAAI,IAAI,cAAe,QAAO,GAAG,WAAW,IAAI;AAChD,KAAI,IAAI,cAAe,QAAO,GAAG,OAAO,IAAI;AAC5C,KAAI,IAAI,kBAAmB,QAAO,GAAG,WAAW,IAAI;AACpD,KAAI,IAAI,sBAAuB,QAAO,GAAG,WAAW,IAAI;AAExD,KAAI,IAAI,qBAAsB,QAAO,WAAW,MAAM,IAAI;AAC1D,KAAI,IAAI,wBACJ,QAAO,WAAW,SAAS,IAAI,4BAA4B;AAG/D,QAAO;AACV"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type AdapterName } from './AdapterName';
|
|
3
|
+
export type DbConfig = {
|
|
4
|
+
adapter: AdapterName;
|
|
5
|
+
url?: string;
|
|
6
|
+
host?: string;
|
|
7
|
+
port?: number;
|
|
8
|
+
database?: string;
|
|
9
|
+
user?: string;
|
|
10
|
+
password?: string;
|
|
11
|
+
filename?: string;
|
|
12
|
+
maxConnections: number;
|
|
13
|
+
};
|
|
14
|
+
export declare const DbConfigSchema: z.ZodTypeAny;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type DbConfig } from './DbConfig';
|
|
3
|
+
import { type MigrationsConfig } from './MigrationsConfig';
|
|
4
|
+
export type EnvName = 'development' | 'test' | 'production';
|
|
5
|
+
export type EnvConfig = {
|
|
6
|
+
name: EnvName;
|
|
7
|
+
db: DbConfig;
|
|
8
|
+
migrations: MigrationsConfig;
|
|
9
|
+
};
|
|
10
|
+
export declare const EnvConfigSchema: z.ZodTypeAny;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type EnvConfig, type EnvName } from './EnvConfig';
|
|
3
|
+
export type TangoConfig = {
|
|
4
|
+
current: EnvName;
|
|
5
|
+
environments: {
|
|
6
|
+
development: EnvConfig;
|
|
7
|
+
test: EnvConfig;
|
|
8
|
+
production: EnvConfig;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare const TangoConfigSchema: z.ZodTypeAny;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain boundary barrel: centralizes this subdomain's public contract.
|
|
3
|
+
*/
|
|
4
|
+
export type { AdapterName } from './AdapterName';
|
|
5
|
+
export { AdapterNameSchema } from './AdapterName';
|
|
6
|
+
export type { DbConfig } from './DbConfig';
|
|
7
|
+
export { DbConfigSchema } from './DbConfig';
|
|
8
|
+
export type { MigrationsConfig } from './MigrationsConfig';
|
|
9
|
+
export { MigrationsConfigSchema } from './MigrationsConfig';
|
|
10
|
+
export type { EnvConfig, EnvName } from './EnvConfig';
|
|
11
|
+
export { EnvConfigSchema } from './EnvConfig';
|
|
12
|
+
export type { TangoConfig } from './TangoConfig';
|
|
13
|
+
export { TangoConfigSchema } from './TangoConfig';
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { z, z as z$1, z as z$2, z as z$3, z as z$4 } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region rolldown:runtime
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region src/schema/AdapterName.ts
|
|
14
|
+
const AdapterNameSchema = z$4.enum(["postgres", "sqlite"]);
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/schema/DbConfig.ts
|
|
18
|
+
const DbConfigSchema = z$3.object({
|
|
19
|
+
adapter: AdapterNameSchema,
|
|
20
|
+
url: z$3.string().optional(),
|
|
21
|
+
host: z$3.string().optional(),
|
|
22
|
+
port: z$3.coerce.number().optional(),
|
|
23
|
+
database: z$3.string().optional(),
|
|
24
|
+
user: z$3.string().optional(),
|
|
25
|
+
password: z$3.string().optional(),
|
|
26
|
+
filename: z$3.string().optional(),
|
|
27
|
+
maxConnections: z$3.coerce.number().default(10)
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region src/schema/MigrationsConfig.ts
|
|
32
|
+
const MigrationsConfigSchema = z$2.object({
|
|
33
|
+
dir: z$2.string().default("migrations"),
|
|
34
|
+
online: z$2.boolean().default(false)
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/schema/EnvConfig.ts
|
|
39
|
+
const EnvConfigSchema = z$1.object({
|
|
40
|
+
name: z$1.enum([
|
|
41
|
+
"development",
|
|
42
|
+
"test",
|
|
43
|
+
"production"
|
|
44
|
+
]),
|
|
45
|
+
db: DbConfigSchema,
|
|
46
|
+
migrations: MigrationsConfigSchema.default({
|
|
47
|
+
dir: "migrations",
|
|
48
|
+
online: false
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region src/schema/TangoConfig.ts
|
|
54
|
+
const TangoConfigSchema = z.object({
|
|
55
|
+
current: z.enum([
|
|
56
|
+
"development",
|
|
57
|
+
"test",
|
|
58
|
+
"production"
|
|
59
|
+
]).default("development"),
|
|
60
|
+
environments: z.object({
|
|
61
|
+
development: EnvConfigSchema,
|
|
62
|
+
test: EnvConfigSchema,
|
|
63
|
+
production: EnvConfigSchema
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
//#region src/schema/index.ts
|
|
69
|
+
var schema_exports = {};
|
|
70
|
+
__export(schema_exports, {
|
|
71
|
+
AdapterNameSchema: () => AdapterNameSchema,
|
|
72
|
+
DbConfigSchema: () => DbConfigSchema,
|
|
73
|
+
EnvConfigSchema: () => EnvConfigSchema,
|
|
74
|
+
MigrationsConfigSchema: () => MigrationsConfigSchema,
|
|
75
|
+
TangoConfigSchema: () => TangoConfigSchema
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
//#endregion
|
|
79
|
+
export { AdapterNameSchema, DbConfigSchema, EnvConfigSchema, MigrationsConfigSchema, TangoConfigSchema, __export, schema_exports };
|
|
80
|
+
//# sourceMappingURL=schema-D6LCZS5E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-D6LCZS5E.js","names":["AdapterNameSchema: z.ZodTypeAny","DbConfigSchema: z.ZodTypeAny","MigrationsConfigSchema: z.ZodTypeAny","EnvConfigSchema: z.ZodTypeAny","TangoConfigSchema: z.ZodTypeAny"],"sources":["../src/schema/AdapterName.ts","../src/schema/DbConfig.ts","../src/schema/MigrationsConfig.ts","../src/schema/EnvConfig.ts","../src/schema/TangoConfig.ts","../src/schema/index.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport type AdapterName = 'postgres' | 'sqlite';\n\nexport const AdapterNameSchema: z.ZodTypeAny = z.enum(['postgres', 'sqlite']);\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};\n\nexport const MigrationsConfigSchema: z.ZodTypeAny = z.object({\n dir: z.string().default('migrations'),\n online: z.boolean().default(false),\n});\n","import { z } from 'zod';\nimport { DbConfigSchema, type DbConfig } from './DbConfig';\nimport { MigrationsConfigSchema, type MigrationsConfig } from './MigrationsConfig';\n\nexport type EnvName = 'development' | 'test' | 'production';\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(['development', 'test', 'production']),\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';\n\nexport type TangoConfig = {\n current: EnvName;\n environments: {\n development: EnvConfig;\n test: EnvConfig;\n production: EnvConfig;\n };\n};\n\nexport const TangoConfigSchema: z.ZodTypeAny = z.object({\n current: z.enum(['development', 'test', 'production']).default('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":";;;;;;;;;;;;;MAIaA,oBAAkC,IAAE,KAAK,CAAC,YAAY,QAAS,EAAC;;;;MCWhEC,iBAA+B,IAAE,OAAO;CACjD,SAAS;CACT,KAAK,IAAE,QAAQ,CAAC,UAAU;CAC1B,MAAM,IAAE,QAAQ,CAAC,UAAU;CAC3B,MAAM,IAAE,OAAO,QAAQ,CAAC,UAAU;CAClC,UAAU,IAAE,QAAQ,CAAC,UAAU;CAC/B,MAAM,IAAE,QAAQ,CAAC,UAAU;CAC3B,UAAU,IAAE,QAAQ,CAAC,UAAU;CAC/B,UAAU,IAAE,QAAQ,CAAC,UAAU;CAC/B,gBAAgB,IAAE,OAAO,QAAQ,CAAC,QAAQ,GAAG;AAChD,EAAC;;;;MClBWC,yBAAuC,IAAE,OAAO;CACzD,KAAK,IAAE,QAAQ,CAAC,QAAQ,aAAa;CACrC,QAAQ,IAAE,SAAS,CAAC,QAAQ,MAAM;AACrC,EAAC;;;;MCEWC,kBAAgC,IAAE,OAAO;CAClD,MAAM,IAAE,KAAK;EAAC;EAAe;EAAQ;CAAa,EAAC;CACnD,IAAI;CACJ,YAAY,uBAAuB,QAAQ;EACvC,KAAK;EACL,QAAQ;CACX,EAAC;AACL,EAAC;;;;MCPWC,oBAAkC,EAAE,OAAO;CACpD,SAAS,EAAE,KAAK;EAAC;EAAe;EAAQ;CAAa,EAAC,CAAC,QAAQ,cAAc;CAC7E,cAAc,EAAE,OAAO;EACnB,aAAa;EACb,MAAM;EACN,YAAY;CACf,EAAC;AACL,EAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@danceroutine/tango-config",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Configuration loader with environment profiles for Tango",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./schema": {
|
|
14
|
+
"types": "./dist/schema/index.d.ts",
|
|
15
|
+
"import": "./dist/schema/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./loader": {
|
|
18
|
+
"types": "./dist/loader/index.d.ts",
|
|
19
|
+
"import": "./dist/loader/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "tsdown",
|
|
27
|
+
"test": "vitest run --coverage",
|
|
28
|
+
"test:watch": "vitest",
|
|
29
|
+
"typecheck": "tsc --noEmit"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"tango",
|
|
33
|
+
"config",
|
|
34
|
+
"environment",
|
|
35
|
+
"database"
|
|
36
|
+
],
|
|
37
|
+
"author": "Pedro Del Moral Lopez",
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"repository": {
|
|
40
|
+
"type": "git",
|
|
41
|
+
"url": "https://github.com/danceroutine/tango.git",
|
|
42
|
+
"directory": "packages/config"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"dotenv": "^16.4.7",
|
|
46
|
+
"zod": "^4.0.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/node": "^22.9.0",
|
|
50
|
+
"tsdown": "^0.4.0",
|
|
51
|
+
"typescript": "^5.6.3",
|
|
52
|
+
"vitest": "^4.0.6"
|
|
53
|
+
}
|
|
54
|
+
}
|