react-native-config-ultimate 0.0.7 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/android/gradle.properties +6 -0
  2. package/android/rnuc.yaml +1 -0
  3. package/lib/commonjs/NativeUltimateConfig.js +20 -0
  4. package/lib/commonjs/NativeUltimateConfig.js.map +1 -0
  5. package/lib/commonjs/bin.spec.js +50 -0
  6. package/lib/commonjs/bin.spec.js.map +1 -0
  7. package/lib/commonjs/cli.js +143 -0
  8. package/lib/commonjs/cli.js.map +1 -0
  9. package/lib/commonjs/cli.spec.js +190 -0
  10. package/lib/commonjs/cli.spec.js.map +1 -0
  11. package/lib/commonjs/flatten.js +23 -0
  12. package/lib/commonjs/flatten.js.map +1 -0
  13. package/lib/commonjs/flatten.spec.js +32 -0
  14. package/lib/commonjs/flatten.spec.js.map +1 -0
  15. package/lib/commonjs/index.js +34 -0
  16. package/lib/commonjs/index.js.map +1 -0
  17. package/lib/commonjs/load-env.js +86 -0
  18. package/lib/commonjs/load-env.js.map +1 -0
  19. package/lib/commonjs/load-env.spec.js +257 -0
  20. package/lib/commonjs/load-env.spec.js.map +1 -0
  21. package/lib/commonjs/main.js +36 -0
  22. package/lib/commonjs/main.js.map +1 -0
  23. package/lib/commonjs/main.spec.js +228 -0
  24. package/lib/commonjs/main.spec.js.map +1 -0
  25. package/lib/commonjs/package.json +1 -0
  26. package/lib/commonjs/render-env.js +90 -0
  27. package/lib/commonjs/render-env.js.map +1 -0
  28. package/lib/commonjs/render-env.spec.js +397 -0
  29. package/lib/commonjs/render-env.spec.js.map +1 -0
  30. package/lib/commonjs/resolve-env.js +30 -0
  31. package/lib/commonjs/resolve-env.js.map +1 -0
  32. package/lib/commonjs/resolve-env.spec.js +31 -0
  33. package/lib/commonjs/resolve-env.spec.js.map +1 -0
  34. package/lib/commonjs/templates/ConfigValues.h.handlebars +24 -0
  35. package/lib/commonjs/templates/index.d.ts.handlebars +18 -0
  36. package/lib/commonjs/templates/index.web.js.handlebars +1 -0
  37. package/lib/commonjs/templates/override.js.handlebars +16 -0
  38. package/lib/commonjs/templates/rncu.xcconfig.handlebars +4 -0
  39. package/lib/commonjs/templates/rncu.yaml.handlebars +7 -0
  40. package/lib/commonjs/validate-env.js +63 -0
  41. package/lib/commonjs/validate-env.js.map +1 -0
  42. package/lib/commonjs/validate-env.spec.js +325 -0
  43. package/lib/commonjs/validate-env.spec.js.map +1 -0
  44. package/lib/commonjs/write-env.js +80 -0
  45. package/lib/commonjs/write-env.js.map +1 -0
  46. package/lib/commonjs/write-env.spec.js +115 -0
  47. package/lib/commonjs/write-env.spec.js.map +1 -0
  48. package/lib/module/NativeUltimateConfig.js +16 -0
  49. package/lib/module/NativeUltimateConfig.js.map +1 -0
  50. package/lib/module/bin.spec.js +49 -0
  51. package/lib/module/bin.spec.js.map +1 -0
  52. package/lib/module/cli.js +136 -0
  53. package/lib/module/cli.js.map +1 -0
  54. package/lib/module/cli.spec.js +190 -0
  55. package/lib/module/cli.spec.js.map +1 -0
  56. package/lib/module/flatten.js +18 -0
  57. package/lib/module/flatten.js.map +1 -0
  58. package/lib/module/flatten.spec.js +31 -0
  59. package/lib/module/flatten.spec.js.map +1 -0
  60. package/lib/module/index.js +30 -0
  61. package/lib/module/index.js.map +1 -0
  62. package/lib/module/load-env.js +81 -0
  63. package/lib/module/load-env.js.map +1 -0
  64. package/lib/module/load-env.spec.js +257 -0
  65. package/lib/module/load-env.spec.js.map +1 -0
  66. package/lib/module/main.js +31 -0
  67. package/lib/module/main.js.map +1 -0
  68. package/lib/module/main.spec.js +224 -0
  69. package/lib/module/main.spec.js.map +1 -0
  70. package/lib/module/render-env.js +84 -0
  71. package/lib/module/render-env.js.map +1 -0
  72. package/lib/module/render-env.spec.js +396 -0
  73. package/lib/module/render-env.spec.js.map +1 -0
  74. package/lib/module/resolve-env.js +26 -0
  75. package/lib/module/resolve-env.js.map +1 -0
  76. package/lib/module/resolve-env.spec.js +30 -0
  77. package/lib/module/resolve-env.spec.js.map +1 -0
  78. package/lib/module/templates/ConfigValues.h.handlebars +24 -0
  79. package/lib/module/templates/index.d.ts.handlebars +18 -0
  80. package/lib/module/templates/index.web.js.handlebars +1 -0
  81. package/lib/module/templates/override.js.handlebars +16 -0
  82. package/lib/module/templates/rncu.xcconfig.handlebars +4 -0
  83. package/lib/module/templates/rncu.yaml.handlebars +7 -0
  84. package/lib/module/validate-env.js +59 -0
  85. package/lib/module/validate-env.js.map +1 -0
  86. package/lib/module/validate-env.spec.js +325 -0
  87. package/lib/module/validate-env.spec.js.map +1 -0
  88. package/lib/module/write-env.js +75 -0
  89. package/lib/module/write-env.js.map +1 -0
  90. package/lib/module/write-env.spec.js +115 -0
  91. package/lib/module/write-env.spec.js.map +1 -0
  92. package/lib/typescript/src/NativeUltimateConfig.d.ts +18 -0
  93. package/lib/typescript/src/NativeUltimateConfig.d.ts.map +1 -0
  94. package/lib/typescript/src/bin.spec.d.ts +2 -0
  95. package/lib/typescript/src/bin.spec.d.ts.map +1 -0
  96. package/lib/typescript/src/cli.d.ts +2 -0
  97. package/lib/typescript/src/cli.d.ts.map +1 -0
  98. package/lib/typescript/src/cli.spec.d.ts +14 -0
  99. package/lib/typescript/src/cli.spec.d.ts.map +1 -0
  100. package/lib/typescript/src/flatten.d.ts +8 -0
  101. package/lib/typescript/src/flatten.d.ts.map +1 -0
  102. package/lib/typescript/src/flatten.spec.d.ts +2 -0
  103. package/lib/typescript/src/flatten.spec.d.ts.map +1 -0
  104. package/lib/typescript/src/index.d.ts +6 -0
  105. package/lib/typescript/src/index.d.ts.map +1 -0
  106. package/lib/typescript/src/load-env.d.ts +23 -0
  107. package/lib/typescript/src/load-env.d.ts.map +1 -0
  108. package/lib/typescript/src/load-env.spec.d.ts +6 -0
  109. package/lib/typescript/src/load-env.spec.d.ts.map +1 -0
  110. package/lib/typescript/src/main.d.ts +12 -0
  111. package/lib/typescript/src/main.d.ts.map +1 -0
  112. package/lib/typescript/src/main.spec.d.ts +2 -0
  113. package/lib/typescript/src/main.spec.d.ts.map +1 -0
  114. package/lib/typescript/src/render-env.d.ts +11 -0
  115. package/lib/typescript/src/render-env.d.ts.map +1 -0
  116. package/lib/typescript/src/render-env.spec.d.ts +2 -0
  117. package/lib/typescript/src/render-env.spec.d.ts.map +1 -0
  118. package/lib/typescript/src/resolve-env.d.ts +35 -0
  119. package/lib/typescript/src/resolve-env.d.ts.map +1 -0
  120. package/lib/typescript/src/resolve-env.spec.d.ts +2 -0
  121. package/lib/typescript/src/resolve-env.spec.d.ts.map +1 -0
  122. package/lib/typescript/src/validate-env.d.ts +10 -0
  123. package/lib/typescript/src/validate-env.d.ts.map +1 -0
  124. package/lib/typescript/src/validate-env.spec.d.ts +2 -0
  125. package/lib/typescript/src/validate-env.spec.d.ts.map +1 -0
  126. package/lib/typescript/src/write-env.d.ts +13 -0
  127. package/lib/typescript/src/write-env.d.ts.map +1 -0
  128. package/lib/typescript/src/write-env.spec.d.ts +9 -0
  129. package/lib/typescript/src/write-env.spec.d.ts.map +1 -0
  130. package/package.json +84 -52
  131. package/src/NativeUltimateConfig.ts +1 -2
  132. package/src/cli.ts +158 -0
  133. package/src/flatten.ts +26 -0
  134. package/src/index.ts +37 -0
  135. package/src/load-env.ts +81 -0
  136. package/src/main.ts +39 -0
  137. package/src/render-env.ts +111 -0
  138. package/src/resolve-env.ts +45 -0
  139. package/src/validate-env.ts +71 -0
  140. package/src/write-env.ts +74 -0
  141. package/bin.js +0 -5
  142. package/index.js +0 -28
  143. package/override.js +0 -1
  144. package/src/NativeUltimateConfig.js +0 -4
  145. package/src/cli.js +0 -176
  146. package/src/flatten.js +0 -22
  147. package/src/load-env.js +0 -107
  148. package/src/main.js +0 -34
  149. package/src/render-env.js +0 -113
  150. package/src/resolve-env.js +0 -12
  151. package/src/validate-env.js +0 -59
  152. package/src/write-env.js +0 -102
