hazo_env 0.3.0 → 0.5.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/CHANGE_LOG.md +36 -0
- package/README.md +10 -6
- package/SETUP_CHECKLIST.md +6 -0
- package/config/hazo_env_config.ini.sample +18 -0
- package/dist/cli.js +56 -4
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +152 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/migrate/clear.d.ts +3 -0
- package/dist/migrate/clear.d.ts.map +1 -0
- package/dist/migrate/clear.js +117 -0
- package/dist/migrate/db.d.ts +4 -0
- package/dist/migrate/db.d.ts.map +1 -1
- package/dist/migrate/db.js +6 -1
- package/dist/migrate/db.postgrest.d.ts +4 -0
- package/dist/migrate/db.postgrest.d.ts.map +1 -0
- package/dist/migrate/db.postgrest.js +95 -0
- package/dist/migrate/files.d.ts +2 -1
- package/dist/migrate/files.d.ts.map +1 -1
- package/dist/migrate/files.js +85 -4
- package/dist/migrate/run.d.ts.map +1 -1
- package/dist/migrate/run.js +55 -15
- package/dist/migrate/snapshot.d.ts.map +1 -1
- package/dist/migrate/snapshot.js +3 -0
- package/dist/migrate/transport.d.ts +1 -1
- package/dist/migrate/transport.d.ts.map +1 -1
- package/dist/migrate/transport.js +2 -9
- package/dist/migrate/verify.d.ts +1 -0
- package/dist/migrate/verify.d.ts.map +1 -1
- package/dist/migrate/verify.js +120 -30
- package/dist/resolve/files.d.ts +6 -0
- package/dist/resolve/files.d.ts.map +1 -1
- package/dist/resolve/files.js +23 -0
- package/dist/resolve/migrate.d.ts +3 -0
- package/dist/resolve/migrate.d.ts.map +1 -0
- package/dist/resolve/migrate.js +29 -0
- package/dist/resolve/ssh.d.ts +15 -0
- package/dist/resolve/ssh.d.ts.map +1 -0
- package/dist/resolve/ssh.js +36 -0
- package/dist/types/index.d.ts +28 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface SshConfig {
|
|
2
|
+
host: string;
|
|
3
|
+
user: string;
|
|
4
|
+
key: string;
|
|
5
|
+
path: string;
|
|
6
|
+
/**
|
|
7
|
+
* Optional pinned host public key (the right-hand side of a known_hosts line,
|
|
8
|
+
* e.g. "ssh-ed25519 AAAA...."). When set, host-key checking is strict and the
|
|
9
|
+
* key is pinned — no TOFU. When absent, the transport falls back to
|
|
10
|
+
* accept-new against a persistent known_hosts file.
|
|
11
|
+
*/
|
|
12
|
+
hostKey?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function resolveSshConfig(env: string): SshConfig | null;
|
|
15
|
+
//# sourceMappingURL=ssh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/resolve/ssh.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAsB9D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// hazo_env/src/resolve/ssh.ts — SSH transport config resolver
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { HazoConfig } from 'hazo_config/server';
|
|
4
|
+
function tryLoadEnvConfig() {
|
|
5
|
+
try {
|
|
6
|
+
return new HazoConfig({ filePath: path.resolve(process.cwd(), 'config', 'hazo_env_config.ini') });
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function expandEnvVars(value) {
|
|
13
|
+
return value.replace(/\$\{([^}]+)\}/g, (_, name) => process.env[name] ?? '');
|
|
14
|
+
}
|
|
15
|
+
export function resolveSshConfig(env) {
|
|
16
|
+
const config = tryLoadEnvConfig();
|
|
17
|
+
if (!config)
|
|
18
|
+
return null;
|
|
19
|
+
const section = config.getSection(`transport.ssh.${env}`);
|
|
20
|
+
if (!section)
|
|
21
|
+
return null;
|
|
22
|
+
const host = section['host'];
|
|
23
|
+
const user = section['user'];
|
|
24
|
+
const key = section['key'];
|
|
25
|
+
const remotePath = section['path'];
|
|
26
|
+
const hostKey = section['host_key'];
|
|
27
|
+
if (!host || !user || !key || !remotePath)
|
|
28
|
+
return null;
|
|
29
|
+
return {
|
|
30
|
+
host: expandEnvVars(host),
|
|
31
|
+
user: expandEnvVars(user),
|
|
32
|
+
key: expandEnvVars(key),
|
|
33
|
+
path: expandEnvVars(remotePath),
|
|
34
|
+
hostKey: hostKey ? expandEnvVars(hostKey) : undefined,
|
|
35
|
+
};
|
|
36
|
+
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ export type TransportMode = 'auto' | 'local' | 'ssh' | 'api';
|
|
|
47
47
|
export type ScrubMode = 'auto' | 'none';
|
|
48
48
|
export type HashMode = 'none' | 'sample' | 'full';
|
|
49
49
|
export interface MigrationProgress {
|
|
50
|
-
phase: 'validate' | 'snapshot' | 'plan' | 'schema-check' | 'db' | 'files' | 'verify' | 'finalize' | 'done';
|
|
50
|
+
phase: 'validate' | 'snapshot' | 'plan' | 'schema-check' | 'db' | 'files' | 'verify' | 'finalize' | 'done' | 'clear';
|
|
51
51
|
message: string;
|
|
52
52
|
percent?: number;
|
|
53
53
|
}
|
|
@@ -93,6 +93,33 @@ export interface VerifyReport {
|
|
|
93
93
|
hashMismatch: string[];
|
|
94
94
|
orphans: string[];
|
|
95
95
|
sentinelOk: boolean;
|
|
96
|
+
hashed?: number;
|
|
97
|
+
skippedReason?: string;
|
|
98
|
+
}
|
|
99
|
+
/** Parsed [migrate] section from hazo_env_config.ini */
|
|
100
|
+
export interface MigrateConfig {
|
|
101
|
+
tables?: string[];
|
|
102
|
+
preserve?: string[];
|
|
103
|
+
pkOverrides?: Record<string, string>;
|
|
104
|
+
}
|
|
105
|
+
export interface ClearRequest {
|
|
106
|
+
env: HazoEnv;
|
|
107
|
+
include?: {
|
|
108
|
+
db?: boolean;
|
|
109
|
+
files?: boolean;
|
|
110
|
+
};
|
|
111
|
+
allowProdTarget?: boolean;
|
|
112
|
+
confirmToken?: string;
|
|
113
|
+
jobId?: string;
|
|
114
|
+
progressDir?: string;
|
|
115
|
+
onProgress?: (p: MigrationProgress) => void;
|
|
116
|
+
}
|
|
117
|
+
export interface ClearResult {
|
|
118
|
+
ok: boolean;
|
|
119
|
+
tablesCleared: number;
|
|
120
|
+
filesCleared: boolean;
|
|
121
|
+
durationMs: number;
|
|
122
|
+
warnings: string[];
|
|
96
123
|
}
|
|
97
124
|
export type MaskTransform = (value: unknown, key: string, maskKey: string) => unknown;
|
|
98
125
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA,sDAAsD;AACtD,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnE,mCAAmC;AACnC,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;AAE5E,iFAAiF;AACjF,MAAM,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC;AAElC,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAErD,2CAA2C;AAC3C,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtD,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,MAAM,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH;AAED,8BAA8B;AAC9B,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,uCAAuC;AACvC,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AACxC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,cAAc,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hazo_env",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Canonical environment resolver — typed env names, per-env DB/file/secret config, doctor and CLI for hazo apps",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -38,10 +38,10 @@
|
|
|
38
38
|
"picocolors": "^1.1.1"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"hazo_core": "^1.
|
|
42
|
-
"hazo_config": "^2.1
|
|
43
|
-
"hazo_connect": "^3.
|
|
44
|
-
"hazo_files": "^3.
|
|
41
|
+
"hazo_core": "^1.2.0",
|
|
42
|
+
"hazo_config": "^2.4.1",
|
|
43
|
+
"hazo_connect": "^3.9.0",
|
|
44
|
+
"hazo_files": "^3.1.1",
|
|
45
45
|
"hazo_secure": "^1.2.0",
|
|
46
46
|
"hazo_audit": "^2.1.0",
|
|
47
47
|
"hazo_pdf": "^2.0.0",
|
|
@@ -84,10 +84,10 @@
|
|
|
84
84
|
"@types/node": "^22.10.0",
|
|
85
85
|
"@types/react": "^19.0.0",
|
|
86
86
|
"@types/react-dom": "^19.0.0",
|
|
87
|
-
"hazo_core": "^1.1
|
|
88
|
-
"hazo_config": "^2.1
|
|
89
|
-
"hazo_connect": "^3.
|
|
90
|
-
"hazo_files": "^3.
|
|
87
|
+
"hazo_core": "^1.2.1",
|
|
88
|
+
"hazo_config": "^2.4.1",
|
|
89
|
+
"hazo_connect": "^3.9.0",
|
|
90
|
+
"hazo_files": "^3.1.1",
|
|
91
91
|
"next": "^16.0.10",
|
|
92
92
|
"react": "^19.0.0",
|
|
93
93
|
"react-dom": "^19.0.0",
|