react-native-config-ultimate 0.1.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 (112) hide show
  1. package/README.md +476 -121
  2. package/android/build.gradle +1 -1
  3. package/android/rncu.gradle +19 -15
  4. package/android/src/main/java/com/reactnativeultimateconfig/UltimateConfigHelper.java +87 -0
  5. package/android/src/main/java/com/reactnativeultimateconfig/UltimateConfigPackage.java +1 -1
  6. package/android/src/newarch/java/com/reactnativeultimateconfig/UltimateConfigModule.java +3 -50
  7. package/android/src/oldarch/java/com/reactnativeultimateconfig/UltimateConfigModule.java +3 -54
  8. package/ios/UltimateConfig.mm +2 -1
  9. package/lib/commonjs/cli.js +11 -2
  10. package/lib/commonjs/cli.js.map +1 -1
  11. package/lib/commonjs/flatten.js +6 -1
  12. package/lib/commonjs/flatten.js.map +1 -1
  13. package/lib/commonjs/load-env.js +14 -0
  14. package/lib/commonjs/load-env.js.map +1 -1
  15. package/lib/commonjs/main.js +5 -1
  16. package/lib/commonjs/main.js.map +1 -1
  17. package/lib/commonjs/render-env.js +1 -1
  18. package/lib/commonjs/render-env.js.map +1 -1
  19. package/lib/commonjs/resolve-env.js +5 -1
  20. package/lib/commonjs/resolve-env.js.map +1 -1
  21. package/lib/commonjs/templates/override.js.handlebars +1 -10
  22. package/lib/commonjs/validate-env.js +20 -7
  23. package/lib/commonjs/validate-env.js.map +1 -1
  24. package/lib/module/cli.js +11 -2
  25. package/lib/module/cli.js.map +1 -1
  26. package/lib/module/flatten.js +6 -1
  27. package/lib/module/flatten.js.map +1 -1
  28. package/lib/module/load-env.js +14 -0
  29. package/lib/module/load-env.js.map +1 -1
  30. package/lib/module/main.js +6 -2
  31. package/lib/module/main.js.map +1 -1
  32. package/lib/module/render-env.js +1 -1
  33. package/lib/module/render-env.js.map +1 -1
  34. package/lib/module/resolve-env.js +5 -1
  35. package/lib/module/resolve-env.js.map +1 -1
  36. package/lib/module/templates/override.js.handlebars +1 -10
  37. package/lib/module/validate-env.js +19 -7
  38. package/lib/module/validate-env.js.map +1 -1
  39. package/lib/typescript/src/cli.d.ts.map +1 -1
  40. package/lib/typescript/src/flatten.d.ts.map +1 -1
  41. package/lib/typescript/src/load-env.d.ts.map +1 -1
  42. package/lib/typescript/src/main.d.ts +1 -1
  43. package/lib/typescript/src/main.d.ts.map +1 -1
  44. package/lib/typescript/src/render-env.d.ts.map +1 -1
  45. package/lib/typescript/src/resolve-env.d.ts +8 -1
  46. package/lib/typescript/src/resolve-env.d.ts.map +1 -1
  47. package/lib/typescript/src/validate-env.d.ts +8 -0
  48. package/lib/typescript/src/validate-env.d.ts.map +1 -1
  49. package/package.json +4 -2
  50. package/src/cli.ts +12 -2
  51. package/src/flatten.ts +6 -1
  52. package/src/load-env.ts +18 -0
  53. package/src/main.ts +6 -2
  54. package/src/render-env.ts +4 -1
  55. package/src/resolve-env.ts +16 -2
  56. package/src/templates/override.js.handlebars +1 -10
  57. package/src/validate-env.ts +23 -7
  58. package/android/rnuc.yaml +0 -1
  59. package/lib/commonjs/bin.spec.js +0 -50
  60. package/lib/commonjs/bin.spec.js.map +0 -1
  61. package/lib/commonjs/cli.spec.js +0 -190
  62. package/lib/commonjs/cli.spec.js.map +0 -1
  63. package/lib/commonjs/flatten.spec.js +0 -32
  64. package/lib/commonjs/flatten.spec.js.map +0 -1
  65. package/lib/commonjs/load-env.spec.js +0 -257
  66. package/lib/commonjs/load-env.spec.js.map +0 -1
  67. package/lib/commonjs/main.spec.js +0 -228
  68. package/lib/commonjs/main.spec.js.map +0 -1
  69. package/lib/commonjs/render-env.spec.js +0 -397
  70. package/lib/commonjs/render-env.spec.js.map +0 -1
  71. package/lib/commonjs/resolve-env.spec.js +0 -31
  72. package/lib/commonjs/resolve-env.spec.js.map +0 -1
  73. package/lib/commonjs/validate-env.spec.js +0 -325
  74. package/lib/commonjs/validate-env.spec.js.map +0 -1
  75. package/lib/commonjs/write-env.spec.js +0 -115
  76. package/lib/commonjs/write-env.spec.js.map +0 -1
  77. package/lib/module/bin.spec.js +0 -49
  78. package/lib/module/bin.spec.js.map +0 -1
  79. package/lib/module/cli.spec.js +0 -190
  80. package/lib/module/cli.spec.js.map +0 -1
  81. package/lib/module/flatten.spec.js +0 -31
  82. package/lib/module/flatten.spec.js.map +0 -1
  83. package/lib/module/load-env.spec.js +0 -257
  84. package/lib/module/load-env.spec.js.map +0 -1
  85. package/lib/module/main.spec.js +0 -224
  86. package/lib/module/main.spec.js.map +0 -1
  87. package/lib/module/render-env.spec.js +0 -396
  88. package/lib/module/render-env.spec.js.map +0 -1
  89. package/lib/module/resolve-env.spec.js +0 -30
  90. package/lib/module/resolve-env.spec.js.map +0 -1
  91. package/lib/module/validate-env.spec.js +0 -325
  92. package/lib/module/validate-env.spec.js.map +0 -1
  93. package/lib/module/write-env.spec.js +0 -115
  94. package/lib/module/write-env.spec.js.map +0 -1
  95. package/lib/typescript/src/bin.spec.d.ts +0 -2
  96. package/lib/typescript/src/bin.spec.d.ts.map +0 -1
  97. package/lib/typescript/src/cli.spec.d.ts +0 -14
  98. package/lib/typescript/src/cli.spec.d.ts.map +0 -1
  99. package/lib/typescript/src/flatten.spec.d.ts +0 -2
  100. package/lib/typescript/src/flatten.spec.d.ts.map +0 -1
  101. package/lib/typescript/src/load-env.spec.d.ts +0 -6
  102. package/lib/typescript/src/load-env.spec.d.ts.map +0 -1
  103. package/lib/typescript/src/main.spec.d.ts +0 -2
  104. package/lib/typescript/src/main.spec.d.ts.map +0 -1
  105. package/lib/typescript/src/render-env.spec.d.ts +0 -2
  106. package/lib/typescript/src/render-env.spec.d.ts.map +0 -1
  107. package/lib/typescript/src/resolve-env.spec.d.ts +0 -2
  108. package/lib/typescript/src/resolve-env.spec.d.ts.map +0 -1
  109. package/lib/typescript/src/validate-env.spec.d.ts +0 -2
  110. package/lib/typescript/src/validate-env.spec.d.ts.map +0 -1
  111. package/lib/typescript/src/write-env.spec.d.ts +0 -9
  112. package/lib/typescript/src/write-env.spec.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["path","_interopRequireWildcard","require","fs","_renderEnv","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","jest","mock","requireActual","existsSync","fn","readFileSync","mock_exists_sync","mock_read_file_sync","describe","project_root","lib_root","sample_env","ios","API_URL","DEBUG","PORT","android","web","beforeEach","mockReset","mockImplementation","p","path_str","toString","join","includes","options","it","result","render_env","expected_path","expect","toBeDefined","xcconfig_path","toBeUndefined","js_override","override_path","content","toContain","undefined","env","PATH","MSG","URL","ENABLED","DISABLED","toMatch","FLOAT","NAME","KEY","result1","result2","toEqual","env1","A","env2","B","key","not"],"sourceRoot":"../../src","sources":["render-env.spec.ts"],"mappings":"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","ignoreList":[]}
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- var _resolveEnv = _interopRequireDefault(require("./resolve-env"));
4
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
5
- describe('resolve_env', () => {
6
- const original = {
7
- original: 'data'
8
- };
9
- it.each`
10
- on_env_result | expected
11
- ${1} | ${1}
12
- ${''} | ${''}
13
- ${'hello'} | ${'hello'}
14
- ${0} | ${0}
15
- ${1} | ${1}
16
- ${false} | ${false}
17
- ${true} | ${true}
18
- ${null} | ${null}
19
- ${undefined} | ${original}
20
- `("when hook returns '$on_env_result' env is resolved to '$expected'", async ({
21
- on_env_result,
22
- expected
23
- }) => {
24
- const on_env = jest.fn();
25
- on_env.mockReturnValueOnce(on_env_result);
26
- expect(await (0, _resolveEnv.default)(original, {
27
- on_env
28
- })).toEqual(expected);
29
- });
30
- });
31
- //# sourceMappingURL=resolve-env.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_resolveEnv","_interopRequireDefault","require","e","__esModule","default","describe","original","it","each","undefined","on_env_result","expected","on_env","jest","fn","mockReturnValueOnce","expect","resolve_env","toEqual"],"sourceRoot":"../../src","sources":["resolve-env.spec.ts"],"mappings":";;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAwC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGxCG,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,MAAM,IAAAC,mBAAW,EAACX,QAAQ,EAAE;MAAEM;IAAO,CAAC,CAAC,CAAC,CAACM,OAAO,CAACP,QAAQ,CAAC;EACnE,CACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
@@ -1,325 +0,0 @@
1
- "use strict";
2
-
3
- var _validateEnv = require("./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(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.validate_env)({
75
- TIMEOUT: '3000'
76
- }, schema)).not.toThrow();
77
- expect(() => (0, _validateEnv.validate_env)({
78
- TIMEOUT: '0'
79
- }, schema)).not.toThrow();
80
- expect(() => (0, _validateEnv.validate_env)({
81
- TIMEOUT: '-1'
82
- }, schema)).not.toThrow();
83
- expect(() => (0, _validateEnv.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(() => (0, _validateEnv.validate_env)({
94
- TIMEOUT: 'fast'
95
- }, schema)).toThrow('TIMEOUT must be a number, got "fast"');
96
- expect(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.validate_env)({
131
- DEBUG: 'yes'
132
- }, schema)).toThrow('DEBUG must be a boolean (true/false/1/0), got "yes"');
133
- expect(() => (0, _validateEnv.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(() => (0, _validateEnv.validate_env)({
146
- NAME: 'hello'
147
- }, schema)).not.toThrow();
148
- expect(() => (0, _validateEnv.validate_env)({
149
- NAME: '123'
150
- }, schema)).not.toThrow();
151
- expect(() => (0, _validateEnv.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(() => (0, _validateEnv.validate_env)({
166
- ENV: 'dev'
167
- }, schema)).not.toThrow();
168
- expect(() => (0, _validateEnv.validate_env)({
169
- ENV: 'staging'
170
- }, schema)).not.toThrow();
171
- expect(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.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
- (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.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(() => (0, _validateEnv.validate_env)({
278
- _PRIVATE_KEY: 'value'
279
- }, schema)).not.toThrow();
280
- });
281
- it('accepts valid key names with numbers', () => {
282
- const schema = {};
283
- expect(() => (0, _validateEnv.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(() => (0, _validateEnv.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
- (0, _validateEnv.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":["_validateEnv","require","describe","it","schema","API_KEY","type","required","expect","validate_env","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":"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","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,49 +0,0 @@
1
- "use strict";
2
-
3
- import cp from 'child_process';
4
- import fs from 'fs';
5
- import path from 'path';
6
- // eslint-disable-next-line @typescript-eslint/no-require-imports
7
- const {
8
- files_to_assert
9
- } = require('./main.spec');
10
-
11
- // TODO: Re-enable after fixing integration test paths for bob build output
12
- describe.skip.each`
13
- extension | env_test_content
14
- ${''} | ${'hello=world'}
15
- ${'.yaml'} | ${'hello: world'}
16
- ${'.yml'} | ${'hello: world'}
17
- `('test codegen', ({
18
- extension,
19
- env_test_content
20
- }) => {
21
- let project_root;
22
- beforeAll(() => {
23
- project_root = path.join(process.cwd(), fs.mkdtempSync('rncu-jest'));
24
- for (const file_path of files_to_assert) {
25
- const {
26
- dir
27
- } = path.parse(file_path);
28
- const folder = path.join(project_root, dir);
29
- fs.mkdirSync(folder, {
30
- recursive: true
31
- });
32
- }
33
- });
34
- afterAll(() => {
35
- fs.rmSync(project_root, {
36
- recursive: true,
37
- force: true
38
- });
39
- });
40
- it.each(files_to_assert.map(k => [k]))('creates file at path %s', file_path => {
41
- const env_file_path = path.join(project_root, `.env${extension}`);
42
- fs.writeFileSync(env_file_path, env_test_content);
43
- cp.execFileSync('node', [path.join(process.cwd(), 'lib/commonjs/cli.js'), env_file_path], {
44
- cwd: project_root
45
- });
46
- expect(fs.existsSync(path.join(project_root, file_path))).toEqual(true);
47
- });
48
- });
49
- //# sourceMappingURL=bin.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["cp","fs","path","files_to_assert","require","describe","skip","each","extension","env_test_content","project_root","beforeAll","join","process","cwd","mkdtempSync","file_path","dir","parse","folder","mkdirSync","recursive","afterAll","rmSync","force","it","map","k","env_file_path","writeFileSync","execFileSync","expect","existsSync","toEqual"],"sourceRoot":"../../src","sources":["bin.spec.ts"],"mappings":";;AAAA,OAAOA,EAAE,MAAM,eAAe;AAC9B,OAAOC,EAAE,MAAM,IAAI;AACnB,OAAOC,IAAI,MAAM,MAAM;AACvB;AACA,MAAM;EAAEC;AAAgB,CAAC,GAAGC,OAAO,CAAC,aAAa,CAAkC;;AAEnF;AACAC,QAAQ,CAACC,IAAI,CAACC,IAAI;AAClB;AACA,IAAI,EAAE,WAAW,aAAa;AAC9B,IAAI,OAAO,MAAM,cAAc;AAC/B,IAAI,MAAM,OAAO,cAAc;AAC/B,CAAC,CACC,cAAc,EACd,CAAC;EAAEC,SAAS;EAAEC;AAAkE,CAAC,KAAK;EACpF,IAAIC,YAAoB;EACxBC,SAAS,CAAC,MAAM;IACdD,YAAY,GAAGR,IAAI,CAACU,IAAI,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAEb,EAAE,CAACc,WAAW,CAAC,WAAW,CAAC,CAAC;IACpE,KAAK,MAAMC,SAAS,IAAIb,eAAe,EAAE;MACvC,MAAM;QAAEc;MAAI,CAAC,GAAGf,IAAI,CAACgB,KAAK,CAACF,SAAS,CAAC;MACrC,MAAMG,MAAM,GAAGjB,IAAI,CAACU,IAAI,CAACF,YAAY,EAAEO,GAAG,CAAC;MAC3ChB,EAAE,CAACmB,SAAS,CAACD,MAAM,EAAE;QAAEE,SAAS,EAAE;MAAK,CAAC,CAAC;IAC3C;EACF,CAAC,CAAC;EACFC,QAAQ,CAAC,MAAM;IACbrB,EAAE,CAACsB,MAAM,CAACb,YAAY,EAAE;MAAEW,SAAS,EAAE,IAAI;MAAEG,KAAK,EAAE;IAAK,CAAC,CAAC;EAC3D,CAAC,CAAC;EACFC,EAAE,CAAClB,IAAI,CAACJ,eAAe,CAACuB,GAAG,CAAEC,CAAC,IAAK,CAACA,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,EAAGX,SAAS,IAAK;IACjF,MAAMY,aAAa,GAAG1B,IAAI,CAACU,IAAI,CAACF,YAAY,EAAE,OAAOF,SAAS,EAAE,CAAC;IACjEP,EAAE,CAAC4B,aAAa,CAACD,aAAa,EAAEnB,gBAAgB,CAAC;IACjDT,EAAE,CAAC8B,YAAY,CAAC,MAAM,EAAE,CAAC5B,IAAI,CAACU,IAAI,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC,EAAEc,aAAa,CAAC,EAAE;MACxFd,GAAG,EAAEJ;IACP,CAAC,CAAC;IACFqB,MAAM,CAAC9B,EAAE,CAAC+B,UAAU,CAAC9B,IAAI,CAACU,IAAI,CAACF,YAAY,EAAEM,SAAmB,CAAC,CAAC,CAAC,CAACiB,OAAO,CAAC,IAAI,CAAC;EACnF,CAAC,CAAC;AACJ,CACF,CAAC","ignoreList":[]}