@mono-labs/cli 0.0.238 → 0.0.243

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 (146) hide show
  1. package/bin/mono.js +1 -1
  2. package/dist/index.js +32 -51
  3. package/dist/lib/app.js +52 -0
  4. package/dist/lib/commands/build-process/boot.js +12 -0
  5. package/dist/lib/commands/build-process/cliFactory.js +145 -0
  6. package/dist/lib/commands/build-process/dataLayer.js +56 -0
  7. package/dist/lib/commands/build-process/index.js +11 -0
  8. package/dist/lib/commands/build-process/readEnv.js +34 -0
  9. package/dist/lib/commands/build-process/runMonoCommand.js +84 -0
  10. package/dist/lib/commands/build-process/runners/processManager.js +45 -0
  11. package/dist/lib/commands/build-process/runners/runBackground.js +46 -0
  12. package/dist/lib/commands/build-process/runners/runForeground.js +52 -0
  13. package/dist/lib/commands/build-process/test.js +32 -0
  14. package/dist/lib/commands/build-process/testflag.js +4 -0
  15. package/dist/lib/commands/build-process/validators.js +17 -0
  16. package/dist/lib/commands/loadFromRoot.js +53 -0
  17. package/dist/lib/commands/prune/index.js +10 -0
  18. package/dist/lib/commands/prune/prune.js +49 -0
  19. package/dist/lib/config.js +6 -0
  20. package/dist/lib/filterUnwantedEnvVars.js +88 -0
  21. package/dist/lib/generateNewEnvList.js +17 -0
  22. package/dist/lib/index.js +49 -0
  23. package/dist/src/cdk/cdk.js +6 -0
  24. package/dist/src/cdk/index.js +17 -0
  25. package/dist/{expo.js → src/expo.js} +18 -34
  26. package/dist/src/index.js +56 -0
  27. package/dist/src/merge-env.js +25 -0
  28. package/dist/{project → src/project}/build-mono-readme.js +11 -20
  29. package/dist/{project → src/project}/generate-readme.js +6 -13
  30. package/dist/{project → src/project}/index.js +4 -12
  31. package/dist/{stack.js → src/stack.js} +2 -2
  32. package/dist/src/tools.js +38 -0
  33. package/dist/types/index.d.ts +50 -9
  34. package/dist/types/lib/app.d.ts +3 -0
  35. package/dist/types/lib/commands/build-process/boot.d.ts +8 -0
  36. package/dist/types/lib/commands/build-process/cliFactory.d.ts +32 -0
  37. package/dist/types/lib/commands/build-process/dataLayer.d.ts +7 -0
  38. package/dist/types/lib/commands/build-process/readEnv.d.ts +1 -0
  39. package/dist/types/lib/commands/build-process/runMonoCommand.d.ts +10 -0
  40. package/dist/types/lib/commands/build-process/runners/processManager.d.ts +5 -0
  41. package/dist/types/lib/commands/build-process/runners/runBackground.d.ts +2 -0
  42. package/dist/types/lib/commands/build-process/runners/runForeground.d.ts +6 -0
  43. package/dist/types/lib/commands/build-process/test.d.ts +1 -0
  44. package/dist/types/lib/commands/build-process/testflag.d.ts +1 -0
  45. package/dist/types/lib/commands/build-process/validators.d.ts +1 -0
  46. package/dist/types/lib/commands/loadFromRoot.d.ts +7 -0
  47. package/dist/types/lib/commands/prune/prune.d.ts +1 -0
  48. package/dist/types/lib/config.d.ts +2 -0
  49. package/dist/types/lib/filterUnwantedEnvVars.d.ts +2 -0
  50. package/dist/types/lib/generateNewEnvList.d.ts +1 -0
  51. package/dist/types/lib/index.d.ts +2 -0
  52. package/dist/types/src/cdk/cdk.d.ts +1 -0
  53. package/dist/types/src/cdk/index.d.ts +1 -0
  54. package/dist/types/src/expo.d.ts +4 -0
  55. package/dist/types/src/index.d.ts +15 -0
  56. package/dist/types/src/project/build-mono-readme.d.ts +1 -0
  57. package/dist/types/src/project/generate-readme.d.ts +1 -0
  58. package/dist/types/{project → src/project}/index.d.ts +1 -1
  59. package/dist/types/src/project/merge-env.d.ts +1 -0
  60. package/dist/types/src/tools.d.ts +3 -0
  61. package/lib/app.ts +58 -0
  62. package/lib/commands/build-process/boot.ts +21 -0
  63. package/lib/commands/build-process/cliFactory.ts +219 -0
  64. package/lib/commands/build-process/dataLayer.ts +61 -0
  65. package/lib/commands/build-process/index.ts +14 -0
  66. package/lib/commands/build-process/readEnv.ts +37 -0
  67. package/lib/commands/build-process/runMonoCommand.ts +97 -0
  68. package/lib/commands/build-process/runners/processManager.ts +42 -0
  69. package/lib/commands/build-process/runners/runBackground.ts +56 -0
  70. package/lib/commands/build-process/runners/runForeground.ts +59 -0
  71. package/lib/commands/build-process/test.ts +42 -0
  72. package/lib/commands/build-process/testflag.ts +1 -0
  73. package/lib/commands/build-process/validators.ts +16 -0
  74. package/lib/commands/loadFromRoot.ts +51 -0
  75. package/lib/commands/prune/index.ts +9 -0
  76. package/lib/commands/prune/prune.ts +50 -0
  77. package/lib/filterUnwantedEnvVars.ts +95 -0
  78. package/lib/generateNewEnvList.ts +17 -0
  79. package/lib/index.ts +59 -0
  80. package/package.json +100 -84
  81. package/src/cdk/cdk.ts +1 -0
  82. package/src/cdk/index.ts +1 -0
  83. package/src/expo-files/filterUnwantedEnvVars.ts +141 -144
  84. package/src/expo.ts +116 -0
  85. package/src/index.ts +39 -42
  86. package/src/merge-env.ts +24 -0
  87. package/src/project/build-mono-readme.ts +460 -514
  88. package/src/project/generate-readme.ts +259 -284
  89. package/src/project/index.ts +134 -144
  90. package/src/stack.ts +54 -55
  91. package/src/tools.ts +39 -0
  92. package/dist/cdk/index.js +0 -55
  93. package/dist/project/merge-env.js +0 -31
  94. package/dist/tools.js +0 -35
  95. package/dist/types/cdk/index.d.ts +0 -2
  96. package/dist/types/expo.d.ts +0 -3
  97. package/dist/types/merge-env.d.ts +0 -1
  98. package/dist/types/tools.d.ts +0 -1
  99. package/lib/app.js +0 -49
  100. package/lib/commands/build-process/boot.js +0 -15
  101. package/lib/commands/build-process/cliFactory.js +0 -163
  102. package/lib/commands/build-process/dataLayer.js +0 -59
  103. package/lib/commands/build-process/index.js +0 -13
  104. package/lib/commands/build-process/readEnv.js +0 -37
  105. package/lib/commands/build-process/runMonoCommand.js +0 -102
  106. package/lib/commands/build-process/runners/processManager.js +0 -38
  107. package/lib/commands/build-process/runners/runBackground.js +0 -60
  108. package/lib/commands/build-process/runners/runForeground.js +0 -60
  109. package/lib/commands/build-process/test.js +0 -50
  110. package/lib/commands/build-process/testflag.js +0 -1
  111. package/lib/commands/build-process/validators.js +0 -17
  112. package/lib/commands/generate/generateSeed.js +0 -223
  113. package/lib/commands/generate/index.js +0 -30
  114. package/lib/commands/loadFromRoot.js +0 -55
  115. package/lib/commands/prune/index.js +0 -12
  116. package/lib/commands/prune/prune.js +0 -50
  117. package/lib/commands/seed/import.js +0 -30
  118. package/lib/commands/seed/index.js +0 -12
  119. package/lib/commands/submit/index.js +0 -38
  120. package/lib/commands/update/eas.js +0 -39
  121. package/lib/commands/update/index.js +0 -87
  122. package/lib/filterUnwantedEnvVars.js +0 -123
  123. package/lib/generateNewEnvList.js +0 -14
  124. package/lib/index.js +0 -58
  125. package/src/cdk/cdk.d.ts +0 -7
  126. package/src/cdk/index.js +0 -59
  127. package/src/expo.d.ts +0 -11
  128. package/src/expo.js +0 -133
  129. package/src/merge-env.js +0 -32
  130. package/src/tools.d.ts +0 -4
  131. package/src/tools.js +0 -36
  132. package/types.d.ts +0 -83
  133. /package/dist/{expo-files → src/expo-files}/filterUnwantedEnvVars.js +0 -0
  134. /package/dist/{loadFromRoot.js → src/loadFromRoot.js} +0 -0
  135. /package/dist/{project → src/project}/build-readme.js +0 -0
  136. /package/dist/{project → src/project}/generate-docs.js +0 -0
  137. /package/dist/{merge-env.js → src/project/merge-env.js} +0 -0
  138. /package/dist/types/{project/build-mono-readme.d.ts → lib/commands/build-process/index.d.ts} +0 -0
  139. /package/dist/types/{project/generate-readme.d.ts → lib/commands/prune/index.d.ts} +0 -0
  140. /package/dist/types/{expo-files → src/expo-files}/filterUnwantedEnvVars.d.ts +0 -0
  141. /package/dist/types/{loadFromRoot.d.ts → src/loadFromRoot.d.ts} +0 -0
  142. /package/dist/types/{project → src}/merge-env.d.ts +0 -0
  143. /package/dist/types/{project → src/project}/build-readme.d.ts +0 -0
  144. /package/dist/types/{project → src/project}/generate-docs.d.ts +0 -0
  145. /package/dist/types/{stack.d.ts → src/stack.d.ts} +0 -0
  146. /package/lib/{config.js → config.ts} +0 -0
