@puristic/env 0.1.0 → 1.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/README.md +85 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/loadConfig.d.ts +2 -1
- package/dist/loadConfig.d.ts.map +1 -1
- package/dist/loadConfig.js +4 -0
- package/dist/loadConfig.js.map +1 -1
- package/package.json +21 -1
- package/dist/defineConfig.d.ts +0 -4
- package/dist/defineConfig.d.ts.map +0 -1
- package/dist/defineConfig.js +0 -5
- package/dist/defineConfig.js.map +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# @puristic/env
|
|
2
|
+
|
|
3
|
+
**Type-safe configuration whose one Zod schema is the single source of truth — for runtime loading, CI validation, codegen, and a [VSCode editor](https://github.com/radarsu/puristic-env/tree/main/_libs/vscode).**
|
|
4
|
+
|
|
5
|
+
`@puristic/env` loads configuration by merging CLI flags, environment variables, and `.env` files with predictable precedence, validating them against a [Zod](https://zod.dev) schema, and decrypting any secrets — all driven by the *real* TypeScript schema your app already imports, not a separate DSL or a cloud API. The same definition powers the [`purenv` CLI](https://www.npmjs.com/package/@puristic/env-cli) and the VSCode extension, so they can never drift.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
pnpm add @puristic/env # or: npm i @puristic/env
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Requires **Node 24+** and `zod` v4.
|
|
14
|
+
|
|
15
|
+
## Quickstart
|
|
16
|
+
|
|
17
|
+
Define your configuration once and export the **raw `ConfigDefinition`** (schema + sources) — not `loadConfig(...)`, which loads immediately and would fail on encrypted secrets without a key:
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
// env.config.ts — the single source of truth
|
|
21
|
+
import { type ConfigDefinition, envFile, env, cliArgs } from "@puristic/env/index.js";
|
|
22
|
+
import { z } from "zod";
|
|
23
|
+
|
|
24
|
+
export default {
|
|
25
|
+
schema: z.object({
|
|
26
|
+
nodeEnv: z.string(),
|
|
27
|
+
server: z.object({
|
|
28
|
+
port: z.coerce.number().int(),
|
|
29
|
+
host: z.string().default("0.0.0.0"),
|
|
30
|
+
}),
|
|
31
|
+
database: z.object({
|
|
32
|
+
url: z.url().meta({ secret: true }),
|
|
33
|
+
}),
|
|
34
|
+
}),
|
|
35
|
+
sources: [envFile(".env"), env(), cliArgs()], // later sources win: CLI > env > .env file
|
|
36
|
+
} satisfies ConfigDefinition<z.ZodType>;
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Load it at runtime — validated, secrets decrypted, deep-frozen:
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
import { loadConfig } from "@puristic/env/index.js";
|
|
43
|
+
import definition from "./env.config.js";
|
|
44
|
+
|
|
45
|
+
const config = loadConfig(definition);
|
|
46
|
+
config.server.port; // number
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Use `createConfig(definition)` instead when you want a handle: call `.load()` once in your bootstrap, then `.get()` anywhere (it throws if accessed before `load()`).
|
|
50
|
+
|
|
51
|
+
Nested schema paths map to env var names by core's rule — `["server", "httpsPort"]` → `SERVER_HTTPS_PORT` (and `--server-https-port` for CLI flags):
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
# .env
|
|
55
|
+
NODE_ENV=production
|
|
56
|
+
SERVER_PORT=8080
|
|
57
|
+
DATABASE_URL=encrypted:v1:… # secret — encrypted in place
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## API
|
|
61
|
+
|
|
62
|
+
| Export | Purpose |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
| `loadConfig` / `createConfig` | Load + validate + decrypt + deep-freeze (one-call, or a `load`/`get` handle) |
|
|
65
|
+
| `envFile` · `env` · `cliArgs` | Built-in sources, merged left-to-right with last-source-wins precedence |
|
|
66
|
+
| `extractDefinition` / `loadDefinition` | Resolve a `ConfigDefinition` from an imported / on-disk `env.config.*` |
|
|
67
|
+
| `inspectSchema` · `validateValues` · `classify` | Schema introspection, per-leaf validation, and the shared OK / Missing / Invalid / Unknown / secret status model |
|
|
68
|
+
| `encrypt` · `decrypt` · `generateKeypair` | Post-quantum secret encryption (ML-KEM-512 + AES-256-GCM) |
|
|
69
|
+
| `generateDts` · `generateEnvExample` · `generateJsonSchema` | Codegen from the schema (typed `process.env`, `.env.example`, JSON Schema) |
|
|
70
|
+
| `parseEnv` · `serializeEnv` · `setValue` … | Round-trip `.env` editing that preserves comments, order, quoting, and `export` prefixes |
|
|
71
|
+
| `expandEnv` / `expandValue` | `$VAR` / `${VAR}` expansion against sibling values and the ambient environment |
|
|
72
|
+
|
|
73
|
+
## Secrets
|
|
74
|
+
|
|
75
|
+
Mark a field secret with `.meta({ secret: true })`. Its value is encrypted **in place** with the project's public key (`.config/purenv-pub.key`) into an `encrypted:v1:…` envelope using **ML-KEM-512** (a post-quantum KEM) + **AES-256-GCM**. Encryption needs only the public key; loading/decrypting needs the private key. It is fully local — no cloud account. Generate a keypair with `purenv keygen`.
|
|
76
|
+
|
|
77
|
+
## Learn more
|
|
78
|
+
|
|
79
|
+
- **[Full project README](https://github.com/radarsu/puristic-env#readme)** — overview, security model, and getting started
|
|
80
|
+
- **[`@puristic/env-cli`](https://www.npmjs.com/package/@puristic/env-cli)** — the `purenv` command line
|
|
81
|
+
- **[VSCode extension](https://github.com/radarsu/puristic-env/tree/main/_libs/vscode)** — the schema-driven `.env` editor
|
|
82
|
+
|
|
83
|
+
## License
|
|
84
|
+
|
|
85
|
+
MIT
|
package/dist/index.d.ts
CHANGED
|
@@ -9,14 +9,13 @@ export { encrypt } from "./crypto/encrypt.js";
|
|
|
9
9
|
export { ENVELOPE_PREFIX, isEnvelope } from "./crypto/format.js";
|
|
10
10
|
export { generateKeypair, type Keypair } from "./crypto/keygen.js";
|
|
11
11
|
export { type DecryptOptions, defaultPrivateKeyPath, PUBLIC_KEY_PATH, resolvePrivateKey, resolveProjectName, resolvePublicKey, } from "./crypto/resolveKey.js";
|
|
12
|
-
export { defineConfig } from "./defineConfig.js";
|
|
13
12
|
export { associateConfigs } from "./discovery/associate.js";
|
|
14
13
|
export { groupByDirectory } from "./discovery/groupByDirectory.js";
|
|
15
14
|
export { baseName, dirOf, isAncestorOrSame } from "./discovery/paths.js";
|
|
16
15
|
export { addKey, type EnvDocument, type EnvLine, getValue, listEntries, parseEnv, type QuoteStyle, removeKey, serializeEnv, setValue, } from "./envText.js";
|
|
17
16
|
export { expandEnv, expandValue } from "./expandEnv.js";
|
|
18
17
|
export { inspectSchema, type LeafConstraint, type LeafDescriptorPublic, type LeafTypeTag } from "./inspectSchema.js";
|
|
19
|
-
export { extractDefinition, loadDefinition } from "./loadConfig.js";
|
|
18
|
+
export { extractDefinition, loadConfig, loadDefinition } from "./loadConfig.js";
|
|
20
19
|
export type { Source, SourceContext } from "./source.js";
|
|
21
20
|
export { type CliArgsOptions, cliArgs } from "./sources/cliArgs.js";
|
|
22
21
|
export { type EnvOptions, env } from "./sources/env.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,KAAK,cAAc,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EACH,KAAK,cAAc,EACnB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,KAAK,cAAc,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EACH,KAAK,cAAc,EACnB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EACH,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,UAAU,EACf,SAAS,EACT,YAAY,EACZ,QAAQ,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAChF,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,KAAK,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,UAAU,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,14 +9,13 @@ export { encrypt } from "./crypto/encrypt.js";
|
|
|
9
9
|
export { ENVELOPE_PREFIX, isEnvelope } from "./crypto/format.js";
|
|
10
10
|
export { generateKeypair } from "./crypto/keygen.js";
|
|
11
11
|
export { defaultPrivateKeyPath, PUBLIC_KEY_PATH, resolvePrivateKey, resolveProjectName, resolvePublicKey, } from "./crypto/resolveKey.js";
|
|
12
|
-
export { defineConfig } from "./defineConfig.js";
|
|
13
12
|
export { associateConfigs } from "./discovery/associate.js";
|
|
14
13
|
export { groupByDirectory } from "./discovery/groupByDirectory.js";
|
|
15
14
|
export { baseName, dirOf, isAncestorOrSame } from "./discovery/paths.js";
|
|
16
15
|
export { addKey, getValue, listEntries, parseEnv, removeKey, serializeEnv, setValue, } from "./envText.js";
|
|
17
16
|
export { expandEnv, expandValue } from "./expandEnv.js";
|
|
18
17
|
export { inspectSchema } from "./inspectSchema.js";
|
|
19
|
-
export { extractDefinition, loadDefinition } from "./loadConfig.js";
|
|
18
|
+
export { extractDefinition, loadConfig, loadDefinition } from "./loadConfig.js";
|
|
20
19
|
export { cliArgs } from "./sources/cliArgs.js";
|
|
21
20
|
export { env } from "./sources/env.js";
|
|
22
21
|
export { envFile } from "./sources/envFile.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,QAAQ,EAAkB,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAuB,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAA4C,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAgB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAEH,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,QAAQ,EAAkB,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAuB,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAA4C,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAgB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAEH,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EACH,MAAM,EAGN,QAAQ,EACR,WAAW,EACX,QAAQ,EAER,SAAS,EACT,YAAY,EACZ,QAAQ,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAoE,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAuB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAmB,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAA8C,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/loadConfig.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { z } from "zod";
|
|
2
|
-
import type
|
|
2
|
+
import { type ConfigDefinition } from "./createConfig.js";
|
|
3
|
+
export declare function loadConfig<S extends z.ZodType>(definition: ConfigDefinition<S>): z.infer<S>;
|
|
3
4
|
export declare function extractDefinition(module: Record<string, unknown>): ConfigDefinition<z.ZodType>;
|
|
4
5
|
export declare function loadDefinition(configPath: string): Promise<ConfigDefinition<z.ZodType>>;
|
|
5
6
|
//# sourceMappingURL=loadConfig.d.ts.map
|
package/dist/loadConfig.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../src/loadConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../src/loadConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AAexE,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAE3F;AAKD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAe9F;AAID,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAG7F"}
|
package/dist/loadConfig.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { pathToFileURL } from "node:url";
|
|
2
|
+
import { createConfig } from "./createConfig.js";
|
|
3
|
+
export function loadConfig(definition) {
|
|
4
|
+
return createConfig(definition).load();
|
|
5
|
+
}
|
|
2
6
|
export function extractDefinition(module) {
|
|
3
7
|
const candidate = module["default"] ?? module["config"] ?? module["definition"];
|
|
4
8
|
if (isDefinition(candidate)) {
|
package/dist/loadConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../src/loadConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../src/loadConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAyB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAexE,MAAM,UAAU,UAAU,CAAsB,UAA+B;IAC3E,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC;AAKD,MAAM,UAAU,iBAAiB,CAAC,MAA+B;IAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;IAChF,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC9C,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,IAAI,KAAK,CACX,gIAAgI,CACnI,CAAC;AACN,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAA4B,CAAC;IACzF,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,WAAW,CAAE,KAA8B,CAAC,MAAM,CAAC,CAAC;AAC9G,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,IAAI,KAAK,IAAI,OAAQ,KAAiC,CAAC,SAAS,KAAK,UAAU,CAAC;AACjG,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@puristic/env",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Type-safe configuration loader: one real Zod schema drives runtime loading, validation, codegen, and post-quantum encrypted secrets — no DSL, no cloud.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"env",
|
|
7
|
+
"dotenv",
|
|
8
|
+
"dotenvx",
|
|
9
|
+
"varlock",
|
|
10
|
+
"environment-variables",
|
|
11
|
+
"env-vars",
|
|
12
|
+
"config",
|
|
13
|
+
"configuration",
|
|
14
|
+
"zod",
|
|
15
|
+
"schema",
|
|
16
|
+
"validation",
|
|
17
|
+
"type-safe",
|
|
18
|
+
"typescript",
|
|
19
|
+
"secrets",
|
|
20
|
+
"encryption",
|
|
21
|
+
"post-quantum",
|
|
22
|
+
"12-factor"
|
|
23
|
+
],
|
|
4
24
|
"license": "MIT",
|
|
5
25
|
"type": "module",
|
|
6
26
|
"repository": {
|
package/dist/defineConfig.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defineConfig.d.ts","sourceRoot":"","sources":["../src/defineConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AAExE,wBAAgB,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAE7F"}
|
package/dist/defineConfig.js
DELETED
package/dist/defineConfig.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defineConfig.js","sourceRoot":"","sources":["../src/defineConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,UAAU,YAAY,CAAsB,UAA+B;IAC7E,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC"}
|