@@ -0,0 +1 @@
1
+ {"version":3,"names":["path","_interopRequireWildcard","require","fs","_handlebars","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","code_file_name","config_file_name","is_string","value","is_number","is_boolean","escape","replace","xcconfig_format","to_json","JSON","stringify","handlebars","registerHelper","template_cache","Map","get_compiled_template","template_name","cached","template_path","join","__dirname","compiled","compile","readFileSync","render_template","data","render_env","project_root","lib_root","env","rc","ios","android","web","map","existsSync","js_override"],"sourceRoot":"../../src","sources":["render-env.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,397 @@
1
+ "use strict";
2
+
3
+ var path = _interopRequireWildcard(require("path"));
4
+ var fs = _interopRequireWildcard(require("fs"));
5
+ var _renderEnv = _interopRequireDefault(require("./render-env"));
6
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
7
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
8
+ // We need to mock fs for some tests, but test helpers with real handlebars
9
+ jest.mock('fs', () => ({
10
+ ...jest.requireActual('fs'),
11
+ existsSync: jest.fn(),
12
+ readFileSync: jest.fn()
13
+ }));
14
+ const mock_exists_sync = fs.existsSync;
15
+ const mock_read_file_sync = fs.readFileSync;
16
+ describe('render-env', () => {
17
+ const project_root = '/project';
18
+ const lib_root = '/project/node_modules/react-native-config-ultimate';
19
+ const sample_env = {
20
+ ios: {
21
+ API_URL: 'https://api.com',
22
+ DEBUG: true,
23
+ PORT: 3000
24
+ },
25
+ android: {
26
+ API_URL: 'https://api.com',
27
+ DEBUG: true,
28
+ PORT: 3000
29
+ },
30
+ web: {
31
+ API_URL: 'https://api.com',
32
+ DEBUG: true,
33
+ PORT: 3000
34
+ }
35
+ };
36
+ beforeEach(() => {
37
+ mock_exists_sync.mockReset();
38
+ mock_read_file_sync.mockReset();
39
+
40
+ // Default: ios folder exists
41
+ mock_exists_sync.mockImplementation(p => {
42
+ const path_str = p.toString();
43
+ // ios folder exists
44
+ if (path_str === path.join(project_root, 'ios')) return true;
45
+ // template files exist (use real fs for templates)
46
+ if (path_str.includes('templates')) {
47
+ return jest.requireActual('fs').existsSync(p);
48
+ }
49
+ return false;
50
+ });
51
+
52
+ // For templates, use real fs
53
+ mock_read_file_sync.mockImplementation((p, options) => {
54
+ const path_str = p.toString();
55
+ if (path_str.includes('templates')) {
56
+ return jest.requireActual('fs').readFileSync(p, options);
57
+ }
58
+ return 'mocked content';
59
+ });
60
+ });
61
+ describe('file generation', () => {
62
+ it('generates index.d.ts in lib root', () => {
63
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
64
+ const expected_path = path.join(lib_root, 'index.d.ts');
65
+ expect(result[expected_path]).toBeDefined();
66
+ });
67
+ it('generates index.web.js in lib root', () => {
68
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
69
+ const expected_path = path.join(lib_root, 'index.web.js');
70
+ expect(result[expected_path]).toBeDefined();
71
+ });
72
+ it('generates ConfigValues.h in ios folder', () => {
73
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
74
+ const expected_path = path.join(lib_root, 'ios', 'ConfigValues.h');
75
+ expect(result[expected_path]).toBeDefined();
76
+ });
77
+ it('generates rncu.yaml in android folder', () => {
78
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
79
+ const expected_path = path.join(lib_root, 'android', 'rncu.yaml');
80
+ expect(result[expected_path]).toBeDefined();
81
+ });
82
+ it('generates rncu.xcconfig in project ios folder when it exists', () => {
83
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
84
+ const expected_path = path.join(project_root, 'ios', 'rncu.xcconfig');
85
+ expect(result[expected_path]).toBeDefined();
86
+ });
87
+ it('does NOT generate rncu.xcconfig when project has no ios folder', () => {
88
+ mock_exists_sync.mockImplementation(p => {
89
+ const path_str = p.toString();
90
+ // ios folder does NOT exist
91
+ if (path_str === path.join(project_root, 'ios')) return false;
92
+ // template files exist (use real fs for templates)
93
+ if (path_str.includes('templates')) {
94
+ return jest.requireActual('fs').existsSync(p);
95
+ }
96
+ return false;
97
+ });
98
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
99
+ const xcconfig_path = path.join(project_root, 'ios', 'rncu.xcconfig');
100
+ expect(result[xcconfig_path]).toBeUndefined();
101
+ });
102
+ it('generates override.js in lib root', () => {
103
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
104
+ const expected_path = path.join(lib_root, 'override.js');
105
+ expect(result[expected_path]).toBeDefined();
106
+ });
107
+ });
108
+ describe('js_override RC option', () => {
109
+ it('passes empty objects to override.js when js_override is false', () => {
110
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env, {
111
+ js_override: false
112
+ });
113
+ const override_path = path.join(lib_root, 'override.js');
114
+ const content = result[override_path];
115
+
116
+ // The override.js template uses IOS_DATA and ANDROID_DATA variables
117
+ expect(content).toContain('IOS_DATA = {}');
118
+ expect(content).toContain('ANDROID_DATA = {}');
119
+ });
120
+ it('passes empty objects to override.js when js_override is undefined', () => {
121
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env, undefined);
122
+ const override_path = path.join(lib_root, 'override.js');
123
+ const content = result[override_path];
124
+ expect(content).toContain('IOS_DATA = {}');
125
+ expect(content).toContain('ANDROID_DATA = {}');
126
+ });
127
+ it('passes full env to override.js when js_override is true', () => {
128
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env, {
129
+ js_override: true
130
+ });
131
+ const override_path = path.join(lib_root, 'override.js');
132
+ const content = result[override_path];
133
+
134
+ // Should contain actual env values
135
+ expect(content).toContain('API_URL');
136
+ expect(content).toContain('https://api.com');
137
+ });
138
+ });
139
+ describe('template content', () => {
140
+ it('index.d.ts contains type declarations for ios env keys', () => {
141
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
142
+ const content = result[path.join(lib_root, 'index.d.ts')];
143
+ expect(content).toContain('API_URL');
144
+ expect(content).toContain('DEBUG');
145
+ expect(content).toContain('PORT');
146
+ });
147
+ it('index.web.js contains web env values', () => {
148
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
149
+ const content = result[path.join(lib_root, 'index.web.js')];
150
+ expect(content).toContain('API_URL');
151
+ expect(content).toContain('https://api.com');
152
+ });
153
+ it('rncu.yaml contains android env values', () => {
154
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
155
+ const content = result[path.join(lib_root, 'android', 'rncu.yaml')];
156
+ expect(content).toContain('API_URL');
157
+ });
158
+ it('rncu.xcconfig contains ios env values with xcconfig escaping', () => {
159
+ const result = (0, _renderEnv.default)(project_root, lib_root, sample_env);
160
+ const content = result[path.join(project_root, 'ios', 'rncu.xcconfig')];
161
+
162
+ // xcconfig escapes // to /$()/
163
+ expect(content).toContain('API_URL');
164
+ expect(content).toContain('/$()/'); // https:// becomes https:/$()/
165
+ });
166
+ });
167
+ });
168
+ describe('handlebars helpers (via template output)', () => {
169
+ // Test helpers indirectly through actual rendered output
170
+ const project_root = '/project';
171
+ const lib_root = '/project/node_modules/react-native-config-ultimate';
172
+ beforeEach(() => {
173
+ mock_exists_sync.mockImplementation(p => {
174
+ const path_str = p.toString();
175
+ if (path_str === path.join(project_root, 'ios')) return true;
176
+ if (path_str.includes('templates')) {
177
+ return jest.requireActual('fs').existsSync(p);
178
+ }
179
+ return false;
180
+ });
181
+ mock_read_file_sync.mockImplementation((p, options) => {
182
+ const path_str = p.toString();
183
+ if (path_str.includes('templates')) {
184
+ return jest.requireActual('fs').readFileSync(p, options);
185
+ }
186
+ return 'mocked content';
187
+ });
188
+ });
189
+ describe('escape helper', () => {
190
+ it('escapes backslashes in string values', () => {
191
+ const env = {
192
+ ios: {
193
+ PATH: 'C:\\Users\\test'
194
+ },
195
+ android: {
196
+ PATH: 'C:\\Users\\test'
197
+ },
198
+ web: {
199
+ PATH: 'C:\\Users\\test'
200
+ }
201
+ };
202
+ const result = (0, _renderEnv.default)(project_root, lib_root, env);
203
+ const content = result[path.join(lib_root, 'index.web.js')];
204
+
205
+ // Backslashes should be escaped
206
+ expect(content).toContain('\\\\');
207
+ });
208
+ it('escapes double quotes in string values', () => {
209
+ const env = {
210
+ ios: {
211
+ MSG: 'say "hello"'
212
+ },
213
+ android: {
214
+ MSG: 'say "hello"'
215
+ },
216
+ web: {
217
+ MSG: 'say "hello"'
218
+ }
219
+ };
220
+ const result = (0, _renderEnv.default)(project_root, lib_root, env);
221
+ const content = result[path.join(lib_root, 'index.web.js')];
222
+
223
+ // Quotes should be escaped
224
+ expect(content).toContain('\\"');
225
+ });
226
+ it('escapes newlines in string values', () => {
227
+ const env = {
228
+ ios: {
229
+ MSG: 'line1\nline2'
230
+ },
231
+ android: {
232
+ MSG: 'line1\nline2'
233
+ },
234
+ web: {
235
+ MSG: 'line1\nline2'
236
+ }
237
+ };
238
+ const result = (0, _renderEnv.default)(project_root, lib_root, env);
239
+ const content = result[path.join(lib_root, 'index.web.js')];
240
+
241
+ // Newlines should be escaped as \\n
242
+ expect(content).toContain('\\n');
243
+ });
244
+ });
245
+ describe('xcconfig_format helper', () => {
246
+ it('escapes // in URLs for xcconfig compatibility', () => {
247
+ const env = {
248
+ ios: {
249
+ URL: 'https://example.com/path//double'
250
+ },
251
+ android: {
252
+ URL: 'https://example.com'
253
+ },
254
+ web: {
255
+ URL: 'https://example.com'
256
+ }
257
+ };
258
+ const result = (0, _renderEnv.default)(project_root, lib_root, env);
259
+ const content = result[path.join(project_root, 'ios', 'rncu.xcconfig')];
260
+
261
+ // // should become /$()/ in xcconfig
262
+ expect(content).toContain('/$()');
263
+ });
264
+ });
265
+ describe('type helpers', () => {
266
+ it('handles boolean values correctly', () => {
267
+ const env = {
268
+ ios: {
269
+ ENABLED: true,
270
+ DISABLED: false
271
+ },
272
+ android: {
273
+ ENABLED: true,
274
+ DISABLED: false
275
+ },
276
+ web: {
277
+ ENABLED: true,
278
+ DISABLED: false
279
+ }
280
+ };
281
+ const result = (0, _renderEnv.default)(project_root, lib_root, env);
282
+ const content = result[path.join(lib_root, 'index.web.js')];
283
+
284
+ // Booleans should be rendered as true/false not "true"/"false"
285
+ expect(content).toMatch(/ENABLED.*true/);
286
+ expect(content).toMatch(/DISABLED.*false/);
287
+ });
288
+ it('handles number values correctly', () => {
289
+ const env = {
290
+ ios: {
291
+ PORT: 3000,
292
+ FLOAT: 3.14
293
+ },
294
+ android: {
295
+ PORT: 3000,
296
+ FLOAT: 3.14
297
+ },
298
+ web: {
299
+ PORT: 3000,
300
+ FLOAT: 3.14
301
+ }
302
+ };
303
+ const result = (0, _renderEnv.default)(project_root, lib_root, env);
304
+ const content = result[path.join(lib_root, 'index.web.js')];
305
+
306
+ // Numbers should be rendered as numbers not strings
307
+ expect(content).toMatch(/PORT.*3000/);
308
+ expect(content).toMatch(/FLOAT.*3\.14/);
309
+ });
310
+ it('handles string values correctly', () => {
311
+ const env = {
312
+ ios: {
313
+ NAME: 'test-app'
314
+ },
315
+ android: {
316
+ NAME: 'test-app'
317
+ },
318
+ web: {
319
+ NAME: 'test-app'
320
+ }
321
+ };
322
+ const result = (0, _renderEnv.default)(project_root, lib_root, env);
323
+ const content = result[path.join(lib_root, 'index.web.js')];
324
+
325
+ // Strings should be quoted
326
+ expect(content).toContain('"test-app"');
327
+ });
328
+ });
329
+ });
330
+ describe('template caching', () => {
331
+ const project_root = '/project';
332
+ const lib_root = '/project/node_modules/react-native-config-ultimate';
333
+ const sample_env = {
334
+ ios: {
335
+ KEY: 'value'
336
+ },
337
+ android: {
338
+ KEY: 'value'
339
+ },
340
+ web: {
341
+ KEY: 'value'
342
+ }
343
+ };
344
+ beforeEach(() => {
345
+ mock_exists_sync.mockImplementation(p => {
346
+ const path_str = p.toString();
347
+ if (path_str === path.join(project_root, 'ios')) return true;
348
+ if (path_str.includes('templates')) {
349
+ return jest.requireActual('fs').existsSync(p);
350
+ }
351
+ return false;
352
+ });
353
+ mock_read_file_sync.mockImplementation((p, options) => {
354
+ const path_str = p.toString();
355
+ if (path_str.includes('templates')) {
356
+ return jest.requireActual('fs').readFileSync(p, options);
357
+ }
358
+ return 'mocked content';
359
+ });
360
+ });
361
+ it('produces consistent output across multiple calls', () => {
362
+ const result1 = (0, _renderEnv.default)(project_root, lib_root, sample_env);
363
+ const result2 = (0, _renderEnv.default)(project_root, lib_root, sample_env);
364
+
365
+ // Same input should produce same output
366
+ expect(result1).toEqual(result2);
367
+ });
368
+ it('produces different output for different env values', () => {
369
+ const env1 = {
370
+ ios: {
371
+ A: 1
372
+ },
373
+ android: {
374
+ A: 1
375
+ },
376
+ web: {
377
+ A: 1
378
+ }
379
+ };
380
+ const env2 = {
381
+ ios: {
382
+ B: 2
383
+ },
384
+ android: {
385
+ B: 2
386
+ },
387
+ web: {
388
+ B: 2
389
+ }
390
+ };
391
+ const result1 = (0, _renderEnv.default)(project_root, lib_root, env1);
392
+ const result2 = (0, _renderEnv.default)(project_root, lib_root, env2);
393
+ const key = path.join(lib_root, 'index.d.ts');
394
+ expect(result1[key]).not.toEqual(result2[key]);
395
+ });
396
+ });
397
+ //# sourceMappingURL=render-env.spec.js.map
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = resolve_env;
7
+ /**
8
+ * Schema definition for a single environment variable.
9
+ * Used in `.rncurc.js` to validate env vars at build time.
10
+ *
11
+ * @example
12
+ * module.exports = {
13
+ * schema: {
14
+ * API_URL: { type: 'string', required: true },
15
+ * TIMEOUT_MS: { type: 'number', required: true },
16
+ * DEBUG: { type: 'boolean', required: false },
17
+ * ENV_NAME: { type: 'string', required: true, pattern: '^(dev|staging|prod)$' },
18
+ * }
19
+ * };
20
+ */
21
+
22
+ async function resolve_env(env, rc) {
23
+ if (rc && rc.on_env) {
24
+ const patched_env = await rc.on_env(env);
25
+ return typeof patched_env === 'undefined' ? env : patched_env;
26
+ } else {
27
+ return env;
28
+ }
29
+ }
30
+ //# sourceMappingURL=resolve-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["resolve_env","env","rc","on_env","patched_env"],"sourceRoot":"../../src","sources":["resolve-env.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAsBe,eAAeA,WAAWA,CAACC,GAAY,EAAEC,EAAO,EAAoB;EACjF,IAAIA,EAAE,IAAIA,EAAE,CAACC,MAAM,EAAE;IACnB,MAAMC,WAAW,GAAG,MAAMF,EAAE,CAACC,MAAM,CAACF,GAAG,CAAC;IACxC,OAAO,OAAOG,WAAW,KAAK,WAAW,GAAGH,GAAG,GAAIG,WAAuB;EAC5E,CAAC,MAAM;IACL,OAAOH,GAAG;EACZ;AACF","ignoreList":[]}
@@ -0,0 +1,31 @@
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
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,24 @@
1
+ // DO NOT COMMIT OR EDIT THIS FILE
2
+ {{#each @root}}
3
+ {{#if (isString this)}}
4
+ #define {{@key}} @"{{{escape this}}}"
5
+ {{/if}}
6
+ {{#if (isBoolean this)}}
7
+ {{#if this}}
8
+ #define {{@key}} @(YES)
9
+ {{else}}
10
+ #define {{@key}} @(NO)
11
+ {{/if}}
12
+ {{/if}}
13
+ {{#if (isNumber this)}}
14
+ #define {{@key}} @({{{this}}})
15
+ {{/if}}
16
+ {{/each}}
17
+
18
+ static NSDictionary *getValues() {
19
+ return @{
20
+ {{#each @root}}
21
+ @"{{@key}}": {{@key}},
22
+ {{/each}}
23
+ };
24
+ }
@@ -0,0 +1,18 @@
1
+ // DO NOT COMMIT OR EDIT THIS FILE
2
+ export interface ConfigVariables {
3
+ {{#each @root}}
4
+ {{#if (isString this)}}
5
+ {{@key}}: string;
6
+ {{/if}}
7
+ {{#if (isBoolean this)}}
8
+ {{@key}}: boolean;
9
+ {{/if}}
10
+ {{#if (isNumber this)}}
11
+ {{@key}}: number;
12
+ {{/if}}
13
+ {{/each}}
14
+ }
15
+
16
+ declare const UltimateConfig: ConfigVariables;
17
+
18
+ export default UltimateConfig;
@@ -0,0 +1 @@
1
+ module.exports = {{{toJSON @root}}}
@@ -0,0 +1,16 @@
1
+ const RN = require("react-native");
2
+
3
+ const IOS_DATA = {{{toJSON @root.ios}}}
4
+
5
+ const ANDROID_DATA = {{{toJSON @root.android}}}
6
+
7
+ module.exports = {
8
+ {{#each @root.ios}}
9
+ get {{{@key}}}() {
10
+ return RN.Platform.select({
11
+ ios: IOS_DATA["{{{@key}}}"],
12
+ android: ANDROID_DATA["{{{@key}}}"],
13
+ });
14
+ },
15
+ {{/each}}
16
+ }
@@ -0,0 +1,4 @@
1
+ // DO NOT COMMIT OR EDIT THIS FILE
2
+ {{#each @root}}
3
+ {{@key}}={{{xcconfigFormat this}}}
4
+ {{/each}}
@@ -0,0 +1,7 @@
1
+ {{#each @root}}
2
+ {{#if (isString this)}}
3
+ {{@key}}: "{{{escape this}}}"
4
+ {{else}}
5
+ {{@key}}: {{{this}}}
6
+ {{/if}}
7
+ {{/each}}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.validate_env = validate_env;
7
+ const VALID_KEY_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
8
+
9
+ /**
10
+ * Validate env data against a schema defined in `.rncurc.js`.
11
+ * Called after `on_env` so the hook can add/transform vars before validation.
12
+ *
13
+ * Throws with a human-readable error listing ALL failures at once
14
+ * (not just the first one), so users can fix everything in one pass.
15
+ */
16
+ function validate_env(env, schema) {
17
+ const errors = [];
18
+
19
+ // Validate all env key names are valid identifiers
20
+ for (const key of Object.keys(env)) {
21
+ if (!VALID_KEY_PATTERN.test(key)) {
22
+ errors.push(`Invalid env key name: "${key}". Keys must start with a letter or underscore and contain only letters, numbers, and underscores.`);
23
+ }
24
+ }
25
+
26
+ // Pre-compile all regex patterns once, before iterating over env values.
27
+ // This avoids re-compiling the same pattern for every validated key.
28
+ const compiled_patterns = new Map();
29
+ for (const [key, field] of Object.entries(schema)) {
30
+ if (field.pattern) {
31
+ try {
32
+ compiled_patterns.set(key, new RegExp(field.pattern));
33
+ } catch {
34
+ errors.push(`${key}: invalid regex pattern /${field.pattern}/`);
35
+ }
36
+ }
37
+ }
38
+ for (const [key, field] of Object.entries(schema)) {
39
+ const raw = env[key];
40
+ const missing = raw === undefined || raw === null || String(raw).trim() === '';
41
+ if (field.required && missing) {
42
+ errors.push(`Missing required env var: ${key}`);
43
+ continue; // can't type-check a missing value
44
+ }
45
+ if (missing) continue; // optional and not present → OK
46
+
47
+ const value = String(raw);
48
+ if (field.type === 'number' && isNaN(Number(value))) {
49
+ errors.push(`${key} must be a number, got "${value}"`);
50
+ }
51
+ if (field.type === 'boolean' && !['true', 'false', '1', '0'].includes(value.toLowerCase())) {
52
+ errors.push(`${key} must be a boolean (true/false/1/0), got "${value}"`);
53
+ }
54
+ const pattern = compiled_patterns.get(key);
55
+ if (pattern && !pattern.test(value)) {
56
+ errors.push(`${key} does not match pattern /${field.pattern}/, got "${value}"`);
57
+ }
58
+ }
59
+ if (errors.length > 0) {
60
+ throw new Error(`\n\n❌ react-native-config-ultimate: env validation failed:\n` + errors.map(e => ` • ${e}`).join('\n') + '\n');
61
+ }
62
+ }
63
+ //# sourceMappingURL=validate-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["VALID_KEY_PATTERN","validate_env","env","schema","errors","key","Object","keys","test","push","compiled_patterns","Map","field","entries","pattern","set","RegExp","raw","missing","undefined","String","trim","required","value","type","isNaN","Number","includes","toLowerCase","get","length","Error","map","e","join"],"sourceRoot":"../../src","sources":["validate-env.ts"],"mappings":";;;;;;AAEA,MAAMA,iBAAiB,GAAG,0BAA0B;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAACC,GAAY,EAAEC,MAAc,EAAQ;EAC/D,MAAMC,MAAgB,GAAG,EAAE;;EAE3B;EACA,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACL,GAAG,CAAC,EAAE;IAClC,IAAI,CAACF,iBAAiB,CAACQ,IAAI,CAACH,GAAG,CAAC,EAAE;MAChCD,MAAM,CAACK,IAAI,CACT,0BAA0BJ,GAAG,oGAC/B,CAAC;IACH;EACF;;EAEA;EACA;EACA,MAAMK,iBAAiB,GAAG,IAAIC,GAAG,CAAiB,CAAC;EACnD,KAAK,MAAM,CAACN,GAAG,EAAEO,KAAK,CAAC,IAAIN,MAAM,CAACO,OAAO,CAACV,MAAM,CAAC,EAAE;IACjD,IAAIS,KAAK,CAACE,OAAO,EAAE;MACjB,IAAI;QACFJ,iBAAiB,CAACK,GAAG,CAACV,GAAG,EAAE,IAAIW,MAAM,CAACJ,KAAK,CAACE,OAAO,CAAC,CAAC;MACvD,CAAC,CAAC,MAAM;QACNV,MAAM,CAACK,IAAI,CAAC,GAAGJ,GAAG,4BAA4BO,KAAK,CAACE,OAAO,GAAG,CAAC;MACjE;IACF;EACF;EAEA,KAAK,MAAM,CAACT,GAAG,EAAEO,KAAK,CAAC,IAAIN,MAAM,CAACO,OAAO,CAACV,MAAM,CAAC,EAAE;IACjD,MAAMc,GAAG,GAAGf,GAAG,CAACG,GAAG,CAAC;IACpB,MAAMa,OAAO,GAAGD,GAAG,KAAKE,SAAS,IAAIF,GAAG,KAAK,IAAI,IAAIG,MAAM,CAACH,GAAG,CAAC,CAACI,IAAI,CAAC,CAAC,KAAK,EAAE;IAE9E,IAAIT,KAAK,CAACU,QAAQ,IAAIJ,OAAO,EAAE;MAC7Bd,MAAM,CAACK,IAAI,CAAC,6BAA6BJ,GAAG,EAAE,CAAC;MAC/C,SAAS,CAAC;IACZ;IAEA,IAAIa,OAAO,EAAE,SAAS,CAAC;;IAEvB,MAAMK,KAAK,GAAGH,MAAM,CAACH,GAAG,CAAC;IAEzB,IAAIL,KAAK,CAACY,IAAI,KAAK,QAAQ,IAAIC,KAAK,CAACC,MAAM,CAACH,KAAK,CAAC,CAAC,EAAE;MACnDnB,MAAM,CAACK,IAAI,CAAC,GAAGJ,GAAG,2BAA2BkB,KAAK,GAAG,CAAC;IACxD;IAEA,IAAIX,KAAK,CAACY,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAACG,QAAQ,CAACJ,KAAK,CAACK,WAAW,CAAC,CAAC,CAAC,EAAE;MAC1FxB,MAAM,CAACK,IAAI,CAAC,GAAGJ,GAAG,6CAA6CkB,KAAK,GAAG,CAAC;IAC1E;IAEA,MAAMT,OAAO,GAAGJ,iBAAiB,CAACmB,GAAG,CAACxB,GAAG,CAAC;IAC1C,IAAIS,OAAO,IAAI,CAACA,OAAO,CAACN,IAAI,CAACe,KAAK,CAAC,EAAE;MACnCnB,MAAM,CAACK,IAAI,CAAC,GAAGJ,GAAG,4BAA4BO,KAAK,CAACE,OAAO,WAAWS,KAAK,GAAG,CAAC;IACjF;EACF;EAEA,IAAInB,MAAM,CAAC0B,MAAM,GAAG,CAAC,EAAE;IACrB,MAAM,IAAIC,KAAK,CACb,8DAA8D,GAC5D3B,MAAM,CAAC4B,GAAG,CAAEC,CAAC,IAAK,OAAOA,CAAC,EAAE,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,GACxC,IACJ,CAAC;EACH;AACF","ignoreList":[]}