bleam 0.0.5 → 0.0.7

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 (141) hide show
  1. package/dist/ai.cjs +4146 -0
  2. package/dist/ai.d.cts +535 -0
  3. package/dist/ai.d.ts +535 -0
  4. package/dist/ai.js +4102 -0
  5. package/dist/animated.cjs +286 -0
  6. package/dist/animated.d.cts +47 -0
  7. package/dist/animated.d.ts +47 -0
  8. package/dist/animated.js +281 -0
  9. package/dist/app.cjs +92 -0
  10. package/dist/app.d.cts +1 -2
  11. package/dist/app.d.ts +1 -2
  12. package/dist/app.js +93 -2
  13. package/dist/bundler.d.cts +1 -2
  14. package/dist/bundler.d.ts +1 -2
  15. package/dist/cli.cjs +1375 -71
  16. package/dist/cli.d.cts +89 -1
  17. package/dist/cli.d.ts +89 -1
  18. package/dist/cli.js +1373 -74
  19. package/dist/config-Bb6SULnR.cjs +46 -0
  20. package/dist/config-CfWa3q-k.js +28 -0
  21. package/dist/config-Cms0rvqg.d.ts +40 -0
  22. package/dist/config-CufOVJV3.d.cts +40 -0
  23. package/dist/config.cjs +4 -25
  24. package/dist/config.d.cts +2 -28
  25. package/dist/config.d.ts +2 -28
  26. package/dist/config.js +2 -24
  27. package/dist/crypto-BB92-Upx.js +7 -0
  28. package/dist/crypto-CT3VZ7lF.cjs +13 -0
  29. package/dist/crypto.cjs +2 -2
  30. package/dist/crypto.d.cts +6 -1
  31. package/dist/crypto.d.ts +8 -1
  32. package/dist/crypto.js +2 -2
  33. package/dist/dev-protocol.d.cts +16 -3
  34. package/dist/dev-protocol.d.ts +16 -3
  35. package/dist/dev-protocol.js +1 -2
  36. package/dist/files-Bo7h9fik.cjs +468 -0
  37. package/dist/files-Ds1wT8C2.js +445 -0
  38. package/dist/files-DwA7pzr3.d.cts +99 -0
  39. package/dist/files-VrkQlKIT.d.ts +99 -0
  40. package/dist/files.cjs +7 -0
  41. package/dist/files.d.cts +2 -0
  42. package/dist/files.d.ts +2 -0
  43. package/dist/files.js +4 -0
  44. package/dist/index.cjs +4 -5
  45. package/dist/index.d.cts +2 -3
  46. package/dist/index.d.ts +2 -3
  47. package/dist/index.js +2 -4
  48. package/dist/native-runtime-C85Nuc4F.js +10 -0
  49. package/dist/{native-runtime-CdeT0JyQ.cjs → native-runtime-CsXnXkQn.cjs} +1 -14
  50. package/dist/native-sqlite-xcGdamRD.js +64 -0
  51. package/dist/native-sqlite-yQLD5s9i.cjs +66 -0
  52. package/dist/platform.cjs +27 -0
  53. package/dist/platform.d.cts +39 -0
  54. package/dist/platform.d.ts +39 -0
  55. package/dist/platform.js +21 -0
  56. package/dist/runtime.d.cts +1 -7
  57. package/dist/runtime.d.ts +1 -7
  58. package/dist/schema-Bo5Jvqus.js +90 -0
  59. package/dist/schema-DOOjfXvs.d.ts +58 -0
  60. package/dist/schema-ENSMX_1t.d.cts +58 -0
  61. package/dist/schema-rQ13mrpD.cjs +102 -0
  62. package/dist/schema.cjs +4 -0
  63. package/dist/schema.d.cts +2 -0
  64. package/dist/schema.d.ts +2 -0
  65. package/dist/schema.js +3 -0
  66. package/dist/state-Bx0VlTlO.cjs +852 -0
  67. package/dist/state-CAwe-Vw1.js +767 -0
  68. package/dist/state.cjs +19 -0
  69. package/dist/state.d.cts +159 -0
  70. package/dist/state.d.ts +159 -0
  71. package/dist/state.js +6 -0
  72. package/dist/styles.cjs +742 -0
  73. package/dist/styles.d.cts +701 -0
  74. package/dist/styles.d.ts +701 -0
  75. package/dist/styles.js +739 -0
  76. package/dist/ui-1WepaMS4.d.cts +92 -0
  77. package/dist/ui-234Plg7Z.d.cts +92 -0
  78. package/dist/ui-BJmXhz9Q.d.ts +92 -0
  79. package/dist/ui-Dd7SXdbg.d.cts +92 -0
  80. package/dist/ui-Ds88eETu.d.ts +92 -0
  81. package/dist/ui-TaqnB5SP.d.ts +92 -0
  82. package/dist/ui-WQvnXL0W.d.ts +92 -0
  83. package/dist/ui.cjs +364 -0
  84. package/dist/ui.d.cts +2 -0
  85. package/dist/ui.d.ts +2 -0
  86. package/dist/ui.js +357 -0
  87. package/dist/window.cjs +596 -0
  88. package/dist/window.d.cts +63 -0
  89. package/dist/window.d.ts +63 -0
  90. package/dist/window.js +589 -0
  91. package/metro-config.cjs +18 -13
  92. package/package.json +57 -21
  93. package/templates/basic/app/index.tsx +133 -12
  94. package/templates/basic/app.config.ts +4 -2
  95. package/templates/foundation-models/app/index.tsx +32 -0
  96. package/templates/foundation-models/app.config.ts +5 -0
  97. package/templates/image-generation/app/index.tsx +39 -0
  98. package/templates/image-generation/app.config.ts +5 -0
  99. package/templates/state/app/index.tsx +30 -0
  100. package/templates/state/app.config.ts +5 -0
  101. package/dist/app.d.cts.map +0 -1
  102. package/dist/app.d.ts.map +0 -1
  103. package/dist/app.js.map +0 -1
  104. package/dist/bundler.d.cts.map +0 -1
  105. package/dist/bundler.d.ts.map +0 -1
  106. package/dist/cli.js.map +0 -1
  107. package/dist/config.d.cts.map +0 -1
  108. package/dist/config.d.ts.map +0 -1
  109. package/dist/config.js.map +0 -1
  110. package/dist/crypto-BNhWeXMj.cjs +0 -15
  111. package/dist/crypto-Bg8cD8wX.d.cts +0 -8
  112. package/dist/crypto-Bg8cD8wX.d.cts.map +0 -1
  113. package/dist/crypto-CCA_hvao.js +0 -11
  114. package/dist/crypto-CCA_hvao.js.map +0 -1
  115. package/dist/crypto-IOzbNoJD.d.ts +0 -8
  116. package/dist/crypto-IOzbNoJD.d.ts.map +0 -1
  117. package/dist/dev-protocol.d.cts.map +0 -1
  118. package/dist/dev-protocol.d.ts.map +0 -1
  119. package/dist/dev-protocol.js.map +0 -1
  120. package/dist/fs-BK7joD1g.js +0 -13
  121. package/dist/fs-BK7joD1g.js.map +0 -1
  122. package/dist/fs-CEhcjuN6.d.ts +0 -9
  123. package/dist/fs-CEhcjuN6.d.ts.map +0 -1
  124. package/dist/fs-CfE8CHf_.d.cts +0 -9
  125. package/dist/fs-CfE8CHf_.d.cts.map +0 -1
  126. package/dist/fs-DKHYTPua.cjs +0 -18
  127. package/dist/fs.cjs +0 -3
  128. package/dist/fs.d.cts +0 -2
  129. package/dist/fs.d.ts +0 -2
  130. package/dist/fs.js +0 -3
  131. package/dist/native-runtime-BoqybBBf.js +0 -18
  132. package/dist/native-runtime-BoqybBBf.js.map +0 -1
  133. package/dist/native.cjs +0 -132
  134. package/dist/native.d.cts +0 -64
  135. package/dist/native.d.cts.map +0 -1
  136. package/dist/native.d.ts +0 -64
  137. package/dist/native.d.ts.map +0 -1
  138. package/dist/native.js +0 -133
  139. package/dist/native.js.map +0 -1
  140. package/dist/runtime.d.cts.map +0 -1
  141. package/dist/runtime.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bleam",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "packageManager": "yarn@1.22.22",
