@maverickcer/env-cap 0.2.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.
Files changed (195) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +279 -0
  3. package/dist/.dts/build/assemble-project.d.ts +47 -0
  4. package/dist/.dts/build/assemble-project.d.ts.map +1 -0
  5. package/dist/.dts/build/change-model.d.ts +62 -0
  6. package/dist/.dts/build/change-model.d.ts.map +1 -0
  7. package/dist/.dts/build/check-artifacts.d.ts +48 -0
  8. package/dist/.dts/build/check-artifacts.d.ts.map +1 -0
  9. package/dist/.dts/build/citation-verification.d.ts +62 -0
  10. package/dist/.dts/build/citation-verification.d.ts.map +1 -0
  11. package/dist/.dts/build/compatibility.d.ts +76 -0
  12. package/dist/.dts/build/compatibility.d.ts.map +1 -0
  13. package/dist/.dts/build/contract-model.d.ts +92 -0
  14. package/dist/.dts/build/contract-model.d.ts.map +1 -0
  15. package/dist/.dts/build/deep-equal.d.ts +9 -0
  16. package/dist/.dts/build/deep-equal.d.ts.map +1 -0
  17. package/dist/.dts/build/deep-freeze.d.ts +20 -0
  18. package/dist/.dts/build/deep-freeze.d.ts.map +1 -0
  19. package/dist/.dts/build/dependency-graph.d.ts +168 -0
  20. package/dist/.dts/build/dependency-graph.d.ts.map +1 -0
  21. package/dist/.dts/build/dependency-model.d.ts +79 -0
  22. package/dist/.dts/build/dependency-model.d.ts.map +1 -0
  23. package/dist/.dts/build/discover.d.ts +25 -0
  24. package/dist/.dts/build/discover.d.ts.map +1 -0
  25. package/dist/.dts/build/display-path.d.ts +24 -0
  26. package/dist/.dts/build/display-path.d.ts.map +1 -0
  27. package/dist/.dts/build/docs.d.ts +176 -0
  28. package/dist/.dts/build/docs.d.ts.map +1 -0
  29. package/dist/.dts/build/env-example.d.ts +85 -0
  30. package/dist/.dts/build/env-example.d.ts.map +1 -0
  31. package/dist/.dts/build/errors.d.ts +78 -0
  32. package/dist/.dts/build/errors.d.ts.map +1 -0
  33. package/dist/.dts/build/evidence-cache.d.ts +74 -0
  34. package/dist/.dts/build/evidence-cache.d.ts.map +1 -0
  35. package/dist/.dts/build/evidence-model.d.ts +50 -0
  36. package/dist/.dts/build/evidence-model.d.ts.map +1 -0
  37. package/dist/.dts/build/evidence-reference.d.ts +67 -0
  38. package/dist/.dts/build/evidence-reference.d.ts.map +1 -0
  39. package/dist/.dts/build/evidence-snapshot.d.ts +123 -0
  40. package/dist/.dts/build/evidence-snapshot.d.ts.map +1 -0
  41. package/dist/.dts/build/exclusive-group.d.ts +19 -0
  42. package/dist/.dts/build/exclusive-group.d.ts.map +1 -0
  43. package/dist/.dts/build/finding-model.d.ts +79 -0
  44. package/dist/.dts/build/finding-model.d.ts.map +1 -0
  45. package/dist/.dts/build/generate-documentation.d.ts +176 -0
  46. package/dist/.dts/build/generate-documentation.d.ts.map +1 -0
  47. package/dist/.dts/build/generate-env-artifacts.d.ts +176 -0
  48. package/dist/.dts/build/generate-env-artifacts.d.ts.map +1 -0
  49. package/dist/.dts/build/generate-evidence.d.ts +77 -0
  50. package/dist/.dts/build/generate-evidence.d.ts.map +1 -0
  51. package/dist/.dts/build/generate-manifest.d.ts +101 -0
  52. package/dist/.dts/build/generate-manifest.d.ts.map +1 -0
  53. package/dist/.dts/build/generate-usage.d.ts +95 -0
  54. package/dist/.dts/build/generate-usage.d.ts.map +1 -0
  55. package/dist/.dts/build/generated-banner.d.ts +52 -0
  56. package/dist/.dts/build/generated-banner.d.ts.map +1 -0
  57. package/dist/.dts/build/glob.d.ts +18 -0
  58. package/dist/.dts/build/glob.d.ts.map +1 -0
  59. package/dist/.dts/build/governance-fields.d.ts +34 -0
  60. package/dist/.dts/build/governance-fields.d.ts.map +1 -0
  61. package/dist/.dts/build/humanize-key.d.ts +14 -0
  62. package/dist/.dts/build/humanize-key.d.ts.map +1 -0
  63. package/dist/.dts/build/index.d.ts +107 -0
  64. package/dist/.dts/build/index.d.ts.map +1 -0
  65. package/dist/.dts/build/lifecycle-model.d.ts +64 -0
  66. package/dist/.dts/build/lifecycle-model.d.ts.map +1 -0
  67. package/dist/.dts/build/link.d.ts +215 -0
  68. package/dist/.dts/build/link.d.ts.map +1 -0
  69. package/dist/.dts/build/literal-eval.d.ts +23 -0
  70. package/dist/.dts/build/literal-eval.d.ts.map +1 -0
  71. package/dist/.dts/build/live-expirations.d.ts +47 -0
  72. package/dist/.dts/build/live-expirations.d.ts.map +1 -0
  73. package/dist/.dts/build/manifest-snapshot.d.ts +229 -0
  74. package/dist/.dts/build/manifest-snapshot.d.ts.map +1 -0
  75. package/dist/.dts/build/manifest.d.ts +31 -0
  76. package/dist/.dts/build/manifest.d.ts.map +1 -0
  77. package/dist/.dts/build/map-utils.d.ts +8 -0
  78. package/dist/.dts/build/map-utils.d.ts.map +1 -0
  79. package/dist/.dts/build/ownership-model.d.ts +57 -0
  80. package/dist/.dts/build/ownership-model.d.ts.map +1 -0
  81. package/dist/.dts/build/parse.d.ts +199 -0
  82. package/dist/.dts/build/parse.d.ts.map +1 -0
  83. package/dist/.dts/build/reference-projections.d.ts +156 -0
  84. package/dist/.dts/build/reference-projections.d.ts.map +1 -0
  85. package/dist/.dts/build/resolution/resolve-import.d.ts +53 -0
  86. package/dist/.dts/build/resolution/resolve-import.d.ts.map +1 -0
  87. package/dist/.dts/build/resolution/resolve-package-schema.d.ts +83 -0
  88. package/dist/.dts/build/resolution/resolve-package-schema.d.ts.map +1 -0
  89. package/dist/.dts/build/resolution/resolve-tsconfig-paths.d.ts +101 -0
  90. package/dist/.dts/build/resolution/resolve-tsconfig-paths.d.ts.map +1 -0
  91. package/dist/.dts/build/resolution/resolve-within-root.d.ts +35 -0
  92. package/dist/.dts/build/resolution/resolve-within-root.d.ts.map +1 -0
  93. package/dist/.dts/build/resolve-import.d.ts +50 -0
  94. package/dist/.dts/build/resolve-import.d.ts.map +1 -0
  95. package/dist/.dts/build/resolve-package-schema.d.ts +99 -0
  96. package/dist/.dts/build/resolve-package-schema.d.ts.map +1 -0
  97. package/dist/.dts/build/resolve-tsconfig-paths.d.ts +100 -0
  98. package/dist/.dts/build/resolve-tsconfig-paths.d.ts.map +1 -0
  99. package/dist/.dts/build/resolve-within-root.d.ts +35 -0
  100. package/dist/.dts/build/resolve-within-root.d.ts.map +1 -0
  101. package/dist/.dts/build/sarif.d.ts +66 -0
  102. package/dist/.dts/build/sarif.d.ts.map +1 -0
  103. package/dist/.dts/build/scan-dependencies.d.ts +47 -0
  104. package/dist/.dts/build/scan-dependencies.d.ts.map +1 -0
  105. package/dist/.dts/build/sort-by-identity.d.ts +14 -0
  106. package/dist/.dts/build/sort-by-identity.d.ts.map +1 -0
  107. package/dist/.dts/build/source-position.d.ts +69 -0
  108. package/dist/.dts/build/source-position.d.ts.map +1 -0
  109. package/dist/.dts/build/tool-version.d.ts +8 -0
  110. package/dist/.dts/build/tool-version.d.ts.map +1 -0
  111. package/dist/.dts/build/types.d.ts +53 -0
  112. package/dist/.dts/build/types.d.ts.map +1 -0
  113. package/dist/.dts/build/usage-report.d.ts +124 -0
  114. package/dist/.dts/build/usage-report.d.ts.map +1 -0
  115. package/dist/.dts/cli/filesystem.d.ts +3 -0
  116. package/dist/.dts/cli/filesystem.d.ts.map +1 -0
  117. package/dist/.dts/eslint-plugin/glob.d.ts +18 -0
  118. package/dist/.dts/eslint-plugin/glob.d.ts.map +1 -0
  119. package/dist/.dts/eslint-plugin/index.d.ts +27 -0
  120. package/dist/.dts/eslint-plugin/index.d.ts.map +1 -0
  121. package/dist/.dts/eslint-plugin/no-node-fs.d.ts +25 -0
  122. package/dist/.dts/eslint-plugin/no-node-fs.d.ts.map +1 -0
  123. package/dist/.dts/eslint-plugin/no-raw-process-env.d.ts +23 -0
  124. package/dist/.dts/eslint-plugin/no-raw-process-env.d.ts.map +1 -0
  125. package/dist/.dts/evidence/define-projection.d.ts +51 -0
  126. package/dist/.dts/evidence/define-projection.d.ts.map +1 -0
  127. package/dist/.dts/evidence/index.d.ts +23 -0
  128. package/dist/.dts/evidence/index.d.ts.map +1 -0
  129. package/dist/.dts/helpers/index.d.ts +135 -0
  130. package/dist/.dts/helpers/index.d.ts.map +1 -0
  131. package/dist/.dts/helpers/processors.d.ts +32 -0
  132. package/dist/.dts/helpers/processors.d.ts.map +1 -0
  133. package/dist/.dts/helpers/validators.d.ts +68 -0
  134. package/dist/.dts/helpers/validators.d.ts.map +1 -0
  135. package/dist/.dts/node/index.d.ts +2 -0
  136. package/dist/.dts/node/index.d.ts.map +1 -0
  137. package/dist/.dts/runtime/cache.d.ts +20 -0
  138. package/dist/.dts/runtime/cache.d.ts.map +1 -0
  139. package/dist/.dts/runtime/create.d.ts +20 -0
  140. package/dist/.dts/runtime/create.d.ts.map +1 -0
  141. package/dist/.dts/runtime/document.d.ts +181 -0
  142. package/dist/.dts/runtime/document.d.ts.map +1 -0
  143. package/dist/.dts/runtime/errors.d.ts +55 -0
  144. package/dist/.dts/runtime/errors.d.ts.map +1 -0
  145. package/dist/.dts/runtime/index.d.ts +24 -0
  146. package/dist/.dts/runtime/index.d.ts.map +1 -0
  147. package/dist/.dts/runtime/registry.d.ts +12 -0
  148. package/dist/.dts/runtime/registry.d.ts.map +1 -0
  149. package/dist/.dts/runtime/reset.d.ts +8 -0
  150. package/dist/.dts/runtime/reset.d.ts.map +1 -0
  151. package/dist/.dts/runtime/types.d.ts +175 -0
  152. package/dist/.dts/runtime/types.d.ts.map +1 -0
  153. package/dist/.dts/runtime/validate.d.ts +14 -0
  154. package/dist/.dts/runtime/validate.d.ts.map +1 -0
  155. package/dist/build.cjs +83 -0
  156. package/dist/build.cjs.map +1 -0
  157. package/dist/build.d.cts +1 -0
  158. package/dist/build.d.ts +1 -0
  159. package/dist/build.js +19 -0
  160. package/dist/build.js.map +1 -0
  161. package/dist/cli/index.js +134 -0
  162. package/dist/cli/index.js.map +1 -0
  163. package/dist/eslint-plugin/index.cjs +12 -0
  164. package/dist/eslint-plugin/index.cjs.map +1 -0
  165. package/dist/eslint-plugin/index.d.cts +1 -0
  166. package/dist/eslint-plugin/index.d.ts +1 -0
  167. package/dist/eslint-plugin/index.js +5 -0
  168. package/dist/eslint-plugin/index.js.map +1 -0
  169. package/dist/evidence.cjs +7 -0
  170. package/dist/evidence.cjs.map +1 -0
  171. package/dist/evidence.d.cts +1 -0
  172. package/dist/evidence.d.ts +1 -0
  173. package/dist/evidence.js +5 -0
  174. package/dist/evidence.js.map +1 -0
  175. package/dist/helpers.cjs +8 -0
  176. package/dist/helpers.cjs.map +1 -0
  177. package/dist/helpers.d.cts +1 -0
  178. package/dist/helpers.d.ts +1 -0
  179. package/dist/helpers.js +5 -0
  180. package/dist/helpers.js.map +1 -0
  181. package/dist/index.cjs +15 -0
  182. package/dist/index.cjs.map +1 -0
  183. package/dist/index.d.cts +1 -0
  184. package/dist/index.d.ts +1 -0
  185. package/dist/index.js +7 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/node.cjs +13 -0
  188. package/dist/node.cjs.map +1 -0
  189. package/dist/node.d.cts +1 -0
  190. package/dist/node.d.ts +1 -0
  191. package/dist/node.js +7 -0
  192. package/dist/node.js.map +1 -0
  193. package/package.json +183 -0
  194. package/schemas/contract-model.schema.json +321 -0
  195. package/schemas/env-cap-report.schema.json +2369 -0
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Core contract types for env-cap.
3
+ *
4
+ * These types are intentionally minimal: an `EnvDefinition` describes how to
5
+ * turn one raw environment value into one typed, validated application
6
+ * value. There is no `optional`/`required` flag anywhere in this file --
7
+ * requiredness is just a validator that rejects `undefined`/empty values.
8
+ *
9
+ * Documentation fields (description, owner, expiresAt, category, ...) live
10
+ * entirely in {@link documentEnv} (see `document.ts`), not here -- this file is
11
+ * the runtime's whole vocabulary, and every field in it is read by
12
+ * `validate.ts`/`create.ts`/`errors.ts` at runtime. If a field is only ever
13
+ * read by the generator, it belongs in `document.ts`, not here. `context` is
14
+ * the one exception worth calling out: it's also read by the build package
15
+ * for documentation display (see ADR 0022), but it belongs here rather than
16
+ * in `documentEnv()` because `validate.ts` reads it too, to decide pipeline
17
+ * participation -- the same bar `default`/`processor`/`validator` already
18
+ * clear.
19
+ */
20
+ /** The raw, unprocessed source of environment values (e.g. `process.env`, a resolved secrets bag). */
21
+ export type RawEnv = Readonly<Record<string, unknown>>;
22
+ /** Processes a raw value into a typed, ready-to-use application value. Must not read any other key. */
23
+ export type Processor<T> = (value: unknown) => T;
24
+ /**
25
+ * Validates an already-processed value; return `true` when valid, or a human-readable error
26
+ * string when invalid.
27
+ *
28
+ * @remarks
29
+ * Receives the full raw env for conditional validation (e.g. "required only if X").
30
+ */
31
+ export type Validator<T> = (value: T, rawEnv: RawEnv) => true | string;
32
+ /**
33
+ * A default may be a literal value, or a zero-arg thunk evaluated lazily when the raw value is
34
+ * undefined.
35
+ *
36
+ * @remarks
37
+ * The union is redundant at the type level (`unknown` alone already accepts a
38
+ * function) -- it's kept because this type is public API, and collapsing it to bare `unknown`
39
+ * would erase the one thing a reader of the generated `.d.ts` needs to learn here.
40
+ */
41
+ export type DefaultValue = unknown | (() => unknown);
42
+ /** Configuration for one schema entry: how to default, process, and validate a single raw environment value. */
43
+ export interface EnvDefinition<T> {
44
+ /** Literal fallback or lazy thunk used when the raw value is `undefined`. */
45
+ default?: DefaultValue;
46
+ /** Converts the raw (or defaulted) value to `T`; passed through unprocessed when omitted. */
47
+ processor?: Processor<T>;
48
+ /** Rejects an invalid processed value; return `true` to accept it. */
49
+ validator?: Validator<T>;
50
+ /**
51
+ * The validation context this variable belongs to (e.g. `"server"`,
52
+ * `"production"`, `"worker"`) -- entirely application-defined; env-cap
53
+ * never interprets, detects, or infers this string. Omitted (the
54
+ * default) means the variable participates in every {@link validateEnv}
55
+ * run regardless of `activeContexts`. A variable belongs to at most one
56
+ * validation context -- see ADR 0022 for why this is a single `string`
57
+ * and not `string[]`; do not widen it to an array to let one variable
58
+ * join multiple contexts, that reintroduces the AND/OR ambiguity this
59
+ * design deliberately avoids.
60
+ *
61
+ * @remarks
62
+ * Validation contexts are a participation filter only -- not
63
+ * authentication, authorization, or a bundling/security boundary. See
64
+ * ADR 0022's Formal Invariants.
65
+ */
66
+ context?: string;
67
+ }
68
+ /**
69
+ * A schema is a map of variable name -> definition.
70
+ *
71
+ * @remarks
72
+ * `EnvDefinition<any>` is used only as the generic *bound* here (never surfaced to consumers):
73
+ * TypeScript infers a precise, per-key literal type for `S` from the object passed to
74
+ * {@link createEnv}, so the resolved contract type (see {@link InferEnvValue}) stays fully
75
+ * strict. This is the same variance workaround used by schema libraries like zod/trpc for
76
+ * heterogeneous generic maps.
77
+ */
78
+ export type EnvSchema = Record<string, EnvDefinition<any>>;
79
+ type UnwrapDefault<D> = D extends {
80
+ default: infer Def;
81
+ } ? Def extends () => infer R ? R : Def : never;
82
+ /**
83
+ * Resolves the application-facing type for one schema entry: processor return type, else the
84
+ * default's type, else `string` (the shape raw process.env values naturally arrive in).
85
+ *
86
+ * @remarks
87
+ * Same documented generic-bound variance workaround as {@link EnvSchema} above --
88
+ * `any` here is never surfaced to a consumer's inferred type.
89
+ */
90
+ export type InferEnvValue<D extends EnvDefinition<any>> = D extends {
91
+ /** Narrows to the processor's return type when one is present. */
92
+ processor: Processor<infer P>;
93
+ } ? P : [UnwrapDefault<D>] extends [never] ? string : UnwrapDefault<D>;
94
+ /** The internal, non-enumerable identity + metadata attached to every contract created by `createEnv`. */
95
+ export interface ContractInternals<S extends EnvSchema = EnvSchema> {
96
+ readonly id: symbol;
97
+ readonly name: string;
98
+ readonly source: string | undefined;
99
+ readonly schema: S;
100
+ }
101
+ /**
102
+ * The object returned by {@link createEnv}. Each key is a lazily-resolved getter backed by the
103
+ * runtime cache -- there is no global env object, only per-feature contracts like this one.
104
+ *
105
+ * @remarks
106
+ * `toString()` is intersected in (rather than left to the ambient `Object.prototype`
107
+ * declaration) because `create.ts` genuinely overrides it to return a redacted
108
+ * `EnvContract("name")` representation, never resolved values -- see ADR 0006. Declaring
109
+ * it here means the type accurately describes what calling `String(contract)` returns.
110
+ */
111
+ export type EnvContract<S extends EnvSchema> = {
112
+ readonly [K in keyof S]: InferEnvValue<S[K]>;
113
+ } & {
114
+ /** Returns the redacted `EnvContract("name")` representation, never resolved values -- see ADR 0006. */
115
+ toString(): string;
116
+ };
117
+ export interface validateEnvOptions {
118
+ /** The raw source of environment values, e.g. `process.env` or a resolved secrets bag. */
119
+ values: RawEnv;
120
+ /**
121
+ * Every contract to validate -- typically the `contracts` array imported
122
+ * from a generated manifest (see {@link build.generateEnvManifest}). Pass all of them
123
+ * in one call: {@link validateEnv} only ever initializes once per process, so
124
+ * a second call returns the first call's cached result without
125
+ * re-running anything, even if it passes a different manifest.
126
+ */
127
+ manifest: readonly EnvContract<any>[];
128
+ /**
129
+ * The validation contexts active for this run (e.g. `["server",
130
+ * "production"]`) -- entirely application-defined; env-cap never
131
+ * detects or infers these, the caller always computes and passes them
132
+ * explicitly. A variable whose `context` isn't in this list is skipped
133
+ * entirely (no default/processor/validator runs for it, and it stays in
134
+ * its not-ready state, exactly as if this run had never happened for
135
+ * it) -- see ADR 0022. A variable with no `context` always participates,
136
+ * regardless of what's passed here. Omitted (the default) behaves as an
137
+ * empty list: only variables with no `context` participate.
138
+ *
139
+ * @remarks
140
+ * Not part of the validation cache's identity -- {@link validateEnv}
141
+ * remains one-shot per process exactly as before this option existed. A
142
+ * second call does not re-evaluate `activeContexts`; it returns the
143
+ * first call's result outright. Different active contexts belong to
144
+ * different processes (e.g. a server process and a browser bundle),
145
+ * never to two calls within the same one.
146
+ */
147
+ activeContexts?: readonly string[];
148
+ }
149
+ /** Aggregate counts from a completed {@link validateEnv} run. */
150
+ export interface validateEnvResult {
151
+ /** Number of contracts in the manifest that were validated. */
152
+ readonly contractCount: number;
153
+ /** Total number of variables validated across all contracts. */
154
+ readonly variableCount: number;
155
+ }
156
+ export interface CreateEnvOptions {
157
+ /**
158
+ * A short, stable label for this contract (e.g. "payments", "database").
159
+ * Used in error messages. Defaults to an auto-generated anonymous label if
160
+ * omitted -- providing one is strongly recommended for readable validation
161
+ * errors.
162
+ */
163
+ name?: string;
164
+ /**
165
+ * Pass `import.meta.url` here so validation errors point at the file that
166
+ * declared the failing variable (e.g. "features/payments/env.schema.ts")
167
+ * instead of just the short `name` label. There is no portable way for
168
+ * `createEnv` to discover its caller's module URL on its own -- this is
169
+ * always correct and never goes stale, since it's supplied by the JS
170
+ * engine rather than hand-typed.
171
+ */
172
+ source?: string;
173
+ }
174
+ export {};
175
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { validateEnvOptions, validateEnvResult } from "./types.js";
2
+ /**
3
+ * Validates every variable in every contract in `options.manifest` against
4
+ * `options.values`, then caches the results.
5
+ *
6
+ * @remarks
7
+ * Idempotent: the first successful (or failed) call is authoritative for the life of the
8
+ * process -- later calls return (or re-throw) that same outcome without re-running any
9
+ * processor or validator. Concurrent in-flight calls share one underlying run.
10
+ *
11
+ * @throws {EnvValidationError} If any variable fails processing or validation.
12
+ */
13
+ export declare function validateEnv(options: validateEnvOptions): Promise<validateEnvResult>;
14
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/runtime/validate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEvE;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4CzF"}