react-native-config-ultimate 0.2.0 → 0.2.1

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 (110) hide show
  1. package/README.md +476 -121
  2. package/android/rncu.gradle +19 -15
  3. package/android/src/main/java/com/reactnativeultimateconfig/UltimateConfigHelper.java +87 -0
  4. package/android/src/main/java/com/reactnativeultimateconfig/UltimateConfigPackage.java +1 -1
  5. package/android/src/newarch/java/com/reactnativeultimateconfig/UltimateConfigModule.java +3 -50
  6. package/android/src/oldarch/java/com/reactnativeultimateconfig/UltimateConfigModule.java +3 -54
  7. package/ios/UltimateConfig.mm +2 -1
  8. package/lib/commonjs/cli.js +10 -4
  9. package/lib/commonjs/cli.js.map +1 -1
  10. package/lib/commonjs/flatten.js +6 -1
  11. package/lib/commonjs/flatten.js.map +1 -1
  12. package/lib/commonjs/load-env.js +14 -0
  13. package/lib/commonjs/load-env.js.map +1 -1
  14. package/lib/commonjs/main.js +5 -1
  15. package/lib/commonjs/main.js.map +1 -1
  16. package/lib/commonjs/render-env.js +1 -1
  17. package/lib/commonjs/render-env.js.map +1 -1
  18. package/lib/commonjs/resolve-env.js +5 -1
  19. package/lib/commonjs/resolve-env.js.map +1 -1
  20. package/lib/commonjs/templates/override.js.handlebars +1 -10
  21. package/lib/commonjs/validate-env.js +20 -7
  22. package/lib/commonjs/validate-env.js.map +1 -1
  23. package/lib/module/cli.js +10 -4
  24. package/lib/module/cli.js.map +1 -1
  25. package/lib/module/flatten.js +6 -1
  26. package/lib/module/flatten.js.map +1 -1
  27. package/lib/module/load-env.js +14 -0
  28. package/lib/module/load-env.js.map +1 -1
  29. package/lib/module/main.js +6 -2
  30. package/lib/module/main.js.map +1 -1
  31. package/lib/module/render-env.js +1 -1
  32. package/lib/module/render-env.js.map +1 -1
  33. package/lib/module/resolve-env.js +5 -1
  34. package/lib/module/resolve-env.js.map +1 -1
  35. package/lib/module/templates/override.js.handlebars +1 -10
  36. package/lib/module/validate-env.js +19 -7
  37. package/lib/module/validate-env.js.map +1 -1
  38. package/lib/typescript/src/cli.d.ts.map +1 -1
  39. package/lib/typescript/src/flatten.d.ts.map +1 -1
  40. package/lib/typescript/src/load-env.d.ts.map +1 -1
  41. package/lib/typescript/src/main.d.ts +1 -1
  42. package/lib/typescript/src/main.d.ts.map +1 -1
  43. package/lib/typescript/src/render-env.d.ts.map +1 -1
  44. package/lib/typescript/src/resolve-env.d.ts +8 -1
  45. package/lib/typescript/src/resolve-env.d.ts.map +1 -1
  46. package/lib/typescript/src/validate-env.d.ts +8 -0
  47. package/lib/typescript/src/validate-env.d.ts.map +1 -1
  48. package/package.json +2 -2
  49. package/src/cli.ts +11 -4
  50. package/src/flatten.ts +6 -1
  51. package/src/load-env.ts +18 -0
  52. package/src/main.ts +6 -2
  53. package/src/render-env.ts +4 -1
  54. package/src/resolve-env.ts +16 -2
  55. package/src/templates/override.js.handlebars +1 -10
  56. package/src/validate-env.ts +23 -7
  57. package/lib/commonjs/bin.spec.js +0 -48
  58. package/lib/commonjs/bin.spec.js.map +0 -1
  59. package/lib/commonjs/cli.spec.js +0 -190
  60. package/lib/commonjs/cli.spec.js.map +0 -1
  61. package/lib/commonjs/flatten.spec.js +0 -32
  62. package/lib/commonjs/flatten.spec.js.map +0 -1
  63. package/lib/commonjs/load-env.spec.js +0 -257
  64. package/lib/commonjs/load-env.spec.js.map +0 -1
  65. package/lib/commonjs/main.spec.js +0 -228
  66. package/lib/commonjs/main.spec.js.map +0 -1
  67. package/lib/commonjs/render-env.spec.js +0 -397
  68. package/lib/commonjs/render-env.spec.js.map +0 -1
  69. package/lib/commonjs/resolve-env.spec.js +0 -31
  70. package/lib/commonjs/resolve-env.spec.js.map +0 -1
  71. package/lib/commonjs/validate-env.spec.js +0 -325
  72. package/lib/commonjs/validate-env.spec.js.map +0 -1
  73. package/lib/commonjs/write-env.spec.js +0 -115
  74. package/lib/commonjs/write-env.spec.js.map +0 -1
  75. package/lib/module/bin.spec.js +0 -47
  76. package/lib/module/bin.spec.js.map +0 -1
  77. package/lib/module/cli.spec.js +0 -190
  78. package/lib/module/cli.spec.js.map +0 -1
  79. package/lib/module/flatten.spec.js +0 -31
  80. package/lib/module/flatten.spec.js.map +0 -1
  81. package/lib/module/load-env.spec.js +0 -257
  82. package/lib/module/load-env.spec.js.map +0 -1
  83. package/lib/module/main.spec.js +0 -224
  84. package/lib/module/main.spec.js.map +0 -1
  85. package/lib/module/render-env.spec.js +0 -396
  86. package/lib/module/render-env.spec.js.map +0 -1
  87. package/lib/module/resolve-env.spec.js +0 -30
  88. package/lib/module/resolve-env.spec.js.map +0 -1
  89. package/lib/module/validate-env.spec.js +0 -325
  90. package/lib/module/validate-env.spec.js.map +0 -1
  91. package/lib/module/write-env.spec.js +0 -115
  92. package/lib/module/write-env.spec.js.map +0 -1
  93. package/lib/typescript/src/bin.spec.d.ts +0 -2
  94. package/lib/typescript/src/bin.spec.d.ts.map +0 -1
  95. package/lib/typescript/src/cli.spec.d.ts +0 -14
  96. package/lib/typescript/src/cli.spec.d.ts.map +0 -1
  97. package/lib/typescript/src/flatten.spec.d.ts +0 -2
  98. package/lib/typescript/src/flatten.spec.d.ts.map +0 -1
  99. package/lib/typescript/src/load-env.spec.d.ts +0 -6
  100. package/lib/typescript/src/load-env.spec.d.ts.map +0 -1
  101. package/lib/typescript/src/main.spec.d.ts +0 -2
  102. package/lib/typescript/src/main.spec.d.ts.map +0 -1
  103. package/lib/typescript/src/render-env.spec.d.ts +0 -2
  104. package/lib/typescript/src/render-env.spec.d.ts.map +0 -1
  105. package/lib/typescript/src/resolve-env.spec.d.ts +0 -2
  106. package/lib/typescript/src/resolve-env.spec.d.ts.map +0 -1
  107. package/lib/typescript/src/validate-env.spec.d.ts +0 -2
  108. package/lib/typescript/src/validate-env.spec.d.ts.map +0 -1
  109. package/lib/typescript/src/write-env.spec.d.ts +0 -9
  110. package/lib/typescript/src/write-env.spec.d.ts.map +0 -1