@@ -1,158 +1,155 @@
1
- import { getMonoConfig } from '../loadFromRoot';
1
+ import { getMonoConfig } from '../loadFromRoot'
2
2
 
3
3
  export function filterUnwantedEnvVars(env: Record<string, string>) {
4
- const unwantedPrefixes = [
5
- // 'EFC_',
6
- // 'FPS_',
7
- // 'GIT_',
8
- // 'NVM_',
9
- // 'VSCODE_',
10
- // 'LOGONSERVER',
11
- // 'NUMBER_OF_PROCESSORS',
12
- // 'OS',
13
- // 'COREPACK',
14
- // 'PROCESSOR',
15
- // 'USERDOMAIN',
16
- // 'USERDOMAIN_ROAMINGPROFILE',
17
- // 'USERNAME',
18
- // 'CUDA',
19
- // 'SESSIONNAME',
20
- // 'ZES',
21
- // '3DVPATH',
22
- // 'APP_NAME',
23
- // 'asl.log',
24
- // 'BERRY_BIN_FOLDER',
25
- // 'CHROME_CRASHPAD_PIPE_NAME',
26
- // 'COLORTERM',
27
- // 'COMPUTERNAME',
28
- // 'CUDNN',
29
- // 'EAS_BUILD_PROFILE',
30
- // 'EAS_PROJECT_ID',
31
- // 'EXPO_UNSTABLE_ATLAS',
32
- // 'INIT_CWD',
33
- // 'JAVA_HOME',
34
- // 'LANG',
35
- // 'OneDrive',
36
- // 'ORIGINAL_XDG_CURRENT_DESKTOP',
37
- // 'PROJECT_CWD',
38
- // 'PROMPT',
39
- // 'PWD',
40
- // 'TERM_PROGRAM',
41
- // 'TERM_PROGRAM_VERSION',
42
- // '__PSLockDownPolicy',
43
- 'npm_config_force',
44
- ];
45
- return Object.keys(env).reduce(
46
- (obj, key) => {
47
- if (!unwantedPrefixes.some((prefix) => key.startsWith(prefix))) {
48
- obj[key] = env[key];
49
- }
50
- return obj;
51
- },
52
- {} as Record<string, string>
53
- );
4
+ const unwantedPrefixes = [
5
+ // 'EFC_',
6
+ // 'FPS_',
7
+ // 'GIT_',
8
+ // 'NVM_',
9
+ // 'VSCODE_',
10
+ // 'LOGONSERVER',
11
+ // 'NUMBER_OF_PROCESSORS',
12
+ // 'OS',
13
+ // 'COREPACK',
14
+ // 'PROCESSOR',
15
+ // 'USERDOMAIN',
16
+ // 'USERDOMAIN_ROAMINGPROFILE',
17
+ // 'USERNAME',
18
+ // 'CUDA',
19
+ // 'SESSIONNAME',
20
+ // 'ZES',
21
+ // '3DVPATH',
22
+ // 'APP_NAME',
23
+ // 'asl.log',
24
+ // 'BERRY_BIN_FOLDER',
25
+ // 'CHROME_CRASHPAD_PIPE_NAME',
26
+ // 'COLORTERM',
27
+ // 'COMPUTERNAME',
28
+ // 'CUDNN',
29
+ // 'EAS_BUILD_PROFILE',
30
+ // 'EAS_PROJECT_ID',
31
+ // 'EXPO_UNSTABLE_ATLAS',
32
+ // 'INIT_CWD',
33
+ // 'JAVA_HOME',
34
+ // 'LANG',
35
+ // 'OneDrive',
36
+ // 'ORIGINAL_XDG_CURRENT_DESKTOP',
37
+ // 'PROJECT_CWD',
38
+ // 'PROMPT',
39
+ // 'PWD',
40
+ // 'TERM_PROGRAM',
41
+ // 'TERM_PROGRAM_VERSION',
42
+ // '__PSLockDownPolicy',
43
+ 'npm_config_force',
44
+ ]
45
+ return Object.keys(env).reduce(
46
+ (obj, key) => {
47
+ if (!unwantedPrefixes.some((prefix) => key.startsWith(prefix))) {
48
+ obj[key] = env[key]
49
+ }
50
+ return obj
51
+ },
52
+ {} as Record<string, string>
53
+ )
54
54
  }