5
5
  "type": "module",
6
6
  "files": [
@@ -15,29 +15,30 @@
15
15
  },
16
16
  "scripts": {
17
17
  "build": "tsdown",
18
+ "test": "vitest run",
18
19
  "typecheck": "tsc --noEmit -p tsconfig.build.json"
19
20
  },
20
- "prettier": {
21
- "semi": false,
22
- "singleQuote": true,
23
- "trailingComma": "all",
24
- "printWidth": 80,
25
- "tabWidth": 2
26
- },
27
21
  "devDependencies": {
22
+ "@nativescript/types-ios": "9.0.0",
28
23
  "@types/node": "^25.5.0",
29
- "prettier": "^3.8.2",
24
+ "@types/ws": "^8.18.1",
30
25
  "tsdown": "^0.15.6"
31
26
  },
32
27
  "dependencies": {
28
+ "@biomejs/biome": "^2.2.0",
33
29
  "@expo/metro": "56.0.0",
30
+ "@nativescript-community/sqlite": "^3.5.9",
34
31
  "@nativescript/react-native": "9.0.0-preview.4",
35
- "@types/react": "~19.2.14",
36
- "expo": "56",
32
+ "@types/react": "~19.2.17",
33
+ "expo": "57",
34
+ "expo-splash-screen": "57.0.2",
37
35
  "react": "19.2.3",
38
- "react-native": "0.85.3",
36
+ "react-native": "0.86.0",
39
37
  "tsx": "^4.21.0",
40
- "typescript": "~6.0.3"
38
+ "typescript": "~6.0.3",
39
+ "ws": "^8.21.0",
40
+ "yocto-spinner": "^1.2.1",
41
+ "yoctocolors": "^2.1.2"
41
42
  },
