@appixar/xpg 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/configLoader.d.ts +1 -1
- package/dist/configLoader.d.ts.map +1 -1
- package/dist/configLoader.js +110 -19
- package/dist/configLoader.js.map +1 -1
- package/package.json +1 -1
- package/xpg.config.yml-sample +1 -1
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ Define your database tables in simple YAML files, and **xpg** automatically crea
|
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
9
|
-
- **YAML Schema DSL** — Define tables with a concise, human-readable syntax
|
|
9
|
+
- **YAML Schema DSL** — Define tables with a concise, human-readable syntax.
|
|
10
10
|
- **Diff-based migrations** — Automatically detects changes and generates `ALTER TABLE` statements
|
|
11
11
|
- **Custom field types** — Create reusable type aliases (`id`, `str`, `email`, etc.)
|
|
12
12
|
- **Read/write splitting** — Route queries to read replicas automatically
|
package/dist/configLoader.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface LoadedConfig {
|
|
|
10
10
|
*
|
|
11
11
|
* Resolution order:
|
|
12
12
|
* 1. `--config <path>` CLI argument → single file
|
|
13
|
-
* 2.
|
|
13
|
+
* 2. Smart discovery: root → config/ → src/ → other dirs
|
|
14
14
|
* 3. `config/postgres.yml` + `config/custom_fields.yml` (PHP-compatible layout)
|
|
15
15
|
*
|
|
16
16
|
* Automatically loads .env from CWD (and config dir if different).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configLoader.d.ts","sourceRoot":"","sources":["../src/configLoader.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"configLoader.d.ts","sourceRoot":"","sources":["../src/configLoader.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAmJjE,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7C,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAuD5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAG9E"}
|
package/dist/configLoader.js
CHANGED
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
// ─────────────────────────────────────────────
|
|
4
4
|
// Loads xpg.config.yml (or separate postgres.yml + custom_fields.yml)
|
|
5
5
|
// with environment variable interpolation: <ENV.VAR> → process.env.VAR
|
|
6
|
-
import { readFileSync, existsSync } from 'node:fs';
|
|
6
|
+
import { readFileSync, existsSync, readdirSync, statSync } from 'node:fs';
|
|
7
7
|
import { resolve, dirname } from 'node:path';
|
|
8
8
|
import YAML from 'yaml';
|
|
9
|
+
/** Directories to skip when searching for config files */
|
|
10
|
+
const SKIP_DIRS = new Set([
|
|
11
|
+
'node_modules', 'dist', 'build', 'public', 'tmp', 'temp',
|
|
12
|
+
'coverage', 'test', 'tests', '__tests__', '.git',
|
|
13
|
+
]);
|
|
9
14
|
/**
|
|
10
15
|
* Load variables from a .env file into process.env.
|
|
11
16
|
* Does NOT overwrite variables that already exist in process.env.
|
|
@@ -44,6 +49,87 @@ function loadDotEnv(dir) {
|
|
|
44
49
|
}
|
|
45
50
|
}
|
|
46
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Search for xpg.config.yml recursively in a directory.
|
|
54
|
+
* Skips directories in SKIP_DIRS and dot-directories.
|
|
55
|
+
* Returns the first match found, or undefined.
|
|
56
|
+
*/
|
|
57
|
+
function findConfigInDir(dir, maxDepth = 3, depth = 0) {
|
|
58
|
+
if (depth > maxDepth)
|
|
59
|
+
return undefined;
|
|
60
|
+
const target = resolve(dir, 'xpg.config.yml');
|
|
61
|
+
if (existsSync(target))
|
|
62
|
+
return target;
|
|
63
|
+
if (depth >= maxDepth)
|
|
64
|
+
return undefined;
|
|
65
|
+
try {
|
|
66
|
+
const entries = readdirSync(dir);
|
|
67
|
+
for (const entry of entries) {
|
|
68
|
+
if (SKIP_DIRS.has(entry) || entry.startsWith('.'))
|
|
69
|
+
continue;
|
|
70
|
+
const full = resolve(dir, entry);
|
|
71
|
+
try {
|
|
72
|
+
if (statSync(full).isDirectory()) {
|
|
73
|
+
const found = findConfigInDir(full, maxDepth, depth + 1);
|
|
74
|
+
if (found)
|
|
75
|
+
return found;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch { /* permission errors, etc. */ }
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch { /* unreadable directory */ }
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Find xpg.config.yml with smart discovery.
|
|
86
|
+
*
|
|
87
|
+
* Search order:
|
|
88
|
+
* 1. CWD root (direct check)
|
|
89
|
+
* 2. config/ subdirectory
|
|
90
|
+
* 3. src/ and subdirectories (recursive, max 3 levels)
|
|
91
|
+
* 4. All other directories in CWD (recursive, max 3 levels)
|
|
92
|
+
*
|
|
93
|
+
* Skips: node_modules, dist, build, public, tmp, coverage, test, .dot-dirs
|
|
94
|
+
*/
|
|
95
|
+
function discoverConfigFile(cwd) {
|
|
96
|
+
// 1. Root
|
|
97
|
+
const root = resolve(cwd, 'xpg.config.yml');
|
|
98
|
+
if (existsSync(root))
|
|
99
|
+
return root;
|
|
100
|
+
// 2. config/
|
|
101
|
+
const configDir = resolve(cwd, 'config', 'xpg.config.yml');
|
|
102
|
+
if (existsSync(configDir))
|
|
103
|
+
return configDir;
|
|
104
|
+
// 3. src/ (recursive)
|
|
105
|
+
const srcDir = resolve(cwd, 'src');
|
|
106
|
+
if (existsSync(srcDir)) {
|
|
107
|
+
const found = findConfigInDir(srcDir);
|
|
108
|
+
if (found)
|
|
109
|
+
return found;
|
|
110
|
+
}
|
|
111
|
+
// 4. All other directories (recursive)
|
|
112
|
+
try {
|
|
113
|
+
const entries = readdirSync(cwd);
|
|
114
|
+
for (const entry of entries) {
|
|
115
|
+
if (entry === 'src' || entry === 'config')
|
|
116
|
+
continue; // already checked
|
|
117
|
+
if (SKIP_DIRS.has(entry) || entry.startsWith('.'))
|
|
118
|
+
continue;
|
|
119
|
+
const full = resolve(cwd, entry);
|
|
120
|
+
try {
|
|
121
|
+
if (statSync(full).isDirectory()) {
|
|
122
|
+
const found = findConfigInDir(full);
|
|
123
|
+
if (found)
|
|
124
|
+
return found;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch { /* skip */ }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch { /* skip */ }
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
47
133
|
/**
|
|
48
134
|
* Interpolate <ENV.VAR_NAME> placeholders with process.env values.
|
|
49
135
|
*/
|
|
@@ -78,7 +164,7 @@ function deepInterpolate(obj) {
|
|
|
78
164
|
*
|
|
79
165
|
* Resolution order:
|
|
80
166
|
* 1. `--config <path>` CLI argument → single file
|
|
81
|
-
* 2.
|
|
167
|
+
* 2. Smart discovery: root → config/ → src/ → other dirs
|
|
82
168
|
* 3. `config/postgres.yml` + `config/custom_fields.yml` (PHP-compatible layout)
|
|
83
169
|
*
|
|
84
170
|
* Automatically loads .env from CWD (and config dir if different).
|
|
@@ -98,26 +184,31 @@ export function loadConfig(configPath) {
|
|
|
98
184
|
if (configDir !== process.cwd())
|
|
99
185
|
loadDotEnv(configDir);
|
|
100
186
|
}
|
|
101
|
-
else if (existsSync(resolve(process.cwd(), 'xpg.config.yml'))) {
|
|
102
|
-
const abs = resolve(process.cwd(), 'xpg.config.yml');
|
|
103
|
-
raw = YAML.parse(readFileSync(abs, 'utf-8')) ?? {};
|
|
104
|
-
configDir = dirname(abs);
|
|
105
|
-
}
|
|
106
187
|
else {
|
|
107
|
-
//
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
188
|
+
// Smart discovery: search for xpg.config.yml
|
|
189
|
+
const discovered = discoverConfigFile(process.cwd());
|
|
190
|
+
if (discovered) {
|
|
191
|
+
raw = YAML.parse(readFileSync(discovered, 'utf-8')) ?? {};
|
|
192
|
+
configDir = dirname(discovered);
|
|
193
|
+
if (configDir !== process.cwd())
|
|
194
|
+
loadDotEnv(configDir);
|
|
112
195
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
196
|
+
else {
|
|
197
|
+
// Fallback: PHP-compatible layout
|
|
198
|
+
const pgPath = resolve(process.cwd(), 'config/postgres.yml');
|
|
199
|
+
const cfPath = resolve(process.cwd(), 'config/custom_fields.yml');
|
|
200
|
+
if (existsSync(pgPath)) {
|
|
201
|
+
raw = YAML.parse(readFileSync(pgPath, 'utf-8')) ?? {};
|
|
118
202
|
}
|
|
119
|
-
|
|
120
|
-
|
|
203
|
+
if (existsSync(cfPath)) {
|
|
204
|
+
const cfRaw = YAML.parse(readFileSync(cfPath, 'utf-8')) ?? {};
|
|
205
|
+
// Merge custom fields into POSTGRES block
|
|
206
|
+
if (cfRaw?.POSTGRES?.CUSTOM_FIELDS && raw?.POSTGRES) {
|
|
207
|
+
raw.POSTGRES.CUSTOM_FIELDS = cfRaw.POSTGRES.CUSTOM_FIELDS;
|
|
208
|
+
}
|
|
209
|
+
else if (cfRaw?.POSTGRES?.CUSTOM_FIELDS) {
|
|
210
|
+
raw.POSTGRES = { CUSTOM_FIELDS: cfRaw.POSTGRES.CUSTOM_FIELDS };
|
|
211
|
+
}
|
|
121
212
|
}
|
|
122
213
|
}
|
|
123
214
|
}
|
package/dist/configLoader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configLoader.js","sourceRoot":"","sources":["../src/configLoader.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,6BAA6B;AAC7B,gDAAgD;AAChD,sEAAsE;AACtE,uEAAuE;AAEvE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"configLoader.js","sourceRoot":"","sources":["../src/configLoader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/xpg.config.yml-sample
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#────────────────────────────────────
|
|
2
|
-
# xpg configuration sample
|
|
2
|
+
# xpg configuration sample!
|
|
3
3
|
#────────────────────────────────────
|
|
4
4
|
# Copy this file to xpg.config.yml and fill in your credentials.
|
|
5
5
|
# Environment variables are interpolated with <ENV.VAR_NAME> syntax.
|