55
55
 
56
56
  export function filterUnwantedEnvVarsEAS(env: Record<string, string>) {
57
- const unwantedPrefixes = [
58
- 'ProgramData',
59
- 'ProgramFiles',
60
- 'ProgramFiles(x86)',
61
- 'ProgramW6432',
62
- 'PSModulePath',
63
- 'PUBLIC',
64
- 'TEMP',
65
- 'TMP',
66
- 'EFC_',
67
- 'FPS_',
68
- 'GIT_',
69
- 'NVM_',
70
- 'VSCODE_',
71
- 'windir',
72
- 'Chocolatey',
73
- 'ALLUSERSPROFILE',
74
- 'APPDATA',
75
- 'CommonProgramFiles',
76
- 'CommonProgramW6432',
77
- 'ComSpec',
78
- 'Driver',
79
- 'HOME',
80
- 'npm',
81
- 'HOME',
82
- 'LOCALAPPDATA',
83
- 'LOGONSERVER',
84
- 'NUMBER_OF_PROCESSORS',
85
- 'OS',
86
- 'COREPACK',
87
- 'PROCESSOR',
88
- 'USERDOMAIN',
89
- 'USERDOMAIN_ROAMINGPROFILE',
90
- 'USERNAME',
91
- 'USERPROFILE',
92
- 'CUDA',
93
- 'SESSIONNAME',
94
- 'ZES',
95
- '3DVPATH',
96
- 'APP_NAME',
97
- 'asl.log',
98
- 'BERRY_BIN_FOLDER',
99
- 'CHROME_CRASHPAD_PIPE_NAME',
100
- 'COLORTERM',
101
- 'COMPUTERNAME',
102
- 'CUDNN',
103
- 'EAS_BUILD_PROFILE',
104
- 'EAS_PROJECT_ID',
105
- 'EXPO_UNSTABLE_ATLAS',
106
- 'INIT_CWD',
107
- 'JAVA_HOME',
108
- 'LANG',
109
- 'OneDrive',
110
- 'ORIGINAL_XDG_CURRENT_DESKTOP',
111
- 'PROJECT_CWD',
112
- 'PROMPT',
113
- 'PWD',
114
- 'TERM_PROGRAM',
115
- 'TERM_PROGRAM_VERSION',
116
- '__PSLockDownPolicy',
117
- 'PATH',
118
- 'SystemRoot',
119
- 'SystemDrive',
120
- 'npm_',
121
- ];
122
- return Object.keys(env).reduce(
123
- (obj: Record<string, string>, key) => {
124
- if (!unwantedPrefixes.some((prefix) => key.startsWith(prefix))) {
125
- obj[key] = env[key];
126
- }
127
- return obj;
128
- },
129
- {} as Record<string, string>
130
- );
57
+ const unwantedPrefixes = [
58
+ 'ProgramData',
59
+ 'ProgramFiles',
60
+ 'ProgramFiles(x86)',
61
+ 'ProgramW6432',
62
+ 'PSModulePath',
63
+ 'PUBLIC',
64
+ 'TEMP',
65
+ 'TMP',
66
+ 'EFC_',
67
+ 'FPS_',
68
+ 'GIT_',
69
+ 'NVM_',
70
+ 'VSCODE_',
71
+ 'windir',
72
+ 'Chocolatey',
73
+ 'ALLUSERSPROFILE',
74
+ 'APPDATA',
75
+ 'CommonProgramFiles',
76
+ 'CommonProgramW6432',
77
+ 'ComSpec',
78
+ 'Driver',
79
+ 'HOME',
80
+ 'npm',
81
+ 'HOME',
82
+ 'LOCALAPPDATA',
83
+ 'LOGONSERVER',
84
+ 'NUMBER_OF_PROCESSORS',
85
+ 'OS',
86
+ 'COREPACK',
87
+ 'PROCESSOR',
88
+ 'USERDOMAIN',
89
+ 'USERDOMAIN_ROAMINGPROFILE',
90
+ 'USERNAME',
91
+ 'USERPROFILE',
92
+ 'CUDA',
93
+ 'SESSIONNAME',
94
+ 'ZES',
95
+ '3DVPATH',
96
+ 'APP_NAME',
97
+ 'asl.log',
98
+ 'BERRY_BIN_FOLDER',
99
+ 'CHROME_CRASHPAD_PIPE_NAME',
100
+ 'COLORTERM',
101
+ 'COMPUTERNAME',
102
+ 'CUDNN',
103
+ 'EAS_BUILD_PROFILE',
104
+ 'EAS_PROJECT_ID',
105
+ 'EXPO_UNSTABLE_ATLAS',
106
+ 'INIT_CWD',
107
+ 'JAVA_HOME',
108
+ 'LANG',
109
+ 'OneDrive',
110
+ 'ORIGINAL_XDG_CURRENT_DESKTOP',
111
+ 'PROJECT_CWD',
112
+ 'PROMPT',
113
+ 'PWD',
114
+ 'TERM_PROGRAM',
115
+ 'TERM_PROGRAM_VERSION',
116
+ '__PSLockDownPolicy',
117
+ 'PATH',
118
+ 'SystemRoot',
119
+ 'SystemDrive',
120
+ 'npm_',
121
+ ]
122
+ return Object.keys(env).reduce(
123
+ (obj: Record<string, string>, key) => {
124
+ if (!unwantedPrefixes.some((prefix) => key.startsWith(prefix))) {
125
+ obj[key] = env[key]
126
+ }
127
+ return obj
128
+ },
129
+ {} as Record<string, string>
130
+ )
131
131
  }
