bleam 0.0.3 → 0.0.4
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/cli.cjs +6 -4
- package/dist/cli.js +6 -4
- package/dist/cli.js.map +1 -1
- package/dist/fs-CEhcjuN6.d.ts.map +1 -1
- package/dist/fs-CfE8CHf_.d.cts.map +1 -1
- package/metro-config.cjs +1 -1
- package/package.json +12 -5
package/dist/cli.cjs
CHANGED
|
@@ -36,7 +36,7 @@ function invocationRoot() {
|
|
|
36
36
|
function parseDevOptions(argv) {
|
|
37
37
|
const root = invocationRoot();
|
|
38
38
|
let projectRoot = root;
|
|
39
|
-
let port =
|
|
39
|
+
let port = 8081;
|
|
40
40
|
let hasProjectRootArg = false;
|
|
41
41
|
for (let index = 0; index < argv.length; index += 1) {
|
|
42
42
|
const arg = argv[index];
|
|
@@ -210,8 +210,10 @@ function createDevWorkspace(projectRoot, config) {
|
|
|
210
210
|
"@types/react": packageJson.dependencies?.["@types/react"],
|
|
211
211
|
expo: packageJson.dependencies?.expo,
|
|
212
212
|
react: packageJson.dependencies?.react,
|
|
213
|
-
"react-native": packageJson.dependencies?.["react-native"]
|
|
214
|
-
|
|
213
|
+
"react-native": packageJson.dependencies?.["react-native"],
|
|
214
|
+
typescript: packageJson.dependencies?.typescript
|
|
215
|
+
},
|
|
216
|
+
expo: { install: { exclude: ["typescript"] } }
|
|
215
217
|
}, null, 2)}\n`);
|
|
216
218
|
(0, node_fs.writeFileSync)(node_path.default.join(workspaceRoot, "tsconfig.json"), `${JSON.stringify({
|
|
217
219
|
extends: "bleam/tsconfig",
|
|
@@ -459,7 +461,7 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
459
461
|
createNewProject(options);
|
|
460
462
|
if (options.run) await startDevServer({
|
|
461
463
|
projectRoot: options.projectRoot,
|
|
462
|
-
port:
|
|
464
|
+
port: 8081
|
|
463
465
|
});
|
|
464
466
|
return;
|
|
465
467
|
}
|
package/dist/cli.js
CHANGED
|
@@ -27,7 +27,7 @@ function invocationRoot() {
|
|
|
27
27
|
function parseDevOptions(argv) {
|
|
28
28
|
const root = invocationRoot();
|
|
29
29
|
let projectRoot = root;
|
|
30
|
-
let port =
|
|
30
|
+
let port = 8081;
|
|
31
31
|
let hasProjectRootArg = false;
|
|
32
32
|
for (let index = 0; index < argv.length; index += 1) {
|
|
33
33
|
const arg = argv[index];
|
|
@@ -201,8 +201,10 @@ function createDevWorkspace(projectRoot, config) {
|
|
|
201
201
|
"@types/react": packageJson.dependencies?.["@types/react"],
|
|
202
202
|
expo: packageJson.dependencies?.expo,
|
|
203
203
|
react: packageJson.dependencies?.react,
|
|
204
|
-
"react-native": packageJson.dependencies?.["react-native"]
|
|
205
|
-
|
|
204
|
+
"react-native": packageJson.dependencies?.["react-native"],
|
|
205
|
+
typescript: packageJson.dependencies?.typescript
|
|
206
|
+
},
|
|
207
|
+
expo: { install: { exclude: ["typescript"] } }
|
|
206
208
|
}, null, 2)}\n`);
|
|
207
209
|
writeFileSync(path.join(workspaceRoot, "tsconfig.json"), `${JSON.stringify({
|
|
208
210
|
extends: "bleam/tsconfig",
|
|
@@ -450,7 +452,7 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
450
452
|
createNewProject(options);
|
|
451
453
|
if (options.run) await startDevServer({
|
|
452
454
|
projectRoot: options.projectRoot,
|
|
453
|
-
port:
|
|
455
|
+
port: 8081
|
|
454
456
|
});
|
|
455
457
|
return;
|
|
456
458
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","names":["matches: string[]","value: unknown"],"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { execFileSync, spawn, spawnSync } from 'node:child_process'\nimport { createHash } from 'node:crypto'\nimport {\n cpSync,\n existsSync,\n mkdirSync,\n readFileSync,\n readdirSync,\n rmSync,\n symlinkSync,\n writeFileSync,\n} from 'node:fs'\nimport http from 'node:http'\nimport { createRequire } from 'node:module'\nimport os from 'node:os'\nimport path from 'node:path'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\n\nimport type { BleamConfig } from './config'\n\ninterface DevOptions {\n projectRoot: string\n port: number\n}\n\ninterface NewOptions {\n projectRoot: string\n run: boolean\n}\n\ninterface ProjectConfig {\n name: string\n version?: string\n bundleIdentifier?: string\n teamId?: string\n runtimeVersion: string\n sdkVersion: string\n}\n\ninterface RuntimeArtifact {\n appPath: string\n version: string\n platform: string\n}\n\ninterface BleamManifest {\n name: string\n bundleUrl: string\n platform: 'macos'\n dev: boolean\n}\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = path.dirname(\n fileURLToPath(new URL('../package.json', import.meta.url)),\n)\nconst packageJson = require('../package.json') as {\n version: string\n dependencies?: Record<string, string>\n}\nconst runtimeVersion = packageJson.version\nconst runtimePlatform = `macos-${process.arch}`\n\nfunction printUsage() {\n console.log(`Usage: bleam <command>\n\nCommands:\n new [dir] [--run] Create a new Bleam project\n dev [dir] [--port <port>] Start a Bleam dev server`)\n}\n\nfunction invocationRoot() {\n return path.isAbsolute(process.env.PWD ?? '')\n ? process.env.PWD!\n : process.cwd()\n}\n\nfunction parseDevOptions(argv: string[]): DevOptions {\n const root = invocationRoot()\n let projectRoot = root\n let port = 8082\n let hasProjectRootArg = false\n\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index]\n\n if (arg === '--port' || arg === '-p') {\n const value = argv[++index]\n port = Number(value)\n continue\n }\n\n if (arg.startsWith('--port=')) {\n port = Number(arg.slice('--port='.length))\n continue\n }\n\n if (arg === '--help' || arg === '-h') {\n printUsage()\n process.exit(0)\n }\n\n if (arg.startsWith('-')) {\n throw new Error(`Unknown option: ${arg}`)\n }\n\n projectRoot = path.resolve(root, arg)\n hasProjectRootArg = true\n }\n\n if (!Number.isInteger(port) || port <= 0) {\n throw new Error(`Invalid port: ${port}`)\n }\n\n if (!hasProjectRootArg && !isBleamProjectRoot(projectRoot)) {\n projectRoot = discoverBleamProjectRoot(projectRoot) ?? projectRoot\n }\n\n return { projectRoot: path.resolve(projectRoot), port }\n}\n\nfunction parseNewOptions(argv: string[]): NewOptions {\n const root = invocationRoot()\n let projectRoot = root\n let run = false\n\n for (const arg of argv) {\n if (arg === '--run') {\n run = true\n continue\n }\n\n if (arg === '--help' || arg === '-h') {\n printUsage()\n process.exit(0)\n }\n\n if (arg.startsWith('-')) {\n throw new Error(`Unknown option: ${arg}`)\n }\n\n projectRoot = path.resolve(root, arg)\n }\n\n return { projectRoot, run }\n}\n\nfunction isBleamProjectRoot(projectRoot: string) {\n return (\n existsSync(path.join(projectRoot, 'app.config.ts')) &&\n existsSync(path.join(projectRoot, 'app.tsx'))\n )\n}\n\nfunction discoverBleamProjectRoot(searchRoot: string) {\n const ignoredNames = new Set([\n '.bleam',\n '.expo',\n '.git',\n '.yarn',\n 'build',\n 'dist',\n 'node_modules',\n 'templates',\n ])\n const matches: string[] = []\n\n function visit(directory: string) {\n if (matches.length > 1) {\n return\n }\n\n if (isBleamProjectRoot(directory)) {\n matches.push(directory)\n return\n }\n\n for (const entry of readdirSync(directory, { withFileTypes: true })) {\n if (!entry.isDirectory() || ignoredNames.has(entry.name)) {\n continue\n }\n\n visit(path.join(directory, entry.name))\n }\n }\n\n visit(searchRoot)\n\n if (matches.length > 1) {\n throw new Error('Multiple Bleam projects found. Run bleam dev <dir>.')\n }\n\n return matches[0]\n}\n\nfunction assertStringField(value: unknown, field: keyof BleamConfig): string {\n if (typeof value !== 'string' || value.trim() === '') {\n throw new Error(`app.config.ts must define ${field}`)\n }\n return value\n}\n\nfunction loadAppConfig(projectRoot: string): BleamConfig {\n const configPath = path.join(projectRoot, 'app.config.ts')\n const loader = `\n const mod = await import(${JSON.stringify(pathToFileURL(configPath).href)});\n const config = mod.default?.default ?? mod.default ?? mod;\n process.stdout.write(JSON.stringify(config));\n `\n\n const result = spawnSync(\n process.execPath,\n ['--import', require.resolve('tsx'), '--eval', loader],\n {\n cwd: projectRoot,\n encoding: 'utf8',\n env: {\n ...process.env,\n NODE_PATH: [\n path.join(projectRoot, 'node_modules'),\n path.join(packageRoot, 'node_modules'),\n process.env.NODE_PATH,\n ]\n .filter(Boolean)\n .join(path.delimiter),\n },\n },\n )\n\n if (result.status !== 0) {\n throw new Error(result.stderr.trim() || 'Failed to load app.config.ts')\n }\n\n const value = JSON.parse(result.stdout) as Partial<BleamConfig>\n return {\n name: assertStringField(value.name, 'name'),\n version: typeof value.version === 'string' ? value.version : undefined,\n bundleIdentifier:\n typeof value.bundleIdentifier === 'string'\n ? value.bundleIdentifier\n : undefined,\n teamId: typeof value.teamId === 'string' ? value.teamId : undefined,\n }\n}\n\nfunction assertBleamConfigFiles(projectRoot: string) {\n if (existsSync(path.join(projectRoot, 'app.json'))) {\n throw new Error(\n 'Bleam projects use app.config.ts; app.json is not supported.',\n )\n }\n\n if (!existsSync(path.join(projectRoot, 'app.config.ts'))) {\n throw new Error(\n 'Missing app.config.ts. Bleam projects must define app.config.ts.',\n )\n }\n\n if (!existsSync(path.join(projectRoot, 'app.tsx'))) {\n throw new Error('Missing app.tsx. Bleam projects must define app.tsx.')\n }\n}\n\nfunction readProjectConfig(options: DevOptions): ProjectConfig {\n assertBleamConfigFiles(options.projectRoot)\n const config = loadAppConfig(options.projectRoot)\n\n return {\n name: config.name,\n version: config.version,\n bundleIdentifier: config.bundleIdentifier,\n teamId: config.teamId,\n runtimeVersion,\n sdkVersion: runtimeVersion,\n }\n}\n\nfunction slugFromName(name: string) {\n return (\n name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-|-$/g, '') || 'bleam-app'\n )\n}\n\nfunction nameFromDirectory(projectRoot: string) {\n const name = path.basename(projectRoot).replace(/[-_]+/g, ' ').trim()\n if (!name) {\n return 'Bleam App'\n }\n\n return name.replace(/\\b\\w/g, (letter) => letter.toUpperCase())\n}\n\nfunction createNewProject(options: NewOptions) {\n const templateRoot = path.join(packageRoot, 'templates', 'basic')\n\n if (!existsSync(templateRoot)) {\n throw new Error(`Missing basic template: ${templateRoot}`)\n }\n\n if (\n existsSync(options.projectRoot) &&\n readdirSync(options.projectRoot).length > 0\n ) {\n throw new Error(`Directory is not empty: ${options.projectRoot}`)\n }\n\n mkdirSync(options.projectRoot, { recursive: true })\n cpSync(templateRoot, options.projectRoot, { recursive: true })\n writeFileSync(\n path.join(options.projectRoot, 'app.config.ts'),\n `export default {\\n name: ${JSON.stringify(nameFromDirectory(options.projectRoot))},\\n}\\n`,\n )\n\n console.log(`Created Bleam project at ${options.projectRoot}`)\n}\n\nfunction createDevWorkspace(projectRoot: string, config: ProjectConfig) {\n const workspaceRoot = path.join(projectRoot, '.bleam', 'dev')\n mkdirSync(workspaceRoot, { recursive: true })\n const workspaceNodeModules = path.join(workspaceRoot, 'node_modules')\n if (!existsSync(workspaceNodeModules)) {\n symlinkSync(path.join(packageRoot, 'node_modules'), workspaceNodeModules)\n }\n\n writeFileSync(\n path.join(workspaceRoot, 'app.config.js'),\n `module.exports = ${JSON.stringify(\n {\n expo: {\n name: config.name,\n slug: slugFromName(config.name),\n version: config.version ?? '0.0.0',\n orientation: 'default',\n platforms: ['ios'],\n newArchEnabled: true,\n },\n },\n null,\n 2,\n )}\\n`,\n )\n\n writeFileSync(\n path.join(workspaceRoot, 'index.js'),\n `import { registerApp } from 'bleam/app'\\nimport App from ${JSON.stringify(path.join(projectRoot, 'app'))}\\n\\nregisterApp(App)\\n`,\n )\n\n writeFileSync(\n path.join(workspaceRoot, 'metro.config.js'),\n `const { getDefaultConfig } = require(${JSON.stringify(path.join(packageRoot, 'metro-config.cjs'))})\\n\\nmodule.exports = getDefaultConfig(__dirname)\\n`,\n )\n\n writeFileSync(\n path.join(workspaceRoot, 'package.json'),\n `${JSON.stringify(\n {\n name: `${slugFromName(config.name)}-bleam-dev`,\n version: config.version ?? '0.0.0',\n private: true,\n main: 'index.js',\n dependencies: {\n '@types/react': packageJson.dependencies?.['@types/react'],\n expo: packageJson.dependencies?.expo,\n react: packageJson.dependencies?.react,\n 'react-native': packageJson.dependencies?.['react-native'],\n },\n },\n null,\n 2,\n )}\\n`,\n )\n\n writeFileSync(\n path.join(workspaceRoot, 'tsconfig.json'),\n `${JSON.stringify(\n {\n extends: 'bleam/tsconfig',\n include: [\n path.relative(workspaceRoot, path.join(projectRoot, 'app.tsx')),\n path.relative(workspaceRoot, path.join(projectRoot, 'app.config.ts')),\n ],\n },\n null,\n 2,\n )}\\n`,\n )\n\n return workspaceRoot\n}\n\nfunction writeProjectRuntimeConfig(\n projectRoot: string,\n config: ProjectConfig,\n origin: string,\n) {\n const projectConfigPath = path.join(projectRoot, '.bleam', 'project.json')\n mkdirSync(path.dirname(projectConfigPath), { recursive: true })\n writeFileSync(\n projectConfigPath,\n `${JSON.stringify(\n {\n name: config.name,\n version: config.version,\n bundleIdentifier: config.bundleIdentifier,\n teamId: config.teamId,\n devServer: origin,\n runtimeVersion: config.runtimeVersion,\n sdkVersion: config.sdkVersion,\n },\n null,\n 2,\n )}\\n`,\n )\n return projectConfigPath\n}\n\nfunction runtimeCacheRoot() {\n return path.join(\n os.homedir(),\n 'Library',\n 'Caches',\n 'bleam',\n 'runtimes',\n runtimeVersion,\n runtimePlatform,\n )\n}\n\nfunction localDevelopmentRuntimeAppPath() {\n return path.resolve(\n packageRoot,\n '..',\n '..',\n 'app',\n 'bleam',\n 'build',\n 'Build',\n 'Products',\n 'Debug-maccatalyst',\n 'Bleam.app',\n )\n}\n\nfunction runtimeReleaseBaseUrl() {\n return (\n process.env.BLEAM_RUNTIME_RELEASE_BASE_URL ??\n 'https://github.com/bajedev/bleam-app/releases/download'\n )\n}\n\nfunction runtimeArchiveName() {\n return `bleam-runtime-v${runtimeVersion}-${runtimePlatform}.zip`\n}\n\nfunction runtimeArchiveUrl() {\n const tag = encodeURIComponent(`bleam@${runtimeVersion}`)\n return `${runtimeReleaseBaseUrl()}/${tag}/${runtimeArchiveName()}`\n}\n\nfunction sha256(filePath: string) {\n return createHash('sha256').update(readFileSync(filePath)).digest('hex')\n}\n\nasync function downloadFile(url: string, destination: string) {\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(\n `Failed to download ${url}: ${response.status} ${response.statusText}`,\n )\n }\n\n const bytes = new Uint8Array(await response.arrayBuffer())\n writeFileSync(destination, bytes)\n}\n\nasync function downloadExpectedSha256(url: string) {\n const response = await fetch(`${url}.sha256`)\n if (!response.ok) {\n return undefined\n }\n\n const text = await response.text()\n return text.trim().split(/\\s+/)[0]\n}\n\nasync function downloadRuntimeArtifact(): Promise<RuntimeArtifact> {\n if (process.platform !== 'darwin') {\n throw new Error(\n 'Bleam runtime artifacts are currently only available on macOS.',\n )\n }\n\n const cacheRoot = runtimeCacheRoot()\n const cachedAppPath = path.join(cacheRoot, 'Bleam.app')\n if (existsSync(cachedAppPath)) {\n return {\n appPath: cachedAppPath,\n version: runtimeVersion,\n platform: runtimePlatform,\n }\n }\n\n mkdirSync(cacheRoot, { recursive: true })\n const archiveUrl = runtimeArchiveUrl()\n const archivePath = path.join(cacheRoot, runtimeArchiveName())\n const extractRoot = path.join(cacheRoot, 'extract')\n\n await downloadFile(archiveUrl, archivePath)\n const expectedSha256 = await downloadExpectedSha256(archiveUrl)\n if (expectedSha256 && sha256(archivePath) !== expectedSha256) {\n rmSync(archivePath, { force: true })\n throw new Error(`Runtime artifact checksum mismatch: ${archiveUrl}`)\n }\n\n rmSync(extractRoot, { recursive: true, force: true })\n mkdirSync(extractRoot, { recursive: true })\n execFileSync('ditto', ['-x', '-k', archivePath, extractRoot], {\n stdio: 'ignore',\n })\n\n const extractedAppPath = path.join(extractRoot, 'Bleam.app')\n if (!existsSync(extractedAppPath)) {\n throw new Error(`Runtime archive did not contain Bleam.app: ${archiveUrl}`)\n }\n\n rmSync(cachedAppPath, { recursive: true, force: true })\n cpSync(extractedAppPath, cachedAppPath, { recursive: true })\n rmSync(extractRoot, { recursive: true, force: true })\n\n return {\n appPath: cachedAppPath,\n version: runtimeVersion,\n platform: runtimePlatform,\n }\n}\n\nasync function resolveRuntimeArtifact(): Promise<RuntimeArtifact> {\n const overrideAppPath = process.env.BLEAM_RUNTIME_APP\n if (overrideAppPath) {\n const appPath = path.resolve(overrideAppPath)\n if (!existsSync(appPath)) {\n throw new Error(`BLEAM_RUNTIME_APP does not exist: ${appPath}`)\n }\n\n return { appPath, version: runtimeVersion, platform: runtimePlatform }\n }\n\n const localAppPath = localDevelopmentRuntimeAppPath()\n if (existsSync(localAppPath)) {\n return {\n appPath: localAppPath,\n version: runtimeVersion,\n platform: runtimePlatform,\n }\n }\n\n return downloadRuntimeArtifact()\n}\n\nfunction copyRuntimeClient(projectRoot: string, runtime: RuntimeArtifact) {\n const clientAppPath = path.join(projectRoot, '.bleam', 'client', 'Bleam.app')\n rmSync(clientAppPath, { recursive: true, force: true })\n mkdirSync(path.dirname(clientAppPath), { recursive: true })\n cpSync(runtime.appPath, clientAppPath, { recursive: true })\n return clientAppPath\n}\n\nfunction waitForDevServer(port: number, timeoutMs = 120_000) {\n return new Promise<void>((resolve, reject) => {\n const startedAt = Date.now()\n\n const poll = () => {\n const req = http.get(`http://localhost:${port}/status`, (res) => {\n let data = ''\n res.on('data', (chunk) => {\n data += chunk.toString()\n })\n res.on('end', () => {\n if (data.includes('packager-status:running')) {\n resolve()\n return\n }\n\n retry()\n })\n })\n\n req.on('error', retry)\n req.setTimeout(2_000, () => {\n req.destroy()\n retry()\n })\n }\n\n const retry = () => {\n if (Date.now() - startedAt > timeoutMs) {\n reject(\n new Error(\n `Bleam dev server did not start within ${timeoutMs / 1000}s`,\n ),\n )\n return\n }\n\n setTimeout(poll, 500)\n }\n\n poll()\n })\n}\n\nfunction isBleamManifest(value: unknown): value is BleamManifest {\n const manifest =\n value && typeof value === 'object' ? (value as Partial<BleamManifest>) : {}\n\n return (\n typeof manifest.name === 'string' &&\n typeof manifest.bundleUrl === 'string' &&\n manifest.platform === 'macos' &&\n manifest.dev === true\n )\n}\n\nasync function readDevManifest(origin: string, timeoutMs = 30_000) {\n const manifestUrl = `${origin}/bleam/manifest.json`\n const startedAt = Date.now()\n\n while (Date.now() - startedAt <= timeoutMs) {\n try {\n const response = await fetch(manifestUrl, { cache: 'no-store' })\n const value: unknown = await response.json()\n if (response.ok && isBleamManifest(value)) {\n return value\n }\n } catch {\n // Metro can answer /status before custom middleware is ready.\n }\n\n await new Promise((resolve) => setTimeout(resolve, 500))\n }\n\n throw new Error(`Bleam manifest did not become available: ${manifestUrl}`)\n}\n\nfunction openRuntimeClient(\n appPath: string,\n projectConfigPath: string,\n manifest: BleamManifest,\n) {\n const child = spawn(\n 'open',\n [\n appPath,\n '--args',\n '--bleam-project-config',\n projectConfigPath,\n '--bleam-bundle-url',\n manifest.bundleUrl,\n '--bleam-title',\n manifest.name,\n ],\n {\n detached: true,\n stdio: 'ignore',\n },\n )\n child.unref()\n}\n\nasync function startDevServer(options: DevOptions) {\n const config = readProjectConfig(options)\n const runtime = await resolveRuntimeArtifact()\n const clientAppPath = copyRuntimeClient(options.projectRoot, runtime)\n const workspaceRoot = createDevWorkspace(options.projectRoot, config)\n const origin = `http://localhost:${options.port}`\n const projectConfigPath = writeProjectRuntimeConfig(\n options.projectRoot,\n config,\n origin,\n )\n const child = spawn(\n process.execPath,\n [\n require.resolve('expo/bin/cli'),\n 'start',\n workspaceRoot,\n '--localhost',\n '--port',\n String(options.port),\n ],\n {\n stdio: 'inherit',\n env: {\n ...process.env,\n BLEAM_DEV: '1',\n BLEAM_PROJECT_ROOT: options.projectRoot,\n BLEAM_DEV_NAME: config.name,\n BLEAM_DEV_ORIGIN: origin,\n BLEAM_DEV_PORT: String(options.port),\n BLEAM_DEV_RUNTIME_VERSION: config.runtimeVersion,\n BLEAM_DEV_SDK_VERSION: config.sdkVersion,\n NODE_PATH: [\n path.join(options.projectRoot, 'node_modules'),\n path.join(packageRoot, 'node_modules'),\n path.dirname(path.dirname(require.resolve('expo/package.json'))),\n path.dirname(path.dirname(require.resolve('react/package.json'))),\n path.dirname(\n path.dirname(require.resolve('react-native/package.json')),\n ),\n process.env.NODE_PATH,\n ]\n .filter(Boolean)\n .join(path.delimiter),\n },\n },\n )\n\n const stop = (signal: NodeJS.Signals) => {\n child.kill(signal)\n }\n\n process.on('SIGINT', () => stop('SIGINT'))\n process.on('SIGTERM', () => stop('SIGTERM'))\n child.on('exit', (code) => process.exit(code ?? 0))\n\n await waitForDevServer(options.port)\n const manifest = await readDevManifest(origin)\n if (process.env.BLEAM_NO_OPEN !== '1') {\n openRuntimeClient(clientAppPath, projectConfigPath, manifest)\n }\n}\n\nasync function main(argv = process.argv.slice(2)) {\n const [command, ...args] = argv\n\n if (!command || command === '--help' || command === '-h') {\n printUsage()\n return\n }\n\n if (command === 'new') {\n const options = parseNewOptions(args)\n createNewProject(options)\n if (options.run) {\n await startDevServer({ projectRoot: options.projectRoot, port: 8082 })\n }\n return\n }\n\n if (command === 'dev') {\n await startDevServer(parseDevOptions(args))\n return\n }\n\n throw new Error(`Unknown command: ${command}`)\n}\n\nmain().catch((error) => {\n console.error(error instanceof Error ? error.message : String(error))\n process.exit(1)\n})\n"],"mappings":";;;;;;;;;;;AAsDA,MAAM,UAAU,cAAc,OAAO,KAAK,IAAI;AAC9C,MAAM,cAAc,KAAK,QACvB,cAAc,IAAI,IAAI,mBAAmB,OAAO,KAAK,IAAI,CAAC,CAC3D;AACD,MAAM,cAAc,QAAQ,kBAAkB;AAI9C,MAAM,iBAAiB,YAAY;AACnC,MAAM,kBAAkB,SAAS,QAAQ;AAEzC,SAAS,aAAa;AACpB,SAAQ,IAAI;;;;sDAIwC;;AAGtD,SAAS,iBAAiB;AACxB,QAAO,KAAK,WAAW,QAAQ,IAAI,OAAO,GAAG,GACzC,QAAQ,IAAI,MACZ,QAAQ,KAAK;;AAGnB,SAAS,gBAAgB,MAA4B;CACnD,MAAM,OAAO,gBAAgB;CAC7B,IAAI,cAAc;CAClB,IAAI,OAAO;CACX,IAAI,oBAAoB;AAExB,MAAK,IAAI,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;EACnD,MAAM,MAAM,KAAK;AAEjB,MAAI,QAAQ,YAAY,QAAQ,MAAM;GACpC,MAAM,QAAQ,KAAK,EAAE;AACrB,UAAO,OAAO,MAAM;AACpB;;AAGF,MAAI,IAAI,WAAW,UAAU,EAAE;AAC7B,UAAO,OAAO,IAAI,MAAM,EAAiB,CAAC;AAC1C;;AAGF,MAAI,QAAQ,YAAY,QAAQ,MAAM;AACpC,eAAY;AACZ,WAAQ,KAAK,EAAE;;AAGjB,MAAI,IAAI,WAAW,IAAI,CACrB,OAAM,IAAI,MAAM,mBAAmB,MAAM;AAG3C,gBAAc,KAAK,QAAQ,MAAM,IAAI;AACrC,sBAAoB;;AAGtB,KAAI,CAAC,OAAO,UAAU,KAAK,IAAI,QAAQ,EACrC,OAAM,IAAI,MAAM,iBAAiB,OAAO;AAG1C,KAAI,CAAC,qBAAqB,CAAC,mBAAmB,YAAY,CACxD,eAAc,yBAAyB,YAAY,IAAI;AAGzD,QAAO;EAAE,aAAa,KAAK,QAAQ,YAAY;EAAE;EAAM;;AAGzD,SAAS,gBAAgB,MAA4B;CACnD,MAAM,OAAO,gBAAgB;CAC7B,IAAI,cAAc;CAClB,IAAI,MAAM;AAEV,MAAK,MAAM,OAAO,MAAM;AACtB,MAAI,QAAQ,SAAS;AACnB,SAAM;AACN;;AAGF,MAAI,QAAQ,YAAY,QAAQ,MAAM;AACpC,eAAY;AACZ,WAAQ,KAAK,EAAE;;AAGjB,MAAI,IAAI,WAAW,IAAI,CACrB,OAAM,IAAI,MAAM,mBAAmB,MAAM;AAG3C,gBAAc,KAAK,QAAQ,MAAM,IAAI;;AAGvC,QAAO;EAAE;EAAa;EAAK;;AAG7B,SAAS,mBAAmB,aAAqB;AAC/C,QACE,WAAW,KAAK,KAAK,aAAa,gBAAgB,CAAC,IACnD,WAAW,KAAK,KAAK,aAAa,UAAU,CAAC;;AAIjD,SAAS,yBAAyB,YAAoB;CACpD,MAAM,eAAe,IAAI,IAAI;EAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CACF,MAAMA,UAAoB,EAAE;CAE5B,SAAS,MAAM,WAAmB;AAChC,MAAI,QAAQ,SAAS,EACnB;AAGF,MAAI,mBAAmB,UAAU,EAAE;AACjC,WAAQ,KAAK,UAAU;AACvB;;AAGF,OAAK,MAAM,SAAS,YAAY,WAAW,EAAE,eAAe,MAAM,CAAC,EAAE;AACnE,OAAI,CAAC,MAAM,aAAa,IAAI,aAAa,IAAI,MAAM,KAAK,CACtD;AAGF,SAAM,KAAK,KAAK,WAAW,MAAM,KAAK,CAAC;;;AAI3C,OAAM,WAAW;AAEjB,KAAI,QAAQ,SAAS,EACnB,OAAM,IAAI,MAAM,sDAAsD;AAGxE,QAAO,QAAQ;;AAGjB,SAAS,kBAAkB,OAAgB,OAAkC;AAC3E,KAAI,OAAO,UAAU,YAAY,MAAM,MAAM,KAAK,GAChD,OAAM,IAAI,MAAM,6BAA6B,QAAQ;AAEvD,QAAO;;AAGT,SAAS,cAAc,aAAkC;CACvD,MAAM,aAAa,KAAK,KAAK,aAAa,gBAAgB;CAC1D,MAAM,SAAS;+BACc,KAAK,UAAU,cAAc,WAAW,CAAC,KAAK,CAAC;;;;CAK5E,MAAM,SAAS,UACb,QAAQ,UACR;EAAC;EAAY,QAAQ,QAAQ,MAAM;EAAE;EAAU;EAAO,EACtD;EACE,KAAK;EACL,UAAU;EACV,KAAK;GACH,GAAG,QAAQ;GACX,WAAW;IACT,KAAK,KAAK,aAAa,eAAe;IACtC,KAAK,KAAK,aAAa,eAAe;IACtC,QAAQ,IAAI;IACb,CACE,OAAO,QAAQ,CACf,KAAK,KAAK,UAAU;GACxB;EACF,CACF;AAED,KAAI,OAAO,WAAW,EACpB,OAAM,IAAI,MAAM,OAAO,OAAO,MAAM,IAAI,+BAA+B;CAGzE,MAAM,QAAQ,KAAK,MAAM,OAAO,OAAO;AACvC,QAAO;EACL,MAAM,kBAAkB,MAAM,MAAM,OAAO;EAC3C,SAAS,OAAO,MAAM,YAAY,WAAW,MAAM,UAAU;EAC7D,kBACE,OAAO,MAAM,qBAAqB,WAC9B,MAAM,mBACN;EACN,QAAQ,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS;EAC3D;;AAGH,SAAS,uBAAuB,aAAqB;AACnD,KAAI,WAAW,KAAK,KAAK,aAAa,WAAW,CAAC,CAChD,OAAM,IAAI,MACR,+DACD;AAGH,KAAI,CAAC,WAAW,KAAK,KAAK,aAAa,gBAAgB,CAAC,CACtD,OAAM,IAAI,MACR,mEACD;AAGH,KAAI,CAAC,WAAW,KAAK,KAAK,aAAa,UAAU,CAAC,CAChD,OAAM,IAAI,MAAM,uDAAuD;;AAI3E,SAAS,kBAAkB,SAAoC;AAC7D,wBAAuB,QAAQ,YAAY;CAC3C,MAAM,SAAS,cAAc,QAAQ,YAAY;AAEjD,QAAO;EACL,MAAM,OAAO;EACb,SAAS,OAAO;EAChB,kBAAkB,OAAO;EACzB,QAAQ,OAAO;EACf;EACA,YAAY;EACb;;AAGH,SAAS,aAAa,MAAc;AAClC,QACE,KACG,MAAM,CACN,aAAa,CACb,QAAQ,eAAe,IAAI,CAC3B,QAAQ,UAAU,GAAG,IAAI;;AAIhC,SAAS,kBAAkB,aAAqB;CAC9C,MAAM,OAAO,KAAK,SAAS,YAAY,CAAC,QAAQ,UAAU,IAAI,CAAC,MAAM;AACrE,KAAI,CAAC,KACH,QAAO;AAGT,QAAO,KAAK,QAAQ,UAAU,WAAW,OAAO,aAAa,CAAC;;AAGhE,SAAS,iBAAiB,SAAqB;CAC7C,MAAM,eAAe,KAAK,KAAK,aAAa,aAAa,QAAQ;AAEjE,KAAI,CAAC,WAAW,aAAa,CAC3B,OAAM,IAAI,MAAM,2BAA2B,eAAe;AAG5D,KACE,WAAW,QAAQ,YAAY,IAC/B,YAAY,QAAQ,YAAY,CAAC,SAAS,EAE1C,OAAM,IAAI,MAAM,2BAA2B,QAAQ,cAAc;AAGnE,WAAU,QAAQ,aAAa,EAAE,WAAW,MAAM,CAAC;AACnD,QAAO,cAAc,QAAQ,aAAa,EAAE,WAAW,MAAM,CAAC;AAC9D,eACE,KAAK,KAAK,QAAQ,aAAa,gBAAgB,EAC/C,6BAA6B,KAAK,UAAU,kBAAkB,QAAQ,YAAY,CAAC,CAAC,QACrF;AAED,SAAQ,IAAI,4BAA4B,QAAQ,cAAc;;AAGhE,SAAS,mBAAmB,aAAqB,QAAuB;CACtE,MAAM,gBAAgB,KAAK,KAAK,aAAa,UAAU,MAAM;AAC7D,WAAU,eAAe,EAAE,WAAW,MAAM,CAAC;CAC7C,MAAM,uBAAuB,KAAK,KAAK,eAAe,eAAe;AACrE,KAAI,CAAC,WAAW,qBAAqB,CACnC,aAAY,KAAK,KAAK,aAAa,eAAe,EAAE,qBAAqB;AAG3E,eACE,KAAK,KAAK,eAAe,gBAAgB,EACzC,oBAAoB,KAAK,UACvB,EACE,MAAM;EACJ,MAAM,OAAO;EACb,MAAM,aAAa,OAAO,KAAK;EAC/B,SAAS,OAAO,WAAW;EAC3B,aAAa;EACb,WAAW,CAAC,MAAM;EAClB,gBAAgB;EACjB,EACF,EACD,MACA,EACD,CAAC,IACH;AAED,eACE,KAAK,KAAK,eAAe,WAAW,EACpC,4DAA4D,KAAK,UAAU,KAAK,KAAK,aAAa,MAAM,CAAC,CAAC,wBAC3G;AAED,eACE,KAAK,KAAK,eAAe,kBAAkB,EAC3C,wCAAwC,KAAK,UAAU,KAAK,KAAK,aAAa,mBAAmB,CAAC,CAAC,qDACpG;AAED,eACE,KAAK,KAAK,eAAe,eAAe,EACxC,GAAG,KAAK,UACN;EACE,MAAM,GAAG,aAAa,OAAO,KAAK,CAAC;EACnC,SAAS,OAAO,WAAW;EAC3B,SAAS;EACT,MAAM;EACN,cAAc;GACZ,gBAAgB,YAAY,eAAe;GAC3C,MAAM,YAAY,cAAc;GAChC,OAAO,YAAY,cAAc;GACjC,gBAAgB,YAAY,eAAe;GAC5C;EACF,EACD,MACA,EACD,CAAC,IACH;AAED,eACE,KAAK,KAAK,eAAe,gBAAgB,EACzC,GAAG,KAAK,UACN;EACE,SAAS;EACT,SAAS,CACP,KAAK,SAAS,eAAe,KAAK,KAAK,aAAa,UAAU,CAAC,EAC/D,KAAK,SAAS,eAAe,KAAK,KAAK,aAAa,gBAAgB,CAAC,CACtE;EACF,EACD,MACA,EACD,CAAC,IACH;AAED,QAAO;;AAGT,SAAS,0BACP,aACA,QACA,QACA;CACA,MAAM,oBAAoB,KAAK,KAAK,aAAa,UAAU,eAAe;AAC1E,WAAU,KAAK,QAAQ,kBAAkB,EAAE,EAAE,WAAW,MAAM,CAAC;AAC/D,eACE,mBACA,GAAG,KAAK,UACN;EACE,MAAM,OAAO;EACb,SAAS,OAAO;EAChB,kBAAkB,OAAO;EACzB,QAAQ,OAAO;EACf,WAAW;EACX,gBAAgB,OAAO;EACvB,YAAY,OAAO;EACpB,EACD,MACA,EACD,CAAC,IACH;AACD,QAAO;;AAGT,SAAS,mBAAmB;AAC1B,QAAO,KAAK,KACV,GAAG,SAAS,EACZ,WACA,UACA,SACA,YACA,gBACA,gBACD;;AAGH,SAAS,iCAAiC;AACxC,QAAO,KAAK,QACV,aACA,MACA,MACA,OACA,SACA,SACA,SACA,YACA,qBACA,YACD;;AAGH,SAAS,wBAAwB;AAC/B,QACE,QAAQ,IAAI,kCACZ;;AAIJ,SAAS,qBAAqB;AAC5B,QAAO,kBAAkB,eAAe,GAAG,gBAAgB;;AAG7D,SAAS,oBAAoB;CAC3B,MAAM,MAAM,mBAAmB,SAAS,iBAAiB;AACzD,QAAO,GAAG,uBAAuB,CAAC,GAAG,IAAI,GAAG,oBAAoB;;AAGlE,SAAS,OAAO,UAAkB;AAChC,QAAO,WAAW,SAAS,CAAC,OAAO,aAAa,SAAS,CAAC,CAAC,OAAO,MAAM;;AAG1E,eAAe,aAAa,KAAa,aAAqB;CAC5D,MAAM,WAAW,MAAM,MAAM,IAAI;AACjC,KAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MACR,sBAAsB,IAAI,IAAI,SAAS,OAAO,GAAG,SAAS,aAC3D;AAIH,eAAc,aADA,IAAI,WAAW,MAAM,SAAS,aAAa,CAAC,CACzB;;AAGnC,eAAe,uBAAuB,KAAa;CACjD,MAAM,WAAW,MAAM,MAAM,GAAG,IAAI,SAAS;AAC7C,KAAI,CAAC,SAAS,GACZ;AAIF,SADa,MAAM,SAAS,MAAM,EACtB,MAAM,CAAC,MAAM,MAAM,CAAC;;AAGlC,eAAe,0BAAoD;AACjE,KAAI,QAAQ,aAAa,SACvB,OAAM,IAAI,MACR,iEACD;CAGH,MAAM,YAAY,kBAAkB;CACpC,MAAM,gBAAgB,KAAK,KAAK,WAAW,YAAY;AACvD,KAAI,WAAW,cAAc,CAC3B,QAAO;EACL,SAAS;EACT,SAAS;EACT,UAAU;EACX;AAGH,WAAU,WAAW,EAAE,WAAW,MAAM,CAAC;CACzC,MAAM,aAAa,mBAAmB;CACtC,MAAM,cAAc,KAAK,KAAK,WAAW,oBAAoB,CAAC;CAC9D,MAAM,cAAc,KAAK,KAAK,WAAW,UAAU;AAEnD,OAAM,aAAa,YAAY,YAAY;CAC3C,MAAM,iBAAiB,MAAM,uBAAuB,WAAW;AAC/D,KAAI,kBAAkB,OAAO,YAAY,KAAK,gBAAgB;AAC5D,SAAO,aAAa,EAAE,OAAO,MAAM,CAAC;AACpC,QAAM,IAAI,MAAM,uCAAuC,aAAa;;AAGtE,QAAO,aAAa;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC;AACrD,WAAU,aAAa,EAAE,WAAW,MAAM,CAAC;AAC3C,cAAa,SAAS;EAAC;EAAM;EAAM;EAAa;EAAY,EAAE,EAC5D,OAAO,UACR,CAAC;CAEF,MAAM,mBAAmB,KAAK,KAAK,aAAa,YAAY;AAC5D,KAAI,CAAC,WAAW,iBAAiB,CAC/B,OAAM,IAAI,MAAM,8CAA8C,aAAa;AAG7E,QAAO,eAAe;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC;AACvD,QAAO,kBAAkB,eAAe,EAAE,WAAW,MAAM,CAAC;AAC5D,QAAO,aAAa;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC;AAErD,QAAO;EACL,SAAS;EACT,SAAS;EACT,UAAU;EACX;;AAGH,eAAe,yBAAmD;CAChE,MAAM,kBAAkB,QAAQ,IAAI;AACpC,KAAI,iBAAiB;EACnB,MAAM,UAAU,KAAK,QAAQ,gBAAgB;AAC7C,MAAI,CAAC,WAAW,QAAQ,CACtB,OAAM,IAAI,MAAM,qCAAqC,UAAU;AAGjE,SAAO;GAAE;GAAS,SAAS;GAAgB,UAAU;GAAiB;;CAGxE,MAAM,eAAe,gCAAgC;AACrD,KAAI,WAAW,aAAa,CAC1B,QAAO;EACL,SAAS;EACT,SAAS;EACT,UAAU;EACX;AAGH,QAAO,yBAAyB;;AAGlC,SAAS,kBAAkB,aAAqB,SAA0B;CACxE,MAAM,gBAAgB,KAAK,KAAK,aAAa,UAAU,UAAU,YAAY;AAC7E,QAAO,eAAe;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC;AACvD,WAAU,KAAK,QAAQ,cAAc,EAAE,EAAE,WAAW,MAAM,CAAC;AAC3D,QAAO,QAAQ,SAAS,eAAe,EAAE,WAAW,MAAM,CAAC;AAC3D,QAAO;;AAGT,SAAS,iBAAiB,MAAc,YAAY,MAAS;AAC3D,QAAO,IAAI,SAAe,SAAS,WAAW;EAC5C,MAAM,YAAY,KAAK,KAAK;EAE5B,MAAM,aAAa;GACjB,MAAM,MAAM,KAAK,IAAI,oBAAoB,KAAK,WAAW,QAAQ;IAC/D,IAAI,OAAO;AACX,QAAI,GAAG,SAAS,UAAU;AACxB,aAAQ,MAAM,UAAU;MACxB;AACF,QAAI,GAAG,aAAa;AAClB,SAAI,KAAK,SAAS,0BAA0B,EAAE;AAC5C,eAAS;AACT;;AAGF,YAAO;MACP;KACF;AAEF,OAAI,GAAG,SAAS,MAAM;AACtB,OAAI,WAAW,WAAa;AAC1B,QAAI,SAAS;AACb,WAAO;KACP;;EAGJ,MAAM,cAAc;AAClB,OAAI,KAAK,KAAK,GAAG,YAAY,WAAW;AACtC,2BACE,IAAI,MACF,yCAAyC,YAAY,IAAK,GAC3D,CACF;AACD;;AAGF,cAAW,MAAM,IAAI;;AAGvB,QAAM;GACN;;AAGJ,SAAS,gBAAgB,OAAwC;CAC/D,MAAM,WACJ,SAAS,OAAO,UAAU,WAAY,QAAmC,EAAE;AAE7E,QACE,OAAO,SAAS,SAAS,YACzB,OAAO,SAAS,cAAc,YAC9B,SAAS,aAAa,WACtB,SAAS,QAAQ;;AAIrB,eAAe,gBAAgB,QAAgB,YAAY,KAAQ;CACjE,MAAM,cAAc,GAAG,OAAO;CAC9B,MAAM,YAAY,KAAK,KAAK;AAE5B,QAAO,KAAK,KAAK,GAAG,aAAa,WAAW;AAC1C,MAAI;GACF,MAAM,WAAW,MAAM,MAAM,aAAa,EAAE,OAAO,YAAY,CAAC;GAChE,MAAMC,QAAiB,MAAM,SAAS,MAAM;AAC5C,OAAI,SAAS,MAAM,gBAAgB,MAAM,CACvC,QAAO;UAEH;AAIR,QAAM,IAAI,SAAS,YAAY,WAAW,SAAS,IAAI,CAAC;;AAG1D,OAAM,IAAI,MAAM,4CAA4C,cAAc;;AAG5E,SAAS,kBACP,SACA,mBACA,UACA;AAkBA,CAjBc,MACZ,QACA;EACE;EACA;EACA;EACA;EACA;EACA,SAAS;EACT;EACA,SAAS;EACV,EACD;EACE,UAAU;EACV,OAAO;EACR,CACF,CACK,OAAO;;AAGf,eAAe,eAAe,SAAqB;CACjD,MAAM,SAAS,kBAAkB,QAAQ;CACzC,MAAM,UAAU,MAAM,wBAAwB;CAC9C,MAAM,gBAAgB,kBAAkB,QAAQ,aAAa,QAAQ;CACrE,MAAM,gBAAgB,mBAAmB,QAAQ,aAAa,OAAO;CACrE,MAAM,SAAS,oBAAoB,QAAQ;CAC3C,MAAM,oBAAoB,0BACxB,QAAQ,aACR,QACA,OACD;CACD,MAAM,QAAQ,MACZ,QAAQ,UACR;EACE,QAAQ,QAAQ,eAAe;EAC/B;EACA;EACA;EACA;EACA,OAAO,QAAQ,KAAK;EACrB,EACD;EACE,OAAO;EACP,KAAK;GACH,GAAG,QAAQ;GACX,WAAW;GACX,oBAAoB,QAAQ;GAC5B,gBAAgB,OAAO;GACvB,kBAAkB;GAClB,gBAAgB,OAAO,QAAQ,KAAK;GACpC,2BAA2B,OAAO;GAClC,uBAAuB,OAAO;GAC9B,WAAW;IACT,KAAK,KAAK,QAAQ,aAAa,eAAe;IAC9C,KAAK,KAAK,aAAa,eAAe;IACtC,KAAK,QAAQ,KAAK,QAAQ,QAAQ,QAAQ,oBAAoB,CAAC,CAAC;IAChE,KAAK,QAAQ,KAAK,QAAQ,QAAQ,QAAQ,qBAAqB,CAAC,CAAC;IACjE,KAAK,QACH,KAAK,QAAQ,QAAQ,QAAQ,4BAA4B,CAAC,CAC3D;IACD,QAAQ,IAAI;IACb,CACE,OAAO,QAAQ,CACf,KAAK,KAAK,UAAU;GACxB;EACF,CACF;CAED,MAAM,QAAQ,WAA2B;AACvC,QAAM,KAAK,OAAO;;AAGpB,SAAQ,GAAG,gBAAgB,KAAK,SAAS,CAAC;AAC1C,SAAQ,GAAG,iBAAiB,KAAK,UAAU,CAAC;AAC5C,OAAM,GAAG,SAAS,SAAS,QAAQ,KAAK,QAAQ,EAAE,CAAC;AAEnD,OAAM,iBAAiB,QAAQ,KAAK;CACpC,MAAM,WAAW,MAAM,gBAAgB,OAAO;AAC9C,KAAI,QAAQ,IAAI,kBAAkB,IAChC,mBAAkB,eAAe,mBAAmB,SAAS;;AAIjE,eAAe,KAAK,OAAO,QAAQ,KAAK,MAAM,EAAE,EAAE;CAChD,MAAM,CAAC,SAAS,GAAG,QAAQ;AAE3B,KAAI,CAAC,WAAW,YAAY,YAAY,YAAY,MAAM;AACxD,cAAY;AACZ;;AAGF,KAAI,YAAY,OAAO;EACrB,MAAM,UAAU,gBAAgB,KAAK;AACrC,mBAAiB,QAAQ;AACzB,MAAI,QAAQ,IACV,OAAM,eAAe;GAAE,aAAa,QAAQ;GAAa,MAAM;GAAM,CAAC;AAExE;;AAGF,KAAI,YAAY,OAAO;AACrB,QAAM,eAAe,gBAAgB,KAAK,CAAC;AAC3C;;AAGF,OAAM,IAAI,MAAM,oBAAoB,UAAU;;AAGhD,MAAM,CAAC,OAAO,UAAU;AACtB,SAAQ,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;AACrE,SAAQ,KAAK,EAAE;EACf"}
|
|
1
|
+
{"version":3,"file":"cli.js","names":["matches: string[]","value: unknown"],"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { execFileSync, spawn, spawnSync } from 'node:child_process'\nimport { createHash } from 'node:crypto'\nimport {\n cpSync,\n existsSync,\n mkdirSync,\n readFileSync,\n readdirSync,\n rmSync,\n symlinkSync,\n writeFileSync,\n} from 'node:fs'\nimport http from 'node:http'\nimport { createRequire } from 'node:module'\nimport os from 'node:os'\nimport path from 'node:path'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\n\nimport type { BleamConfig } from './config'\n\ninterface DevOptions {\n projectRoot: string\n port: number\n}\n\ninterface NewOptions {\n projectRoot: string\n run: boolean\n}\n\ninterface ProjectConfig {\n name: string\n version?: string\n bundleIdentifier?: string\n teamId?: string\n runtimeVersion: string\n sdkVersion: string\n}\n\ninterface RuntimeArtifact {\n appPath: string\n version: string\n platform: string\n}\n\ninterface BleamManifest {\n name: string\n bundleUrl: string\n platform: 'macos'\n dev: boolean\n}\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = path.dirname(\n fileURLToPath(new URL('../package.json', import.meta.url)),\n)\nconst packageJson = require('../package.json') as {\n version: string\n dependencies?: Record<string, string>\n}\nconst runtimeVersion = packageJson.version\nconst runtimePlatform = `macos-${process.arch}`\n\nfunction printUsage() {\n console.log(`Usage: bleam <command>\n\nCommands:\n new [dir] [--run] Create a new Bleam project\n dev [dir] [--port <port>] Start a Bleam dev server`)\n}\n\nfunction invocationRoot() {\n return path.isAbsolute(process.env.PWD ?? '')\n ? process.env.PWD!\n : process.cwd()\n}\n\nfunction parseDevOptions(argv: string[]): DevOptions {\n const root = invocationRoot()\n let projectRoot = root\n let port = 8081\n let hasProjectRootArg = false\n\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index]\n\n if (arg === '--port' || arg === '-p') {\n const value = argv[++index]\n port = Number(value)\n continue\n }\n\n if (arg.startsWith('--port=')) {\n port = Number(arg.slice('--port='.length))\n continue\n }\n\n if (arg === '--help' || arg === '-h') {\n printUsage()\n process.exit(0)\n }\n\n if (arg.startsWith('-')) {\n throw new Error(`Unknown option: ${arg}`)\n }\n\n projectRoot = path.resolve(root, arg)\n hasProjectRootArg = true\n }\n\n if (!Number.isInteger(port) || port <= 0) {\n throw new Error(`Invalid port: ${port}`)\n }\n\n if (!hasProjectRootArg && !isBleamProjectRoot(projectRoot)) {\n projectRoot = discoverBleamProjectRoot(projectRoot) ?? projectRoot\n }\n\n return { projectRoot: path.resolve(projectRoot), port }\n}\n\nfunction parseNewOptions(argv: string[]): NewOptions {\n const root = invocationRoot()\n let projectRoot = root\n let run = false\n\n for (const arg of argv) {\n if (arg === '--run') {\n run = true\n continue\n }\n\n if (arg === '--help' || arg === '-h') {\n printUsage()\n process.exit(0)\n }\n\n if (arg.startsWith('-')) {\n throw new Error(`Unknown option: ${arg}`)\n }\n\n projectRoot = path.resolve(root, arg)\n }\n\n return { projectRoot, run }\n}\n\nfunction isBleamProjectRoot(projectRoot: string) {\n return (\n existsSync(path.join(projectRoot, 'app.config.ts')) &&\n existsSync(path.join(projectRoot, 'app.tsx'))\n )\n}\n\nfunction discoverBleamProjectRoot(searchRoot: string) {\n const ignoredNames = new Set([\n '.bleam',\n '.expo',\n '.git',\n '.yarn',\n 'build',\n 'dist',\n 'node_modules',\n 'templates',\n ])\n const matches: string[] = []\n\n function visit(directory: string) {\n if (matches.length > 1) {\n return\n }\n\n if (isBleamProjectRoot(directory)) {\n matches.push(directory)\n return\n }\n\n for (const entry of readdirSync(directory, { withFileTypes: true })) {\n if (!entry.isDirectory() || ignoredNames.has(entry.name)) {\n continue\n }\n\n visit(path.join(directory, entry.name))\n }\n }\n\n visit(searchRoot)\n\n if (matches.length > 1) {\n throw new Error('Multiple Bleam projects found. Run bleam dev <dir>.')\n }\n\n return matches[0]\n}\n\nfunction assertStringField(value: unknown, field: keyof BleamConfig): string {\n if (typeof value !== 'string' || value.trim() === '') {\n throw new Error(`app.config.ts must define ${field}`)\n }\n return value\n}\n\nfunction loadAppConfig(projectRoot: string): BleamConfig {\n const configPath = path.join(projectRoot, 'app.config.ts')\n const loader = `\n const mod = await import(${JSON.stringify(pathToFileURL(configPath).href)});\n const config = mod.default?.default ?? mod.default ?? mod;\n process.stdout.write(JSON.stringify(config));\n `\n\n const result = spawnSync(\n process.execPath,\n ['--import', require.resolve('tsx'), '--eval', loader],\n {\n cwd: projectRoot,\n encoding: 'utf8',\n env: {\n ...process.env,\n NODE_PATH: [\n path.join(projectRoot, 'node_modules'),\n path.join(packageRoot, 'node_modules'),\n process.env.NODE_PATH,\n ]\n .filter(Boolean)\n .join(path.delimiter),\n },\n },\n )\n\n if (result.status !== 0) {\n throw new Error(result.stderr.trim() || 'Failed to load app.config.ts')\n }\n\n const value = JSON.parse(result.stdout) as Partial<BleamConfig>\n return {\n name: assertStringField(value.name, 'name'),\n version: typeof value.version === 'string' ? value.version : undefined,\n bundleIdentifier:\n typeof value.bundleIdentifier === 'string'\n ? value.bundleIdentifier\n : undefined,\n teamId: typeof value.teamId === 'string' ? value.teamId : undefined,\n }\n}\n\nfunction assertBleamConfigFiles(projectRoot: string) {\n if (existsSync(path.join(projectRoot, 'app.json'))) {\n throw new Error(\n 'Bleam projects use app.config.ts; app.json is not supported.',\n )\n }\n\n if (!existsSync(path.join(projectRoot, 'app.config.ts'))) {\n throw new Error(\n 'Missing app.config.ts. Bleam projects must define app.config.ts.',\n )\n }\n\n if (!existsSync(path.join(projectRoot, 'app.tsx'))) {\n throw new Error('Missing app.tsx. Bleam projects must define app.tsx.')\n }\n}\n\nfunction readProjectConfig(options: DevOptions): ProjectConfig {\n assertBleamConfigFiles(options.projectRoot)\n const config = loadAppConfig(options.projectRoot)\n\n return {\n name: config.name,\n version: config.version,\n bundleIdentifier: config.bundleIdentifier,\n teamId: config.teamId,\n runtimeVersion,\n sdkVersion: runtimeVersion,\n }\n}\n\nfunction slugFromName(name: string) {\n return (\n name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-|-$/g, '') || 'bleam-app'\n )\n}\n\nfunction nameFromDirectory(projectRoot: string) {\n const name = path.basename(projectRoot).replace(/[-_]+/g, ' ').trim()\n if (!name) {\n return 'Bleam App'\n }\n\n return name.replace(/\\b\\w/g, (letter) => letter.toUpperCase())\n}\n\nfunction createNewProject(options: NewOptions) {\n const templateRoot = path.join(packageRoot, 'templates', 'basic')\n\n if (!existsSync(templateRoot)) {\n throw new Error(`Missing basic template: ${templateRoot}`)\n }\n\n if (\n existsSync(options.projectRoot) &&\n readdirSync(options.projectRoot).length > 0\n ) {\n throw new Error(`Directory is not empty: ${options.projectRoot}`)\n }\n\n mkdirSync(options.projectRoot, { recursive: true })\n cpSync(templateRoot, options.projectRoot, { recursive: true })\n writeFileSync(\n path.join(options.projectRoot, 'app.config.ts'),\n `export default {\\n name: ${JSON.stringify(nameFromDirectory(options.projectRoot))},\\n}\\n`,\n )\n\n console.log(`Created Bleam project at ${options.projectRoot}`)\n}\n\nfunction createDevWorkspace(projectRoot: string, config: ProjectConfig) {\n const workspaceRoot = path.join(projectRoot, '.bleam', 'dev')\n mkdirSync(workspaceRoot, { recursive: true })\n const workspaceNodeModules = path.join(workspaceRoot, 'node_modules')\n if (!existsSync(workspaceNodeModules)) {\n symlinkSync(path.join(packageRoot, 'node_modules'), workspaceNodeModules)\n }\n\n writeFileSync(\n path.join(workspaceRoot, 'app.config.js'),\n `module.exports = ${JSON.stringify(\n {\n expo: {\n name: config.name,\n slug: slugFromName(config.name),\n version: config.version ?? '0.0.0',\n orientation: 'default',\n platforms: ['ios'],\n newArchEnabled: true,\n },\n },\n null,\n 2,\n )}\\n`,\n )\n\n writeFileSync(\n path.join(workspaceRoot, 'index.js'),\n `import { registerApp } from 'bleam/app'\\nimport App from ${JSON.stringify(path.join(projectRoot, 'app'))}\\n\\nregisterApp(App)\\n`,\n )\n\n writeFileSync(\n path.join(workspaceRoot, 'metro.config.js'),\n `const { getDefaultConfig } = require(${JSON.stringify(path.join(packageRoot, 'metro-config.cjs'))})\\n\\nmodule.exports = getDefaultConfig(__dirname)\\n`,\n )\n\n writeFileSync(\n path.join(workspaceRoot, 'package.json'),\n `${JSON.stringify(\n {\n name: `${slugFromName(config.name)}-bleam-dev`,\n version: config.version ?? '0.0.0',\n private: true,\n main: 'index.js',\n dependencies: {\n '@types/react': packageJson.dependencies?.['@types/react'],\n expo: packageJson.dependencies?.expo,\n react: packageJson.dependencies?.react,\n 'react-native': packageJson.dependencies?.['react-native'],\n typescript: packageJson.dependencies?.typescript,\n },\n expo: {\n install: {\n exclude: ['typescript'],\n },\n },\n },\n null,\n 2,\n )}\\n`,\n )\n\n writeFileSync(\n path.join(workspaceRoot, 'tsconfig.json'),\n `${JSON.stringify(\n {\n extends: 'bleam/tsconfig',\n include: [\n path.relative(workspaceRoot, path.join(projectRoot, 'app.tsx')),\n path.relative(workspaceRoot, path.join(projectRoot, 'app.config.ts')),\n ],\n },\n null,\n 2,\n )}\\n`,\n )\n\n return workspaceRoot\n}\n\nfunction writeProjectRuntimeConfig(\n projectRoot: string,\n config: ProjectConfig,\n origin: string,\n) {\n const projectConfigPath = path.join(projectRoot, '.bleam', 'project.json')\n mkdirSync(path.dirname(projectConfigPath), { recursive: true })\n writeFileSync(\n projectConfigPath,\n `${JSON.stringify(\n {\n name: config.name,\n version: config.version,\n bundleIdentifier: config.bundleIdentifier,\n teamId: config.teamId,\n devServer: origin,\n runtimeVersion: config.runtimeVersion,\n sdkVersion: config.sdkVersion,\n },\n null,\n 2,\n )}\\n`,\n )\n return projectConfigPath\n}\n\nfunction runtimeCacheRoot() {\n return path.join(\n os.homedir(),\n 'Library',\n 'Caches',\n 'bleam',\n 'runtimes',\n runtimeVersion,\n runtimePlatform,\n )\n}\n\nfunction localDevelopmentRuntimeAppPath() {\n return path.resolve(\n packageRoot,\n '..',\n '..',\n 'app',\n 'bleam',\n 'build',\n 'Build',\n 'Products',\n 'Debug-maccatalyst',\n 'Bleam.app',\n )\n}\n\nfunction runtimeReleaseBaseUrl() {\n return (\n process.env.BLEAM_RUNTIME_RELEASE_BASE_URL ??\n 'https://github.com/bajedev/bleam-app/releases/download'\n )\n}\n\nfunction runtimeArchiveName() {\n return `bleam-runtime-v${runtimeVersion}-${runtimePlatform}.zip`\n}\n\nfunction runtimeArchiveUrl() {\n const tag = encodeURIComponent(`bleam@${runtimeVersion}`)\n return `${runtimeReleaseBaseUrl()}/${tag}/${runtimeArchiveName()}`\n}\n\nfunction sha256(filePath: string) {\n return createHash('sha256').update(readFileSync(filePath)).digest('hex')\n}\n\nasync function downloadFile(url: string, destination: string) {\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(\n `Failed to download ${url}: ${response.status} ${response.statusText}`,\n )\n }\n\n const bytes = new Uint8Array(await response.arrayBuffer())\n writeFileSync(destination, bytes)\n}\n\nasync function downloadExpectedSha256(url: string) {\n const response = await fetch(`${url}.sha256`)\n if (!response.ok) {\n return undefined\n }\n\n const text = await response.text()\n return text.trim().split(/\\s+/)[0]\n}\n\nasync function downloadRuntimeArtifact(): Promise<RuntimeArtifact> {\n if (process.platform !== 'darwin') {\n throw new Error(\n 'Bleam runtime artifacts are currently only available on macOS.',\n )\n }\n\n const cacheRoot = runtimeCacheRoot()\n const cachedAppPath = path.join(cacheRoot, 'Bleam.app')\n if (existsSync(cachedAppPath)) {\n return {\n appPath: cachedAppPath,\n version: runtimeVersion,\n platform: runtimePlatform,\n }\n }\n\n mkdirSync(cacheRoot, { recursive: true })\n const archiveUrl = runtimeArchiveUrl()\n const archivePath = path.join(cacheRoot, runtimeArchiveName())\n const extractRoot = path.join(cacheRoot, 'extract')\n\n await downloadFile(archiveUrl, archivePath)\n const expectedSha256 = await downloadExpectedSha256(archiveUrl)\n if (expectedSha256 && sha256(archivePath) !== expectedSha256) {\n rmSync(archivePath, { force: true })\n throw new Error(`Runtime artifact checksum mismatch: ${archiveUrl}`)\n }\n\n rmSync(extractRoot, { recursive: true, force: true })\n mkdirSync(extractRoot, { recursive: true })\n execFileSync('ditto', ['-x', '-k', archivePath, extractRoot], {\n stdio: 'ignore',\n })\n\n const extractedAppPath = path.join(extractRoot, 'Bleam.app')\n if (!existsSync(extractedAppPath)) {\n throw new Error(`Runtime archive did not contain Bleam.app: ${archiveUrl}`)\n }\n\n rmSync(cachedAppPath, { recursive: true, force: true })\n cpSync(extractedAppPath, cachedAppPath, { recursive: true })\n rmSync(extractRoot, { recursive: true, force: true })\n\n return {\n appPath: cachedAppPath,\n version: runtimeVersion,\n platform: runtimePlatform,\n }\n}\n\nasync function resolveRuntimeArtifact(): Promise<RuntimeArtifact> {\n const overrideAppPath = process.env.BLEAM_RUNTIME_APP\n if (overrideAppPath) {\n const appPath = path.resolve(overrideAppPath)\n if (!existsSync(appPath)) {\n throw new Error(`BLEAM_RUNTIME_APP does not exist: ${appPath}`)\n }\n\n return { appPath, version: runtimeVersion, platform: runtimePlatform }\n }\n\n const localAppPath = localDevelopmentRuntimeAppPath()\n if (existsSync(localAppPath)) {\n return {\n appPath: localAppPath,\n version: runtimeVersion,\n platform: runtimePlatform,\n }\n }\n\n return downloadRuntimeArtifact()\n}\n\nfunction copyRuntimeClient(projectRoot: string, runtime: RuntimeArtifact) {\n const clientAppPath = path.join(projectRoot, '.bleam', 'client', 'Bleam.app')\n rmSync(clientAppPath, { recursive: true, force: true })\n mkdirSync(path.dirname(clientAppPath), { recursive: true })\n cpSync(runtime.appPath, clientAppPath, { recursive: true })\n return clientAppPath\n}\n\nfunction waitForDevServer(port: number, timeoutMs = 120_000) {\n return new Promise<void>((resolve, reject) => {\n const startedAt = Date.now()\n\n const poll = () => {\n const req = http.get(`http://localhost:${port}/status`, (res) => {\n let data = ''\n res.on('data', (chunk) => {\n data += chunk.toString()\n })\n res.on('end', () => {\n if (data.includes('packager-status:running')) {\n resolve()\n return\n }\n\n retry()\n })\n })\n\n req.on('error', retry)\n req.setTimeout(2_000, () => {\n req.destroy()\n retry()\n })\n }\n\n const retry = () => {\n if (Date.now() - startedAt > timeoutMs) {\n reject(\n new Error(\n `Bleam dev server did not start within ${timeoutMs / 1000}s`,\n ),\n )\n return\n }\n\n setTimeout(poll, 500)\n }\n\n poll()\n })\n}\n\nfunction isBleamManifest(value: unknown): value is BleamManifest {\n const manifest =\n value && typeof value === 'object' ? (value as Partial<BleamManifest>) : {}\n\n return (\n typeof manifest.name === 'string' &&\n typeof manifest.bundleUrl === 'string' &&\n manifest.platform === 'macos' &&\n manifest.dev === true\n )\n}\n\nasync function readDevManifest(origin: string, timeoutMs = 30_000) {\n const manifestUrl = `${origin}/bleam/manifest.json`\n const startedAt = Date.now()\n\n while (Date.now() - startedAt <= timeoutMs) {\n try {\n const response = await fetch(manifestUrl, { cache: 'no-store' })\n const value: unknown = await response.json()\n if (response.ok && isBleamManifest(value)) {\n return value\n }\n } catch {\n // Metro can answer /status before custom middleware is ready.\n }\n\n await new Promise((resolve) => setTimeout(resolve, 500))\n }\n\n throw new Error(`Bleam manifest did not become available: ${manifestUrl}`)\n}\n\nfunction openRuntimeClient(\n appPath: string,\n projectConfigPath: string,\n manifest: BleamManifest,\n) {\n const child = spawn(\n 'open',\n [\n appPath,\n '--args',\n '--bleam-project-config',\n projectConfigPath,\n '--bleam-bundle-url',\n manifest.bundleUrl,\n '--bleam-title',\n manifest.name,\n ],\n {\n detached: true,\n stdio: 'ignore',\n },\n )\n child.unref()\n}\n\nasync function startDevServer(options: DevOptions) {\n const config = readProjectConfig(options)\n const runtime = await resolveRuntimeArtifact()\n const clientAppPath = copyRuntimeClient(options.projectRoot, runtime)\n const workspaceRoot = createDevWorkspace(options.projectRoot, config)\n const origin = `http://localhost:${options.port}`\n const projectConfigPath = writeProjectRuntimeConfig(\n options.projectRoot,\n config,\n origin,\n )\n const child = spawn(\n process.execPath,\n [\n require.resolve('expo/bin/cli'),\n 'start',\n workspaceRoot,\n '--localhost',\n '--port',\n String(options.port),\n ],\n {\n stdio: 'inherit',\n env: {\n ...process.env,\n BLEAM_DEV: '1',\n BLEAM_PROJECT_ROOT: options.projectRoot,\n BLEAM_DEV_NAME: config.name,\n BLEAM_DEV_ORIGIN: origin,\n BLEAM_DEV_PORT: String(options.port),\n BLEAM_DEV_RUNTIME_VERSION: config.runtimeVersion,\n BLEAM_DEV_SDK_VERSION: config.sdkVersion,\n NODE_PATH: [\n path.join(options.projectRoot, 'node_modules'),\n path.join(packageRoot, 'node_modules'),\n path.dirname(path.dirname(require.resolve('expo/package.json'))),\n path.dirname(path.dirname(require.resolve('react/package.json'))),\n path.dirname(\n path.dirname(require.resolve('react-native/package.json')),\n ),\n process.env.NODE_PATH,\n ]\n .filter(Boolean)\n .join(path.delimiter),\n },\n },\n )\n\n const stop = (signal: NodeJS.Signals) => {\n child.kill(signal)\n }\n\n process.on('SIGINT', () => stop('SIGINT'))\n process.on('SIGTERM', () => stop('SIGTERM'))\n child.on('exit', (code) => process.exit(code ?? 0))\n\n await waitForDevServer(options.port)\n const manifest = await readDevManifest(origin)\n if (process.env.BLEAM_NO_OPEN !== '1') {\n openRuntimeClient(clientAppPath, projectConfigPath, manifest)\n }\n}\n\nasync function main(argv = process.argv.slice(2)) {\n const [command, ...args] = argv\n\n if (!command || command === '--help' || command === '-h') {\n printUsage()\n return\n }\n\n if (command === 'new') {\n const options = parseNewOptions(args)\n createNewProject(options)\n if (options.run) {\n await startDevServer({ projectRoot: options.projectRoot, port: 8081 })\n }\n return\n }\n\n if (command === 'dev') {\n await startDevServer(parseDevOptions(args))\n return\n }\n\n throw new Error(`Unknown command: ${command}`)\n}\n\nmain().catch((error) => {\n console.error(error instanceof Error ? error.message : String(error))\n process.exit(1)\n})\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-CEhcjuN6.d.ts","names":[],"sources":["../src/fs.ts"],"sourcesContent":[],"mappings":";UAAiB,eAAA;EAAA,QAAA,CAAA,IAAA,EAAA,MAAe,CAAA,EACN,OAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"fs-CEhcjuN6.d.ts","names":[],"sources":["../src/fs.ts"],"sourcesContent":[],"mappings":";UAAiB,eAAA;EAAA,QAAA,CAAA,IAAA,EAAA,MAAe,CAAA,EACN,OAAA,CAAA,MAAA,CACmB;EAGhC,SAOZ,CAAA,IAAA,EAAA,MAPgB,EAAA,QAAA,EAOhB,MAAA,CAAA,EAV4C,OAU5C,CAAA,IAAA,CAAA;;cAPY,IAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-CfE8CHf_.d.cts","names":[],"sources":["../src/fs.ts"],"sourcesContent":[],"mappings":";UAAiB,eAAA;EAAA,QAAA,CAAA,IAAA,EAAA,MAAe,CAAA,EACN,OAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"fs-CfE8CHf_.d.cts","names":[],"sources":["../src/fs.ts"],"sourcesContent":[],"mappings":";UAAiB,eAAA;EAAA,QAAA,CAAA,IAAA,EAAA,MAAe,CAAA,EACN,OAAA,CAAA,MACmB,CAAA;EAGhC,SAOZ,CAAA,IAAA,EAPgB,MAAA,EAAA,QAOhB,EAAA,MAAA,CAAA,EAV4C,OAU5C,CAAA,IAAA,CAAA;;cAPY,IAAI"}
|
package/metro-config.cjs
CHANGED
|
@@ -12,7 +12,7 @@ function packageRoot(name) {
|
|
|
12
12
|
|
|
13
13
|
function getDefaultConfig(projectRoot) {
|
|
14
14
|
const appRoot = process.env.BLEAM_PROJECT_ROOT ?? projectRoot
|
|
15
|
-
const port = Number(process.env.BLEAM_DEV_PORT ??
|
|
15
|
+
const port = Number(process.env.BLEAM_DEV_PORT ?? 8081)
|
|
16
16
|
const origin = process.env.BLEAM_DEV_ORIGIN ?? `http://localhost:${port}`
|
|
17
17
|
const config = getExpoDefaultConfig(projectRoot)
|
|
18
18
|
const upstreamEnhanceMiddleware = config.server.enhanceMiddleware
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bleam",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"packageManager": "yarn@1.22.22",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"tsconfig.base.json"
|
|
12
12
|
],
|
|
13
13
|
"bin": {
|
|
14
|
-
"bleam": "
|
|
14
|
+
"bleam": "dist/cli.js"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
|
17
17
|
"build": "tsdown",
|
|
@@ -27,8 +27,7 @@
|
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^25.5.0",
|
|
29
29
|
"prettier": "^3.8.2",
|
|
30
|
-
"tsdown": "^0.15.6"
|
|
31
|
-
"typescript": "^5.9.2"
|
|
30
|
+
"tsdown": "^0.15.6"
|
|
32
31
|
},
|
|
33
32
|
"dependencies": {
|
|
34
33
|
"@nativescript/react-native": "9.0.0-preview.4",
|
|
@@ -36,7 +35,15 @@
|
|
|
36
35
|
"expo": "56",
|
|
37
36
|
"react": "19.2.3",
|
|
38
37
|
"react-native": "0.85.3",
|
|
39
|
-
"tsx": "^4.21.0"
|
|
38
|
+
"tsx": "^4.21.0",
|
|
39
|
+
"typescript": "~6.0.3"
|
|
40
|
+
},
|
|
41
|
+
"expo": {
|
|
42
|
+
"install": {
|
|
43
|
+
"exclude": [
|
|
44
|
+
"typescript"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
40
47
|
},
|
|
41
48
|
"main": "./dist/index.cjs",
|
|
42
49
|
"module": "./dist/index.js",
|