@mono-labs/cli 0.0.244 → 0.0.248
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{types/index.d.ts → index.d.ts} +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/{types/lib → lib}/app.d.ts +1 -0
- package/dist/lib/app.d.ts.map +1 -0
- package/dist/{types/lib → lib}/commands/build-process/boot.d.ts +1 -0
- package/dist/lib/commands/build-process/boot.d.ts.map +1 -0
- package/dist/{types/lib → lib}/commands/build-process/cliFactory.d.ts +1 -0
- package/dist/lib/commands/build-process/cliFactory.d.ts.map +1 -0
- package/dist/{types/lib → lib}/commands/build-process/dataLayer.d.ts +1 -0
- package/dist/lib/commands/build-process/dataLayer.d.ts.map +1 -0
- package/dist/lib/commands/build-process/index.d.ts +2 -0
- package/dist/lib/commands/build-process/index.d.ts.map +1 -0
- package/dist/{types/lib → lib}/commands/build-process/readEnv.d.ts +1 -0
- package/dist/lib/commands/build-process/readEnv.d.ts.map +1 -0
- package/dist/{types/lib → lib}/commands/build-process/runMonoCommand.d.ts +1 -0
- package/dist/lib/commands/build-process/runMonoCommand.d.ts.map +1 -0
- package/dist/{types/lib → lib}/commands/build-process/runners/processManager.d.ts +1 -0
- package/dist/lib/commands/build-process/runners/processManager.d.ts.map +1 -0
- package/dist/lib/commands/build-process/runners/processManager.js +15 -0
- package/dist/{types/lib → lib}/commands/build-process/runners/runBackground.d.ts +1 -0
- package/dist/lib/commands/build-process/runners/runBackground.d.ts.map +1 -0
- package/dist/{types/lib → lib}/commands/build-process/runners/runForeground.d.ts +1 -0
- package/dist/lib/commands/build-process/runners/runForeground.d.ts.map +1 -0
- package/dist/lib/commands/build-process/runners/runForeground.js +1 -1
- package/dist/{types/lib → lib}/commands/build-process/test.d.ts +1 -0
- package/dist/lib/commands/build-process/test.d.ts.map +1 -0
- package/dist/lib/commands/build-process/testflag.d.ts +2 -0
- package/dist/lib/commands/build-process/testflag.d.ts.map +1 -0
- package/dist/{types/lib → lib}/commands/build-process/validators.d.ts +1 -0
- package/dist/lib/commands/build-process/validators.d.ts.map +1 -0
- package/dist/{types/lib → lib}/commands/loadFromRoot.d.ts +1 -0
- package/dist/lib/commands/loadFromRoot.d.ts.map +1 -0
- package/dist/lib/commands/prune/index.d.ts +2 -0
- package/dist/lib/commands/prune/index.d.ts.map +1 -0
- package/dist/{types/lib → lib}/commands/prune/prune.d.ts +1 -0
- package/dist/lib/commands/prune/prune.d.ts.map +1 -0
- package/dist/{types/lib → lib}/config.d.ts +1 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/{types/lib → lib}/filterUnwantedEnvVars.d.ts +1 -0
- package/dist/lib/filterUnwantedEnvVars.d.ts.map +1 -0
- package/dist/{types/lib → lib}/generateNewEnvList.d.ts +1 -0
- package/dist/lib/generateNewEnvList.d.ts.map +1 -0
- package/dist/{types/lib → lib}/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +2 -2
- package/dist/src/cdk.d.ts +2 -0
- package/dist/src/cdk.d.ts.map +1 -0
- package/dist/src/{cdk/cdk.js → cdk.js} +4 -3
- package/dist/src/expo.d.ts +2 -0
- package/dist/src/expo.d.ts.map +1 -0
- package/dist/src/expo.js +6 -111
- package/dist/{types/src → src}/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +7 -7
- package/dist/src/project.d.ts +3 -0
- package/dist/src/project.d.ts.map +1 -0
- package/dist/src/project.js +14 -0
- package/dist/{types/src → src}/stack.d.ts +1 -0
- package/dist/src/stack.d.ts.map +1 -0
- package/dist/src/stack.js +4 -4
- package/dist/src/tools.d.ts +2 -0
- package/dist/src/tools.d.ts.map +1 -0
- package/dist/src/tools.js +5 -36
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/lib/commands/build-process/runners/processManager.ts +18 -0
- package/lib/commands/build-process/runners/runForeground.ts +1 -1
- package/lib/index.ts +1 -1
- package/package.json +40 -24
- package/src/cdk.ts +2 -0
- package/src/expo.ts +2 -116
- package/src/index.ts +2 -2
- package/src/project.ts +19 -0
- package/src/stack.ts +3 -3
- package/src/tools.ts +2 -39
- package/README.md +0 -123
- package/dist/src/cdk/index.js +0 -17
- package/dist/src/expo-files/filterUnwantedEnvVars.js +0 -147
- package/dist/src/loadFromRoot.js +0 -115
- package/dist/src/merge-env.js +0 -25
- package/dist/src/project/build-mono-readme.js +0 -456
- package/dist/src/project/build-readme.js +0 -4
- package/dist/src/project/generate-docs.js +0 -73
- package/dist/src/project/generate-readme.js +0 -309
- package/dist/src/project/index.js +0 -120
- package/dist/src/project/merge-env.js +0 -31
- package/dist/types/lib/commands/build-process/index.d.ts +0 -1
- package/dist/types/lib/commands/build-process/testflag.d.ts +0 -1
- package/dist/types/lib/commands/prune/index.d.ts +0 -1
- package/dist/types/src/cdk/cdk.d.ts +0 -1
- package/dist/types/src/cdk/index.d.ts +0 -1
- package/dist/types/src/expo-files/filterUnwantedEnvVars.d.ts +0 -3
- package/dist/types/src/expo.d.ts +0 -4
- package/dist/types/src/loadFromRoot.d.ts +0 -32
- package/dist/types/src/merge-env.d.ts +0 -1
- package/dist/types/src/project/build-mono-readme.d.ts +0 -1
- package/dist/types/src/project/build-readme.d.ts +0 -2
- package/dist/types/src/project/generate-docs.d.ts +0 -11
- package/dist/types/src/project/generate-readme.d.ts +0 -1
- package/dist/types/src/project/index.d.ts +0 -40
- package/dist/types/src/project/merge-env.d.ts +0 -1
- package/dist/types/src/tools.d.ts +0 -3
- package/src/cdk/cdk.ts +0 -1
- package/src/cdk/index.ts +0 -1
- package/src/expo-files/filterUnwantedEnvVars.ts +0 -155
- package/src/loadFromRoot.ts +0 -145
- package/src/merge-env.ts +0 -24
- package/src/project/build-mono-readme.ts +0 -545
- package/src/project/build-readme.ts +0 -2
- package/src/project/generate-docs.ts +0 -83
- package/src/project/generate-readme.ts +0 -351
- package/src/project/index.ts +0 -187
- package/src/project/merge-env.ts +0 -32
|
@@ -39,4 +39,22 @@ export function ensureSignalHandlers(): void {
|
|
|
39
39
|
killAllBackground()
|
|
40
40
|
process.exit(143)
|
|
41
41
|
})
|
|
42
|
+
|
|
43
|
+
// Handle process exit event - ensures cleanup on any exit path
|
|
44
|
+
process.on('exit', () => {
|
|
45
|
+
killAllBackground()
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
// Handle beforeExit - fires when event loop empties (before exit)
|
|
49
|
+
process.on('beforeExit', () => {
|
|
50
|
+
killAllBackground()
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
// Windows-specific: handle SIGHUP as fallback for terminal close
|
|
54
|
+
if (process.platform === 'win32') {
|
|
55
|
+
process.on('SIGHUP', () => {
|
|
56
|
+
killAllBackground()
|
|
57
|
+
process.exit(129)
|
|
58
|
+
})
|
|
59
|
+
}
|
|
42
60
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { spawn } from 'child_process'
|
|
2
2
|
import { replaceTokens, setData } from '../dataLayer'
|
|
3
|
-
import { filterUnwantedEnvVars } from '
|
|
3
|
+
import { filterUnwantedEnvVars } from '../../../filterUnwantedEnvVars'
|
|
4
4
|
|
|
5
5
|
// Regex to capture tokens like: {out:field value}
|
|
6
6
|
const TOKEN_RX = /\{out:(?<field>[^\s}]+)\s+(?<value>[^\s}]+)\}/g
|
package/lib/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mono-labs/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.248",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"description": "A CLI tool for building and deploying projects",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
|
-
"types": "dist/
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
-
"types": "./dist/
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
11
|
"require": "./dist/index.js",
|
|
12
12
|
"default": "./dist/index.js"
|
|
13
13
|
},
|
|
14
14
|
"./expo": {
|
|
15
|
-
"types": "./dist/
|
|
15
|
+
"types": "./dist/src/expo.d.ts",
|
|
16
16
|
"require": "./dist/src/expo.js",
|
|
17
17
|
"default": "./dist/src/expo.js"
|
|
18
18
|
},
|
|
19
19
|
"./tools": {
|
|
20
|
-
"types": "./dist/
|
|
20
|
+
"types": "./dist/src/tools.d.ts",
|
|
21
21
|
"require": "./dist/src/tools.js",
|
|
22
22
|
"default": "./dist/src/tools.js"
|
|
23
23
|
},
|
|
24
24
|
"./cdk": {
|
|
25
|
-
"types": "./dist/
|
|
26
|
-
"require": "./dist/src/cdk
|
|
27
|
-
"default": "./dist/src/cdk
|
|
25
|
+
"types": "./dist/src/cdk.d.ts",
|
|
26
|
+
"require": "./dist/src/cdk.js",
|
|
27
|
+
"default": "./dist/src/cdk.js"
|
|
28
28
|
},
|
|
29
29
|
"./stack": {
|
|
30
|
-
"types": "./dist/
|
|
30
|
+
"types": "./dist/src/stack.d.ts",
|
|
31
31
|
"require": "./dist/src/stack.js",
|
|
32
32
|
"default": "./dist/src/stack.js"
|
|
33
33
|
},
|
|
34
34
|
"./project": {
|
|
35
|
-
"types": "./dist/
|
|
36
|
-
"require": "./dist/src/project
|
|
37
|
-
"default": "./dist/src/project
|
|
35
|
+
"types": "./dist/src/project.d.ts",
|
|
36
|
+
"require": "./dist/src/project.js",
|
|
37
|
+
"default": "./dist/src/project.js"
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
"repository": {
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"start": "node bin/mono.js",
|
|
54
54
|
"dev": "node bin/mono.js",
|
|
55
55
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
56
|
-
"deploy": "tsc && npm
|
|
56
|
+
"deploy": "tsc && npm publish --access public --registry https://registry.npmjs.org/",
|
|
57
57
|
"release:patch": "npm version patch -m \"chore: release %s\" && npm publish --access public",
|
|
58
58
|
"release:minor": "npm version minor -m \"chore: release %s\" && npm publish --access public",
|
|
59
59
|
"release:major": "npm version major -m \"chore: release %s\" && npm publish --access public"
|
|
@@ -70,38 +70,54 @@
|
|
|
70
70
|
"node": ">=20.0.0"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@
|
|
74
|
-
"@
|
|
75
|
-
"aws-cdk-lib": "^2.235.0",
|
|
73
|
+
"@mono-labs/project": "0.0.248",
|
|
74
|
+
"@mono-labs/expo": "0.0.248",
|
|
76
75
|
"chalk": "^4.1.2",
|
|
77
76
|
"commander": "^11.1.0",
|
|
78
|
-
"constructs": "^10.4.5",
|
|
79
77
|
"cross-spawn": "^7.0.6",
|
|
80
78
|
"dotenv": "^17.2.0",
|
|
81
79
|
"inquirer": "^12.8.2",
|
|
82
80
|
"prettier": "^3.6.2",
|
|
83
81
|
"tree-kill": "^1.2.2"
|
|
84
82
|
},
|
|
85
|
-
"devDependencies": {
|
|
86
|
-
"@types/node": "^25.1.0",
|
|
87
|
-
"eslint": "^8.57.0",
|
|
88
|
-
"typescript": "^5.9.3",
|
|
89
|
-
"expo": ">=52"
|
|
90
|
-
},
|
|
91
83
|
"peerDependencies": {
|
|
84
|
+
"aws-cdk-lib": "^2.235.0",
|
|
85
|
+
"constructs": "^10.4.5",
|
|
86
|
+
"@aws-sdk/client-dynamodb": "^3.848.0",
|
|
87
|
+
"@aws-sdk/util-dynamodb": "^3.848.0",
|
|
92
88
|
"expo": ">=52"
|
|
93
89
|
},
|
|
94
90
|
"peerDependenciesMeta": {
|
|
91
|
+
"aws-cdk-lib": {
|
|
92
|
+
"optional": true
|
|
93
|
+
},
|
|
94
|
+
"constructs": {
|
|
95
|
+
"optional": true
|
|
96
|
+
},
|
|
97
|
+
"@aws-sdk/client-dynamodb": {
|
|
98
|
+
"optional": true
|
|
99
|
+
},
|
|
100
|
+
"@aws-sdk/util-dynamodb": {
|
|
101
|
+
"optional": true
|
|
102
|
+
},
|
|
95
103
|
"expo": {
|
|
96
104
|
"optional": true
|
|
97
105
|
}
|
|
98
106
|
},
|
|
107
|
+
"devDependencies": {
|
|
108
|
+
"@types/node": "^25.1.0",
|
|
109
|
+
"typescript": "^5.9.3",
|
|
110
|
+
"aws-cdk-lib": "^2.235.0",
|
|
111
|
+
"constructs": "^10.4.5",
|
|
112
|
+
"@aws-sdk/client-dynamodb": "^3.848.0",
|
|
113
|
+
"@aws-sdk/util-dynamodb": "^3.848.0",
|
|
114
|
+
"expo": ">=52"
|
|
115
|
+
},
|
|
99
116
|
"files": [
|
|
100
117
|
"bin/",
|
|
101
118
|
"lib/",
|
|
102
119
|
"src/",
|
|
103
120
|
"dist/",
|
|
104
|
-
"types.d.ts",
|
|
105
121
|
"README.md"
|
|
106
122
|
]
|
|
107
123
|
}
|
package/src/cdk.ts
ADDED
package/src/expo.ts
CHANGED
|
@@ -1,116 +1,2 @@
|
|
|
1
|
-
|
|
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
|
-
}
|
|
1
|
+
// Backward-compatible re-export from @mono-labs/expo
|
|
2
|
+
export { replaceTokens, setUpConfig, filterUnwantedEnvVarsEAS } from '@mono-labs/expo'
|
package/src/index.ts
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
filterUnwantedEnvVars,
|
|
5
|
-
filterUnwantedEnvVarsEAS,
|
|
5
|
+
filterUnwantedEnvVarsEASExpo as filterUnwantedEnvVarsEAS,
|
|
6
6
|
generateNewEnvList,
|
|
7
|
-
} from '
|
|
7
|
+
} from '@mono-labs/expo'
|
|
8
8
|
|
|
9
9
|
/* ------------------------------------------------------------------
|
|
10
10
|
* Internal data layer
|
package/src/project.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Backward-compatible re-export from @mono-labs/project
|
|
2
|
+
export {
|
|
3
|
+
findProjectRoot,
|
|
4
|
+
getRootDirectory,
|
|
5
|
+
getRootJson,
|
|
6
|
+
resolveMonoDirectory,
|
|
7
|
+
getMonoFiles,
|
|
8
|
+
getMonoConfig,
|
|
9
|
+
loadAppConfig,
|
|
10
|
+
loadProjectConfig,
|
|
11
|
+
loadMergedEnv,
|
|
12
|
+
} from '@mono-labs/project'
|
|
13
|
+
|
|
14
|
+
export type {
|
|
15
|
+
MonoWorkspaceConfig,
|
|
16
|
+
MonoProjectConfig,
|
|
17
|
+
MonoFiles,
|
|
18
|
+
MonoConfig,
|
|
19
|
+
} from '@mono-labs/project'
|
package/src/stack.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as cdk from 'aws-cdk-lib'
|
|
2
2
|
import { Construct } from 'constructs'
|
|
3
|
-
import { loadMergedEnv } from '
|
|
3
|
+
import { loadMergedEnv } from '@mono-labs/project'
|
|
4
4
|
|
|
5
5
|
loadMergedEnv()
|
|
6
6
|
//cdk deploy --context owner=cody --context region=us-west-1
|
|
@@ -26,7 +26,7 @@ export abstract class CustomStack extends cdk.Stack {
|
|
|
26
26
|
protected enableNATGateway: boolean = false
|
|
27
27
|
|
|
28
28
|
constructor(scope: Construct, id: string, props: CustomStackProps = {}) {
|
|
29
|
-
//
|
|
29
|
+
// Resolve account + region BEFORE super()
|
|
30
30
|
const resolvedEnv: cdk.Environment | undefined = {
|
|
31
31
|
account: props.env?.account ?? process.env.AWS_ACCOUNT ?? cdk.Aws.ACCOUNT_ID, // final fallback (lazy token)
|
|
32
32
|
region: props.env?.region ?? process.env.AWS_REGION ?? 'us-east-2',
|
|
@@ -37,7 +37,7 @@ export abstract class CustomStack extends cdk.Stack {
|
|
|
37
37
|
env: resolvedEnv,
|
|
38
38
|
})
|
|
39
39
|
|
|
40
|
-
//
|
|
40
|
+
// Now it's safe to read these
|
|
41
41
|
this.ownerName = props.ownerName ?? 'dev'
|
|
42
42
|
this.domainName = props.domainName
|
|
43
43
|
this.region = resolvedEnv.region!
|
package/src/tools.ts
CHANGED
|
@@ -1,39 +1,2 @@
|
|
|
1
|
-
|
|
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
|
-
const router = extra['router'] ? { origin: false, ...extra['router'] } : { origin: false }
|
|
24
|
-
|
|
25
|
-
return {
|
|
26
|
-
...(config as any),
|
|
27
|
-
expo: {
|
|
28
|
-
...other,
|
|
29
|
-
extra: {
|
|
30
|
-
...filterEnvByPrefix(process.env, 'NEXT_PUBLIC_'),
|
|
31
|
-
eas: {
|
|
32
|
-
projectId: process.env.EAS_PROJECT_ID,
|
|
33
|
-
},
|
|
34
|
-
router,
|
|
35
|
-
...extra,
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
} as ExpoConfig
|
|
39
|
-
}
|
|
1
|
+
// Backward-compatible re-export from @mono-labs/expo/tools
|
|
2
|
+
export { replaceTokens, setUpConfig } from '@mono-labs/expo'
|
package/README.md
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# mono-labs
|
|
2
|
-
|
|
3
|
-
Declarative monorepo orchestration, project tooling, and infrastructure
|
|
4
|
-
integration — built to scale real systems, not just scripts.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## What This Is
|
|
9
|
-
|
|
10
|
-
mono-labs is a monorepo control plane.
|
|
11
|
-
|
|
12
|
-
It combines:
|
|
13
|
-
|
|
14
|
-
- a declarative, token-aware CLI runtime
|
|
15
|
-
- project-level orchestration utilities
|
|
16
|
-
- infrastructure and CI integration primitives
|
|
17
|
-
|
|
18
|
-
The goal is to make a monorepo behave like a single, coordinated system across:
|
|
19
|
-
|
|
20
|
-
- local development
|
|
21
|
-
- CI pipelines
|
|
22
|
-
- deployments
|
|
23
|
-
- infrastructure management
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## What Problems It Solves
|
|
28
|
-
|
|
29
|
-
Most monorepos suffer from:
|
|
30
|
-
|
|
31
|
-
- duplicated scripts across packages
|
|
32
|
-
- environment drift between dev and CI
|
|
33
|
-
- infrastructure logic isolated in pipelines
|
|
34
|
-
- brittle bash scripts
|
|
35
|
-
- slow onboarding
|
|
36
|
-
|
|
37
|
-
mono-labs solves this by providing:
|
|
38
|
-
|
|
39
|
-
- declarative command definitions
|
|
40
|
-
- shared runtime state via tokens
|
|
41
|
-
- reusable project utilities
|
|
42
|
-
- programmatic CDK helpers
|
|
43
|
-
- one mental model for dev, CI, and deploy
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## High-Level Architecture
|
|
48
|
-
|
|
49
|
-
mono-labs is intentionally layered:
|
|
50
|
-
|
|
51
|
-
1. `.mono/` Declarative command definitions (JSON).
|
|
52
|
-
|
|
53
|
-
2. CLI Runtime (`bin` + `lib`) Loads `.mono`, builds commands, executes
|
|
54
|
-
workflows, manages processes.
|
|
55
|
-
|
|
56
|
-
3. Project Orchestration (`src/project`) Environment merging, configuration
|
|
57
|
-
management, monorepo utilities.
|
|
58
|
-
|
|
59
|
-
4. Infrastructure Integration (`src/cdk`) CDK helpers, stack orchestration,
|
|
60
|
-
CI-friendly deployment primitives.
|
|
61
|
-
|
|
62
|
-
Each layer can be used independently, but they are designed to work together.
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Quick Start
|
|
67
|
-
|
|
68
|
-
Create a `.mono` directory and add:
|
|
69
|
-
|
|
70
|
-
.mono/hello.json
|
|
71
|
-
|
|
72
|
-
{ "actions": ["echo Hello World"] }
|
|
73
|
-
|
|
74
|
-
Run:
|
|
75
|
-
|
|
76
|
-
yarn mono hello
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Typical Developer Workflow
|
|
81
|
-
|
|
82
|
-
yarn mono dev yarn mono serve yarn mono mobile
|
|
83
|
-
|
|
84
|
-
If unsure:
|
|
85
|
-
|
|
86
|
-
yarn mono help
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Documentation Index
|
|
91
|
-
|
|
92
|
-
Start here:
|
|
93
|
-
|
|
94
|
-
- docs/README.txt
|
|
95
|
-
|
|
96
|
-
Key docs:
|
|
97
|
-
|
|
98
|
-
- docs/architecture.md
|
|
99
|
-
- docs/configuration.md
|
|
100
|
-
- docs/examples.md
|
|
101
|
-
- docs/troubleshooting.md
|
|
102
|
-
|
|
103
|
-
Advanced:
|
|
104
|
-
|
|
105
|
-
- docs/project-orchestration.md
|
|
106
|
-
- docs/infrastructure-integration.md
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Who This Is For
|
|
111
|
-
|
|
112
|
-
mono-labs is designed for teams that:
|
|
113
|
-
|
|
114
|
-
- run full-stack systems
|
|
115
|
-
- manage real infrastructure
|
|
116
|
-
- care about reproducibility
|
|
117
|
-
- want dev and CI to behave the same
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## License
|
|
122
|
-
|
|
123
|
-
MIT © Contributors
|
package/dist/src/cdk/index.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./cdk"), exports);
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.filterUnwantedEnvVars = filterUnwantedEnvVars;
|
|
4
|
-
exports.filterUnwantedEnvVarsEAS = filterUnwantedEnvVarsEAS;
|
|
5
|
-
exports.generateNewEnvList = generateNewEnvList;
|
|
6
|
-
const loadFromRoot_1 = require("../loadFromRoot");
|
|
7
|
-
function filterUnwantedEnvVars(env) {
|
|
8
|
-
const unwantedPrefixes = [
|
|
9
|
-
// 'EFC_',
|
|
10
|
-
// 'FPS_',
|
|
11
|
-
// 'GIT_',
|
|
12
|
-
// 'NVM_',
|
|
13
|
-
// 'VSCODE_',
|
|
14
|
-
// 'LOGONSERVER',
|
|
15
|
-
// 'NUMBER_OF_PROCESSORS',
|
|
16
|
-
// 'OS',
|
|
17
|
-
// 'COREPACK',
|
|
18
|
-
// 'PROCESSOR',
|
|
19
|
-
// 'USERDOMAIN',
|
|
20
|
-
// 'USERDOMAIN_ROAMINGPROFILE',
|
|
21
|
-
// 'USERNAME',
|
|
22
|
-
// 'CUDA',
|
|
23
|
-
// 'SESSIONNAME',
|
|
24
|
-
// 'ZES',
|
|
25
|
-
// '3DVPATH',
|
|
26
|
-
// 'APP_NAME',
|
|
27
|
-
// 'asl.log',
|
|
28
|
-
// 'BERRY_BIN_FOLDER',
|
|
29
|
-
// 'CHROME_CRASHPAD_PIPE_NAME',
|
|
30
|
-
// 'COLORTERM',
|
|
31
|
-
// 'COMPUTERNAME',
|
|
32
|
-
// 'CUDNN',
|
|
33
|
-
// 'EAS_BUILD_PROFILE',
|
|
34
|
-
// 'EAS_PROJECT_ID',
|
|
35
|
-
// 'EXPO_UNSTABLE_ATLAS',
|
|
36
|
-
// 'INIT_CWD',
|
|
37
|
-
// 'JAVA_HOME',
|
|
38
|
-
// 'LANG',
|
|
39
|
-
// 'OneDrive',
|
|
40
|
-
// 'ORIGINAL_XDG_CURRENT_DESKTOP',
|
|
41
|
-
// 'PROJECT_CWD',
|
|
42
|
-
// 'PROMPT',
|
|
43
|
-
// 'PWD',
|
|
44
|
-
// 'TERM_PROGRAM',
|
|
45
|
-
// 'TERM_PROGRAM_VERSION',
|
|
46
|
-
// '__PSLockDownPolicy',
|
|
47
|
-
'npm_config_force',
|
|
48
|
-
];
|
|
49
|
-
return Object.keys(env).reduce((obj, key) => {
|
|
50
|
-
if (!unwantedPrefixes.some((prefix) => key.startsWith(prefix))) {
|
|
51
|
-
obj[key] = env[key];
|
|
52
|
-
}
|
|
53
|
-
return obj;
|
|
54
|
-
}, {});
|
|
55
|
-
}
|
|
56
|
-
function filterUnwantedEnvVarsEAS(env) {
|
|
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((obj, key) => {
|
|
123
|
-
if (!unwantedPrefixes.some((prefix) => key.startsWith(prefix))) {
|
|
124
|
-
obj[key] = env[key];
|
|
125
|
-
}
|
|
126
|
-
return obj;
|
|
127
|
-
}, {});
|
|
128
|
-
}
|
|
129
|
-
function generateNewEnvList(processEnv) {
|
|
130
|
-
const { config } = (0, loadFromRoot_1.getMonoConfig)();
|
|
131
|
-
const envPrefixes = Array.isArray(config.envMap) ? config.envMap : [];
|
|
132
|
-
const result = { ...processEnv };
|
|
133
|
-
for (const [key, value] of Object.entries(processEnv)) {
|
|
134
|
-
// Only clone MONO_ variables
|
|
135
|
-
if (!key.startsWith('MONO_'))
|
|
136
|
-
continue;
|
|
137
|
-
// Skip secrets
|
|
138
|
-
if (key.includes('SECRET'))
|
|
139
|
-
continue;
|
|
140
|
-
const suffix = key.slice('MONO_'.length);
|
|
141
|
-
for (const prefix of envPrefixes) {
|
|
142
|
-
const mappedKey = `${prefix}_${suffix}`;
|
|
143
|
-
result[mappedKey] = value;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
return result;
|
|
147
|
-
}
|