132
132
 
133
- export function generateNewEnvList(
134
- processEnv: Record<string, string>
135
- ): Record<string, string> {
136
- const { config } = getMonoConfig();
133
+ export function generateNewEnvList(processEnv: Record<string, string>): Record<string, string> {
134
+ const { config } = getMonoConfig()
137
135
 
138
- const envPrefixes: string[] =
139
- Array.isArray(config.envMap) ? config.envMap : [];
136
+ const envPrefixes: string[] = Array.isArray(config.envMap) ? config.envMap : []
140
137
 
141
- const result: Record<string, string> = { ...processEnv };
138
+ const result: Record<string, string> = { ...processEnv }
142
139
 
143
- for (const [key, value] of Object.entries(processEnv)) {
144
- // Only clone MONO_ variables
145
- if (!key.startsWith('MONO_')) continue;
140
+ for (const [key, value] of Object.entries(processEnv)) {
141
+ // Only clone MONO_ variables
142
+ if (!key.startsWith('MONO_')) continue
146
143
 
147
- // Skip secrets
148
- if (key.includes('SECRET')) continue;
144
+ // Skip secrets
145
+ if (key.includes('SECRET')) continue
149
146
 
150
- const suffix = key.slice('MONO_'.length);
147
+ const suffix = key.slice('MONO_'.length)
151
148
 
152
- for (const prefix of envPrefixes) {
153
- const mappedKey = `${prefix}_${suffix}`;
154
- result[mappedKey] = value;
155
- }
156
- }
157
- return result;
149
+ for (const prefix of envPrefixes) {
150
+ const mappedKey = `${prefix}_${suffix}`
151
+ result[mappedKey] = value
152
+ }
153
+ }
154
+ return result
158
155
  }
package/src/expo.ts ADDED
@@ -0,0 +1,116 @@
1
+ import type { AppJSONConfig, ExpoConfig } from 'expo/config'
2
+
3
+ export function replaceTokens(input: string, tokens: Record<string, string>): string {
4
+ return input.replace(/\$\{([^}]+)\}|\$([A-Z0-9_]+)/g, (_m, k1, k2) => {
5
+ const key = (k1 || k2) as string
6
+ const val = tokens[key]
7
+ return val == null ? '' : String(val)
8
+ })
9
+ }
10
+
11
+ function filterEnvByPrefix(env: NodeJS.ProcessEnv, prefix: string): Record<string, string> {
12
+ const filtered: Record<string, string> = {}
13
+ for (const [key, value] of Object.entries(env)) {
14
+ if (key.startsWith(prefix) && typeof value === 'string') {
15
+ filtered[key] = value
16
+ }
17
+ }
18
+ return filtered
19
+ }
20
+
21
+ export function setUpConfig(config: AppJSONConfig): ExpoConfig {
22
+ const { extra = {}, ...other } = (config.expo ?? {}) as any
23
+
24
+ const router = extra['router'] ? { origin: false, ...extra['router'] } : { origin: false }
25
+
26
+ return {
27
+ ...(config as any),
28
+ expo: {
29
+ ...other,
30
+ extra: {
31
+ ...filterEnvByPrefix(process.env, 'NEXT_PUBLIC_'),
32
+ eas: {
33
+ projectId: process.env.EAS_PROJECT_ID,
34
+ },
35
+ router,
36
+ ...extra,
37
+ },
38
+ },
39
+ } as ExpoConfig
40
+ }
41
+
42
+ export function filterUnwantedEnvVarsEAS(envVars: Record<string, string>): Record<string, string> {
43
+ // Keep in sync with lib/filterUnwantedEnvVars.ts
44
+ const unwantedPrefixes = [
45
+ 'ProgramData',
46
+ 'ProgramFiles',
47
+ 'ProgramFiles(x86)',
48
+ 'ProgramW6432',
49
+ 'PSModulePath',
50
+ 'PUBLIC',
51
+ 'TEMP',
52
+ 'TMP',
53
+ 'EFC_',
54
+ 'FPS_',
55
+ 'GIT_',
56
+ 'NVM_',
57
+ 'VSCODE_',
58
+ 'windir',
59
+ 'Chocolatey',
60
+ 'ALLUSERSPROFILE',
61
+ 'APPDATA',
62
+ 'CommonProgramFiles',
63
+ 'CommonProgramW6432',
64
+ 'ComSpec',
65
+ 'Driver',
66
+ 'HOME',
67
+ 'npm',
68
+ 'LOCALAPPDATA',
69
+ 'LOGONSERVER',
70
+ 'NUMBER_OF_PROCESSORS',
71
+ 'OS',
72
+ 'COREPACK',
73
+ 'PROCESSOR',
74
+ 'USERDOMAIN',
75
+ 'USERDOMAIN_ROAMINGPROFILE',
76
+ 'USERNAME',
77
+ 'USERPROFILE',
78
+ 'CUDA',
79
+ 'SESSIONNAME',
80
+ 'ZES',
81
+ '3DVPATH',
82
+ 'APP_NAME',
83
+ 'asl.log',
84
+ 'BERRY_BIN_FOLDER',
85
+ 'CHROME_CRASHPAD_PIPE_NAME',
86
+ 'COLORTERM',
87
+ 'COMPUTERNAME',
88
+ 'CUDNN',
89
+ 'EAS_BUILD_PROFILE',
90
+ 'EAS_PROJECT_ID',
91
+ 'EXPO_UNSTABLE_ATLAS',
92
+ 'INIT_CWD',
93
+ 'JAVA_HOME',
94
+ 'LANG',
95
+ 'OneDrive',
96
+ 'ORIGINAL_XDG_CURRENT_DESKTOP',
97
+ 'PROJECT_CWD',
98
+ 'PROMPT',
99
+ 'PWD',
100
+ 'TERM_PROGRAM',
101
+ 'TERM_PROGRAM_VERSION',
102
+ '__PSLockDownPolicy',
103
+ 'PATH',
104
+ 'SystemRoot',
105
+ 'SystemDrive',
106
+ 'npm_',
107
+ ]
108
+
109
+ const out: Record<string, string> = {}
110
+ for (const [key, value] of Object.entries(envVars)) {
111
+ if (!unwantedPrefixes.some((prefix) => key.startsWith(prefix))) {
112
+ out[key] = value
113
+ }
114
+ }
115
+ return out
116
+ }
package/src/index.ts CHANGED
@@ -1,76 +1,73 @@
1
1
  // Main entry point for @mono-labs/cli package
