lakebed-native-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/dist/cli/apple/branding.d.ts +9 -0
  2. package/dist/cli/apple/branding.d.ts.map +1 -0
  3. package/dist/cli/apple/branding.js +40 -0
  4. package/dist/cli/apple/branding.js.map +1 -0
  5. package/dist/cli/apple/build-cloud.d.ts +6 -0
  6. package/dist/cli/apple/build-cloud.d.ts.map +1 -0
  7. package/dist/cli/apple/build-cloud.js +34 -0
  8. package/dist/cli/apple/build-cloud.js.map +1 -0
  9. package/dist/cli/apple/build-local.d.ts +16 -0
  10. package/dist/cli/apple/build-local.d.ts.map +1 -0
  11. package/dist/cli/apple/build-local.js +97 -0
  12. package/dist/cli/apple/build-local.js.map +1 -0
  13. package/dist/cli/apple/choose-path.d.ts +23 -0
  14. package/dist/cli/apple/choose-path.d.ts.map +1 -0
  15. package/dist/cli/apple/choose-path.js +78 -0
  16. package/dist/cli/apple/choose-path.js.map +1 -0
  17. package/dist/cli/apple/device-pack.d.ts +36 -0
  18. package/dist/cli/apple/device-pack.d.ts.map +1 -0
  19. package/dist/cli/apple/device-pack.js +210 -0
  20. package/dist/cli/apple/device-pack.js.map +1 -0
  21. package/dist/cli/apple/devices.d.ts +6 -0
  22. package/dist/cli/apple/devices.d.ts.map +1 -0
  23. package/dist/cli/apple/devices.js +49 -0
  24. package/dist/cli/apple/devices.js.map +1 -0
  25. package/dist/cli/apple/eas-delegate.d.ts +25 -0
  26. package/dist/cli/apple/eas-delegate.d.ts.map +1 -0
  27. package/dist/cli/apple/eas-delegate.js +63 -0
  28. package/dist/cli/apple/eas-delegate.js.map +1 -0
  29. package/dist/cli/apple/index.d.ts +9 -0
  30. package/dist/cli/apple/index.d.ts.map +1 -0
  31. package/dist/cli/apple/index.js +12 -0
  32. package/dist/cli/apple/index.js.map +1 -0
  33. package/dist/cli/apple/route-device-build.d.ts +16 -0
  34. package/dist/cli/apple/route-device-build.d.ts.map +1 -0
  35. package/dist/cli/apple/route-device-build.js +54 -0
  36. package/dist/cli/apple/route-device-build.js.map +1 -0
  37. package/dist/cli/apple/setup.d.ts +5 -0
  38. package/dist/cli/apple/setup.d.ts.map +1 -0
  39. package/dist/cli/apple/setup.js +69 -0
  40. package/dist/cli/apple/setup.js.map +1 -0
  41. package/dist/cli/apple/shell-ipa.d.ts +7 -0
  42. package/dist/cli/apple/shell-ipa.d.ts.map +1 -0
  43. package/dist/cli/apple/shell-ipa.js +73 -0
  44. package/dist/cli/apple/shell-ipa.js.map +1 -0
  45. package/dist/cli/apple/sign-ios.d.ts +24 -0
  46. package/dist/cli/apple/sign-ios.d.ts.map +1 -0
  47. package/dist/cli/apple/sign-ios.js +148 -0
  48. package/dist/cli/apple/sign-ios.js.map +1 -0
  49. package/dist/cli/apple/status.d.ts +64 -0
  50. package/dist/cli/apple/status.d.ts.map +1 -0
  51. package/dist/cli/apple/status.js +249 -0
  52. package/dist/cli/apple/status.js.map +1 -0
  53. package/dist/cli/bin.d.ts +3 -0
  54. package/dist/cli/bin.d.ts.map +1 -0
  55. package/dist/cli/bin.js +7 -0
  56. package/dist/cli/bin.js.map +1 -0
  57. package/dist/cli/bundler.d.ts +16 -0
  58. package/dist/cli/bundler.d.ts.map +1 -0
  59. package/dist/cli/bundler.js +109 -0
  60. package/dist/cli/bundler.js.map +1 -0
  61. package/dist/cli/capsule-eas.d.ts +27 -0
  62. package/dist/cli/capsule-eas.d.ts.map +1 -0
  63. package/dist/cli/capsule-eas.js +131 -0
  64. package/dist/cli/capsule-eas.js.map +1 -0
  65. package/dist/cli/cloud/index.d.ts +14 -0
  66. package/dist/cli/cloud/index.d.ts.map +1 -0
  67. package/dist/cli/cloud/index.js +118 -0
  68. package/dist/cli/cloud/index.js.map +1 -0
  69. package/dist/cli/cloud-client.d.ts +38 -0
  70. package/dist/cli/cloud-client.d.ts.map +1 -0
  71. package/dist/cli/cloud-client.js +71 -0
  72. package/dist/cli/cloud-client.js.map +1 -0
  73. package/dist/cli/commands/auth.d.ts +2 -0
  74. package/dist/cli/commands/auth.d.ts.map +1 -0
  75. package/dist/cli/commands/auth.js +18 -0
  76. package/dist/cli/commands/auth.js.map +1 -0
  77. package/dist/cli/commands/build-native.d.ts +18 -0
  78. package/dist/cli/commands/build-native.d.ts.map +1 -0
  79. package/dist/cli/commands/build-native.js +156 -0
  80. package/dist/cli/commands/build-native.js.map +1 -0
  81. package/dist/cli/commands/build.d.ts +6 -0
  82. package/dist/cli/commands/build.d.ts.map +1 -0
  83. package/dist/cli/commands/build.js +57 -0
  84. package/dist/cli/commands/build.js.map +1 -0
  85. package/dist/cli/commands/claim.d.ts +2 -0
  86. package/dist/cli/commands/claim.d.ts.map +1 -0
  87. package/dist/cli/commands/claim.js +2 -0
  88. package/dist/cli/commands/claim.js.map +1 -0
  89. package/dist/cli/commands/db.d.ts +7 -0
  90. package/dist/cli/commands/db.d.ts.map +1 -0
  91. package/dist/cli/commands/db.js +18 -0
  92. package/dist/cli/commands/db.js.map +1 -0
  93. package/dist/cli/commands/deploy.d.ts +10 -0
  94. package/dist/cli/commands/deploy.d.ts.map +1 -0
  95. package/dist/cli/commands/deploy.js +101 -0
  96. package/dist/cli/commands/deploy.js.map +1 -0
  97. package/dist/cli/commands/dev.d.ts +5 -0
  98. package/dist/cli/commands/dev.d.ts.map +1 -0
  99. package/dist/cli/commands/dev.js +46 -0
  100. package/dist/cli/commands/dev.js.map +1 -0
  101. package/dist/cli/commands/devices.d.ts +4 -0
  102. package/dist/cli/commands/devices.d.ts.map +1 -0
  103. package/dist/cli/commands/devices.js +27 -0
  104. package/dist/cli/commands/devices.js.map +1 -0
  105. package/dist/cli/commands/domains.d.ts +5 -0
  106. package/dist/cli/commands/domains.d.ts.map +1 -0
  107. package/dist/cli/commands/domains.js +36 -0
  108. package/dist/cli/commands/domains.js.map +1 -0
  109. package/dist/cli/commands/inspect.d.ts +7 -0
  110. package/dist/cli/commands/inspect.d.ts.map +1 -0
  111. package/dist/cli/commands/inspect.js +15 -0
  112. package/dist/cli/commands/inspect.js.map +1 -0
  113. package/dist/cli/commands/logs.d.ts +7 -0
  114. package/dist/cli/commands/logs.d.ts.map +1 -0
  115. package/dist/cli/commands/logs.js +15 -0
  116. package/dist/cli/commands/logs.js.map +1 -0
  117. package/dist/cli/commands/new.d.ts +6 -0
  118. package/dist/cli/commands/new.d.ts.map +1 -0
  119. package/dist/cli/commands/new.js +17 -0
  120. package/dist/cli/commands/new.js.map +1 -0
  121. package/dist/cli/commands/open.d.ts +5 -0
  122. package/dist/cli/commands/open.d.ts.map +1 -0
  123. package/dist/cli/commands/open.js +14 -0
  124. package/dist/cli/commands/open.js.map +1 -0
  125. package/dist/cli/commands/pack.d.ts +32 -0
  126. package/dist/cli/commands/pack.d.ts.map +1 -0
  127. package/dist/cli/commands/pack.js +273 -0
  128. package/dist/cli/commands/pack.js.map +1 -0
  129. package/dist/cli/commands/screenshot.d.ts +5 -0
  130. package/dist/cli/commands/screenshot.d.ts.map +1 -0
  131. package/dist/cli/commands/screenshot.js +8 -0
  132. package/dist/cli/commands/screenshot.js.map +1 -0
  133. package/dist/cli/commands/shell-fetch.d.ts +5 -0
  134. package/dist/cli/commands/shell-fetch.d.ts.map +1 -0
  135. package/dist/cli/commands/shell-fetch.js +123 -0
  136. package/dist/cli/commands/shell-fetch.js.map +1 -0
  137. package/dist/cli/commands/shell.d.ts +2 -0
  138. package/dist/cli/commands/shell.d.ts.map +1 -0
  139. package/dist/cli/commands/shell.js +2 -0
  140. package/dist/cli/commands/shell.js.map +1 -0
  141. package/dist/cli/commands/submit.d.ts +2 -0
  142. package/dist/cli/commands/submit.d.ts.map +1 -0
  143. package/dist/cli/commands/submit.js +2 -0
  144. package/dist/cli/commands/submit.js.map +1 -0
  145. package/dist/cli/commands/tree.d.ts +5 -0
  146. package/dist/cli/commands/tree.d.ts.map +1 -0
  147. package/dist/cli/commands/tree.js +23 -0
  148. package/dist/cli/commands/tree.js.map +1 -0
  149. package/dist/cli/deploy-metadata.d.ts +10 -0
  150. package/dist/cli/deploy-metadata.d.ts.map +1 -0
  151. package/dist/cli/deploy-metadata.js +50 -0
  152. package/dist/cli/deploy-metadata.js.map +1 -0
  153. package/dist/cli/deploy-runtime.d.ts +4 -0
  154. package/dist/cli/deploy-runtime.d.ts.map +1 -0
  155. package/dist/cli/deploy-runtime.js +14 -0
  156. package/dist/cli/deploy-runtime.js.map +1 -0
  157. package/dist/cli/dev-config.d.ts +2 -0
  158. package/dist/cli/dev-config.d.ts.map +1 -0
  159. package/dist/cli/dev-config.js +36 -0
  160. package/dist/cli/dev-config.js.map +1 -0
  161. package/dist/cli/hosted-client.d.ts +39 -0
  162. package/dist/cli/hosted-client.d.ts.map +1 -0
  163. package/dist/cli/hosted-client.js +275 -0
  164. package/dist/cli/hosted-client.js.map +1 -0
  165. package/dist/cli/hosted-v1-store.d.ts +73 -0
  166. package/dist/cli/hosted-v1-store.d.ts.map +1 -0
  167. package/dist/cli/hosted-v1-store.js +96 -0
  168. package/dist/cli/hosted-v1-store.js.map +1 -0
  169. package/dist/cli/hosted.d.ts +13 -0
  170. package/dist/cli/hosted.d.ts.map +1 -0
  171. package/dist/cli/hosted.js +337 -0
  172. package/dist/cli/hosted.js.map +1 -0
  173. package/dist/cli/index.d.ts +2 -0
  174. package/dist/cli/index.d.ts.map +1 -0
  175. package/dist/cli/index.js +261 -0
  176. package/dist/cli/index.js.map +1 -0
  177. package/dist/cli/kit-paths.d.ts +8 -0
  178. package/dist/cli/kit-paths.d.ts.map +1 -0
  179. package/dist/cli/kit-paths.js +67 -0
  180. package/dist/cli/kit-paths.js.map +1 -0
  181. package/dist/cli/loader.d.ts +2 -0
  182. package/dist/cli/loader.d.ts.map +1 -0
  183. package/dist/cli/loader.js +5 -0
  184. package/dist/cli/loader.js.map +1 -0
  185. package/dist/cli/native-deploy-payload.d.ts +17 -0
  186. package/dist/cli/native-deploy-payload.d.ts.map +1 -0
  187. package/dist/cli/native-deploy-payload.js +29 -0
  188. package/dist/cli/native-deploy-payload.js.map +1 -0
  189. package/dist/cli/platform-detect.d.ts +11 -0
  190. package/dist/cli/platform-detect.d.ts.map +1 -0
  191. package/dist/cli/platform-detect.js +54 -0
  192. package/dist/cli/platform-detect.js.map +1 -0
  193. package/dist/cli/site.d.ts +6 -0
  194. package/dist/cli/site.d.ts.map +1 -0
  195. package/dist/cli/site.js +9 -0
  196. package/dist/cli/site.js.map +1 -0
  197. package/dist/cli/util.d.ts +12 -0
  198. package/dist/cli/util.d.ts.map +1 -0
  199. package/dist/cli/util.js +118 -0
  200. package/dist/cli/util.js.map +1 -0
  201. package/dist/cli/web-deploy-envelope.d.ts +15 -0
  202. package/dist/cli/web-deploy-envelope.d.ts.map +1 -0
  203. package/dist/cli/web-deploy-envelope.js +156 -0
  204. package/dist/cli/web-deploy-envelope.js.map +1 -0
  205. package/metro.lakebed-native.cjs +94 -0
  206. package/package.json +38 -0
  207. package/templates/camera-note/.env.lakebed.native.server +1 -0
  208. package/templates/camera-note/.lakebed-native/dev.json +6 -0
  209. package/templates/camera-note/.lakebed-native/metro/.expo/README.md +8 -0
  210. package/templates/camera-note/.lakebed-native/metro/.expo/devices.json +3 -0
  211. package/templates/camera-note/.lakebed-native/metro/index.js +2 -0
  212. package/templates/camera-note/.lakebed-native/metro/metro.config.js +4 -0
  213. package/templates/camera-note/.lakebed-native/metro/package.json +4 -0
  214. package/templates/camera-note/AGENTS.md +1 -0
  215. package/templates/camera-note/README.md +1 -0
  216. package/templates/camera-note/app/index.tsx +64 -0
  217. package/templates/camera-note/server/index.ts +23 -0
  218. package/templates/error-fixture/.env.lakebed.native.server +1 -0
  219. package/templates/error-fixture/.lakebed-native/dev.json +6 -0
  220. package/templates/error-fixture/.lakebed-native/metro/.expo/README.md +8 -0
  221. package/templates/error-fixture/.lakebed-native/metro/.expo/devices.json +3 -0
  222. package/templates/error-fixture/.lakebed-native/metro/index.js +2 -0
  223. package/templates/error-fixture/.lakebed-native/metro/metro.config.js +4 -0
  224. package/templates/error-fixture/.lakebed-native/metro/package.json +4 -0
  225. package/templates/error-fixture/AGENTS.md +1 -0
  226. package/templates/error-fixture/README.md +1 -0
  227. package/templates/error-fixture/app/index.tsx +31 -0
  228. package/templates/error-fixture/server/index.ts +19 -0
  229. package/templates/form/.env.lakebed.native.server +1 -0
  230. package/templates/form/.lakebed-native/dev.json +6 -0
  231. package/templates/form/.lakebed-native/metro/.expo/README.md +8 -0
  232. package/templates/form/.lakebed-native/metro/.expo/devices.json +3 -0
  233. package/templates/form/.lakebed-native/metro/index.js +2 -0
  234. package/templates/form/.lakebed-native/metro/metro.config.js +4 -0
  235. package/templates/form/.lakebed-native/metro/package.json +4 -0
  236. package/templates/form/AGENTS.md +1 -0
  237. package/templates/form/README.md +1 -0
  238. package/templates/form/app/index.tsx +56 -0
  239. package/templates/form/server/index.ts +27 -0
  240. package/templates/guestbook/.env.lakebed.native.server +1 -0
  241. package/templates/guestbook/AGENTS.md +1 -0
  242. package/templates/guestbook/README.md +3 -0
  243. package/templates/guestbook/app/index.tsx +45 -0
  244. package/templates/guestbook/server/index.ts +31 -0
  245. package/templates/location-checkin/.env.lakebed.native.server +1 -0
  246. package/templates/location-checkin/.lakebed-native/dev.json +6 -0
  247. package/templates/location-checkin/.lakebed-native/metro/.expo/README.md +8 -0
  248. package/templates/location-checkin/.lakebed-native/metro/.expo/devices.json +3 -0
  249. package/templates/location-checkin/.lakebed-native/metro/index.js +2 -0
  250. package/templates/location-checkin/.lakebed-native/metro/metro.config.js +4 -0
  251. package/templates/location-checkin/.lakebed-native/metro/package.json +4 -0
  252. package/templates/location-checkin/AGENTS.md +1 -0
  253. package/templates/location-checkin/README.md +1 -0
  254. package/templates/location-checkin/app/index.tsx +52 -0
  255. package/templates/location-checkin/server/index.ts +34 -0
  256. package/templates/tabs/.env.lakebed.native.server +1 -0
  257. package/templates/tabs/AGENTS.md +1 -0
  258. package/templates/tabs/README.md +1 -0
  259. package/templates/tabs/app/index.tsx +39 -0
  260. package/templates/tabs/server/index.ts +9 -0
  261. package/templates/todo/.env.lakebed.native.server +1 -0
  262. package/templates/todo/AGENTS.md +27 -0
  263. package/templates/todo/README.md +18 -0
  264. package/templates/todo/app/index.tsx +112 -0
  265. package/templates/todo/server/index.ts +51 -0