42
43
  "expo": {
43
44
  "install": {
@@ -55,6 +56,16 @@
55
56
  "import": "./dist/index.js",
56
57
  "require": "./dist/index.cjs"
57
58
  },
59
+ "./ai": {
60
+ "types": "./dist/ai.d.ts",
61
+ "import": "./dist/ai.js",
62
+ "require": "./dist/ai.cjs"
63
+ },
64
+ "./animated": {
65
+ "types": "./dist/animated.d.ts",
66
+ "import": "./dist/animated.js",
67
+ "require": "./dist/animated.cjs"
68
+ },
58
69
  "./app": {
59
70
  "types": "./dist/app.d.ts",
60
71
  "import": "./dist/app.js",
@@ -80,21 +91,46 @@
80
91
  "import": "./dist/dev-protocol.js",
81
92
  "require": "./dist/dev-protocol.cjs"
82
93
  },
83
- "./fs": {
84
- "types": "./dist/fs.d.ts",
85
- "import": "./dist/fs.js",
86
- "require": "./dist/fs.cjs"
94
+ "./files": {
95
+ "types": "./dist/files.d.ts",
96
+ "import": "./dist/files.js",
97
+ "require": "./dist/files.cjs"
87
98
  },
88
- "./native": {
89
- "types": "./dist/native.d.ts",
90
- "import": "./dist/native.js",
91
- "require": "./dist/native.cjs"
99
+ "./platform": {
100
+ "types": "./dist/platform.d.ts",
101
+ "import": "./dist/platform.js",
102
+ "require": "./dist/platform.cjs"
92
103
  },
93
104
  "./runtime": {
94
105
  "types": "./dist/runtime.d.ts",
95
106
  "import": "./dist/runtime.js",
96
107
  "require": "./dist/runtime.cjs"
97
108
  },
109
+ "./schema": {
110
+ "types": "./dist/schema.d.ts",
111
+ "import": "./dist/schema.js",
112
+ "require": "./dist/schema.cjs"
113
+ },
114
+ "./state": {
115
+ "types": "./dist/state.d.ts",
116
+ "import": "./dist/state.js",
117
+ "require": "./dist/state.cjs"
118
+ },
119
+ "./styles": {
120
+ "types": "./dist/styles.d.ts",
121
+ "import": "./dist/styles.js",
122
+ "require": "./dist/styles.cjs"
123
+ },
124
+ "./ui": {
125
+ "types": "./dist/ui.d.ts",
126
+ "import": "./dist/ui.js",
127
+ "require": "./dist/ui.cjs"
128
+ },
129
+ "./window": {
130
+ "types": "./dist/window.d.ts",
131
+ "import": "./dist/window.js",
132
+ "require": "./dist/window.cjs"
133
+ },
98
134
  "./package.json": "./package.json",
99
135
  "./metro-config": {
100
136
  "require": "./metro-config.cjs"
@@ -1,18 +1,139 @@
1
- import { StyleSheet, Text, View } from 'react-native'
1
+ import { atom, useAtom } from 'bleam/state'
2
+ import { sx } from 'bleam/styles'
3
+ import { Button } from 'bleam/ui'
4
+ import { Toolbar, Window } from 'bleam/window'
5
+ import { Text, View } from 'react-native'
6
+
7
+ const appName = 'Bleam Basic'
8
+ const counter = atom(0)
2
9
 
3
10
  export default function App() {
11
+ const [count, setCount] = useAtom(counter)
12
+
4
13
  return (
5
- <View style={styles.container}>
6
- <Text>Open up app/index.tsx to start working on your app!</Text>
14
+ <View style={sx('flex-1')}>
15
+ <Window title={appName} titleVisibility="visible" />
16
+ <Toolbar toolbarStyle="unified" />
17
+
18
+ <View style={sx('flex-1', 'items-center', 'justify-center', 'p-6')}>
19
+ <View style={sx('flex-1', 'w-full', 'max-w-5xl', 'max-h-3xl')}>
20
+ <View style={sx('flex-1', 'items-center', 'justify-center', 'px-6')}>
21
+ <View style={sx('items-center', 'gap-8')}>
22
+ <View
23
+ style={sx('h-44', 'w-44', 'items-center', 'justify-center')}
24
+ >
25
+ <View
26
+ style={sx(
27
+ 'absolute',
28
+ 'top-0',
29
+ 'h-24',
30
+ 'w-32',
31
+ 'rounded-2xl',
32
+ 'border',
33
+ 'border-tertiary-label',
34
+ 'bg-system',
35
+ 'items-center',
36
+ 'justify-center',
37
+ 'rotate-30',
38
+ )}
39
+ >
40
+ <Text
41
+ style={sx(
42
+ 'text-3xl',
43
+ 'font-semibold',
44
+ 'text-system-cyan',
45
+ '-rotate-30',
46
+ )}
47
+ >
48
+ B
49
+ </Text>
50
+ </View>
51
+
52
+ <View
53
+ style={sx(
54
+ 'absolute',
55
+ 'bottom-2',
56
+ 'h-24',
57
+ 'w-32',
58
+ 'rounded-2xl',
59
+ 'border-2',
60
+ 'border-system-purple',
61
+ 'bg-secondary-system',
62
+ 'items-center',
63
+ 'justify-center',
64
+ 'rotate-30',
65
+ )}
66
+ >
67
+ <Text
68
+ style={sx(
69
+ 'text-3xl',
70
+ 'font-bold',
71
+ 'text-system-purple',
72
+ '-rotate-30',
73
+ )}
74
+ >
75
+ JS
76
+ </Text>
77
+ </View>
78
+ </View>
79
+
80
+ <View style={sx('items-center')}>
81
+ <Text
82
+ style={sx(
83
+ 'text-5xl',
84
+ 'font-semibold',
85
+ 'tracking-tighter',
86
+ 'text-label',
87
+ 'text-center',
88
+ )}
89
+ >
90
+ Get started
91
+ </Text>
92
+ <Text
93
+ style={sx(
94
+ 'mt-6',
95
+ 'text-lg',
96
+ 'text-secondary-label',
97
+ 'text-center',
98
+ )}
99
+ >
100
+ Edit{' '}
101
+ <Text
102
+ style={sx(
103
+ 'rounded-md',
104
+ 'italic',
105
+ 'px-2',
106
+ 'py-1',
107
+ 'text-label',
108
+ )}
109
+ >
110
+ app/index.tsx
111
+ </Text>{' '}
112
+ and save to test{' '}
113
+ <Text
114
+ style={sx(
115
+ 'rounded-md',
116
+ 'italic',
117
+ 'px-2',
118
+ 'py-1',
119
+ 'text-label',
120
+ )}
121
+ >
122
+ live reload
123
+ </Text>
124
+ </Text>
125
+ </View>
126
+
127
+ <Button
128
+ title={`Count is ${count}`}
129
+ variant="secondary"
130
+ size="regular"
131
+ onPress={() => setCount((value) => value + 1)}
132
+ />
133
+ </View>
134
+ </View>
135
+ </View>
136
+ </View>
7
137
  </View>
8
138
  )
9
139
  }
10
-
11
- const styles = StyleSheet.create({
12
- container: {
13
- flex: 1,
14
- backgroundColor: '#fff',
15
- alignItems: 'center',
16
- justifyContent: 'center',
17
- },
18
- })
@@ -1,3 +1,5 @@
1
- export default {
1
+ import { appConfig } from 'bleam'
2
+
3
+ export default appConfig({
2
4
  name: 'Bleam Basic',
3
- }
5
+ })
@@ -0,0 +1,32 @@
1
+ import { generate } from 'bleam/ai'
2
+ import { sx } from 'bleam/styles'
3
+ import { Button } from 'bleam/ui'
4
+ import { Window } from 'bleam/window'
5
+ import { useState } from 'react'
6
+ import { Text, View } from 'react-native'
7
+
8
+ const appName = 'Bleam Basic'
9
+
10
+ export default function App() {
11
+ const [answer, setAnswer] = useState('Ask the on-device model for an idea.')
12
+
13
+ async function ask() {
14
+ setAnswer('Thinking...')
15
+ try {
16
+ setAnswer(
17
+ await generate({ prompt: 'Suggest one useful native Mac app.' }),
18
+ )
19
+ } catch (error) {
20
+ setAnswer(error instanceof Error ? error.message : String(error))
21
+ }
22
+ }
23
+
24
+ return (
25
+ <View style={sx('flex-1', 'p-8', 'gap-6')}>
26
+ <Window title={appName} />
27
+ <Text style={sx('text-3xl', 'font-semibold')}>Foundation Models</Text>
28
+ <Text style={sx('text-lg', 'text-secondary-label')}>{answer}</Text>
29
+ <Button title="Generate an idea" onPress={ask} />
30
+ </View>
31
+ )
32
+ }
@@ -0,0 +1,5 @@
1
+ import { appConfig } from 'bleam'
2
+
3
+ export default appConfig({
4
+ name: 'Bleam Foundation Models',
5
+ })
@@ -0,0 +1,39 @@
1
+ import { generateImage } from 'bleam/ai'
2
+ import { sx } from 'bleam/styles'
3
+ import { Button } from 'bleam/ui'
4
+ import { Window } from 'bleam/window'
5
+ import { useState } from 'react'
6
+ import { Image, Text, View } from 'react-native'
7
+
8
+ const appName = 'Bleam Basic'
9
+
10
+ export default function App() {
11
+ const [uri, setUri] = useState<string>()
12
+ const [status, setStatus] = useState('Generate an image on this Mac.')
13
+
14
+ async function create() {
15
+ setStatus('Generating...')
16
+ try {
17
+ const result = await generateImage({
18
+ prompt: 'A precise editorial illustration of a small native Mac app',
19
+ aspectRatio: 'square',
20
+ })
21
+ setUri(result.uri)
22
+ setStatus(`Completed with seed ${result.metadata.seed}`)
23
+ } catch (error) {
24
+ setStatus(error instanceof Error ? error.message : String(error))
25
+ }
26
+ }
27
+
28
+ return (
29
+ <View style={sx('flex-1', 'p-8', 'gap-6')}>
30
+ <Window title={appName} />
31
+ <Text style={sx('text-3xl', 'font-semibold')}>Image Generation</Text>
32
+ {uri ? (
33
+ <Image source={{ uri }} style={sx('w-96', 'h-96', 'rounded-xl')} />
34
+ ) : null}
35
+ <Text style={sx('text-secondary-label')}>{status}</Text>
36
+ <Button title="Generate image" onPress={create} />
37
+ </View>
38
+ )
39
+ }
@@ -0,0 +1,5 @@
1
+ import { appConfig } from 'bleam'
2
+
3
+ export default appConfig({
4
+ name: 'Bleam Image Generation',
5
+ })
@@ -0,0 +1,30 @@
1
+ import { atom, useAtom } from 'bleam/state'
2
+ import { sx } from 'bleam/styles'
3
+ import { Button } from 'bleam/ui'
4
+ import { Window } from 'bleam/window'
5
+ import { Text, View } from 'react-native'
6
+
7
+ const appName = 'Bleam Basic'
8
+ const tasks = atom<string[]>(['Create a native Mac app'])
9
+
10
+ export default function App() {
11
+ const [items, setItems] = useAtom(tasks)
12
+
13
+ return (
14
+ <View style={sx('flex-1', 'p-8', 'gap-4')}>
15
+ <Window title={appName} />
16
+ <Text style={sx('text-3xl', 'font-semibold')}>Tasks</Text>
17
+ {items.map((item) => (
18
+ <Text key={item} style={sx('text-lg')}>
19
+ {item}
20
+ </Text>
21
+ ))}
22
+ <Button
23
+ title="Add task"
24
+ onPress={() =>
25
+ setItems((current) => [...current, `Task ${current.length + 1}`])
26
+ }
27
+ />
28
+ </View>
29
+ )
30
+ }
@@ -0,0 +1,5 @@
1
+ import { appConfig } from 'bleam'
2
+
3
+ export default appConfig({
4
+ name: 'Bleam State',
5
+ })
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.d.cts","names":[],"sources":["../src/app.ts"],"sourcesContent":[],"mappings":";;;iBAGgB,WAAA,YAAuB"}
package/dist/app.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.d.ts","names":[],"sources":["../src/app.ts"],"sourcesContent":[],"mappings":";;;iBAGgB,WAAA,YAAuB"}
package/dist/app.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.js","names":[],"sources":["../src/app.ts"],"sourcesContent":["import { registerRootComponent } from 'expo'\nimport type { ComponentType } from 'react'\n\nexport function registerApp(component: ComponentType) {\n registerRootComponent(component)\n}\n"],"mappings":";;;AAGA,SAAgB,YAAY,WAA0B;AACpD,uBAAsB,UAAU"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundler.d.cts","names":[],"sources":["../src/bundler.ts"],"sourcesContent":[],"mappings":";UAAiB,gBAAA;EAAA,WAAA,EAAA,MAAgB;EAKhB,IAAA,CAAA,EAAA,MAAA;AAKjB;AAOiB,UAZA,eAAA,CAYY;EAKZ,GAAA,EAAA,MAAA;EACA,KAAA,EAAA,EAhBN,OAgBM,CAAA,IAAA,CAAA;;AAAmB,UAbnB,aAAA,CAamB;EAAO,WAAA,EAAA,MAAA;EAG1B,KAAA,EAAA,MAAO;EACN,QAAA,EAAA,OAAA;EAAwB,GAAA,EAAA,OAAA;;AAAD,UAVxB,YAAA,CAUwB;;;;UALxB,SAAA;iBACA,mBAAmB,QAAQ;;UAG3B,OAAA;kBACC,gBAAgB,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundler.d.ts","names":[],"sources":["../src/bundler.ts"],"sourcesContent":[],"mappings":";UAAiB,gBAAA;EAAA,WAAA,EAAA,MAAgB;EAKhB,IAAA,CAAA,EAAA,MAAA;AAKjB;AAOiB,UAZA,eAAA,CAYY;EAKZ,GAAA,EAAA,MAAA;EACA,KAAA,EAAA,EAhBN,OAgBM,CAAA,IAAA,CAAA;;AAAmB,UAbnB,aAAA,CAamB;EAAO,WAAA,EAAA,MAAA;EAG1B,KAAA,EAAA,MAAO;EACN,QAAA,EAAA,OAAA;EAAwB,GAAA,EAAA,OAAA;;AAAD,UAVxB,YAAA,CAUwB;;;;UALxB,SAAA;iBACA,mBAAmB,QAAQ;;UAG3B,OAAA;kBACC,gBAAgB,QAAQ"}
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","names":["workspaceRoot: string | undefined","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\ninterface InternalMetroOptions {\n workspaceRoot: string\n port: number\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 parseInternalMetroOptions(argv: string[]): InternalMetroOptions {\n let workspaceRoot: string | undefined\n let port = 8081\n\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index]\n\n if (arg === '--workspace-root') {\n workspaceRoot = path.resolve(invocationRoot(), argv[++index] ?? '')\n continue\n }\n\n if (arg === '--port') {\n port = Number(argv[++index])\n continue\n }\n\n if (arg.startsWith('--port=')) {\n port = Number(arg.slice('--port='.length))\n continue\n }\n\n throw new Error(`Unknown internal option: ${arg}`)\n }\n\n if (!workspaceRoot) {\n throw new Error('Missing --workspace-root')\n }\n\n if (!Number.isInteger(port) || port <= 0) {\n throw new Error(`Invalid port: ${port}`)\n }\n\n return { workspaceRoot, port }\n}\n\nfunction isBleamProjectRoot(projectRoot: string) {\n return (\n existsSync(path.join(projectRoot, 'app.config.ts')) &&\n existsSync(path.join(projectRoot, 'app', 'index.tsx'))\n )\n}\n\nfunction resolvedDependencyRoot() {\n return path.dirname(\n path.dirname(require.resolve('react-native/package.json')),\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 resolvedDependencyRoot(),\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', 'index.tsx'))) {\n throw new Error(\n 'Missing app/index.tsx. Bleam projects must define app/index.tsx.',\n )\n }\n}\n\nfunction ensureProjectTsconfig(projectRoot: string) {\n const tsconfigPath = path.join(projectRoot, 'tsconfig.json')\n if (existsSync(tsconfigPath)) {\n return\n }\n\n writeFileSync(\n tsconfigPath,\n `${JSON.stringify(\n {\n extends: './.bleam/dev/tsconfig.json',\n },\n null,\n 2,\n )}\\n`,\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 const name = nameFromDirectory(options.projectRoot)\n writeFileSync(\n path.join(options.projectRoot, 'app.config.ts'),\n `export default {\\n name: ${JSON.stringify(name)},\\n}\\n`,\n )\n writeFileSync(path.join(options.projectRoot, '.gitignore'), `.bleam\\n`)\n createDevWorkspace(options.projectRoot, {\n name,\n runtimeVersion,\n sdkVersion: runtimeVersion,\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 const dependencyRoot = resolvedDependencyRoot()\n rmSync(workspaceNodeModules, { recursive: true, force: true })\n symlinkSync(dependencyRoot, workspaceNodeModules)\n ensureProjectTsconfig(projectRoot)\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 compilerOptions: {\n paths: {\n bleam: ['./node_modules/bleam'],\n 'bleam/*': ['./node_modules/bleam/*'],\n expo: ['./node_modules/expo'],\n 'expo/*': ['./node_modules/expo/*'],\n react: ['./node_modules/@types/react'],\n 'react/jsx-runtime': ['./node_modules/@types/react/jsx-runtime'],\n 'react/jsx-dev-runtime': [\n './node_modules/@types/react/jsx-dev-runtime',\n ],\n 'react-native': ['./node_modules/react-native'],\n 'react-native/*': ['./node_modules/react-native/*'],\n },\n },\n include: [\n path.relative(workspaceRoot, path.join(projectRoot, 'app')),\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 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 console.log('Waiting for Bleam dev server...')\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 formatDuration(ms: number) {\n return `${(ms / 1000).toFixed(1)}s`\n}\n\nasync function waitForDevBundle(bundleUrl: string, timeoutMs = 60_000) {\n const startedAt = Date.now()\n const requestTimeoutMs = 30_000\n\n console.log('Bundling app...')\n\n while (Date.now() - startedAt <= timeoutMs) {\n const requestStartedAt = Date.now()\n try {\n const response = await fetch(bundleUrl, {\n cache: 'no-store',\n signal: AbortSignal.timeout(requestTimeoutMs),\n })\n await response.body?.cancel()\n if (response.ok) {\n console.log(`Bundled app in ${formatDuration(Date.now() - startedAt)}`)\n return\n }\n\n console.log(`Bundle request returned ${response.status}, retrying...`)\n } catch (error) {\n if (error instanceof Error && error.name === 'TimeoutError') {\n console.log(\n `Bundle request timed out after ${formatDuration(\n Date.now() - requestStartedAt,\n )}, retrying...`,\n )\n } else {\n console.log(\n `Bundle request failed: ${\n error instanceof Error ? error.message : String(error)\n }`,\n )\n }\n }\n\n await new Promise((resolve) => setTimeout(resolve, 500))\n }\n\n throw new Error(\n `Bleam bundle did not complete within ${formatDuration(\n timeoutMs,\n )}: ${bundleUrl}`,\n )\n}\n\nfunction openRuntimeClient(\n appPath: string,\n projectConfigPath: string,\n manifest: BleamManifest,\n) {\n const child = spawn(\n 'open',\n [\n '-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 stdio: 'ignore',\n },\n )\n\n child.on('error', (error) => {\n console.error(\n `Failed to open Bleam runtime at ${appPath}: ${error.message}`,\n )\n })\n\n child.on('exit', (code) => {\n if (code && code !== 0) {\n console.error(`Failed to open Bleam runtime at ${appPath}`)\n }\n })\n}\n\nasync function startInternalMetroServer(options: InternalMetroOptions) {\n const metro = require('@expo/metro/metro') as typeof import('metro')\n const { loadConfig } =\n require('@expo/metro/metro-config') as typeof import('metro-config')\n const config = await loadConfig({\n config: path.join(options.workspaceRoot, 'metro.config.js'),\n cwd: options.workspaceRoot,\n port: options.port,\n })\n const { middleware, end, attachHmrServer } =\n await metro.createConnectMiddleware(config, {\n watch: true,\n waitForBundler: true,\n })\n const server = http.createServer((req, res) => {\n if (req.url?.split('?')[0] === '/status') {\n res.writeHead(200, {\n 'Cache-Control': 'no-store',\n 'Content-Type': 'text/plain; charset=utf-8',\n 'X-React-Native-Project-Root': encodeURI(config.projectRoot),\n })\n res.end('packager-status:running')\n return\n }\n\n middleware(req, res)\n })\n\n server.timeout = 0\n attachHmrServer(server)\n\n await new Promise<void>((resolve, reject) => {\n server.on('error', reject)\n server.listen(options.port, 'localhost', () => resolve())\n })\n\n server.on('error', (error) => {\n console.error(error instanceof Error ? error.message : String(error))\n })\n\n console.log(`Bleam dev server running at http://localhost:${options.port}`)\n\n const close = () => {\n server.close(() => {\n end()\n process.exit(0)\n })\n }\n process.on('SIGINT', close)\n process.on('SIGTERM', close)\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 fileURLToPath(import.meta.url),\n 'internal:metro',\n '--workspace-root',\n workspaceRoot,\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 resolvedDependencyRoot(),\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 try {\n const manifest = await readDevManifest(origin)\n if (process.env.BLEAM_NO_OPEN !== '1') {\n await waitForDevBundle(manifest.bundleUrl)\n console.log('Opening Bleam app...')\n openRuntimeClient(clientAppPath, projectConfigPath, manifest)\n }\n } catch (error) {\n child.kill('SIGTERM')\n throw error\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 if (command === 'internal:metro') {\n await startInternalMetroServer(parseInternalMetroOptions(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":";;;;;;;;;;;AA2DA,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,0BAA0B,MAAsC;CACvE,IAAIA;CACJ,IAAI,OAAO;AAEX,MAAK,IAAI,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;EACnD,MAAM,MAAM,KAAK;AAEjB,MAAI,QAAQ,oBAAoB;AAC9B,mBAAgB,KAAK,QAAQ,gBAAgB,EAAE,KAAK,EAAE,UAAU,GAAG;AACnE;;AAGF,MAAI,QAAQ,UAAU;AACpB,UAAO,OAAO,KAAK,EAAE,OAAO;AAC5B;;AAGF,MAAI,IAAI,WAAW,UAAU,EAAE;AAC7B,UAAO,OAAO,IAAI,MAAM,EAAiB,CAAC;AAC1C;;AAGF,QAAM,IAAI,MAAM,4BAA4B,MAAM;;AAGpD,KAAI,CAAC,cACH,OAAM,IAAI,MAAM,2BAA2B;AAG7C,KAAI,CAAC,OAAO,UAAU,KAAK,IAAI,QAAQ,EACrC,OAAM,IAAI,MAAM,iBAAiB,OAAO;AAG1C,QAAO;EAAE;EAAe;EAAM;;AAGhC,SAAS,mBAAmB,aAAqB;AAC/C,QACE,WAAW,KAAK,KAAK,aAAa,gBAAgB,CAAC,IACnD,WAAW,KAAK,KAAK,aAAa,OAAO,YAAY,CAAC;;AAI1D,SAAS,yBAAyB;AAChC,QAAO,KAAK,QACV,KAAK,QAAQ,QAAQ,QAAQ,4BAA4B,CAAC,CAC3D;;AAGH,SAAS,yBAAyB,YAAoB;CACpD,MAAM,eAAe,IAAI,IAAI;EAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CACF,MAAMC,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,wBAAwB;IACxB,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,OAAO,YAAY,CAAC,CACzD,OAAM,IAAI,MACR,mEACD;;AAIL,SAAS,sBAAsB,aAAqB;CAClD,MAAM,eAAe,KAAK,KAAK,aAAa,gBAAgB;AAC5D,KAAI,WAAW,aAAa,CAC1B;AAGF,eACE,cACA,GAAG,KAAK,UACN,EACE,SAAS,8BACV,EACD,MACA,EACD,CAAC,IACH;;AAGH,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;CAC9D,MAAM,OAAO,kBAAkB,QAAQ,YAAY;AACnD,eACE,KAAK,KAAK,QAAQ,aAAa,gBAAgB,EAC/C,6BAA6B,KAAK,UAAU,KAAK,CAAC,QACnD;AACD,eAAc,KAAK,KAAK,QAAQ,aAAa,aAAa,EAAE,WAAW;AACvE,oBAAmB,QAAQ,aAAa;EACtC;EACA;EACA,YAAY;EACb,CAAC;AAEF,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;CACrE,MAAM,iBAAiB,wBAAwB;AAC/C,QAAO,sBAAsB;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC;AAC9D,aAAY,gBAAgB,qBAAqB;AACjD,uBAAsB,YAAY;AAElC,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;GAC3C,YAAY,YAAY,cAAc;GACvC;EACD,MAAM,EACJ,SAAS,EACP,SAAS,CAAC,aAAa,EACxB,EACF;EACF,EACD,MACA,EACD,CAAC,IACH;AAED,eACE,KAAK,KAAK,eAAe,gBAAgB,EACzC,GAAG,KAAK,UACN;EACE,SAAS;EACT,iBAAiB,EACf,OAAO;GACL,OAAO,CAAC,uBAAuB;GAC/B,WAAW,CAAC,yBAAyB;GACrC,MAAM,CAAC,sBAAsB;GAC7B,UAAU,CAAC,wBAAwB;GACnC,OAAO,CAAC,8BAA8B;GACtC,qBAAqB,CAAC,0CAA0C;GAChE,yBAAyB,CACvB,8CACD;GACD,gBAAgB,CAAC,8BAA8B;GAC/C,kBAAkB,CAAC,gCAAgC;GACpD,EACF;EACD,SAAS,CACP,KAAK,SAAS,eAAe,KAAK,KAAK,aAAa,MAAM,CAAC,EAC3D,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,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,SAAQ,IAAI,kCAAkC;AAE9C,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,eAAe,IAAY;AAClC,QAAO,IAAI,KAAK,KAAM,QAAQ,EAAE,CAAC;;AAGnC,eAAe,iBAAiB,WAAmB,YAAY,KAAQ;CACrE,MAAM,YAAY,KAAK,KAAK;CAC5B,MAAM,mBAAmB;AAEzB,SAAQ,IAAI,kBAAkB;AAE9B,QAAO,KAAK,KAAK,GAAG,aAAa,WAAW;EAC1C,MAAM,mBAAmB,KAAK,KAAK;AACnC,MAAI;GACF,MAAM,WAAW,MAAM,MAAM,WAAW;IACtC,OAAO;IACP,QAAQ,YAAY,QAAQ,iBAAiB;IAC9C,CAAC;AACF,SAAM,SAAS,MAAM,QAAQ;AAC7B,OAAI,SAAS,IAAI;AACf,YAAQ,IAAI,kBAAkB,eAAe,KAAK,KAAK,GAAG,UAAU,GAAG;AACvE;;AAGF,WAAQ,IAAI,2BAA2B,SAAS,OAAO,eAAe;WAC/D,OAAO;AACd,OAAI,iBAAiB,SAAS,MAAM,SAAS,eAC3C,SAAQ,IACN,kCAAkC,eAChC,KAAK,KAAK,GAAG,iBACd,CAAC,eACH;OAED,SAAQ,IACN,0BACE,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GAEzD;;AAIL,QAAM,IAAI,SAAS,YAAY,WAAW,SAAS,IAAI,CAAC;;AAG1D,OAAM,IAAI,MACR,wCAAwC,eACtC,UACD,CAAC,IAAI,YACP;;AAGH,SAAS,kBACP,SACA,mBACA,UACA;CACA,MAAM,QAAQ,MACZ,QACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,SAAS;EACT;EACA,SAAS;EACV,EACD,EACE,OAAO,UACR,CACF;AAED,OAAM,GAAG,UAAU,UAAU;AAC3B,UAAQ,MACN,mCAAmC,QAAQ,IAAI,MAAM,UACtD;GACD;AAEF,OAAM,GAAG,SAAS,SAAS;AACzB,MAAI,QAAQ,SAAS,EACnB,SAAQ,MAAM,mCAAmC,UAAU;GAE7D;;AAGJ,eAAe,yBAAyB,SAA+B;CACrE,MAAM,QAAQ,QAAQ,oBAAoB;CAC1C,MAAM,EAAE,eACN,QAAQ,2BAA2B;CACrC,MAAM,SAAS,MAAM,WAAW;EAC9B,QAAQ,KAAK,KAAK,QAAQ,eAAe,kBAAkB;EAC3D,KAAK,QAAQ;EACb,MAAM,QAAQ;EACf,CAAC;CACF,MAAM,EAAE,YAAY,KAAK,oBACvB,MAAM,MAAM,wBAAwB,QAAQ;EAC1C,OAAO;EACP,gBAAgB;EACjB,CAAC;CACJ,MAAM,SAAS,KAAK,cAAc,KAAK,QAAQ;AAC7C,MAAI,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,WAAW;AACxC,OAAI,UAAU,KAAK;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,+BAA+B,UAAU,OAAO,YAAY;IAC7D,CAAC;AACF,OAAI,IAAI,0BAA0B;AAClC;;AAGF,aAAW,KAAK,IAAI;GACpB;AAEF,QAAO,UAAU;AACjB,iBAAgB,OAAO;AAEvB,OAAM,IAAI,SAAe,SAAS,WAAW;AAC3C,SAAO,GAAG,SAAS,OAAO;AAC1B,SAAO,OAAO,QAAQ,MAAM,mBAAmB,SAAS,CAAC;GACzD;AAEF,QAAO,GAAG,UAAU,UAAU;AAC5B,UAAQ,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;GACrE;AAEF,SAAQ,IAAI,gDAAgD,QAAQ,OAAO;CAE3E,MAAM,cAAc;AAClB,SAAO,YAAY;AACjB,QAAK;AACL,WAAQ,KAAK,EAAE;IACf;;AAEJ,SAAQ,GAAG,UAAU,MAAM;AAC3B,SAAQ,GAAG,WAAW,MAAM;;AAG9B,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,cAAc,OAAO,KAAK,IAAI;EAC9B;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,wBAAwB;IACxB,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,KAAI;EACF,MAAM,WAAW,MAAM,gBAAgB,OAAO;AAC9C,MAAI,QAAQ,IAAI,kBAAkB,KAAK;AACrC,SAAM,iBAAiB,SAAS,UAAU;AAC1C,WAAQ,IAAI,uBAAuB;AACnC,qBAAkB,eAAe,mBAAmB,SAAS;;UAExD,OAAO;AACd,QAAM,KAAK,UAAU;AACrB,QAAM;;;AAIV,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,KAAI,YAAY,kBAAkB;AAChC,QAAM,yBAAyB,0BAA0B,KAAK,CAAC;AAC/D;;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 +0,0 @@
1
- {"version":3,"file":"config.d.cts","names":[],"sources":["../src/config.ts"],"sourcesContent":[],"mappings":";UAAiB,WAAA;EAAA,IAAA,EAAA,MAAA;EAOA,OAAA,CAAA,EAAA,MAAA;EAiBD,gBAAY,CAAA,EAAA,MAAA;EAcZ,MAAA,CAAA,EAAA,MAAA;;UA/BC,uBAAA;;;;;;;;;;;;;;;;iBAiBD,YAAA,SAAqB,cAAc;iBAcnC,gBAAA,SAAyB,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","names":[],"sources":["../src/config.ts"],"sourcesContent":[],"mappings":";UAAiB,WAAA;EAAA,IAAA,EAAA,MAAA;EAOA,OAAA,CAAA,EAAA,MAAA;EAiBD,gBAAY,CAAA,EAAA,MAAA;EAcZ,MAAA,CAAA,EAAA,MAAA;;UA/BC,uBAAA;;;;;;;;;;;;;;;;iBAiBD,YAAA,SAAqB,cAAc;iBAcnC,gBAAA,SAAyB,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","names":[],"sources":["../src/config.ts"],"sourcesContent":["export interface BleamConfig {\n name: string\n version?: string\n bundleIdentifier?: string\n teamId?: string\n}\n\nexport interface BleamInternalExpoConfig {\n expo: {\n name: string\n slug: string\n version: string\n orientation: 'default'\n platforms: ['ios']\n newArchEnabled: true\n extra: {\n bleam: {\n runtimeVersion: string\n sdkVersion: string\n }\n }\n }\n}\n\nexport function defineConfig(config: BleamConfig): BleamConfig {\n return config\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\nexport function createExpoConfig(config: BleamConfig): BleamInternalExpoConfig {\n return {\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 extra: {\n bleam: {\n runtimeVersion: config.version ?? '0.0.0',\n sdkVersion: config.version ?? '0.0.0',\n },\n },\n },\n }\n}\n"],"mappings":";AAwBA,SAAgB,aAAa,QAAkC;AAC7D,QAAO;;AAGT,SAAS,aAAa,MAAc;AAClC,QACE,KACG,MAAM,CACN,aAAa,CACb,QAAQ,eAAe,IAAI,CAC3B,QAAQ,UAAU,GAAG,IAAI;;AAIhC,SAAgB,iBAAiB,QAA8C;AAC7E,QAAO,EACL,MAAM;EACJ,MAAM,OAAO;EACb,MAAM,aAAa,OAAO,KAAK;EAC/B,SAAS,OAAO,WAAW;EAC3B,aAAa;EACb,WAAW,CAAC,MAAM;EAClB,gBAAgB;EAChB,OAAO,EACL,OAAO;GACL,gBAAgB,OAAO,WAAW;GAClC,YAAY,OAAO,WAAW;GAC/B,EACF;EACF,EACF"}
@@ -1,15 +0,0 @@
1
- const require_native_runtime = require('./native-runtime-CdeT0JyQ.cjs');
2
-
3
- //#region src/crypto.ts
4
- const crypto = { randomUUID() {
5
- require_native_runtime.ensureNativeScript();
6
- return String(require_native_runtime.globals().NSUUID.UUID().UUIDString).toLowerCase();
7
- } };
8
-
9
- //#endregion
10
- Object.defineProperty(exports, 'crypto', {
11
- enumerable: true,
12
- get: function () {
13
- return crypto;
14
- }
15
- });
@@ -1,8 +0,0 @@
1
- //#region src/crypto.d.ts
2
- interface BleamCrypto {
3
- randomUUID(): string;
4
- }
5
- declare const crypto: BleamCrypto;
6
- //#endregion
7
- export { crypto as n, BleamCrypto as t };
8
- //# sourceMappingURL=crypto-Bg8cD8wX.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto-Bg8cD8wX.d.cts","names":[],"sources":["../src/crypto.ts"],"sourcesContent":[],"mappings":";UAEiB,WAAA;EAAA,UAAA,EAAA,EAAW,MAAA;AAI5B;cAAa,QAAQ"}
@@ -1,11 +0,0 @@
1
- import { n as globals, t as ensureNativeScript } from "./native-runtime-BoqybBBf.js";
2
-
3
- //#region src/crypto.ts
4
- const crypto = { randomUUID() {
5
- ensureNativeScript();
6
- return String(globals().NSUUID.UUID().UUIDString).toLowerCase();
7
- } };
8
-
9
- //#endregion
10
- export { crypto as t };
11
- //# sourceMappingURL=crypto-CCA_hvao.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto-CCA_hvao.js","names":["crypto: BleamCrypto"],"sources":["../src/crypto.ts"],"sourcesContent":["import { ensureNativeScript, globals } from './native-runtime'\n\nexport interface BleamCrypto {\n randomUUID(): string\n}\n\nexport const crypto: BleamCrypto = {\n randomUUID() {\n ensureNativeScript()\n return String(globals().NSUUID.UUID().UUIDString).toLowerCase()\n },\n}\n"],"mappings":";;;AAMA,MAAaA,SAAsB,EACjC,aAAa;AACX,qBAAoB;AACpB,QAAO,OAAO,SAAS,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa;GAElE"}
@@ -1,8 +0,0 @@
1
- //#region src/crypto.d.ts
2
- interface BleamCrypto {
3
- randomUUID(): string;
4
- }
5
- declare const crypto: BleamCrypto;
6
- //#endregion
7
- export { crypto as n, BleamCrypto as t };
8
- //# sourceMappingURL=crypto-IOzbNoJD.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto-IOzbNoJD.d.ts","names":[],"sources":["../src/crypto.ts"],"sourcesContent":[],"mappings":";UAEiB,WAAA;EAAA,UAAA,EAAA,EAAW,MAAA;AAI5B;cAAa,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-protocol.d.cts","names":[],"sources":["../src/dev-protocol.ts"],"sourcesContent":[],"mappings":";UAAiB,aAAA;EAAA,IAAA,EAAA,MAAA;EAUJ,UAAA,EAAA,MAAA;EAEG,cAAA,EAAA,MAAA;EAIA,QAAA,EAAA,OAAA;;;;;cANH,mBAAA;iBAEG,uBAAA;iBAIA,eAAA,2BAA0C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-protocol.d.ts","names":[],"sources":["../src/dev-protocol.ts"],"sourcesContent":[],"mappings":";UAAiB,aAAA;EAAA,IAAA,EAAA,MAAA;EAUJ,UAAA,EAAA,MAAA;EAEG,cAAA,EAAA,MAAA;EAIA,QAAA,EAAA,OAAA;;;;;cANH,mBAAA;iBAEG,uBAAA;iBAIA,eAAA,2BAA0C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-protocol.js","names":[],"sources":["../src/dev-protocol.ts"],"sourcesContent":["export interface BleamManifest {\n name: string\n sdkVersion: string\n runtimeVersion: string\n platform: 'macos'\n bundleUrl: string\n assetsUrl?: string\n dev: boolean\n}\n\nexport const BLEAM_MANIFEST_PATH = '/bleam/manifest.json'\n\nexport function createBleamDevBundleUrl(origin: string) {\n return `${origin}/.expo/.virtual-metro-entry.bundle?platform=ios&dev=true&minify=false&runModule=true`\n}\n\nexport function isBleamManifest(value: unknown): value is BleamManifest {\n if (!value || typeof value !== 'object') {\n return false\n }\n\n const manifest = value as Partial<BleamManifest>\n\n return (\n typeof manifest.name === 'string' &&\n typeof manifest.sdkVersion === 'string' &&\n typeof manifest.runtimeVersion === 'string' &&\n manifest.platform === 'macos' &&\n typeof manifest.bundleUrl === 'string' &&\n typeof manifest.dev === 'boolean'\n )\n}\n"],"mappings":";AAUA,MAAa,sBAAsB;AAEnC,SAAgB,wBAAwB,QAAgB;AACtD,QAAO,GAAG,OAAO;;AAGnB,SAAgB,gBAAgB,OAAwC;AACtE,KAAI,CAAC,SAAS,OAAO,UAAU,SAC7B,QAAO;CAGT,MAAM,WAAW;AAEjB,QACE,OAAO,SAAS,SAAS,YACzB,OAAO,SAAS,eAAe,YAC/B,OAAO,SAAS,mBAAmB,YACnC,SAAS,aAAa,WACtB,OAAO,SAAS,cAAc,YAC9B,OAAO,SAAS,QAAQ"}
@@ -1,13 +0,0 @@
1
- //#region src/fs.ts
2
- const fs = {
3
- readText() {
4
- throw new Error("bleam/fs is not available in this runtime yet");
5
- },
6
- writeText() {
7
- throw new Error("bleam/fs is not available in this runtime yet");
8
- }
9
- };
10
-
11
- //#endregion
12
- export { fs as t };
13
- //# sourceMappingURL=fs-BK7joD1g.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-BK7joD1g.js","names":["fs: BleamFileSystem"],"sources":["../src/fs.ts"],"sourcesContent":["export interface BleamFileSystem {\n readText(path: string): Promise<string>\n writeText(path: string, contents: string): Promise<void>\n}\n\nexport const fs: BleamFileSystem = {\n readText() {\n throw new Error('bleam/fs is not available in this runtime yet')\n },\n writeText() {\n throw new Error('bleam/fs is not available in this runtime yet')\n },\n}\n"],"mappings":";AAKA,MAAaA,KAAsB;CACjC,WAAW;AACT,QAAM,IAAI,MAAM,gDAAgD;;CAElE,YAAY;AACV,QAAM,IAAI,MAAM,gDAAgD;;CAEnE"}
@@ -1,9 +0,0 @@
1
- //#region src/fs.d.ts
2
- interface BleamFileSystem {
3
- readText(path: string): Promise<string>;
4
- writeText(path: string, contents: string): Promise<void>;
5
- }
6
- declare const fs: BleamFileSystem;
7
- //#endregion
8
- export { fs as n, BleamFileSystem as t };
9
- //# sourceMappingURL=fs-CEhcjuN6.d.ts.map
@@ -1 +0,0 @@
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"}