2
2
 
3
3
  import {
4
- filterUnwantedEnvVars,
5
- filterUnwantedEnvVarsEAS,
6
- generateNewEnvList,
7
- } from './expo-files/filterUnwantedEnvVars.js';
4
+ filterUnwantedEnvVars,
5
+ filterUnwantedEnvVarsEAS,
6
+ generateNewEnvList,
7
+ } from './expo-files/filterUnwantedEnvVars'
8
8
 
9
9
  /* ------------------------------------------------------------------
10
10
  * Internal data layer
11
11
  * ------------------------------------------------------------------ */
12
12
 
13
- type DataLayer = Record<string, unknown>;
13
+ type DataLayer = Record<string, unknown>
14
14
 
15
- const dataLayer: DataLayer = Object.create(null);
15
+ const dataLayer: DataLayer = Object.create(null)
16
16
 
17
17
  export function setData(key: string, value: unknown): void {
18
- if (value !== undefined) {
19
- dataLayer[key] = value;
20
- }
18
+ if (value !== undefined) {
19
+ dataLayer[key] = value
20
+ }
21
21
  }
22
22
 
23
23
  export function mergeData(obj: Record<string, unknown> = {}): DataLayer {
24
- Object.entries(obj).forEach(([k, v]) => setData(k, v));
25
- return dataLayer;
24
+ Object.entries(obj).forEach(([k, v]) => setData(k, v))
25
+ return dataLayer
26
26
  }
