@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 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
@@ -10,7 +10,7 @@ export interface LoadedConfig {
10
10
  *
11
11
  * Resolution order:
12
12
  * 1. `--config <path>` CLI argument → single file
13
- * 2. `xpg.config.yml` in CWD
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;AAiEjE,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,CAkD5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAG9E"}
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"}
@@ -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. `xpg.config.yml` in CWD
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
- // Try PHP-compatible layout
108
- const pgPath = resolve(process.cwd(), 'config/postgres.yml');
109
- const cfPath = resolve(process.cwd(), 'config/custom_fields.yml');
110
- if (existsSync(pgPath)) {
111
- raw = YAML.parse(readFileSync(pgPath, 'utf-8')) ?? {};
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
- if (existsSync(cfPath)) {
114
- const cfRaw = YAML.parse(readFileSync(cfPath, 'utf-8')) ?? {};
115
- // Merge custom fields into POSTGRES block
116
- if (cfRaw?.POSTGRES?.CUSTOM_FIELDS && raw?.POSTGRES) {
117
- raw.POSTGRES.CUSTOM_FIELDS = cfRaw.POSTGRES.CUSTOM_FIELDS;
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
- else if (cfRaw?.POSTGRES?.CUSTOM_FIELDS) {
120
- raw.POSTGRES = { CUSTOM_FIELDS: cfRaw.POSTGRES.CUSTOM_FIELDS };
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"configLoader.js","sourceRoot":"","sources":["../src/configLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configLoader.js","sourceRoot":"","sources":["../src/configLoader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appixar/xpg",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "YAML-driven PostgreSQL schema management, diff-based migrations, and query service",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -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.