@@ -0,0 +1,8 @@
1
+ /** Root of the published kit (templates, metro config) — `lakebed-native-cli` on npm. */
2
+ export declare function getKitRoot(): string;
3
+ export declare function resolveLakebedServerEntry(): string;
4
+ export declare function getShellCacheDir(): string;
5
+ export declare function getTemplatesDir(): string;
6
+ /** Prefer downloaded shell cache, then monorepo `shell/` during platform dev. */
7
+ export declare function getShellDir(): string;
8
+ //# sourceMappingURL=kit-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit-paths.d.ts","sourceRoot":"","sources":["../../src/cli/kit-paths.ts"],"names":[],"mappings":"AASA,yFAAyF;AACzF,wBAAgB,UAAU,IAAI,MAAM,CAcnC;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAalD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAID,iFAAiF;AACjF,wBAAgB,WAAW,IAAI,MAAM,CAepC"}
@@ -0,0 +1,67 @@
1
+ import { createRequire } from "node:module";
2
+ import { existsSync } from "node:fs";
3
+ import { homedir } from "node:os";
4
+ import { dirname, join, resolve } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ /** Monorepo root when developing the platform itself. */
7
+ const MONOREPO_ROOT = resolve(fileURLToPath(new URL("../../../..", import.meta.url)));
8
+ /** Root of the published kit (templates, metro config) — `lakebed-native-cli` on npm. */
9
+ export function getKitRoot() {
10
+ if (process.env.LAKEBED_NATIVE_ROOT) {
11
+ return resolve(process.env.LAKEBED_NATIVE_ROOT);
12
+ }
13
+ if (existsSync(join(MONOREPO_ROOT, "packages", "server"))) {
14
+ return MONOREPO_ROOT;
15
+ }
16
+ try {
17
+ const require = createRequire(import.meta.url);
18
+ const pkg = require.resolve("lakebed-native-cli/package.json");
19
+ return dirname(pkg);
20
+ }
21
+ catch {
22
+ return MONOREPO_ROOT;
23
+ }
24
+ }
25
+ export function resolveLakebedServerEntry() {
26
+ try {
27
+ const require = createRequire(import.meta.url);
28
+ try {
29
+ const pkg = require.resolve("lakebed/package.json");
30
+ return join(dirname(pkg), "dist/server/index.js");
31
+ }
32
+ catch {
33
+ const pkg = require.resolve("@lakebed-native/server/package.json");
34
+ return join(dirname(pkg), "dist/server/index.js");
35
+ }
36
+ }
37
+ catch {
38
+ return join(MONOREPO_ROOT, "packages/server/src/server/index.ts");
39
+ }
40
+ }
41
+ export function getShellCacheDir() {
42
+ return join(homedir(), ".lakebed-native", "shell");
43
+ }
44
+ export function getTemplatesDir() {
45
+ const inKit = join(getKitRoot(), "templates");
46
+ if (existsSync(inKit))
47
+ return inKit;
48
+ return join(MONOREPO_ROOT, "templates");
49
+ }
50
+ const SHELL_APP = "LakebedNative.app";
51
+ /** Prefer downloaded shell cache, then monorepo `shell/` during platform dev. */
52
+ export function getShellDir() {
53
+ const cache = getShellCacheDir();
54
+ const cached = existsSync(join(cache, "LakebedNative-standalone.apk")) ||
55
+ existsSync(join(cache, SHELL_APP)) ||
56
+ existsSync(join(cache, "LakebedNative-device.ipa"));
57
+ if (cached)
58
+ return cache;
59
+ for (const root of [getKitRoot(), MONOREPO_ROOT]) {
60
+ const shell = join(root, "shell");
61
+ if (existsSync(join(shell, "App.tsx")) || existsSync(join(shell, SHELL_APP))) {
62
+ return shell;
63
+ }
64
+ }
65
+ return cache;
66
+ }
67
+ //# sourceMappingURL=kit-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit-paths.js","sourceRoot":"","sources":["../../src/cli/kit-paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function loadCapsuleServer(entryPath: string): Promise<void>;
2
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/cli/loader.ts"],"names":[],"mappings":"AAEA,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExE"}
@@ -0,0 +1,5 @@
1
+ import { pathToFileURL } from "node:url";
2
+ export async function loadCapsuleServer(entryPath) {
3
+ await import(pathToFileURL(entryPath).href);
4
+ }
5
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/cli/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB;IACvD,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type NativeArtifact } from "@lakebed-native/shared";
2
+ export declare function nativeClientBundleBase64(artifact: NativeArtifact): string;
3
+ export declare function nativeClientBundleBytes(artifact: NativeArtifact): number;
4
+ export declare function sha256Hex(input: Buffer | string): string;
5
+ export declare function validateNativeArtifactBundle(artifact: NativeArtifact): void;
6
+ export declare function buildNativeDeployRequestBody(artifact: NativeArtifact, opts?: {
7
+ inspectPolicy?: "private" | "public";
8
+ serverEnv?: Record<string, string>;
9
+ }): {
10
+ platform: "native";
11
+ artifact: NativeArtifact;
12
+ clientBundle: string;
13
+ clientVersion: string;
14
+ inspectPolicy?: "private" | "public";
15
+ serverEnv?: Record<string, string>;
16
+ };
17
+ //# sourceMappingURL=native-deploy-payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-deploy-payload.d.ts","sourceRoot":"","sources":["../../src/cli/native-deploy-payload.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEzE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAEzE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAExE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAK3E;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,cAAc,EACxB,IAAI,CAAC,EAAE;IACL,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,GACA;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAUA"}
@@ -0,0 +1,29 @@
1
+ import { createHash } from "node:crypto";
2
+ import { hashString } from "@lakebed-native/shared";
3
+ export function nativeClientBundleBase64(artifact) {
4
+ return Buffer.from(artifact.native.bundle, "utf8").toString("base64");
5
+ }
6
+ export function nativeClientBundleBytes(artifact) {
7
+ return Buffer.byteLength(artifact.native.bundle, "utf8");
8
+ }
9
+ export function sha256Hex(input) {
10
+ return createHash("sha256").update(input).digest("hex");
11
+ }
12
+ export function validateNativeArtifactBundle(artifact) {
13
+ const hash = hashString(artifact.native.bundle);
14
+ if (hash !== artifact.native.bundleHash) {
15
+ throw new Error("Native bundle hash does not match artifact.native.bundleHash.");
16
+ }
17
+ }
18
+ export function buildNativeDeployRequestBody(artifact, opts) {
19
+ validateNativeArtifactBundle(artifact);
20
+ return {
21
+ platform: "native",
22
+ artifact,
23
+ clientBundle: nativeClientBundleBase64(artifact),
24
+ clientVersion: artifact.runtimeVersion,
25
+ inspectPolicy: opts?.inspectPolicy,
26
+ serverEnv: opts?.serverEnv,
27
+ };
28
+ }
29
+ //# sourceMappingURL=native-deploy-payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-deploy-payload.js","sourceRoot":"","sources":["../../src/cli/native-deploy-payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAuB,MAAM,wBAAwB,CAAC;AAEzE,MAAM,UAAU,wBAAwB,CAAC,QAAwB;IAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAwB;IAC9D,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAsB;IAC9C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAAwB;IACnE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAwB,EACxB,IAGC;IASD,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,QAAQ;QACR,YAAY,EAAE,wBAAwB,CAAC,QAAQ,CAAC;QAChD,aAAa,EAAE,QAAQ,CAAC,cAAc;QACtC,aAAa,EAAE,IAAI,EAAE,aAAa;QAClC,SAAS,EAAE,IAAI,EAAE,SAAS;KAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type PlatformCapabilities = {
2
+ isMac: boolean;
3
+ hasXcode: boolean;
4
+ xcodeVersion?: string;
5
+ hasEasCli: boolean;
6
+ easVersion?: string;
7
+ };
8
+ export declare function detectPlatform(): PlatformCapabilities;
9
+ export declare function listConnectedIosDevices(): string[];
10
+ export declare function shellEasConfigExists(): boolean;
11
+ //# sourceMappingURL=platform-detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-detect.d.ts","sourceRoot":"","sources":["../../src/cli/platform-detect.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,cAAc,IAAI,oBAAoB,CAuBrD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAgBlD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C"}
@@ -0,0 +1,54 @@
1
+ import { execSync } from "node:child_process";
2
+ import { existsSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { getShellDir } from "./util.js";
5
+ export function detectPlatform() {
6
+ const isMac = process.platform === "darwin";
7
+ let hasXcode = false;
8
+ let xcodeVersion;
9
+ if (isMac) {
10
+ try {
11
+ xcodeVersion = execSync("xcodebuild -version", { encoding: "utf8" }).split("\n")[0]?.trim();
12
+ hasXcode = !!xcodeVersion;
13
+ }
14
+ catch {
15
+ hasXcode = false;
16
+ }
17
+ }
18
+ let hasEasCli = false;
19
+ let easVersion;
20
+ try {
21
+ easVersion = execSync("eas --version", { encoding: "utf8" }).trim();
22
+ hasEasCli = !!easVersion;
23
+ }
24
+ catch {
25
+ hasEasCli = false;
26
+ }
27
+ return { isMac, hasXcode, xcodeVersion, hasEasCli, easVersion };
28
+ }
29
+ export function listConnectedIosDevices() {
30
+ if (process.platform !== "darwin")
31
+ return [];
32
+ try {
33
+ const raw = execSync("xcrun xctrace list devices 2>/dev/null || xcrun simctl list devices", {
34
+ encoding: "utf8",
35
+ });
36
+ const physical = [];
37
+ for (const line of raw.split("\n")) {
38
+ if (line.includes("Simulator"))
39
+ continue;
40
+ const m = line.match(/^(.+?) \([0-9A-Fa-f-]{36}\)/);
41
+ if (m && !line.includes("Unavailable"))
42
+ physical.push(m[1].trim());
43
+ }
44
+ return physical;
45
+ }
46
+ catch {
47
+ return [];
48
+ }
49
+ }
50
+ export function shellEasConfigExists() {
51
+ const shellDir = getShellDir();
52
+ return existsSync(join(shellDir, "eas.json")) && existsSync(join(shellDir, "app.json"));
53
+ }
54
+ //# sourceMappingURL=platform-detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-detect.js","sourceRoot":"","sources":["../../src/cli/platform-detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAUxC,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,YAAgC,CAAC;IACrC,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC;YACH,YAAY,GAAG,QAAQ,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC5F,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,UAA8B,CAAC;IACnC,IAAI,CAAC;QACH,UAAU,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,qEAAqE,EAAE;YAC1F,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,SAAS;YACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1F,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Public Lakebed Native site — docs, cloud API, shell downloads. */
2
+ export declare const LAKEBED_NATIVE_SITE: string;
3
+ export declare const SHELL_MANIFEST_URL: string;
4
+ export declare const DOCS_URL: string;
5
+ export declare function shellFetchHint(platform?: "android" | "ios" | "all"): string;
6
+ //# sourceMappingURL=site.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../src/cli/site.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,QACoD,CAAC;AAErF,eAAO,MAAM,kBAAkB,QAA+C,CAAC;AAE/E,eAAO,MAAM,QAAQ,QAA4C,CAAC;AAElE,wBAAgB,cAAc,CAAC,QAAQ,GAAE,SAAS,GAAG,KAAK,GAAG,KAAa,GAAG,MAAM,CAGlF"}
@@ -0,0 +1,9 @@
1
+ /** Public Lakebed Native site — docs, cloud API, shell downloads. */
2
+ export const LAKEBED_NATIVE_SITE = process.env.LAKEBED_NATIVE_SITE?.replace(/\/$/, "") ?? "https://lakebednative.xyz";
3
+ export const SHELL_MANIFEST_URL = `${LAKEBED_NATIVE_SITE}/shell/manifest.json`;
4
+ export const DOCS_URL = `${LAKEBED_NATIVE_SITE}/docs/README.html`;
5
+ export function shellFetchHint(platform = "all") {
6
+ const flag = platform === "all" ? "" : ` --platform ${platform}`;
7
+ return `Download the universal shell: npx lakebed-native shell fetch${flag}\nDocs: ${DOCS_URL}`;
8
+ }
9
+ //# sourceMappingURL=site.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site.js","sourceRoot":"","sources":["../../src/cli/site.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAC9B,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,2BAA2B,CAAC;AAErF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,mBAAmB,sBAAsB,CAAC;AAE/E,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,mBAAmB,mBAAmB,CAAC;AAElE,MAAM,UAAU,cAAc,CAAC,WAAsC,KAAK;IACxE,MAAM,IAAI,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,QAAQ,EAAE,CAAC;IACjE,OAAO,+DAA+D,IAAI,WAAW,QAAQ,EAAE,CAAC;AAClG,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { getKitRoot, getShellCacheDir, getShellDir, getTemplatesDir } from "./kit-paths.js";
2
+ export declare function scaffoldCapsule(name: string, template: string, noGit: boolean): string;
3
+ export declare function resolveCapsuleDir(dir: string): string;
4
+ export declare function loadEnvFile(capsuleDir: string): Record<string, string>;
5
+ export declare function ensureDir(path: string): void;
6
+ export declare function outputJson(data: unknown): void;
7
+ export declare function resolveTargetUrl(target: string | undefined, port: string): string;
8
+ export declare const DEFAULT_IOS_SIMULATOR: string;
9
+ export declare function resolveIosDevice(device?: string): string;
10
+ export declare function bootIosSimulator(device?: string): string;
11
+ export declare function fetchJson<T>(url: string, init?: RequestInit): Promise<T>;
12
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/cli/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAG5F,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,GACb,MAAM,CA4BR;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASrD;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYtE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjF;AAED,eAAO,MAAM,qBAAqB,QACkC,CAAC;AAErE,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBxD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBxD;AAED,wBAAsB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAO9E"}
@@ -0,0 +1,118 @@
1
+ import { cpSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { execSync } from "node:child_process";
3
+ import { join, resolve } from "node:path";
4
+ export { getKitRoot, getShellCacheDir, getShellDir, getTemplatesDir } from "./kit-paths.js";
5
+ import { getTemplatesDir } from "./kit-paths.js";
6
+ export function scaffoldCapsule(name, template, noGit) {
7
+ const targetDir = resolve(process.cwd(), name);
8
+ if (existsSync(targetDir)) {
9
+ throw new Error(`Directory already exists: ${targetDir}`);
10
+ }
11
+ const templateDir = join(getTemplatesDir(), template);
12
+ if (!existsSync(templateDir)) {
13
+ throw new Error(`Unknown template "${template}". Available: todo, guestbook, camera-note, location-checkin, tabs, form`);
14
+ }
15
+ cpSync(templateDir, targetDir, { recursive: true });
16
+ const readme = readFileSync(join(targetDir, "README.md"), "utf8").replace(/{{name}}/g, name);
17
+ writeFileSync(join(targetDir, "README.md"), readme);
18
+ if (!noGit) {
19
+ execSync("git init", { cwd: targetDir, stdio: "ignore" });
20
+ execSync("git add .", { cwd: targetDir, stdio: "ignore" });
21
+ execSync('git commit -m "Initial Lakebed Native capsule"', {
22
+ cwd: targetDir,
23
+ stdio: "ignore",
24
+ });
25
+ }
26
+ console.log(`Created capsule "${name}" at ${targetDir}`);
27
+ console.log(`Run: cd ${name} && npx lakebed-native dev`);
28
+ return targetDir;
29
+ }
30
+ export function resolveCapsuleDir(dir) {
31
+ const abs = resolve(process.cwd(), dir);
32
+ if (!existsSync(join(abs, "app", "index.tsx"))) {
33
+ throw new Error(`Not a capsule directory (missing app/index.tsx): ${abs}`);
34
+ }
35
+ if (!existsSync(join(abs, "server", "index.ts"))) {
36
+ throw new Error(`Not a capsule directory (missing server/index.ts): ${abs}`);
37
+ }
38
+ return abs;
39
+ }
40
+ export function loadEnvFile(capsuleDir) {
41
+ const envPath = join(capsuleDir, ".env.lakebed.native.server");
42
+ const env = {};
43
+ if (!existsSync(envPath))
44
+ return env;
45
+ for (const line of readFileSync(envPath, "utf8").split("\n")) {
46
+ const trimmed = line.trim();
47
+ if (!trimmed || trimmed.startsWith("#"))
48
+ continue;
49
+ const eq = trimmed.indexOf("=");
50
+ if (eq === -1)
51
+ continue;
52
+ env[trimmed.slice(0, eq)] = trimmed.slice(eq + 1);
53
+ }
54
+ return env;
55
+ }
56
+ export function ensureDir(path) {
57
+ mkdirSync(path, { recursive: true });
58
+ }
59
+ export function outputJson(data) {
60
+ console.log(JSON.stringify(data, null, 2));
61
+ }
62
+ export function resolveTargetUrl(target, port) {
63
+ if (!target || target === "local")
64
+ return `http://localhost:${port}`;
65
+ if (target.startsWith("http"))
66
+ return target.replace(/\/$/, "");
67
+ return `http://localhost:${port}`;
68
+ }
69
+ export const DEFAULT_IOS_SIMULATOR = process.env.LAKEBED_NATIVE_IOS_SIMULATOR ?? "iPhone 17 Pro Cursor";
70
+ export function resolveIosDevice(device) {
71
+ const target = device ?? DEFAULT_IOS_SIMULATOR;
72
+ try {
73
+ const raw = execSync("xcrun simctl list devices available -j", { encoding: "utf8" });
74
+ const parsed = JSON.parse(raw);
75
+ const all = Object.values(parsed.devices).flat();
76
+ const byId = all.find((d) => d.udid === target);
77
+ if (byId)
78
+ return byId.udid;
79
+ const byName = all.find((d) => d.name === target);
80
+ if (byName)
81
+ return byName.udid;
82
+ const booted = all.find((d) => d.state === "Booted");
83
+ if (booted)
84
+ return booted.udid;
85
+ }
86
+ catch {
87
+ // fall through
88
+ }
89
+ return target === "booted" ? "booted" : target;
90
+ }
91
+ export function bootIosSimulator(device) {
92
+ const id = resolveIosDevice(device);
93
+ if (id === "booted")
94
+ return id;
95
+ try {
96
+ const raw = execSync("xcrun simctl list devices available -j", { encoding: "utf8" });
97
+ const parsed = JSON.parse(raw);
98
+ const match = Object.values(parsed.devices)
99
+ .flat()
100
+ .find((d) => d.udid === id);
101
+ if (match?.state !== "Booted") {
102
+ execSync(`xcrun simctl boot ${id}`, { stdio: "ignore" });
103
+ }
104
+ }
105
+ catch {
106
+ // already booted or unavailable
107
+ }
108
+ return id;
109
+ }
110
+ export async function fetchJson(url, init) {
111
+ const res = await fetch(url, init);
112
+ if (!res.ok) {
113
+ const text = await res.text();
114
+ throw new Error(`Request failed ${res.status}: ${text}`);
115
+ }
116
+ return res.json();
117
+ }
118
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/cli/util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { NativeArtifact } from "@lakebed-native/shared";
2
+ export declare const WEB_ARTIFACT_FORMAT = "lakebed.capsule.artifact.v1";
3
+ export declare const WEB_CLIENT_VERSION = "1.0.0";
4
+ /** Build a deploy envelope accepted by production api.lakebed.dev (same as web Lakebed). */
5
+ export declare function buildWebDeployEnvelope(capsuleDir: string, artifact: NativeArtifact, opts?: {
6
+ skipAnonymousSourceValidation?: boolean;
7
+ }): Promise<{
8
+ artifact: Record<string, unknown>;
9
+ clientBundle: string;
10
+ clientVersion: string;
11
+ }>;
12
+ export declare function buildWebDeployRequestBody(envelope: Awaited<ReturnType<typeof buildWebDeployEnvelope>>, opts?: {
13
+ inspectPolicy?: "private" | "public";
14
+ }): Record<string, unknown>;
15
+ //# sourceMappingURL=web-deploy-envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-deploy-envelope.d.ts","sourceRoot":"","sources":["../../src/cli/web-deploy-envelope.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAO7D,eAAO,MAAM,mBAAmB,gCAAgC,CAAC;AACjE,eAAO,MAAM,kBAAkB,UAAkB,CAAC;AA2FlD,4FAA4F;AAC5F,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,IAAI,CAAC,EAAE;IAAE,6BAA6B,CAAC,EAAE,OAAO,CAAA;CAAE,GACjD,OAAO,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAsED;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,EAC5D,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE,GAC9C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB"}
@@ -0,0 +1,156 @@
1
+ import { createHash } from "node:crypto";
2
+ import { join } from "node:path";
3
+ import { RUNTIME_VERSION, sha256Hex } from "@lakebed-native/shared";
4
+ import { validateNativeArtifactBundle } from "./native-deploy-payload.js";
5
+ import { bundleServer, readSourceFiles } from "./bundler.js";
6
+ import { loadCapsuleServer } from "./loader.js";
7
+ import { getAllCapsules } from "lakebed/server";
8
+ export const WEB_ARTIFACT_FORMAT = "lakebed.capsule.artifact.v1";
9
+ export const WEB_CLIENT_VERSION = RUNTIME_VERSION;
10
+ const STUB_CLIENT_JS = `export function App(){return null;}\n`;
11
+ /** When true, upload the native RN bundle as Lakebed client.js for standalone OTA updates. */
12
+ const USE_NATIVE_CLIENT_BUNDLE = true;
13
+ const FORBIDDEN_SOURCE_CHECKS = [
14
+ [/\bfetch\b/, "Outbound fetch requires a claimed Lakebed deploy."],
15
+ [/\basync\b/, "Async server handlers require a claimed Lakebed deploy on hosted Lakebed."],
16
+ ];
17
+ function sha256(value) {
18
+ return createHash("sha256").update(value).digest("hex");
19
+ }
20
+ function stableStringify(value) {
21
+ if (value === null || typeof value !== "object") {
22
+ return JSON.stringify(value);
23
+ }
24
+ if (Array.isArray(value)) {
25
+ return `[${value.map((entry) => stableStringify(entry)).join(",")}]`;
26
+ }
27
+ const obj = value;
28
+ const keys = Object.keys(obj).sort();
29
+ return `{${keys.map((key) => `${JSON.stringify(key)}:${stableStringify(obj[key])}`).join(",")}}`;
30
+ }
31
+ function serializeHostedSchema(tables) {
32
+ const schema = {};
33
+ for (const table of tables) {
34
+ const fields = {};
35
+ for (const [fieldName, field] of Object.entries(table.fields)) {
36
+ const hostedKind = hostedFieldKind(field);
37
+ fields[fieldName] = { kind: hostedKind };
38
+ }
39
+ schema[table.name] = { kind: "table", fields };
40
+ }
41
+ return schema;
42
+ }
43
+ function hostedFieldKind(field) {
44
+ if (field.type === "boolean")
45
+ return "boolean";
46
+ if (field.type === "string" || field.type === "text")
47
+ return "string";
48
+ throw new Error(`Hosted Lakebed deploys only support string/text and boolean fields (found ${field.type}). Claim the deploy or simplify the schema for anonymous hosting.`);
49
+ }
50
+ function serializeHostedEndpoints(capsule) {
51
+ const endpoints = {};
52
+ for (const ep of capsule.endpoints) {
53
+ endpoints[ep.name] = {
54
+ method: ep.method.toUpperCase(),
55
+ path: ep.path,
56
+ op: "source",
57
+ };
58
+ }
59
+ return endpoints;
60
+ }
61
+ function validateHostedSource(files) {
62
+ const errors = [];
63
+ for (const file of files.filter((f) => f.path.startsWith("server/") || f.path.startsWith("shared/"))) {
64
+ for (const [pattern, message] of FORBIDDEN_SOURCE_CHECKS) {
65
+ if (pattern.test(file.content)) {
66
+ errors.push(`${file.path}: ${message}`);
67
+ }
68
+ }
69
+ }
70
+ if (errors.length) {
71
+ throw new Error(`Capsule is not compatible with anonymous hosted Lakebed deploy:\n${errors.map((e) => ` • ${e}`).join("\n")}\n\nDeploy locally with --api http://localhost:4000, or claim the deploy on web Lakebed first.`);
72
+ }
73
+ }
74
+ function buildSourceManifest(files) {
75
+ return files
76
+ .map((file) => {
77
+ const contents = file.content;
78
+ const bytes = Buffer.byteLength(contents, "utf8");
79
+ return { bytes, hash: sha256(contents), path: file.path };
80
+ })
81
+ .sort((a, b) => a.path.localeCompare(b.path));
82
+ }
83
+ /** Build a deploy envelope accepted by production api.lakebed.dev (same as web Lakebed). */
84
+ export async function buildWebDeployEnvelope(capsuleDir, artifact, opts) {
85
+ await loadCapsuleServer(join(capsuleDir, "server", "index.ts"));
86
+ const capsule = getAllCapsules()[0];
87
+ if (!capsule)
88
+ throw new Error("No capsule registered in server/index.ts");
89
+ validateNativeArtifactBundle(artifact);
90
+ const sourceFiles = readSourceFiles(capsuleDir);
91
+ if (!opts?.skipAnonymousSourceValidation) {
92
+ validateHostedSource(sourceFiles);
93
+ }
94
+ const serverBundle = Buffer.from(artifact.server.sourceBundle || (await bundleServer(capsuleDir)).bundle, "utf8");
95
+ const clientBundle = USE_NATIVE_CLIENT_BUNDLE
96
+ ? Buffer.from(artifact.native.bundle, "utf8")
97
+ : Buffer.from(STUB_CLIENT_JS, "utf8");
98
+ const clientBundleBase64 = clientBundle.toString("base64");
99
+ const clientBundleHash = sha256Hex(clientBundle.toString("utf8"));
100
+ const serverBundleBase64 = serverBundle.toString("base64");
101
+ const serverBundleHash = sha256(serverBundle);
102
+ const sourceManifest = buildSourceManifest(sourceFiles);
103
+ const schema = serializeHostedSchema(capsule.tables);
104
+ const endpoints = serializeHostedEndpoints(capsule);
105
+ const webArtifact = {
106
+ name: capsule.name,
107
+ client: {
108
+ bundleHash: clientBundleHash,
109
+ bytes: clientBundle.byteLength,
110
+ entry: "/client.js",
111
+ },
112
+ createdWith: {
113
+ compiler: "lakebed-native",
114
+ lakebed: WEB_CLIENT_VERSION,
115
+ },
116
+ deployTarget: "anonymous-source",
117
+ format: WEB_ARTIFACT_FORMAT,
118
+ limits: {
119
+ instructionBudget: 50_000,
120
+ maxRowsReturned: 1000,
121
+ maxValueBytes: 65_536,
122
+ },
123
+ server: {
124
+ endpoints,
125
+ helpers: {},
126
+ imports: ["lakebed/server"],
127
+ mutations: Object.fromEntries(capsule.mutations.map((m) => [m.name, { op: "source" }])),
128
+ queries: Object.fromEntries(capsule.queries.map((q) => [q.name, { op: "source" }])),
129
+ schema,
130
+ source: {
131
+ bytes: serverBundle.byteLength,
132
+ bundle: serverBundleBase64,
133
+ bundleHash: serverBundleHash,
134
+ entry: "/server.mjs",
135
+ },
136
+ },
137
+ source: {
138
+ files: sourceManifest,
139
+ snapshotHash: sha256(stableStringify(sourceManifest)),
140
+ },
141
+ };
142
+ return {
143
+ artifact: webArtifact,
144
+ clientBundle: clientBundleBase64,
145
+ clientVersion: WEB_CLIENT_VERSION,
146
+ };
147
+ }
148
+ export function buildWebDeployRequestBody(envelope, opts) {
149
+ return {
150
+ artifact: envelope.artifact,
151
+ clientBundle: envelope.clientBundle,
152
+ clientVersion: envelope.clientVersion,
153
+ ...(opts?.inspectPolicy ? { inspectPolicy: opts.inspectPolicy } : {}),
154
+ };
155
+ }
156
+ //# sourceMappingURL=web-deploy-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-deploy-envelope.js","sourceRoot":"","sources":["../../src/cli/web-deploy-envelope.ts"],"names":[],"mappings":"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"}