27
27
 
28
28
  export function getData(key?: string): unknown {
29
- return key ? dataLayer[key] : dataLayer;
29
+ return key ? dataLayer[key] : dataLayer
30
30
  }
31
31
 
32
32
  export function hasData(key: string): boolean {
33
- return Object.prototype.hasOwnProperty.call(dataLayer, key);
33
+ return Object.prototype.hasOwnProperty.call(dataLayer, key)
34
34
  }
35
35
 
36
36
  /* ------------------------------------------------------------------
37
37
  * Token replacement
38
38
  * ------------------------------------------------------------------ */
39
39
 
40
- export function replaceTokens(
41
- str: unknown,
42
- env?: Record<string, string | undefined>
43
- ): unknown {
44
- if (typeof str !== 'string') return str;
45
-
46
- return str.replace(/\$\{([^}]+)\}|\$([A-Z0-9_]+)/g, (_match, k1, k2) => {
47
- const key = k1 || k2;
48
-
49
- // data layer takes priority
50
- if (hasData(key)) {
51
- const val = getData(key);
52
- return val == null ? '' : String(val);
53
- }
54
-
55
- // environment variables
56
- if (env && Object.prototype.hasOwnProperty.call(env, key)) {
57
- const val = env[key];
58
- return val == null ? '' : String(val);
59
- }
60
-
61
- return '';
62
- });
40
+ export function replaceTokens(str: unknown, env?: Record<string, string | undefined>): unknown {
41
+ if (typeof str !== 'string') return str
42
+
43
+ return str.replace(/\$\{([^}]+)\}|\$([A-Z0-9_]+)/g, (_match, k1, k2) => {
44
+ const key = k1 || k2
45
+
46
+ // data layer takes priority
47
+ if (hasData(key)) {
48
+ const val = getData(key)
49
+ return val == null ? '' : String(val)
50
+ }
51
+
52
+ // environment variables
53
+ if (env && Object.prototype.hasOwnProperty.call(env, key)) {
54
+ const val = env[key]
55
+ return val == null ? '' : String(val)
56
+ }
57
+
58
+ return ''
59
+ })
63
60
  }