@@ -1,30 +0,0 @@
1
- "use strict";
2
-
3
- import resolve_env from './resolve-env';
4
- describe('resolve_env', () => {
5
- const original = {
6
- original: 'data'
7
- };
8
- it.each`
9
- on_env_result | expected
10
- ${1} | ${1}
11
- ${''} | ${''}
12
- ${'hello'} | ${'hello'}
13
- ${0} | ${0}
14
- ${1} | ${1}
15
- ${false} | ${false}
16
- ${true} | ${true}
17
- ${null} | ${null}
18
- ${undefined} | ${original}
19
- `("when hook returns '$on_env_result' env is resolved to '$expected'", async ({
20
- on_env_result,
21
- expected
22
- }) => {
23
- const on_env = jest.fn();
24
- on_env.mockReturnValueOnce(on_env_result);
25
- expect(await resolve_env(original, {
26
- on_env
27
- })).toEqual(expected);
28
- });
29
- });
30
- //# sourceMappingURL=resolve-env.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["resolve_env","describe","original","it","each","undefined","on_env_result","expected","on_env","jest","fn","mockReturnValueOnce","expect","toEqual"],"sourceRoot":"../../src","sources":["resolve-env.spec.ts"],"mappings":";;AAAA,OAAOA,WAAW,MAAM,eAAe;AAGvCC,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC5B,MAAMC,QAAiB,GAAG;IAAEA,QAAQ,EAAE;EAAO,CAAC;EAC9CC,EAAE,CAACC,IAAI;AACT;AACA,MAAM,CAAC,eAAe,CAAC;AACvB,MAAM,EAAE,cAAc,EAAE;AACxB,MAAM,OAAO,SAAS,OAAO;AAC7B,MAAM,CAAC,eAAe,CAAC;AACvB,MAAM,CAAC,eAAe,CAAC;AACvB,MAAM,KAAK,WAAW,KAAK;AAC3B,MAAM,IAAI,YAAY,IAAI;AAC1B,MAAM,IAAI,YAAY,IAAI;AAC1B,MAAMC,SAAS,OAAOH,QAAQ;AAC9B,GAAG,CACC,mEAAmE,EACnE,OAAO;IAAEI,aAAa;IAAEC;EAAwD,CAAC,KAAK;IACpF,MAAMC,MAAM,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;IACxBF,MAAM,CAACG,mBAAmB,CAACL,aAAa,CAAC;IACzCM,MAAM,CAAC,MAAMZ,WAAW,CAACE,QAAQ,EAAE;MAAEM;IAAO,CAAC,CAAC,CAAC,CAACK,OAAO,CAACN,QAAQ,CAAC;EACnE,CACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
@@ -1,325 +0,0 @@
1
- "use strict";
2
-
3
- import { validate_env } from './validate-env';
4
- describe('validate-env', () => {
5
- describe('required fields', () => {
6
- it('throws when a required var is missing', () => {
7
- const schema = {
8
- API_KEY: {
9
- type: 'string',
10
- required: true
11
- }
12
- };
13
- expect(() => validate_env({}, schema)).toThrow('Missing required env var: API_KEY');
14
- });
15
- it('throws when a required var is an empty string', () => {
16
- const schema = {
17
- API_KEY: {
18
- type: 'string',
19
- required: true
20
- }
21
- };
22
- expect(() => validate_env({
23
- API_KEY: ''
24
- }, schema)).toThrow('Missing required env var: API_KEY');
25
- });
26
- it('throws when a required var is null', () => {
27
- const schema = {
28
- API_KEY: {
29
- type: 'string',
30
- required: true
31
- }
32
- };
33
- expect(() => validate_env({
34
- API_KEY: null
35
- }, schema)).toThrow('Missing required env var: API_KEY');
36
- });
37
- it('does not throw when a required var is present', () => {
38
- const schema = {
39
- API_KEY: {
40
- type: 'string',
41
- required: true
42
- }
43
- };
44
- expect(() => validate_env({
45
- API_KEY: 'my-key'
46
- }, schema)).not.toThrow();
47
- });
48
- it('does not throw when an optional var is missing', () => {
49
- const schema = {
50
- DEBUG: {
51
- type: 'boolean',
52
- required: false
53
- }
54
- };
55
- expect(() => validate_env({}, schema)).not.toThrow();
56
- });
57
- it('does not throw when required is not specified and var is missing', () => {
58
- const schema = {
59
- DEBUG: {
60
- type: 'boolean'
61
- }
62
- };
63
- expect(() => validate_env({}, schema)).not.toThrow();
64
- });
65
- });
66
- describe('type validation', () => {
67
- describe('number', () => {
68
- it('accepts valid number strings', () => {
69
- const schema = {
70
- TIMEOUT: {
71
- type: 'number'
72
- }
73
- };
74
- expect(() => validate_env({
75
- TIMEOUT: '3000'
76
- }, schema)).not.toThrow();
77
- expect(() => validate_env({
78
- TIMEOUT: '0'
79
- }, schema)).not.toThrow();
80
- expect(() => validate_env({
81
- TIMEOUT: '-1'
82
- }, schema)).not.toThrow();
83
- expect(() => validate_env({
84
- TIMEOUT: '3.14'
85
- }, schema)).not.toThrow();
86
- });
87
- it('throws for non-numeric strings', () => {
88
- const schema = {
89
- TIMEOUT: {
90
- type: 'number'
91
- }
92
- };
93
- expect(() => validate_env({
94
- TIMEOUT: 'fast'
95
- }, schema)).toThrow('TIMEOUT must be a number, got "fast"');
96
- expect(() => validate_env({
97
- TIMEOUT: 'abc'
98
- }, schema)).toThrow('TIMEOUT must be a number');
99
- });
100
- it('accepts actual number values', () => {
101
- const schema = {
102
- TIMEOUT: {
103
- type: 'number'
104
- }
105
- };
106
- expect(() => validate_env({
107
- TIMEOUT: 3000
108
- }, schema)).not.toThrow();
109
- });
110
- });
111
- describe('boolean', () => {
112
- it('accepts valid boolean strings', () => {
113
- const schema = {
114
- DEBUG: {
115
- type: 'boolean'
116
- }
117
- };
118
- for (const v of ['true', 'false', '1', '0', 'TRUE', 'FALSE']) {
119
- expect(() => validate_env({
120
- DEBUG: v
121
- }, schema)).not.toThrow();
122
- }
123
- });
124
- it('throws for invalid boolean strings', () => {
125
- const schema = {
126
- DEBUG: {
127
- type: 'boolean'
128
- }
129
- };
130
- expect(() => validate_env({
131
- DEBUG: 'yes'
132
- }, schema)).toThrow('DEBUG must be a boolean (true/false/1/0), got "yes"');
133
- expect(() => validate_env({
134
- DEBUG: 'enabled'
135
- }, schema)).toThrow('DEBUG must be a boolean');
136
- });
137
- });
138
- describe('string', () => {
139
- it('accepts any non-empty value as string', () => {
140
- const schema = {
141
- NAME: {
142
- type: 'string'
143
- }
144
- };
145
- expect(() => validate_env({
146
- NAME: 'hello'
147
- }, schema)).not.toThrow();
148
- expect(() => validate_env({
149
- NAME: '123'
150
- }, schema)).not.toThrow();
151
- expect(() => validate_env({
152
- NAME: 'true'
153
- }, schema)).not.toThrow();
154
- });
155
- });
156
- });
157
- describe('pattern validation', () => {
158
- it('accepts values matching the pattern', () => {
159
- const schema = {
160
- ENV: {
161
- type: 'string',
162
- pattern: '^(dev|staging|prod)$'
163
- }
164
- };
165
- expect(() => validate_env({
166
- ENV: 'dev'
167
- }, schema)).not.toThrow();
168
- expect(() => validate_env({
169
- ENV: 'staging'
170
- }, schema)).not.toThrow();
171
- expect(() => validate_env({
172
- ENV: 'prod'
173
- }, schema)).not.toThrow();
174
- });
175
- it('throws for values not matching the pattern', () => {
176
- const schema = {
177
- ENV: {
178
- type: 'string',
179
- pattern: '^(dev|staging|prod)$'
180
- }
181
- };
182
- expect(() => validate_env({
183
- ENV: 'production'
184
- }, schema)).toThrow('ENV does not match pattern /^(dev|staging|prod)$/, got "production"');
185
- });
186
- it('pattern validation is skipped for missing optional vars', () => {
187
- const schema = {
188
- ENV: {
189
- type: 'string',
190
- pattern: '^(dev|staging|prod)$'
191
- }
192
- };
193
- expect(() => validate_env({}, schema)).not.toThrow();
194
- });
195
- });
196
- describe('multiple errors', () => {
197
- it('reports all validation errors at once, not just the first', () => {
198
- const schema = {
199
- API_KEY: {
200
- type: 'string',
201
- required: true
202
- },
203
- TIMEOUT: {
204
- type: 'number',
205
- required: true
206
- },
207
- ENV: {
208
- type: 'string',
209
- pattern: '^(dev|staging|prod)$'
210
- }
211
- };
212
- let error;
213
- try {
214
- validate_env({
215
- TIMEOUT: 'fast',
216
- ENV: 'production'
217
- }, schema);
218
- } catch (e) {
219
- error = e;
220
- }
221
- expect(error).toBeDefined();
222
- expect(error?.message).toContain('Missing required env var: API_KEY');
223
- expect(error?.message).toContain('TIMEOUT must be a number');
224
- expect(error?.message).toContain('ENV does not match pattern');
225
- });
226
- });
227
- describe('does not throw for valid env', () => {
228
- it('passes a complete valid env without error', () => {
229
- const schema = {
230
- API_KEY: {
231
- type: 'string',
232
- required: true
233
- },
234
- TIMEOUT_MS: {
235
- type: 'number',
236
- required: true
237
- },
238
- DEBUG: {
239
- type: 'boolean',
240
- required: false
241
- },
242
- ENV_NAME: {
243
- type: 'string',
244
- required: true,
245
- pattern: '^(dev|staging|prod)$'
246
- }
247
- };
248
- expect(() => validate_env({
249
- API_KEY: 'secret-key',
250
- TIMEOUT_MS: '5000',
251
- ENV_NAME: 'staging'
252
- // DEBUG intentionally omitted (optional)
253
- }, schema)).not.toThrow();
254
- });
255
- });
256
- describe('env key name validation', () => {
257
- it('throws for keys with invalid characters', () => {
258
- const schema = {};
259
- expect(() => validate_env({
260
- 'invalid-key': 'value'
261
- }, schema)).toThrow('Invalid env key name: "invalid-key"');
262
- });
263
- it('throws for keys starting with a number', () => {
264
- const schema = {};
265
- expect(() => validate_env({
266
- '123KEY': 'value'
267
- }, schema)).toThrow('Invalid env key name: "123KEY"');
268
- });
269
- it('throws for keys with spaces', () => {
270
- const schema = {};
271
- expect(() => validate_env({
272
- 'MY KEY': 'value'
273
- }, schema)).toThrow('Invalid env key name: "MY KEY"');
274
- });
275
- it('accepts valid key names starting with underscore', () => {
276
- const schema = {};
277
- expect(() => validate_env({
278
- _PRIVATE_KEY: 'value'
279
- }, schema)).not.toThrow();
280
- });
281
- it('accepts valid key names with numbers', () => {
282
- const schema = {};
283
- expect(() => validate_env({
284
- API_V2_URL: 'value'
285
- }, schema)).not.toThrow();
286
- });
287
- });
288
- describe('invalid regex patterns', () => {
289
- it('reports error for invalid regex in schema', () => {
290
- const schema = {
291
- ENV: {
292
- type: 'string',
293
- pattern: '[invalid('
294
- }
295
- };
296
- expect(() => validate_env({
297
- ENV: 'test'
298
- }, schema)).toThrow('invalid regex pattern /[invalid(/');
299
- });
300
- it('reports multiple invalid regex patterns', () => {
301
- const schema = {
302
- ENV1: {
303
- type: 'string',
304
- pattern: '[bad1('
305
- },
306
- ENV2: {
307
- type: 'string',
308
- pattern: '[bad2('
309
- }
310
- };
311
- let error;
312
- try {
313
- validate_env({
314
- ENV1: 'a',
315
- ENV2: 'b'
316
- }, schema);
317
- } catch (e) {
318
- error = e;
319
- }
320
- expect(error?.message).toContain('ENV1: invalid regex pattern');
321
- expect(error?.message).toContain('ENV2: invalid regex pattern');
322
- });
323
- });
324
- });
325
- //# sourceMappingURL=validate-env.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["validate_env","describe","it","schema","API_KEY","type","required","expect","toThrow","not","DEBUG","TIMEOUT","v","NAME","ENV","pattern","error","e","toBeDefined","message","toContain","TIMEOUT_MS","ENV_NAME","_PRIVATE_KEY","API_V2_URL","ENV1","ENV2"],"sourceRoot":"../../src","sources":["validate-env.spec.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,gBAAgB;AAG7CC,QAAQ,CAAC,cAAc,EAAE,MAAM;EAC7BA,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IAChCC,EAAE,CAAC,uCAAuC,EAAE,MAAM;MAChD,MAAMC,MAAc,GAAG;QAAEC,OAAO,EAAE;UAAEC,IAAI,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAK;MAAE,CAAC;MACtEC,MAAM,CAAC,MAAMP,YAAY,CAAC,CAAC,CAAC,EAAEG,MAAM,CAAC,CAAC,CAACK,OAAO,CAAC,mCAAmC,CAAC;IACrF,CAAC,CAAC;IAEFN,EAAE,CAAC,+CAA+C,EAAE,MAAM;MACxD,MAAMC,MAAc,GAAG;QAAEC,OAAO,EAAE;UAAEC,IAAI,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAK;MAAE,CAAC;MACtEC,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAEI,OAAO,EAAE;MAAG,CAAC,EAAED,MAAM,CAAC,CAAC,CAACK,OAAO,CACzD,mCACF,CAAC;IACH,CAAC,CAAC;IAEFN,EAAE,CAAC,oCAAoC,EAAE,MAAM;MAC7C,MAAMC,MAAc,GAAG;QAAEC,OAAO,EAAE;UAAEC,IAAI,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAK;MAAE,CAAC;MACtEC,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAEI,OAAO,EAAE;MAAK,CAAC,EAAED,MAAM,CAAC,CAAC,CAACK,OAAO,CAC3D,mCACF,CAAC;IACH,CAAC,CAAC;IAEFN,EAAE,CAAC,+CAA+C,EAAE,MAAM;MACxD,MAAMC,MAAc,GAAG;QAAEC,OAAO,EAAE;UAAEC,IAAI,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAK;MAAE,CAAC;MACtEC,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAEI,OAAO,EAAE;MAAS,CAAC,EAAED,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;IACzE,CAAC,CAAC;IAEFN,EAAE,CAAC,gDAAgD,EAAE,MAAM;MACzD,MAAMC,MAAc,GAAG;QAAEO,KAAK,EAAE;UAAEL,IAAI,EAAE,SAAS;UAAEC,QAAQ,EAAE;QAAM;MAAE,CAAC;MACtEC,MAAM,CAAC,MAAMP,YAAY,CAAC,CAAC,CAAC,EAAEG,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC;IAEFN,EAAE,CAAC,kEAAkE,EAAE,MAAM;MAC3E,MAAMC,MAAc,GAAG;QAAEO,KAAK,EAAE;UAAEL,IAAI,EAAE;QAAU;MAAE,CAAC;MACrDE,MAAM,CAAC,MAAMP,YAAY,CAAC,CAAC,CAAC,EAAEG,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFP,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IAChCA,QAAQ,CAAC,QAAQ,EAAE,MAAM;MACvBC,EAAE,CAAC,8BAA8B,EAAE,MAAM;QACvC,MAAMC,MAAc,GAAG;UAAEQ,OAAO,EAAE;YAAEN,IAAI,EAAE;UAAS;QAAE,CAAC;QACtDE,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEW,OAAO,EAAE;QAAO,CAAC,EAAER,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;QACrED,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEW,OAAO,EAAE;QAAI,CAAC,EAAER,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;QAClED,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEW,OAAO,EAAE;QAAK,CAAC,EAAER,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;QACnED,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEW,OAAO,EAAE;QAAO,CAAC,EAAER,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;MACvE,CAAC,CAAC;MAEFN,EAAE,CAAC,gCAAgC,EAAE,MAAM;QACzC,MAAMC,MAAc,GAAG;UAAEQ,OAAO,EAAE;YAAEN,IAAI,EAAE;UAAS;QAAE,CAAC;QACtDE,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEW,OAAO,EAAE;QAAO,CAAC,EAAER,MAAM,CAAC,CAAC,CAACK,OAAO,CAC7D,sCACF,CAAC;QACDD,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEW,OAAO,EAAE;QAAM,CAAC,EAAER,MAAM,CAAC,CAAC,CAACK,OAAO,CAAC,0BAA0B,CAAC;MAC5F,CAAC,CAAC;MAEFN,EAAE,CAAC,8BAA8B,EAAE,MAAM;QACvC,MAAMC,MAAc,GAAG;UAAEQ,OAAO,EAAE;YAAEN,IAAI,EAAE;UAAS;QAAE,CAAC;QACtDE,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEW,OAAO,EAAE;QAAK,CAAC,EAAER,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;MACrE,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFP,QAAQ,CAAC,SAAS,EAAE,MAAM;MACxBC,EAAE,CAAC,+BAA+B,EAAE,MAAM;QACxC,MAAMC,MAAc,GAAG;UAAEO,KAAK,EAAE;YAAEL,IAAI,EAAE;UAAU;QAAE,CAAC;QACrD,KAAK,MAAMO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;UAC5DL,MAAM,CAAC,MAAMP,YAAY,CAAC;YAAEU,KAAK,EAAEE;UAAE,CAAC,EAAET,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;QAChE;MACF,CAAC,CAAC;MAEFN,EAAE,CAAC,oCAAoC,EAAE,MAAM;QAC7C,MAAMC,MAAc,GAAG;UAAEO,KAAK,EAAE;YAAEL,IAAI,EAAE;UAAU;QAAE,CAAC;QACrDE,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEU,KAAK,EAAE;QAAM,CAAC,EAAEP,MAAM,CAAC,CAAC,CAACK,OAAO,CAC1D,qDACF,CAAC;QACDD,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEU,KAAK,EAAE;QAAU,CAAC,EAAEP,MAAM,CAAC,CAAC,CAACK,OAAO,CAAC,yBAAyB,CAAC;MAC7F,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFP,QAAQ,CAAC,QAAQ,EAAE,MAAM;MACvBC,EAAE,CAAC,uCAAuC,EAAE,MAAM;QAChD,MAAMC,MAAc,GAAG;UAAEU,IAAI,EAAE;YAAER,IAAI,EAAE;UAAS;QAAE,CAAC;QACnDE,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEa,IAAI,EAAE;QAAQ,CAAC,EAAEV,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;QACnED,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEa,IAAI,EAAE;QAAM,CAAC,EAAEV,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;QACjED,MAAM,CAAC,MAAMP,YAAY,CAAC;UAAEa,IAAI,EAAE;QAAO,CAAC,EAAEV,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;MACpE,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFP,QAAQ,CAAC,oBAAoB,EAAE,MAAM;IACnCC,EAAE,CAAC,qCAAqC,EAAE,MAAM;MAC9C,MAAMC,MAAc,GAAG;QACrBW,GAAG,EAAE;UAAET,IAAI,EAAE,QAAQ;UAAEU,OAAO,EAAE;QAAuB;MACzD,CAAC;MACDR,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAEc,GAAG,EAAE;MAAM,CAAC,EAAEX,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;MAChED,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAEc,GAAG,EAAE;MAAU,CAAC,EAAEX,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;MACpED,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAEc,GAAG,EAAE;MAAO,CAAC,EAAEX,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;IACnE,CAAC,CAAC;IAEFN,EAAE,CAAC,4CAA4C,EAAE,MAAM;MACrD,MAAMC,MAAc,GAAG;QACrBW,GAAG,EAAE;UAAET,IAAI,EAAE,QAAQ;UAAEU,OAAO,EAAE;QAAuB;MACzD,CAAC;MACDR,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAEc,GAAG,EAAE;MAAa,CAAC,EAAEX,MAAM,CAAC,CAAC,CAACK,OAAO,CAC/D,qEACF,CAAC;IACH,CAAC,CAAC;IAEFN,EAAE,CAAC,yDAAyD,EAAE,MAAM;MAClE,MAAMC,MAAc,GAAG;QACrBW,GAAG,EAAE;UAAET,IAAI,EAAE,QAAQ;UAAEU,OAAO,EAAE;QAAuB;MACzD,CAAC;MACDR,MAAM,CAAC,MAAMP,YAAY,CAAC,CAAC,CAAC,EAAEG,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFP,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IAChCC,EAAE,CAAC,2DAA2D,EAAE,MAAM;MACpE,MAAMC,MAAc,GAAG;QACrBC,OAAO,EAAE;UAAEC,IAAI,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAK,CAAC;QAC3CK,OAAO,EAAE;UAAEN,IAAI,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAK,CAAC;QAC3CQ,GAAG,EAAE;UAAET,IAAI,EAAE,QAAQ;UAAEU,OAAO,EAAE;QAAuB;MACzD,CAAC;MACD,IAAIC,KAAwB;MAC5B,IAAI;QACFhB,YAAY,CAAC;UAAEW,OAAO,EAAE,MAAM;UAAEG,GAAG,EAAE;QAAa,CAAC,EAAEX,MAAM,CAAC;MAC9D,CAAC,CAAC,OAAOc,CAAC,EAAE;QACVD,KAAK,GAAGC,CAAU;MACpB;MACAV,MAAM,CAACS,KAAK,CAAC,CAACE,WAAW,CAAC,CAAC;MAC3BX,MAAM,CAACS,KAAK,EAAEG,OAAO,CAAC,CAACC,SAAS,CAAC,mCAAmC,CAAC;MACrEb,MAAM,CAACS,KAAK,EAAEG,OAAO,CAAC,CAACC,SAAS,CAAC,0BAA0B,CAAC;MAC5Db,MAAM,CAACS,KAAK,EAAEG,OAAO,CAAC,CAACC,SAAS,CAAC,4BAA4B,CAAC;IAChE,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFnB,QAAQ,CAAC,8BAA8B,EAAE,MAAM;IAC7CC,EAAE,CAAC,2CAA2C,EAAE,MAAM;MACpD,MAAMC,MAAc,GAAG;QACrBC,OAAO,EAAE;UAAEC,IAAI,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAK,CAAC;QAC3Ce,UAAU,EAAE;UAAEhB,IAAI,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAK,CAAC;QAC9CI,KAAK,EAAE;UAAEL,IAAI,EAAE,SAAS;UAAEC,QAAQ,EAAE;QAAM,CAAC;QAC3CgB,QAAQ,EAAE;UAAEjB,IAAI,EAAE,QAAQ;UAAEC,QAAQ,EAAE,IAAI;UAAES,OAAO,EAAE;QAAuB;MAC9E,CAAC;MACDR,MAAM,CAAC,MACLP,YAAY,CACV;QACEI,OAAO,EAAE,YAAY;QACrBiB,UAAU,EAAE,MAAM;QAClBC,QAAQ,EAAE;QACV;MACF,CAAC,EACDnB,MACF,CACF,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;IACjB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFP,QAAQ,CAAC,yBAAyB,EAAE,MAAM;IACxCC,EAAE,CAAC,yCAAyC,EAAE,MAAM;MAClD,MAAMC,MAAc,GAAG,CAAC,CAAC;MACzBI,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAE,aAAa,EAAE;MAAQ,CAAC,EAAEG,MAAM,CAAC,CAAC,CAACK,OAAO,CACpE,qCACF,CAAC;IACH,CAAC,CAAC;IAEFN,EAAE,CAAC,wCAAwC,EAAE,MAAM;MACjD,MAAMC,MAAc,GAAG,CAAC,CAAC;MACzBI,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAE,QAAQ,EAAE;MAAQ,CAAC,EAAEG,MAAM,CAAC,CAAC,CAACK,OAAO,CAC/D,gCACF,CAAC;IACH,CAAC,CAAC;IAEFN,EAAE,CAAC,6BAA6B,EAAE,MAAM;MACtC,MAAMC,MAAc,GAAG,CAAC,CAAC;MACzBI,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAE,QAAQ,EAAE;MAAQ,CAAC,EAAEG,MAAM,CAAC,CAAC,CAACK,OAAO,CAC/D,gCACF,CAAC;IACH,CAAC,CAAC;IAEFN,EAAE,CAAC,kDAAkD,EAAE,MAAM;MAC3D,MAAMC,MAAc,GAAG,CAAC,CAAC;MACzBI,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAEuB,YAAY,EAAE;MAAQ,CAAC,EAAEpB,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;IAC7E,CAAC,CAAC;IAEFN,EAAE,CAAC,sCAAsC,EAAE,MAAM;MAC/C,MAAMC,MAAc,GAAG,CAAC,CAAC;MACzBI,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAEwB,UAAU,EAAE;MAAQ,CAAC,EAAErB,MAAM,CAAC,CAAC,CAACM,GAAG,CAACD,OAAO,CAAC,CAAC;IAC3E,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFP,QAAQ,CAAC,wBAAwB,EAAE,MAAM;IACvCC,EAAE,CAAC,2CAA2C,EAAE,MAAM;MACpD,MAAMC,MAAc,GAAG;QACrBW,GAAG,EAAE;UAAET,IAAI,EAAE,QAAQ;UAAEU,OAAO,EAAE;QAAY;MAC9C,CAAC;MACDR,MAAM,CAAC,MAAMP,YAAY,CAAC;QAAEc,GAAG,EAAE;MAAO,CAAC,EAAEX,MAAM,CAAC,CAAC,CAACK,OAAO,CACzD,mCACF,CAAC;IACH,CAAC,CAAC;IAEFN,EAAE,CAAC,yCAAyC,EAAE,MAAM;MAClD,MAAMC,MAAc,GAAG;QACrBsB,IAAI,EAAE;UAAEpB,IAAI,EAAE,QAAQ;UAAEU,OAAO,EAAE;QAAS,CAAC;QAC3CW,IAAI,EAAE;UAAErB,IAAI,EAAE,QAAQ;UAAEU,OAAO,EAAE;QAAS;MAC5C,CAAC;MACD,IAAIC,KAAwB;MAC5B,IAAI;QACFhB,YAAY,CAAC;UAAEyB,IAAI,EAAE,GAAG;UAAEC,IAAI,EAAE;QAAI,CAAC,EAAEvB,MAAM,CAAC;MAChD,CAAC,CAAC,OAAOc,CAAC,EAAE;QACVD,KAAK,GAAGC,CAAU;MACpB;MACAV,MAAM,CAACS,KAAK,EAAEG,OAAO,CAAC,CAACC,SAAS,CAAC,6BAA6B,CAAC;MAC/Db,MAAM,CAACS,KAAK,EAAEG,OAAO,CAAC,CAACC,SAAS,CAAC,6BAA6B,CAAC;IACjE,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,115 +0,0 @@
1
- "use strict";
2
-
3
- // Mocks must be declared before the module is required.
4
- const mockWriteFileSync = jest.fn();
5
- const mockRenameSync = jest.fn();
6
- const mockUnlinkSync = jest.fn();
7
- const mockCopyFileSync = jest.fn();
8
- const mockMkdirSync = jest.fn(); // needed since write-env creates dest dirs
9
-
10
- jest.mock('fs', () => ({
11
- writeFileSync: (...args) => mockWriteFileSync(...args),
12
- renameSync: (...args) => mockRenameSync(...args),
13
- unlinkSync: (...args) => mockUnlinkSync(...args),
14
- copyFileSync: (...args) => mockCopyFileSync(...args),
15
- mkdirSync: (...args) => mockMkdirSync(...args)
16
- }));
17
- jest.mock('os', () => ({
18
- tmpdir: () => '/tmp'
19
- }));
20
-
21
- // eslint-disable-next-line @typescript-eslint/no-require-imports
22
- const write_env = require('./write-env').default;
23
-
24
- // ─── helpers ─────────────────────────────────────────────────────────────────
25
-
26
- /** Returns the temp file path used for a given destination. */
27
- function tmp_for(dest) {
28
- const rename_call = mockRenameSync.mock.calls.find(([, d]) => d === dest);
29
- return rename_call?.[0];
30
- }
31
-
32
- // ─── tests ───────────────────────────────────────────────────────────────────
33
-
34
- describe('write-env', () => {
35
- beforeEach(() => {
36
- mockWriteFileSync.mockReset();
37
- mockRenameSync.mockReset();
38
- mockUnlinkSync.mockReset();
39
- mockCopyFileSync.mockReset();
40
- mockMkdirSync.mockReset();
41
- });
42
- it('writes content to a temp file then renames to destination (atomic write)', () => {
43
- write_env({
44
- hello: 'world'
45
- });
46
-
47
- // Phase 1: content written to a temp path under /tmp
48
- expect(mockWriteFileSync).toHaveBeenCalledTimes(1);
49
- const [tmp_path, content, encoding] = mockWriteFileSync.mock.calls[0];
50
- expect(tmp_path).toMatch(/^\/tmp\/rncu_/);
51
- expect(content).toBe('world');
52
- expect(encoding).toBe('utf8');
53
-
54
- // Phase 2: temp renamed to final destination (atomic)
55
- expect(mockRenameSync).toHaveBeenCalledWith(tmp_path, 'hello');
56
- });
57
- it('writes multiple files atomically', () => {
58
- write_env({
59
- hello: 'world',
60
- hey: 'you'
61
- });
62
- expect(mockWriteFileSync).toHaveBeenCalledTimes(2);
63
- expect(mockRenameSync).toHaveBeenCalledTimes(2);
64
-
65
- // Each dest should have been renamed from a unique temp path
66
- const tmp_hello = tmp_for('hello');
67
- const tmp_hey = tmp_for('hey');
68
- expect(tmp_hello).toBeDefined();
69
- expect(tmp_hey).toBeDefined();
70
- expect(tmp_hello).not.toBe(tmp_hey);
71
- });
72
- it('falls back to copyFileSync + unlinkSync when renameSync fails (cross-device)', () => {
73
- // Simulate cross-device rename error (e.g. /tmp on different device)
74
- mockRenameSync.mockImplementation(() => {
75
- throw new Error('EXDEV');
76
- });
77
- write_env({
78
- hello: 'world'
79
- });
80
- expect(mockCopyFileSync).toHaveBeenCalledWith(expect.stringMatching(/^\/tmp\/rncu_/), 'hello');
81
- expect(mockUnlinkSync).toHaveBeenCalled();
82
- });
83
- it('throws a descriptive error if copyFileSync also fails', () => {
84
- mockRenameSync.mockImplementation(() => {
85
- throw new Error('EXDEV');
86
- });
87
- mockCopyFileSync.mockImplementation(() => {
88
- throw new Error('EACCES: permission denied');
89
- });
90
- expect(() => write_env({
91
- hello: 'world'
92
- })).toThrow(/Failed to write output files/);
93
- expect(() => write_env({
94
- hello: 'world'
95
- })).toThrow('hello');
96
- });
97
- it('cleans up temp files when Phase 1 write fails', () => {
98
- // First write succeeds, second fails mid-write
99
- mockWriteFileSync.mockImplementationOnce(() => {
100
- /* success */
101
- }).mockImplementationOnce(() => {
102
- throw new Error('ENOSPC: no space left');
103
- });
104
- expect(() => write_env({
105
- hello: 'world',
106
- hey: 'you'
107
- })).toThrow(/Failed to prepare output files/);
108
-
109
- // The first temp file should have been cleaned up
110
- expect(mockUnlinkSync).toHaveBeenCalledTimes(1);
111
- // No renames should have happened (no real files touched)
112
- expect(mockRenameSync).not.toHaveBeenCalled();
113
- });
114
- });
115
- //# sourceMappingURL=write-env.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["mockWriteFileSync","jest","fn","mockRenameSync","mockUnlinkSync","mockCopyFileSync","mockMkdirSync","mock","writeFileSync","args","renameSync","unlinkSync","copyFileSync","mkdirSync","tmpdir","write_env","require","default","tmp_for","dest","rename_call","calls","find","d","describe","beforeEach","mockReset","it","hello","expect","toHaveBeenCalledTimes","tmp_path","content","encoding","toMatch","toBe","toHaveBeenCalledWith","hey","tmp_hello","tmp_hey","toBeDefined","not","mockImplementation","Error","stringMatching","toHaveBeenCalled","toThrow","mockImplementationOnce"],"sourceRoot":"../../src","sources":["write-env.spec.ts"],"mappings":";;AAAA;AACA,MAAMA,iBAAiB,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;AACnC,MAAMC,cAAc,GAAGF,IAAI,CAACC,EAAE,CAAC,CAAC;AAChC,MAAME,cAAc,GAAGH,IAAI,CAACC,EAAE,CAAC,CAAC;AAChC,MAAMG,gBAAgB,GAAGJ,IAAI,CAACC,EAAE,CAAC,CAAC;AAClC,MAAMI,aAAa,GAAGL,IAAI,CAACC,EAAE,CAAC,CAAC,CAAC,CAAC;;AAEjCD,IAAI,CAACM,IAAI,CAAC,IAAI,EAAE,OAAO;EACrBC,aAAa,EAAEA,CAAC,GAAGC,IAAe,KAAKT,iBAAiB,CAAC,GAAGS,IAAI,CAAC;EACjEC,UAAU,EAAEA,CAAC,GAAGD,IAAe,KAAKN,cAAc,CAAC,GAAGM,IAAI,CAAC;EAC3DE,UAAU,EAAEA,CAAC,GAAGF,IAAe,KAAKL,cAAc,CAAC,GAAGK,IAAI,CAAC;EAC3DG,YAAY,EAAEA,CAAC,GAAGH,IAAe,KAAKJ,gBAAgB,CAAC,GAAGI,IAAI,CAAC;EAC/DI,SAAS,EAAEA,CAAC,GAAGJ,IAAe,KAAKH,aAAa,CAAC,GAAGG,IAAI;AAC1D,CAAC,CAAC,CAAC;AAEHR,IAAI,CAACM,IAAI,CAAC,IAAI,EAAE,OAAO;EAAEO,MAAM,EAAEA,CAAA,KAAM;AAAO,CAAC,CAAC,CAAC;;AAEjD;AACA,MAAMC,SAAgD,GAAGC,OAAO,CAAC,aAAa,CAAC,CAACC,OAAO;;AAEvF;;AAEA;AACA,SAASC,OAAOA,CAACC,IAAY,EAAU;EACrC,MAAMC,WAAW,GAAGjB,cAAc,CAACI,IAAI,CAACc,KAAK,CAACC,IAAI,CAAC,CAAC,GAAGC,CAAC,CAAmB,KAAKA,CAAC,KAAKJ,IAAI,CAAC;EAC3F,OAAOC,WAAW,GAAG,CAAC,CAAC;AACzB;;AAEA;;AAEAI,QAAQ,CAAC,WAAW,EAAE,MAAM;EAC1BC,UAAU,CAAC,MAAM;IACfzB,iBAAiB,CAAC0B,SAAS,CAAC,CAAC;IAC7BvB,cAAc,CAACuB,SAAS,CAAC,CAAC;IAC1BtB,cAAc,CAACsB,SAAS,CAAC,CAAC;IAC1BrB,gBAAgB,CAACqB,SAAS,CAAC,CAAC;IAC5BpB,aAAa,CAACoB,SAAS,CAAC,CAAC;EAC3B,CAAC,CAAC;EAEFC,EAAE,CAAC,0EAA0E,EAAE,MAAM;IACnFZ,SAAS,CAAC;MAAEa,KAAK,EAAE;IAAQ,CAAC,CAAC;;IAE7B;IACAC,MAAM,CAAC7B,iBAAiB,CAAC,CAAC8B,qBAAqB,CAAC,CAAC,CAAC;IAClD,MAAM,CAACC,QAAQ,EAAEC,OAAO,EAAEC,QAAQ,CAAC,GAAGjC,iBAAiB,CAACO,IAAI,CAACc,KAAK,CAAC,CAAC,CAInE;IACDQ,MAAM,CAACE,QAAQ,CAAC,CAACG,OAAO,CAAC,eAAe,CAAC;IACzCL,MAAM,CAACG,OAAO,CAAC,CAACG,IAAI,CAAC,OAAO,CAAC;IAC7BN,MAAM,CAACI,QAAQ,CAAC,CAACE,IAAI,CAAC,MAAM,CAAC;;IAE7B;IACAN,MAAM,CAAC1B,cAAc,CAAC,CAACiC,oBAAoB,CAACL,QAAQ,EAAE,OAAO,CAAC;EAChE,CAAC,CAAC;EAEFJ,EAAE,CAAC,kCAAkC,EAAE,MAAM;IAC3CZ,SAAS,CAAC;MAAEa,KAAK,EAAE,OAAO;MAAES,GAAG,EAAE;IAAM,CAAC,CAAC;IAEzCR,MAAM,CAAC7B,iBAAiB,CAAC,CAAC8B,qBAAqB,CAAC,CAAC,CAAC;IAClDD,MAAM,CAAC1B,cAAc,CAAC,CAAC2B,qBAAqB,CAAC,CAAC,CAAC;;IAE/C;IACA,MAAMQ,SAAS,GAAGpB,OAAO,CAAC,OAAO,CAAC;IAClC,MAAMqB,OAAO,GAAGrB,OAAO,CAAC,KAAK,CAAC;IAC9BW,MAAM,CAACS,SAAS,CAAC,CAACE,WAAW,CAAC,CAAC;IAC/BX,MAAM,CAACU,OAAO,CAAC,CAACC,WAAW,CAAC,CAAC;IAC7BX,MAAM,CAACS,SAAS,CAAC,CAACG,GAAG,CAACN,IAAI,CAACI,OAAO,CAAC;EACrC,CAAC,CAAC;EAEFZ,EAAE,CAAC,8EAA8E,EAAE,MAAM;IACvF;IACAxB,cAAc,CAACuC,kBAAkB,CAAC,MAAM;MACtC,MAAM,IAAIC,KAAK,CAAC,OAAO,CAAC;IAC1B,CAAC,CAAC;IAEF5B,SAAS,CAAC;MAAEa,KAAK,EAAE;IAAQ,CAAC,CAAC;IAE7BC,MAAM,CAACxB,gBAAgB,CAAC,CAAC+B,oBAAoB,CAACP,MAAM,CAACe,cAAc,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC9Ff,MAAM,CAACzB,cAAc,CAAC,CAACyC,gBAAgB,CAAC,CAAC;EAC3C,CAAC,CAAC;EAEFlB,EAAE,CAAC,uDAAuD,EAAE,MAAM;IAChExB,cAAc,CAACuC,kBAAkB,CAAC,MAAM;MACtC,MAAM,IAAIC,KAAK,CAAC,OAAO,CAAC;IAC1B,CAAC,CAAC;IACFtC,gBAAgB,CAACqC,kBAAkB,CAAC,MAAM;MACxC,MAAM,IAAIC,KAAK,CAAC,2BAA2B,CAAC;IAC9C,CAAC,CAAC;IAEFd,MAAM,CAAC,MAAMd,SAAS,CAAC;MAAEa,KAAK,EAAE;IAAQ,CAAC,CAAC,CAAC,CAACkB,OAAO,CAAC,8BAA8B,CAAC;IACnFjB,MAAM,CAAC,MAAMd,SAAS,CAAC;MAAEa,KAAK,EAAE;IAAQ,CAAC,CAAC,CAAC,CAACkB,OAAO,CAAC,OAAO,CAAC;EAC9D,CAAC,CAAC;EAEFnB,EAAE,CAAC,+CAA+C,EAAE,MAAM;IACxD;IACA3B,iBAAiB,CACd+C,sBAAsB,CAAC,MAAM;MAC5B;IAAA,CACD,CAAC,CACDA,sBAAsB,CAAC,MAAM;MAC5B,MAAM,IAAIJ,KAAK,CAAC,uBAAuB,CAAC;IAC1C,CAAC,CAAC;IAEJd,MAAM,CAAC,MAAMd,SAAS,CAAC;MAAEa,KAAK,EAAE,OAAO;MAAES,GAAG,EAAE;IAAM,CAAC,CAAC,CAAC,CAACS,OAAO,CAC7D,gCACF,CAAC;;IAED;IACAjB,MAAM,CAACzB,cAAc,CAAC,CAAC0B,qBAAqB,CAAC,CAAC,CAAC;IAC/C;IACAD,MAAM,CAAC1B,cAAc,CAAC,CAACsC,GAAG,CAACI,gBAAgB,CAAC,CAAC;EAC/C,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=bin.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.spec.d.ts","sourceRoot":"","sources":["../../../src/bin.spec.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- declare const mock_main: jest.Mock<any, any, any>;
2
- declare const mock_exists_sync: jest.Mock<any, any, any>;
3
- declare const mock_watcher_on: jest.Mock<any, any, any>;
4
- declare const mock_watcher_close: jest.Mock<any, any, any>;
5
- declare const mock_watcher: {
6
- on: jest.Mock<any, any, any>;
7
- close: jest.Mock<any, any, any>;
8
- };
9
- declare const mock_chokidar_watch: jest.Mock<any, any, any>;
10
- declare const cli: () => Promise<void>;
11
- declare function set_argv(...args: string[]): void;
12
- /** Grab the handler registered for a given chokidar event. */
13
- declare function get_watcher_handler(event: string): ((p: string) => Promise<void>) | undefined;
14
- //# sourceMappingURL=cli.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.spec.d.ts","sourceRoot":"","sources":["../../../src/cli.spec.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,SAAS,0BAAY,CAAC;AAG5B,QAAA,MAAM,gBAAgB,0BAAY,CAAC;AAMnC,QAAA,MAAM,eAAe,0BAAY,CAAC;AAClC,QAAA,MAAM,kBAAkB,0BAAyC,CAAC;AAClE,QAAA,MAAM,YAAY;;;CAGjB,CAAC;AACF,QAAA,MAAM,mBAAmB,0BAA0C,CAAC;AAIpE,QAAA,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAA4B,CAAC;AAI1D,iBAAS,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAEzC;AAED,8DAA8D;AAC9D,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAGtF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=flatten.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flatten.spec.d.ts","sourceRoot":"","sources":["../../../src/flatten.spec.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- declare const mockReadFileSync: jest.Mock<any, any, any>;
2
- declare const mockParse: jest.Mock<any, any, any>;
3
- declare const mockExpand: jest.Mock<any, any, any>;
4
- declare const mockYaml: jest.Mock<any, any, any>;
5
- declare const load_env: (paths: string | string[]) => Record<string, unknown>;
6
- //# sourceMappingURL=load-env.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load-env.spec.d.ts","sourceRoot":"","sources":["../../../src/load-env.spec.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,0BAAY,CAAC;AAGnC,QAAA,MAAM,SAAS,0BAAY,CAAC;AAG5B,QAAA,MAAM,UAAU,0BAAY,CAAC;AAG7B,QAAA,MAAM,QAAQ,0BAAY,CAAC;AAI3B,QAAA,MAAM,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CACrC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const files_to_assert: string[];
2
- //# sourceMappingURL=main.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.spec.d.ts","sourceRoot":"","sources":["../../../src/main.spec.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,eAAe,UAO3B,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=render-env.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-env.spec.d.ts","sourceRoot":"","sources":["../../../src/render-env.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=resolve-env.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-env.spec.d.ts","sourceRoot":"","sources":["../../../src/resolve-env.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=validate-env.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-env.spec.d.ts","sourceRoot":"","sources":["../../../src/validate-env.spec.ts"],"names":[],"mappings":""}
@@ -1,9 +0,0 @@
1
- declare const mockWriteFileSync: jest.Mock<any, any, any>;
2
- declare const mockRenameSync: jest.Mock<any, any, any>;
3
- declare const mockUnlinkSync: jest.Mock<any, any, any>;
4
- declare const mockCopyFileSync: jest.Mock<any, any, any>;
5
- declare const mockMkdirSync: jest.Mock<any, any, any>;
6
- declare const write_env: (env: Record<string, string>) => void;
7
- /** Returns the temp file path used for a given destination. */
8
- declare function tmp_for(dest: string): string;
9
- //# sourceMappingURL=write-env.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-env.spec.d.ts","sourceRoot":"","sources":["../../../src/write-env.spec.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,iBAAiB,0BAAY,CAAC;AACpC,QAAA,MAAM,cAAc,0BAAY,CAAC;AACjC,QAAA,MAAM,cAAc,0BAAY,CAAC;AACjC,QAAA,MAAM,gBAAgB,0BAAY,CAAC;AACnC,QAAA,MAAM,aAAa,0BAAY,CAAC;AAahC,QAAA,MAAM,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAqC,CAAC;AAIxF,+DAA+D;AAC/D,iBAAS,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrC"}