envilder 0.9.4 → 0.10.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 CHANGED
@@ -83,6 +83,7 @@ Watch how easy it is to automate your .env management in less than 1 minute:
83
83
 
84
84
  ```json
85
85
  {
86
+ "$schema": "https://envilder.com/schema/map-file.v1.json",
86
87
  "DB_PASSWORD": "/my-app/db/password",
87
88
  "API_KEY": "/my-app/api-key"
88
89
  }
@@ -165,12 +166,17 @@ what secrets your app needs and where they live in your cloud provider. The same
165
166
  the CLI, the GitHub Action, and the runtime SDKs. You can optionally include a `$config` section
166
167
  to declare which provider and settings to use.
167
168
 
169
+ Add `"$schema"` to enable IDE autocomplete, inline documentation, and validation for your map
170
+ files. The schema is published at
171
+ [envilder.com/schema/map-file.v1.json](https://envilder.com/schema/map-file.v1.json).
172
+
168
173
  ### Basic Format (AWS SSM, default)
169
174
 
170
175
  When no `$config` is present, Envilder defaults to AWS SSM Parameter Store:
171
176
 
172
177
  ```json
173
178
  {
179
+ "$schema": "https://envilder.com/schema/map-file.v1.json",
174
180
  "API_KEY": "/myapp/prod/api-key",
175
181
  "DB_PASSWORD": "/myapp/prod/db-password",
176
182
  "SECRET_TOKEN": "/myapp/prod/secret-token"
@@ -188,6 +194,7 @@ and uses all other keys as secret mappings:
188
194
 
189
195
  ```json
190
196
  {
197
+ "$schema": "https://envilder.com/schema/map-file.v1.json",
191
198
  "$config": {
192
199
  "provider": "aws",
193
200
  "profile": "prod-account"
@@ -201,6 +208,7 @@ and uses all other keys as secret mappings:
201
208
 
202
209
  ```json
203
210
  {
211
+ "$schema": "https://envilder.com/schema/map-file.v1.json",
204
212
  "$config": {
205
213
  "provider": "azure",
206
214
  "vaultUrl": "https://my-vault.vault.azure.net"
@@ -5,6 +5,27 @@ For SDK-specific changes, see `sdk-dotnet.md`, `sdk-python.md`, or `sdk-nodejs.m
5
5
 
6
6
  ---
7
7
 
8
+ ## [0.10.0] - 2026-05-03
9
+
10
+ ### Added
11
+
12
+ * **Map-file JSON Schema** — A formal JSON Schema specification for map files,
13
+ published at `https://envilder.com/schema/map-file.v1.json`. Add
14
+ `"$schema": "https://envilder.com/schema/map-file.v1.json"` to any map file
15
+ for IDE autocomplete, inline documentation, and validation
16
+ ([#218](https://github.com/macalbert/envilder/pull/218))
17
+ * **Schema contract tests** — 39 tests validating the JSON Schema across all
18
+ providers (AWS, Azure, GCP, HashiCorp Vault, file)
19
+
20
+ ### Fixed
21
+
22
+ * **Reserved key filtering** — All `$`-prefixed keys (e.g. `$schema`) are now
23
+ excluded from variable mappings. Previously only `$config` was filtered,
24
+ causing `$schema` to leak into environment variables
25
+ ([#218](https://github.com/macalbert/envilder/pull/218))
26
+
27
+ ---
28
+
8
29
  ## [0.9.4] - 2026-05-03
9
30
 
10
31
  ### Fixed
@@ -1,3 +1,17 @@
1
+ ## [0.10.0] - 2026-05-03
2
+
3
+ ### Fixed
4
+
5
+ * **Reserved key filtering** — `$schema` and other `$`-prefixed keys no longer
6
+ leak into environment variable mappings
7
+ ([#218](https://github.com/macalbert/envilder/pull/218))
8
+
9
+ ### Dependencies
10
+
11
+ * Bundle updated with latest CLI core (map-file schema support)
12
+
13
+ ---
14
+
1
15
  ## [0.9.4] - 2026-05-03
2
16
 
3
17
  ### Fixed
@@ -1,3 +1,19 @@
1
+ ## [0.3.0] - 2026-05-03
2
+
3
+ ### Added
4
+
5
+ * **Map-file JSON Schema support** — Map files can now include
6
+ `"$schema": "https://envilder.com/schema/map-file.v1.json"` for IDE
7
+ autocomplete and validation without affecting secret resolution
8
+
9
+ ### Fixed
10
+
11
+ * **Reserved key filtering** — All `$`-prefixed keys are now excluded from
12
+ variable mappings. Previously only `$config` was filtered
13
+ ([#218](https://github.com/macalbert/envilder/pull/218))
14
+
15
+ ---
16
+
1
17
  ## [0.2.0] - 2026-04-18
2
18
 
3
19
  ### Added
@@ -1,3 +1,19 @@
1
+ ## [0.2.0] - 2026-05-03
2
+
3
+ ### Added
4
+
5
+ * **Map-file JSON Schema support** — Map files can now include
6
+ `"$schema": "https://envilder.com/schema/map-file.v1.json"` for IDE
7
+ autocomplete and validation without affecting secret resolution
8
+
9
+ ### Fixed
10
+
11
+ * **Reserved key filtering** — All `$`-prefixed keys are now excluded from
12
+ variable mappings. Previously only `$config` was filtered
13
+ ([#218](https://github.com/macalbert/envilder/pull/218))
14
+
15
+ ---
16
+
1
17
  ## [0.1.1] - 2026-05-02
2
18
 
3
19
  ### Documentation
@@ -1,3 +1,19 @@
1
+ ## [0.4.0] - 2026-05-03
2
+
3
+ ### Added
4
+
5
+ * **Map-file JSON Schema support** — Map files can now include
6
+ `"$schema": "https://envilder.com/schema/map-file.v1.json"` for IDE
7
+ autocomplete and validation without affecting secret resolution
8
+
9
+ ### Fixed
10
+
11
+ * **Reserved key filtering** — All `$`-prefixed keys are now excluded from
12
+ variable mappings. Previously only `$config` was filtered
13
+ ([#218](https://github.com/macalbert/envilder/pull/218))
14
+
15
+ ---
16
+
1
17
  ## [0.3.2] - 2026-04-18
2
18
 
3
19
  ### Changed
@@ -1 +1 @@
1
- {"version":3,"file":"FileVariableStore.d.ts","sourceRoot":"","sources":["../../../../../src/envilder/core/infrastructure/variableStore/FileVariableStore.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAG3E,qBACa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,MAAM,CAAU;gBAEW,MAAM,EAAE,OAAO;IAO5C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAK3D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;YAQhD,YAAY;IAmBpB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAc/D,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;IAiBhB,OAAO,CAAC,cAAc;CASvB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,CAkBxB"}
1
+ {"version":3,"file":"FileVariableStore.d.ts","sourceRoot":"","sources":["../../../../../src/envilder/core/infrastructure/variableStore/FileVariableStore.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAG3E,qBACa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,MAAM,CAAU;gBAEW,MAAM,EAAE,OAAO;IAO5C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAK3D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;YAchD,YAAY;IAmBpB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAc/D,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;IAiBhB,OAAO,CAAC,cAAc;CASvB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,CAkBxB"}
@@ -53,7 +53,13 @@ let FileVariableStore = class FileVariableStore {
53
53
  const raw = yield this.readJsonFile(source);
54
54
  const { $config } = raw, rest = __rest(raw, ["$config"]);
55
55
  const config = $config && typeof $config === 'object' ? $config : {};
56
- return { config, mappings: rest };
56
+ const mappings = {};
57
+ for (const [key, value] of Object.entries(rest)) {
58
+ if (!key.startsWith('$') && typeof value === 'string') {
59
+ mappings[key] = value;
60
+ }
61
+ }
62
+ return { config, mappings };
57
63
  });
58
64
  }
59
65
  readJsonFile(source) {
@@ -1 +1 @@
1
- {"version":3,"file":"FileVariableStore.js","sourceRoot":"","sources":["../../../../../src/envilder/core/infrastructure/variableStore/FileVariableStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAO7C,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGhC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAG5B,YAAmC,MAAe;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,sBAAsB,CAAC,0BAA0B,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEK,UAAU,CAAC,MAAc;;YAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;IAEK,gBAAgB,CAAC,MAAc;;YACnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,EAAE,OAAO,KAAc,GAAG,EAAZ,IAAI,UAAK,GAAG,EAA1B,WAAoB,CAAM,CAAC;YACjC,MAAM,MAAM,GACV,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAA8B,EAAE,CAAC;QAC9D,CAAC;KAAA;IAEa,YAAY,CAAC,MAAc;;YACvC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,IAAa,EAAE,CAAC;oBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;oBACvD,MAAM,IAAI,oBAAoB,CAC5B,uCAAuC,MAAM,EAAE,CAChD,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;oBAC1C,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,IAAI,oBAAoB,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;KAAA;IAEK,cAAc,CAAC,MAAc;;YACjC,MAAM,YAAY,GAA2B,EAAE,CAAC;YAChD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAEvC,OAAO,YAAY,CAAC;QACtB,CAAC;KAAA;IAEK,eAAe,CACnB,WAAmB,EACnB,YAAoC;;YAEpC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;iBAC5C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;iBAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;gBACvE,MAAM,IAAI,oBAAoB,CAC5B,qCAAqC,YAAY,EAAE,CACpD,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;IAEO,cAAc,CAAC,KAAa;QAClC,qCAAqC;QACrC,mFAAmF;QACnF,6EAA6E;QAC7E,wFAAwF;QACxF,4EAA4E;QAC5E,wFAAwF;QACxF,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;CACF,CAAA;AArFY,iBAAiB;IAD7B,UAAU,EAAE;IAIE,WAAA,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;GAHvB,iBAAiB,CAqF7B;;AAED,MAAM,UAAgB,iBAAiB,CACrC,OAAe;;QAEf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC3B,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,CAAC;YAAC,WAAM,CAAC;gBACP,MAAM,IAAI,oBAAoB,CAC5B,uCAAuC,OAAO,EAAE,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,oBAAoB,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CAAA"}
1
+ {"version":3,"file":"FileVariableStore.js","sourceRoot":"","sources":["../../../../../src/envilder/core/infrastructure/variableStore/FileVariableStore.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,7 @@ export declare class MapFileParser {
10
10
  * @returns Parsed config and variable mappings.
11
11
  */
12
12
  parse(json: string): ParsedMapFile;
13
+ private parseRawJson;
14
+ private parseConfig;
13
15
  }
14
16
  //# sourceMappingURL=map-file-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"map-file-parser.d.ts","sourceRoot":"","sources":["../../../../../src/sdks/nodejs/src/application/map-file-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAUlE;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CA4CnC"}
1
+ {"version":3,"file":"map-file-parser.d.ts","sourceRoot":"","sources":["../../../../../src/sdks/nodejs/src/application/map-file-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAUlE;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAqBlC,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,WAAW;CAqBpB"}
@@ -15,33 +15,13 @@ export class MapFileParser {
15
15
  * @returns Parsed config and variable mappings.
16
16
  */
17
17
  parse(json) {
18
- let raw;
19
- try {
20
- raw = JSON.parse(json);
21
- }
22
- catch (_a) {
23
- throw new Error('Invalid map file: content is not valid JSON');
24
- }
25
- if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
26
- throw new Error('Invalid map file: root must be a JSON object');
27
- }
18
+ const raw = this.parseRawJson(json);
28
19
  const mappings = new Map();
29
20
  let config = {};
30
21
  for (const [key, value] of Object.entries(raw)) {
31
- if (key === CONFIG_KEY) {
32
- if (typeof value === 'object' && value !== null) {
33
- const obj = value;
34
- const providerStr = typeof obj.provider === 'string'
35
- ? obj.provider.toLowerCase()
36
- : undefined;
37
- config = {
38
- provider: providerStr ? PROVIDER_MAP[providerStr] : undefined,
39
- vaultUrl: typeof obj.vaultUrl === 'string' ? obj.vaultUrl : undefined,
40
- profile: typeof obj.profile === 'string' ? obj.profile : undefined,
41
- };
42
- if (providerStr && !config.provider) {
43
- throw new Error(`Unknown provider: '${obj.provider}'. Supported: aws, azure`);
44
- }
22
+ if (key.startsWith('$')) {
23
+ if (key === CONFIG_KEY) {
24
+ config = this.parseConfig(value);
45
25
  }
46
26
  continue;
47
27
  }
@@ -51,5 +31,34 @@ export class MapFileParser {
51
31
  }
52
32
  return { config, mappings };
53
33
  }
34
+ parseRawJson(json) {
35
+ let raw;
36
+ try {
37
+ raw = JSON.parse(json);
38
+ }
39
+ catch (_a) {
40
+ throw new Error('Invalid map file: content is not valid JSON');
41
+ }
42
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
43
+ throw new Error('Invalid map file: root must be a JSON object');
44
+ }
45
+ return raw;
46
+ }
47
+ parseConfig(value) {
48
+ if (typeof value !== 'object' || value === null) {
49
+ return {};
50
+ }
51
+ const obj = value;
52
+ const providerStr = typeof obj.provider === 'string' ? obj.provider.toLowerCase() : undefined;
53
+ const config = {
54
+ provider: providerStr ? PROVIDER_MAP[providerStr] : undefined,
55
+ vaultUrl: typeof obj.vaultUrl === 'string' ? obj.vaultUrl : undefined,
56
+ profile: typeof obj.profile === 'string' ? obj.profile : undefined,
57
+ };
58
+ if (providerStr && !config.provider) {
59
+ throw new Error(`Unknown provider: '${obj.provider}'. Supported: aws, azure`);
60
+ }
61
+ return config;
62
+ }
54
63
  }
55
64
  //# sourceMappingURL=map-file-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"map-file-parser.js","sourceRoot":"","sources":["../../../../../src/sdks/nodejs/src/application/map-file-parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B,MAAM,YAAY,GAAuC;IACvD,GAAG,EAAE,kBAAkB,CAAC,GAAG;IAC3B,KAAK,EAAE,kBAAkB,CAAC,KAAK;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB;;;;;OAKG;IACH,KAAK,CAAC,IAAY;QAChB,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,WAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,IAAI,MAAM,GAAkB,EAAE,CAAC;QAE/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAChD,MAAM,GAAG,GAAG,KAAgC,CAAC;oBAC7C,MAAM,WAAW,GACf,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;wBAC9B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE;wBAC5B,CAAC,CAAC,SAAS,CAAC;oBAChB,MAAM,GAAG;wBACP,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;wBAC7D,QAAQ,EACN,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;wBAC7D,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;qBACnE,CAAC;oBAEF,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;wBACpC,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,CAAC,QAAQ,0BAA0B,CAC7D,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"map-file-parser.js","sourceRoot":"","sources":["../../../../../src/sdks/nodejs/src/application/map-file-parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B,MAAM,YAAY,GAAuC;IACvD,GAAG,EAAE,kBAAkB,CAAC,GAAG;IAC3B,KAAK,EAAE,kBAAkB,CAAC,KAAK;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB;;;;;OAKG;IACH,KAAK,CAAC,IAAY;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,IAAI,MAAM,GAAkB,EAAE,CAAC;QAE/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;oBACvB,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,WAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,GAA8B,CAAC;IACxC,CAAC;IAEO,WAAW,CAAC,KAAc;QAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,MAAM,WAAW,GACf,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,MAAM,MAAM,GAAkB;YAC5B,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7D,QAAQ,EAAE,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACrE,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SACnE,CAAC;QAEF,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,CAAC,QAAQ,0BAA0B,CAC7D,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "envilder",
3
- "version": "0.9.4",
3
+ "version": "0.10.0",
4
4
  "description": "A CLI and GitHub Action that securely centralizes your environment variables from AWS SSM or Azure Key Vault as a single source of truth",
5
5
  "homepage": "https://envilder.com",
6
6
  "author": {
@@ -106,6 +106,8 @@
106
106
  "@types/node": "catalog:",
107
107
  "@vercel/ncc": "^0.38.4",
108
108
  "@vitest/coverage-v8": "catalog:",
109
+ "ajv": "^8.20.0",
110
+ "ajv-formats": "^3.0.1",
109
111
  "glob": "^13.0.6",
110
112
  "lefthook": "^2.1.4",
111
113
  "secretlint": "^12.3.1",