64
61
 
65
62
  /* ------------------------------------------------------------------
66
63
  * Exports
67
64
  * ------------------------------------------------------------------ */
68
65
 
69
- export { generateNewEnvList, filterUnwantedEnvVars, filterUnwantedEnvVarsEAS };
66
+ export { generateNewEnvList, filterUnwantedEnvVars, filterUnwantedEnvVarsEAS }
70
67
 
71
68
  export default {
72
- generateNewEnvList,
73
- replaceTokens,
74
- filterUnwantedEnvVars,
75
- filterUnwantedEnvVarsEAS,
76
- };
69
+ generateNewEnvList,
70
+ replaceTokens,
71
+ filterUnwantedEnvVars,
72
+ filterUnwantedEnvVarsEAS,
73
+ }
@@ -0,0 +1,24 @@
1
+ import fs from 'node:fs'
2
+ import path from 'node:path'
3
+ import dotenv from 'dotenv'
4
+
5
+ export function loadMergedEnv(): NodeJS.ProcessEnv {
6
+ const ENV_PATH = path.resolve(process.cwd(), '.env')
7
+ const ENV_LOCAL_PATH = path.resolve(process.cwd(), '.env.local')
8
+
9
+ const base = fs.existsSync(ENV_PATH) ? dotenv.parse(fs.readFileSync(ENV_PATH)) : {}
10
+ const local = fs.existsSync(ENV_LOCAL_PATH) ? dotenv.parse(fs.readFileSync(ENV_LOCAL_PATH)) : {}
11
+
12
+ const merged = {
13
+ ...base,
14
+ ...local,
15
+ }
16
+
17
+ for (const [key, value] of Object.entries(merged)) {
18
+ if (process.env[key] === undefined) {
19
+ process.env[key] = value
20
+ }
21
+ }
22
+
23
+ return process.env
24
+ }