@appixar/xpg 1.0.0 → 1.0.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/README.md +403 -0
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +13 -0
- package/dist/builder.js.map +1 -1
- package/dist/cli.js +0 -0
- package/dist/configLoader.d.ts +2 -0
- package/dist/configLoader.d.ts.map +1 -1
- package/dist/configLoader.js +45 -0
- package/dist/configLoader.js.map +1 -1
- package/package.json +6 -2
package/README.md
ADDED
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
# @appixar/xpg
|
|
2
|
+
|
|
3
|
+
YAML-driven PostgreSQL schema management, diff-based migrations, and query service for Node.js.
|
|
4
|
+
|
|
5
|
+
Define your database tables in simple YAML files, and **xpg** automatically creates, updates, and manages your PostgreSQL schema — no manual SQL migrations needed.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **YAML Schema DSL** — Define tables with a concise, human-readable syntax!
|
|
10
|
+
- **Diff-based migrations** — Automatically detects changes and generates `ALTER TABLE` statements
|
|
11
|
+
- **Custom field types** — Create reusable type aliases (`id`, `str`, `email`, etc.)
|
|
12
|
+
- **Read/write splitting** — Route queries to read replicas automatically
|
|
13
|
+
- **Multi-cluster support** — Manage multiple database clusters from a single config
|
|
14
|
+
- **Environment variable interpolation** — Use `<ENV.VAR_NAME>` in config files
|
|
15
|
+
- **CLI + Programmatic API** — Use from the terminal or import as a library
|
|
16
|
+
- **Dry run mode** — Preview SQL without executing
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install @appixar/xpg
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Quick Start
|
|
25
|
+
|
|
26
|
+
### 1. Initialize
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx xpg init
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
This creates:
|
|
33
|
+
|
|
34
|
+
- `xpg.config.yml` — Database connection and custom field types
|
|
35
|
+
- `database/example.yml` — Sample table definition
|
|
36
|
+
|
|
37
|
+
### 2. Configure
|
|
38
|
+
|
|
39
|
+
Edit `xpg.config.yml` with your PostgreSQL credentials:
|
|
40
|
+
|
|
41
|
+
```yaml
|
|
42
|
+
POSTGRES:
|
|
43
|
+
DB:
|
|
44
|
+
"main":
|
|
45
|
+
NAME: my_database
|
|
46
|
+
HOST: <ENV.DB_HOST>
|
|
47
|
+
USER: <ENV.DB_USER>
|
|
48
|
+
PASS: <ENV.DB_PASS>
|
|
49
|
+
PORT: <ENV.DB_PORT>
|
|
50
|
+
PREF: app_ # Table prefix (optional)
|
|
51
|
+
PATH: [database] # Directories containing .yml schema files
|
|
52
|
+
|
|
53
|
+
CUSTOM_FIELDS:
|
|
54
|
+
"id":
|
|
55
|
+
Type: serial
|
|
56
|
+
Key: PRI
|
|
57
|
+
"str":
|
|
58
|
+
Type: varchar(64)
|
|
59
|
+
"text":
|
|
60
|
+
Type: text
|
|
61
|
+
"int":
|
|
62
|
+
Type: integer
|
|
63
|
+
"float":
|
|
64
|
+
Type: real
|
|
65
|
+
"date":
|
|
66
|
+
Type: timestamp
|
|
67
|
+
"email":
|
|
68
|
+
Type: varchar(128)
|
|
69
|
+
"phone":
|
|
70
|
+
Type: varchar(11)
|
|
71
|
+
"now":
|
|
72
|
+
Type: timestamp
|
|
73
|
+
Default: now()
|
|
74
|
+
"pid":
|
|
75
|
+
Type: varchar(12)
|
|
76
|
+
Key: UNI
|
|
77
|
+
Default: '"left"(md5((random())::text), 12)'
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 3. Define Tables
|
|
81
|
+
|
|
82
|
+
Create YAML files in your `database/` directory:
|
|
83
|
+
|
|
84
|
+
```yaml
|
|
85
|
+
# database/users.yml
|
|
86
|
+
users:
|
|
87
|
+
user_id: id
|
|
88
|
+
user_name: str required
|
|
89
|
+
user_email: email unique index
|
|
90
|
+
user_status: str/32 default/active index
|
|
91
|
+
user_date_insert: now
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 4. Run Migrations
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npx xpg up
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
xpg will automatically:
|
|
101
|
+
|
|
102
|
+
- **Create** tables that don't exist
|
|
103
|
+
- **Update** tables that changed (add/alter/drop columns, indexes, constraints)
|
|
104
|
+
- Apply a table prefix if configured (e.g. `app_users`)
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## YAML Schema DSL
|
|
109
|
+
|
|
110
|
+
Each field is defined as `field_name: type [modifiers...]`
|
|
111
|
+
|
|
112
|
+
### Types
|
|
113
|
+
|
|
114
|
+
Use any PostgreSQL type directly or a custom field alias:
|
|
115
|
+
|
|
116
|
+
| Alias | Resolves to | Notes |
|
|
117
|
+
|-------|-------------|-------|
|
|
118
|
+
| `id` | `SERIAL PRIMARY KEY` | Auto-increment, not null |
|
|
119
|
+
| `str` | `VARCHAR(64)` | Default string |
|
|
120
|
+
| `str/128` | `VARCHAR(128)` | Override length with `/N` |
|
|
121
|
+
| `text` | `TEXT` | Unlimited text |
|
|
122
|
+
| `int` | `INTEGER` | Integer |
|
|
123
|
+
| `float` | `REAL` | Float |
|
|
124
|
+
| `date` | `TIMESTAMP` | Timestamp |
|
|
125
|
+
| `email` | `VARCHAR(128)` | Semantic alias |
|
|
126
|
+
| `now` | `TIMESTAMP DEFAULT now()` | Auto-timestamp |
|
|
127
|
+
| `pid` | `VARCHAR(12) UNIQUE` | Random public ID |
|
|
128
|
+
|
|
129
|
+
You can also use raw PostgreSQL types: `varchar(255)`, `integer`, `boolean`, `jsonb`, `uuid`, `numeric(16,8)`, etc.
|
|
130
|
+
|
|
131
|
+
### Modifiers
|
|
132
|
+
|
|
133
|
+
| Modifier | Description |
|
|
134
|
+
|----------|-------------|
|
|
135
|
+
| `required` | Adds `NOT NULL` constraint |
|
|
136
|
+
| `unique` | Adds `UNIQUE` constraint |
|
|
137
|
+
| `unique/group_name` | Composite unique constraint |
|
|
138
|
+
| `index` | Creates an index on this column |
|
|
139
|
+
| `index/group_name` | Composite index |
|
|
140
|
+
| `default/value` | Sets default value |
|
|
141
|
+
|
|
142
|
+
### Examples
|
|
143
|
+
|
|
144
|
+
```yaml
|
|
145
|
+
products:
|
|
146
|
+
product_id: id
|
|
147
|
+
product_name: varchar(200) required
|
|
148
|
+
product_price: numeric(10,2) required default/0
|
|
149
|
+
product_active: boolean default/true
|
|
150
|
+
product_metadata: jsonb default/{}
|
|
151
|
+
product_category: str index
|
|
152
|
+
product_sku: str/32 unique
|
|
153
|
+
product_date_insert: now
|
|
154
|
+
|
|
155
|
+
# Composite index on category + active
|
|
156
|
+
product_category: str index/cat_active
|
|
157
|
+
product_active: boolean index/cat_active
|
|
158
|
+
|
|
159
|
+
# Composite unique on name + category
|
|
160
|
+
product_name: varchar(200) unique/name_cat
|
|
161
|
+
product_category: str unique/name_cat
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## CLI
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
npx xpg <command> [options]
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Commands
|
|
173
|
+
|
|
174
|
+
| Command | Description |
|
|
175
|
+
|---------|-------------|
|
|
176
|
+
| `xpg up` | Run database migrations |
|
|
177
|
+
| `xpg init` | Generate sample config files |
|
|
178
|
+
|
|
179
|
+
### Options for `xpg up`
|
|
180
|
+
|
|
181
|
+
| Flag | Description |
|
|
182
|
+
|------|-------------|
|
|
183
|
+
| `--create` | Create the database if it doesn't exist |
|
|
184
|
+
| `--name <db>` | Target a specific database cluster by name |
|
|
185
|
+
| `--tenant <key>` | Target a specific tenant |
|
|
186
|
+
| `--dry` | Preview SQL queries without executing |
|
|
187
|
+
| `--mute` | Suppress all output |
|
|
188
|
+
| `--drop-orphans` | Drop tables that exist in DB but not in YAML |
|
|
189
|
+
| `--config <path>` | Path to a custom config file |
|
|
190
|
+
| `--no-color` | Disable colored terminal output |
|
|
191
|
+
|
|
192
|
+
### Examples
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Dry run — preview what would happen
|
|
196
|
+
npx xpg up --dry
|
|
197
|
+
|
|
198
|
+
# Create database if needed, then migrate
|
|
199
|
+
npx xpg up --create
|
|
200
|
+
|
|
201
|
+
# Target a specific cluster
|
|
202
|
+
npx xpg up --name main
|
|
203
|
+
|
|
204
|
+
# Remove tables not defined in YAML
|
|
205
|
+
npx xpg up --drop-orphans
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Programmatic API
|
|
211
|
+
|
|
212
|
+
Import **xpg** as a library in your Node.js / Next.js project:
|
|
213
|
+
|
|
214
|
+
### PgService — Query Service
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
import { PgService, loadConfig } from '@appixar/xpg';
|
|
218
|
+
|
|
219
|
+
const config = loadConfig();
|
|
220
|
+
const cluster = config.postgres.DB['main'];
|
|
221
|
+
|
|
222
|
+
const db = new PgService(cluster, 'main');
|
|
223
|
+
|
|
224
|
+
// Automatic read/write routing
|
|
225
|
+
const users = await db.query<{ user_id: number; user_name: string }>(
|
|
226
|
+
'SELECT * FROM app_users WHERE user_status = :status',
|
|
227
|
+
{ status: 'active' }
|
|
228
|
+
);
|
|
229
|
+
|
|
230
|
+
// Insert
|
|
231
|
+
const id = await db.insert('app_users', {
|
|
232
|
+
user_name: 'John',
|
|
233
|
+
user_email: 'john@example.com',
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
// Update
|
|
237
|
+
const affected = await db.update('app_users',
|
|
238
|
+
{ user_status: 'inactive' }, // data
|
|
239
|
+
{ user_id: 1 } // condition
|
|
240
|
+
);
|
|
241
|
+
|
|
242
|
+
// Update with string condition
|
|
243
|
+
await db.update('app_users',
|
|
244
|
+
{ user_status: 'inactive' },
|
|
245
|
+
'user_last_login < NOW() - INTERVAL \'30 days\''
|
|
246
|
+
);
|
|
247
|
+
|
|
248
|
+
// Close all pools when done
|
|
249
|
+
await PgService.closeAll();
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Named Parameters
|
|
253
|
+
|
|
254
|
+
Use `:paramName` syntax for safe, parameterized queries:
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
const rows = await db.query(
|
|
258
|
+
'SELECT * FROM products WHERE price > :min AND category = :cat',
|
|
259
|
+
{ min: 100, cat: 'electronics' }
|
|
260
|
+
);
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Read/Write Splitting
|
|
264
|
+
|
|
265
|
+
`PgService` automatically routes:
|
|
266
|
+
|
|
267
|
+
- **SELECT / SHOW / EXPLAIN / WITH** → read replica pool
|
|
268
|
+
- **INSERT / UPDATE / DELETE / CREATE / ALTER** → write (primary) pool
|
|
269
|
+
|
|
270
|
+
Force primary for reads when you need consistency:
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
const db = new PgService(cluster, 'main', { primary: true });
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### Run Migrations Programmatically
|
|
277
|
+
|
|
278
|
+
```typescript
|
|
279
|
+
import { up } from '@appixar/xpg';
|
|
280
|
+
|
|
281
|
+
const result = await up({
|
|
282
|
+
dry: false,
|
|
283
|
+
create: true,
|
|
284
|
+
mute: true,
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
console.log(`Executed ${result.executed} queries`);
|
|
288
|
+
console.log(`Failed: ${result.failed.length}`);
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Read/Write Cluster Setup
|
|
294
|
+
|
|
295
|
+
Configure read replicas for automatic query routing:
|
|
296
|
+
|
|
297
|
+
```yaml
|
|
298
|
+
POSTGRES:
|
|
299
|
+
DB:
|
|
300
|
+
"main":
|
|
301
|
+
- TYPE: write
|
|
302
|
+
NAME: my_database
|
|
303
|
+
HOST: primary.db.example.com
|
|
304
|
+
USER: admin
|
|
305
|
+
PASS: <ENV.DB_PASS>
|
|
306
|
+
PORT: 5432
|
|
307
|
+
PREF: app_
|
|
308
|
+
PATH: [database]
|
|
309
|
+
- TYPE: read
|
|
310
|
+
NAME: my_database
|
|
311
|
+
HOST: replica.db.example.com
|
|
312
|
+
USER: reader
|
|
313
|
+
PASS: <ENV.DB_READ_PASS>
|
|
314
|
+
PORT: 5432
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Environment Variables
|
|
320
|
+
|
|
321
|
+
Use `<ENV.VAR_NAME>` syntax anywhere in `xpg.config.yml`:
|
|
322
|
+
|
|
323
|
+
```yaml
|
|
324
|
+
HOST: <ENV.DB_HOST>
|
|
325
|
+
PASS: <ENV.DB_PASS>
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**xpg automatically loads `.env` from your project root** — no need for `dotenv` or any extra setup. Just create a `.env` file:
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
DB_HOST=localhost
|
|
332
|
+
DB_USER=admin
|
|
333
|
+
DB_PASS=secret
|
|
334
|
+
DB_PORT=5432
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Rules:
|
|
338
|
+
|
|
339
|
+
- System environment variables always take precedence over `.env`
|
|
340
|
+
- Supports `export` prefix: `export DB_HOST=localhost`
|
|
341
|
+
- Supports inline comments: `DB_HOST=localhost # my local db`
|
|
342
|
+
- If a variable is not defined anywhere, xpg prints a warning and uses an empty string
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## Config Resolution
|
|
347
|
+
|
|
348
|
+
xpg looks for configuration in this order:
|
|
349
|
+
|
|
350
|
+
1. `--config <path>` CLI argument
|
|
351
|
+
2. `xpg.config.yml` in the current directory
|
|
352
|
+
3. `config/postgres.yml` + `config/custom_fields.yml` (PHP-compatible layout)
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## How Migrations Work
|
|
357
|
+
|
|
358
|
+
When you run `xpg up`:
|
|
359
|
+
|
|
360
|
+
1. **Load config** — Reads `xpg.config.yml` and interpolates env vars
|
|
361
|
+
2. **Parse schemas** — Reads all `.yml` files in configured `PATH` directories
|
|
362
|
+
3. **Connect** — Connects to PostgreSQL (optionally creating the database)
|
|
363
|
+
4. **Diff** — Compares YAML schemas against the live database:
|
|
364
|
+
- New tables → `CREATE TABLE`
|
|
365
|
+
- Changed columns → `ALTER TABLE` (type, nullable, default)
|
|
366
|
+
- New indexes/constraints → `CREATE INDEX`, `ADD CONSTRAINT`
|
|
367
|
+
- Dropped indexes/constraints → `DROP INDEX`, `DROP CONSTRAINT`
|
|
368
|
+
- Orphan tables (with `--drop-orphans`) → `DROP TABLE`
|
|
369
|
+
5. **Execute** — Runs all generated SQL queries sequentially
|
|
370
|
+
6. **Report** — Shows a summary of executed/failed queries
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## Supported PostgreSQL Types
|
|
375
|
+
|
|
376
|
+
| YAML Type | PostgreSQL Type |
|
|
377
|
+
|-----------|----------------|
|
|
378
|
+
| `serial` | `integer` (auto-increment) |
|
|
379
|
+
| `varchar(N)` | `character varying(N)` |
|
|
380
|
+
| `integer` / `int` | `integer` |
|
|
381
|
+
| `text` | `text` |
|
|
382
|
+
| `timestamp` | `timestamp without time zone` |
|
|
383
|
+
| `date` | `date` |
|
|
384
|
+
| `boolean` | `boolean` |
|
|
385
|
+
| `smallint` | `smallint` |
|
|
386
|
+
| `bigint` | `bigint` |
|
|
387
|
+
| `real` / `float` | `real` |
|
|
388
|
+
| `double` | `double precision` |
|
|
389
|
+
| `numeric(P,S)` | `numeric(P,S)` |
|
|
390
|
+
| `json` | `json` |
|
|
391
|
+
| `jsonb` | `jsonb` |
|
|
392
|
+
| `uuid` | `uuid` |
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## Requirements
|
|
397
|
+
|
|
398
|
+
- Node.js ≥ 18
|
|
399
|
+
- PostgreSQL
|
|
400
|
+
|
|
401
|
+
## License
|
|
402
|
+
|
|
403
|
+
MIT
|
package/dist/builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,cAAc;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;CACjB;AAeD;;GAEG;AACH,wBAAsB,EAAE,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,cAAc;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;CACjB;AAeD;;GAEG;AACH,wBAAsB,EAAE,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAiQ/E"}
|
package/dist/builder.js
CHANGED
|
@@ -230,6 +230,19 @@ export async function up(options = {}) {
|
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
|
+
else if (mute) {
|
|
234
|
+
// Programmatic mode: execute without prompting (no stdin available)
|
|
235
|
+
for (const q of allQueries) {
|
|
236
|
+
try {
|
|
237
|
+
await pg.query(q.sql);
|
|
238
|
+
result.executed++;
|
|
239
|
+
}
|
|
240
|
+
catch (err) {
|
|
241
|
+
const errMsg = err.message;
|
|
242
|
+
result.failed.push({ sql: q.sql, error: errMsg });
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
233
246
|
else {
|
|
234
247
|
console.log('');
|
|
235
248
|
console.log('Are you sure you want to do this? ☝');
|
package/dist/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
File without changes
|
package/dist/configLoader.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export interface LoadedConfig {
|
|
|
12
12
|
* 1. `--config <path>` CLI argument → single file
|
|
13
13
|
* 2. `xpg.config.yml` in CWD
|
|
14
14
|
* 3. `config/postgres.yml` + `config/custom_fields.yml` (PHP-compatible layout)
|
|
15
|
+
*
|
|
16
|
+
* Automatically loads .env from CWD (and config dir if different).
|
|
15
17
|
*/
|
|
16
18
|
export declare function loadConfig(configPath?: string): LoadedConfig;
|
|
17
19
|
/**
|
|
@@ -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;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"}
|
package/dist/configLoader.js
CHANGED
|
@@ -6,6 +6,44 @@
|
|
|
6
6
|
import { readFileSync, existsSync } from 'node:fs';
|
|
7
7
|
import { resolve, dirname } from 'node:path';
|
|
8
8
|
import YAML from 'yaml';
|
|
9
|
+
/**
|
|
10
|
+
* Load variables from a .env file into process.env.
|
|
11
|
+
* Does NOT overwrite variables that already exist in process.env.
|
|
12
|
+
*/
|
|
13
|
+
function loadDotEnv(dir) {
|
|
14
|
+
const envPath = resolve(dir, '.env');
|
|
15
|
+
if (!existsSync(envPath))
|
|
16
|
+
return;
|
|
17
|
+
const content = readFileSync(envPath, 'utf-8');
|
|
18
|
+
for (const line of content.split('\n')) {
|
|
19
|
+
let trimmed = line.trim();
|
|
20
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
21
|
+
continue;
|
|
22
|
+
// Strip `export ` prefix (common in .env files)
|
|
23
|
+
if (trimmed.startsWith('export '))
|
|
24
|
+
trimmed = trimmed.slice(7).trim();
|
|
25
|
+
const eqIdx = trimmed.indexOf('=');
|
|
26
|
+
if (eqIdx === -1)
|
|
27
|
+
continue;
|
|
28
|
+
const key = trimmed.slice(0, eqIdx).trim();
|
|
29
|
+
let val = trimmed.slice(eqIdx + 1).trim();
|
|
30
|
+
// Strip surrounding quotes
|
|
31
|
+
if ((val.startsWith('"') && val.endsWith('"')) ||
|
|
32
|
+
(val.startsWith("'") && val.endsWith("'"))) {
|
|
33
|
+
val = val.slice(1, -1);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// Strip inline comments (only when not quoted)
|
|
37
|
+
const hashIdx = val.indexOf(' #');
|
|
38
|
+
if (hashIdx !== -1)
|
|
39
|
+
val = val.slice(0, hashIdx).trim();
|
|
40
|
+
}
|
|
41
|
+
// Only set if not already defined (real env takes precedence)
|
|
42
|
+
if (process.env[key] === undefined) {
|
|
43
|
+
process.env[key] = val;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
9
47
|
/**
|
|
10
48
|
* Interpolate <ENV.VAR_NAME> placeholders with process.env values.
|
|
11
49
|
*/
|
|
@@ -42,16 +80,23 @@ function deepInterpolate(obj) {
|
|
|
42
80
|
* 1. `--config <path>` CLI argument → single file
|
|
43
81
|
* 2. `xpg.config.yml` in CWD
|
|
44
82
|
* 3. `config/postgres.yml` + `config/custom_fields.yml` (PHP-compatible layout)
|
|
83
|
+
*
|
|
84
|
+
* Automatically loads .env from CWD (and config dir if different).
|
|
45
85
|
*/
|
|
46
86
|
export function loadConfig(configPath) {
|
|
47
87
|
let raw = {};
|
|
48
88
|
let configDir = process.cwd();
|
|
89
|
+
// Load .env from CWD (most common case for external projects)
|
|
90
|
+
loadDotEnv(process.cwd());
|
|
49
91
|
if (configPath) {
|
|
50
92
|
const abs = resolve(configPath);
|
|
51
93
|
if (!existsSync(abs))
|
|
52
94
|
throw new Error(`Config file not found: ${abs}`);
|
|
53
95
|
raw = YAML.parse(readFileSync(abs, 'utf-8')) ?? {};
|
|
54
96
|
configDir = dirname(abs);
|
|
97
|
+
// Also load .env from config dir if it differs from CWD
|
|
98
|
+
if (configDir !== process.cwd())
|
|
99
|
+
loadDotEnv(configDir);
|
|
55
100
|
}
|
|
56
101
|
else if (existsSync(resolve(process.cwd(), 'xpg.config.yml'))) {
|
|
57
102
|
const abs = resolve(process.cwd(), 'xpg.config.yml');
|
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;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB;;GAEG;AACH,SAAS,cAAc,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,kCAAkC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QACvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,2BAA2B,OAAO,uCAAuC,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,GAAG,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAY;IACjC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AASD
|
|
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;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB;;;GAGG;AACH,SAAS,UAAU,CAAC,GAAW;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO;IAEjC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,gDAAgD;QAChD,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,SAAS;QAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,2BAA2B;QAC3B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACJ,+CAA+C;YAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,OAAO,KAAK,CAAC,CAAC;gBAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,CAAC;QACD,8DAA8D;QAC9D,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC3B,CAAC;IACL,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,kCAAkC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QACvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,2BAA2B,OAAO,uCAAuC,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,GAAG,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAY;IACjC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AASD;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC1C,IAAI,GAAG,GAA4B,EAAE,CAAC;IACtC,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE9B,8DAA8D;IAC9D,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAE1B,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;QACvE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,wDAAwD;QACxD,IAAI,SAAS,KAAK,OAAO,CAAC,GAAG,EAAE;YAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;SAAM,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACrD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACJ,4BAA4B;QAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;QAElE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9D,0CAA0C;YAC1C,IAAI,KAAK,EAAE,QAAQ,EAAE,aAAa,IAAI,GAAG,EAAE,QAAQ,EAAE,CAAC;gBACjD,GAAG,CAAC,QAAoC,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC3F,CAAC;iBAAM,IAAI,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;gBACxC,GAAG,CAAC,QAAQ,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YACnE,CAAC;QACL,CAAC;IACL,CAAC;IAED,oCAAoC;IACpC,GAAG,GAAG,eAAe,CAAC,GAAG,CAA4B,CAAC;IAEtD,MAAM,QAAQ,GAAI,GAAiC,CAAC,QAAQ,CAAC;IAC7D,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACX,2FAA2F,CAC9F,CAAC;IACN,CAAC;IAED,MAAM,YAAY,GAAmC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;IAElF,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,SAAiB;IAClE,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,OAAO,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appixar/xpg",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "YAML-driven PostgreSQL schema management, diff-based migrations, and query service",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -39,5 +39,9 @@
|
|
|
39
39
|
"dist",
|
|
40
40
|
"xpg.config.yml-sample"
|
|
41
41
|
],
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "https://github.com/appixar/x-ts-postgres.git"
|
|
45
|
+
},
|
|
42
46
|
"license": "MIT"
|
|
43
|
-
}
|
|
47
|
+
}
|