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 @@
1
+ {"version":3,"file":"dev-config.d.ts","sourceRoot":"","sources":["../../src/cli/dev-config.ts"],"names":[],"mappings":"AAUA,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAoDN"}
@@ -0,0 +1,36 @@
1
+ import { existsSync } from "node:fs";
2
+ import { writeFileSync, mkdirSync } from "node:fs";
3
+ import { join, relative } from "node:path";
4
+ import { getKitRoot, getShellDir } from "./kit-paths.js";
5
+ import { resolveCapsuleDir } from "./util.js";
6
+ import { metroDevBundleUrl } from "./bundler.js";
7
+ const SHELL_DIR = getShellDir();
8
+ const KIT_ROOT = getKitRoot();
9
+ export function writeDevConfig(capsuleDir, serverPort, nativePort) {
10
+ const abs = resolveCapsuleDir(capsuleDir);
11
+ const configDir = join(abs, ".lakebed-native");
12
+ mkdirSync(configDir, { recursive: true });
13
+ const serverUrl = `http://localhost:${serverPort}`;
14
+ const bundleUrl = metroDevBundleUrl(nativePort, "ios");
15
+ writeFileSync(join(configDir, "dev.json"), JSON.stringify({
16
+ serverUrl,
17
+ bundleUrl,
18
+ capsuleEntry: join(abs, "app", "index.tsx"),
19
+ openUrl: `lakebed-native://capsule?server=${encodeURIComponent(serverUrl)}&bundle=${encodeURIComponent(bundleUrl)}`,
20
+ }, null, 2));
21
+ if (existsSync(join(SHELL_DIR, "App.tsx"))) {
22
+ const relEntry = relative(SHELL_DIR, join(abs, "app", "index.tsx")).replace(/\\/g, "/");
23
+ const importPath = relEntry.replace(/\.tsx?$/, "");
24
+ writeFileSync(join(SHELL_DIR, "capsule-entry.tsx"), `import App from "${importPath.startsWith(".") ? importPath : "./" + importPath}";\nexport default App;\n`);
25
+ writeFileSync(join(SHELL_DIR, "capsule-registry.json"), JSON.stringify({
26
+ serverUrl: `http://localhost:${serverPort}`,
27
+ capsuleEntry: relEntry,
28
+ }, null, 2));
29
+ }
30
+ mkdirSync(join(KIT_ROOT, ".lakebed-native"), { recursive: true });
31
+ writeFileSync(join(KIT_ROOT, ".lakebed-native", "active-capsule.json"), JSON.stringify({
32
+ capsuleEntry: join(abs, "app", "index.tsx"),
33
+ serverUrl: `http://localhost:${serverPort}`,
34
+ }, null, 2));
35
+ }
36
+ //# sourceMappingURL=dev-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-config.js","sourceRoot":"","sources":["../../src/cli/dev-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAW,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;AAChC,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;AAE9B,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,UAAkB,EAClB,UAAkB;IAElB,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC/C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,oBAAoB,UAAU,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACvD,aAAa,CACX,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAC3B,IAAI,CAAC,SAAS,CACZ;QACE,SAAS;QACT,SAAS;QACT,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;QAC3C,OAAO,EAAE,mCAAmC,kBAAkB,CAAC,SAAS,CAAC,WAAW,kBAAkB,CAAC,SAAS,CAAC,EAAE;KACpH,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IAEF,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxF,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnD,aAAa,CACX,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EACpC,oBAAoB,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,2BAA2B,CAC3G,CAAC;QACF,aAAa,CACX,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,EACxC,IAAI,CAAC,SAAS,CACZ;YACE,SAAS,EAAE,oBAAoB,UAAU,EAAE;YAC3C,YAAY,EAAE,QAAQ;SACvB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,aAAa,CACX,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,EACxD,IAAI,CAAC,SAAS,CACZ;QACE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;QAC3C,SAAS,EAAE,oBAAoB,UAAU,EAAE;KAC5C,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { DeployMetadata, DeployResponse, LakebedDeployDomain, LakebedHostedDeploy, NativeArtifact } from "@lakebed-native/shared";
2
+ export declare const DEFAULT_DEPLOY_API = "https://api.lakebed.dev";
3
+ /** Resolve Lakebed hosted API (production or local runner). */
4
+ export declare function resolveHostedApi(explicit?: string, capsuleDir?: string): string;
5
+ export declare function isLocalHostedApi(apiUrl: string): boolean;
6
+ /** True when a standalone manifest points at a local hosted runner (/d/{id}/ routes). */
7
+ export declare function manifestUsesLocalRunner(manifest: {
8
+ appUrl?: string;
9
+ deployId?: string;
10
+ serverUrl?: string;
11
+ bundleUrl?: string;
12
+ }): boolean;
13
+ /** Device-reachable local runner hosts (emulator loopback aliases). */
14
+ export declare function isLocalRunnerApi(apiUrl: string): boolean;
15
+ export declare function fetchHostedDeploy(apiUrl: string, deployId: string): Promise<LakebedHostedDeploy>;
16
+ export declare function deployArtifact(apiUrl: string, artifact: NativeArtifact, inspectPolicy?: "private" | "public", metadata?: DeployMetadata | null, capsuleDir?: string): Promise<DeployResponse>;
17
+ export declare function addDeployDomain(apiUrl: string, metadata: DeployMetadata, hostname: string): Promise<LakebedDeployDomain>;
18
+ export declare function metadataFromDeploy(apiUrl: string, deployed: LakebedHostedDeploy): DeployMetadata | null;
19
+ export declare function readArtifact(capsuleDir: string): NativeArtifact;
20
+ /** Deep link to open a capsule in the native shell. */
21
+ export declare function hostedNativeOpenUrl(deploy: DeployResponse, apiUrl: string, opts?: {
22
+ localRunner?: boolean;
23
+ }): string;
24
+ /** Server connection URL for the native client runtime. */
25
+ export declare function hostedServerUrl(deploy: DeployResponse, apiUrl: string, opts?: {
26
+ localRunner?: boolean;
27
+ }): string;
28
+ export declare function hostedBundleUrl(deployId: string, apiUrl: string): string;
29
+ export declare function resolveHostedTarget(target: string | undefined, apiUrl: string, metadata: DeployMetadata | null): Promise<{
30
+ api: string;
31
+ url: string;
32
+ }>;
33
+ export declare function inspectTokenForTarget(target: string | undefined, url: string, metadata: DeployMetadata | null, explicitToken?: string): string;
34
+ export declare function fetchHostedLakebedJson(target: string | undefined, path: string, opts: {
35
+ api?: string;
36
+ capsuleDir?: string;
37
+ inspectToken?: string;
38
+ }): Promise<unknown>;
39
+ //# sourceMappingURL=hosted-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-client.d.ts","sourceRoot":"","sources":["../../src/cli/hosted-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACf,MAAM,wBAAwB,CAAC;AAahC,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAE5D,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAa/E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAQV;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAYxD;AAUD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,CAG9B;AAkBD,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,EACxB,aAAa,GAAE,SAAS,GAAG,QAAoB,EAC/C,QAAQ,CAAC,EAAE,cAAc,GAAG,IAAI,EAChC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CA6DzB;AAyBD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,CAiB9B;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,mBAAmB,GAC5B,cAAc,GAAG,IAAI,CAWvB;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAM/D;AAED,uDAAuD;AACvD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,MAAM,CAOR;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,MAAM,CAKR;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAExE;AAuBD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,GAAG,IAAI,GAC9B,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBvC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GAAG,IAAI,EAC/B,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAcR;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE,OAAO,CAAC,OAAO,CAAC,CAYlB"}
@@ -0,0 +1,275 @@
1
+ import { readFileSync, existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { claimTokenFromDeployResponse, deployApiUrlsMatch, normalizeHostedUrl, readDeployMetadata, } from "./deploy-metadata.js";
4
+ import { buildNativeDeployRequestBody } from "./native-deploy-payload.js";
5
+ import { buildWebDeployEnvelope, buildWebDeployRequestBody, } from "./web-deploy-envelope.js";
6
+ export const DEFAULT_DEPLOY_API = "https://api.lakebed.dev";
7
+ /** Resolve Lakebed hosted API (production or local runner). */
8
+ export function resolveHostedApi(explicit, capsuleDir) {
9
+ const fromEnv = process.env.LAKEBED_DEPLOY_API ??
10
+ process.env.LAKEBED_HOSTED_API ??
11
+ process.env.LAKEBED_API ??
12
+ process.env.SPAN_DEPLOY_API;
13
+ if (explicit)
14
+ return normalizeHostedUrl(explicit);
15
+ if (fromEnv)
16
+ return normalizeHostedUrl(fromEnv);
17
+ if (capsuleDir) {
18
+ const metadata = readDeployMetadata(capsuleDir);
19
+ if (metadata?.api)
20
+ return normalizeHostedUrl(metadata.api);
21
+ }
22
+ return DEFAULT_DEPLOY_API;
23
+ }
24
+ export function isLocalHostedApi(apiUrl) {
25
+ try {
26
+ const { hostname } = new URL(apiUrl);
27
+ return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1";
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }
33
+ /** True when a standalone manifest points at a local hosted runner (/d/{id}/ routes). */
34
+ export function manifestUsesLocalRunner(manifest) {
35
+ if (manifest.appUrl)
36
+ return false;
37
+ const deployId = manifest.deployId;
38
+ if (!deployId)
39
+ return false;
40
+ const marker = `/d/${deployId}/`;
41
+ return Boolean(manifest.serverUrl?.includes(marker) || manifest.bundleUrl?.includes(marker));
42
+ }
43
+ /** Device-reachable local runner hosts (emulator loopback aliases). */
44
+ export function isLocalRunnerApi(apiUrl) {
45
+ try {
46
+ const { hostname } = new URL(apiUrl);
47
+ return (hostname === "localhost" ||
48
+ hostname === "127.0.0.1" ||
49
+ hostname === "::1" ||
50
+ hostname === "10.0.2.2");
51
+ }
52
+ catch {
53
+ return false;
54
+ }
55
+ }
56
+ async function readResponseJson(response) {
57
+ const body = await response.text();
58
+ if (!response.ok) {
59
+ throw new Error(body || `Request failed with ${response.status}`);
60
+ }
61
+ return JSON.parse(body);
62
+ }
63
+ export async function fetchHostedDeploy(apiUrl, deployId) {
64
+ const res = await fetch(`${normalizeHostedUrl(apiUrl)}/v1/deploys/${encodeURIComponent(deployId)}`);
65
+ return readResponseJson(res);
66
+ }
67
+ async function buildDeployBody(apiUrl, capsuleDir, artifact, inspectPolicy, metadata) {
68
+ if (isLocalHostedApi(apiUrl)) {
69
+ return buildNativeDeployRequestBody(artifact, { inspectPolicy });
70
+ }
71
+ const envelope = await buildWebDeployEnvelope(capsuleDir, artifact, {
72
+ skipAnonymousSourceValidation: Boolean(metadata?.claimToken),
73
+ });
74
+ return buildWebDeployRequestBody(envelope, { inspectPolicy });
75
+ }
76
+ export async function deployArtifact(apiUrl, artifact, inspectPolicy = "private", metadata, capsuleDir) {
77
+ const api = normalizeHostedUrl(apiUrl);
78
+ const dir = capsuleDir ?? process.cwd();
79
+ const body = await buildDeployBody(api, dir, artifact, inspectPolicy, metadata);
80
+ const canUpdate = metadata &&
81
+ deployApiUrlsMatch(metadata.api, api) &&
82
+ metadata.deployId &&
83
+ metadata.claimToken;
84
+ if (canUpdate) {
85
+ try {
86
+ const updateRes = await fetch(`${api}/v1/deploys/${encodeURIComponent(metadata.deployId)}`, {
87
+ method: "PUT",
88
+ headers: {
89
+ Authorization: `Bearer ${metadata.claimToken}`,
90
+ "Content-Type": "application/json",
91
+ },
92
+ body: JSON.stringify(body),
93
+ });
94
+ if (updateRes.ok) {
95
+ const deployed = await readResponseJson(updateRes);
96
+ return toDeployResponse(deployed, api);
97
+ }
98
+ if (updateRes.status !== 404 && updateRes.status !== 410) {
99
+ throw new Error(`Deploy update failed (${updateRes.status}): ${await updateRes.text()}`);
100
+ }
101
+ }
102
+ catch (err) {
103
+ if (!isLocalHostedApi(api))
104
+ throw err;
105
+ }
106
+ }
107
+ const createRes = await fetch(`${api}/v1/anonymous-deploys`, {
108
+ method: "POST",
109
+ headers: { "Content-Type": "application/json" },
110
+ body: JSON.stringify(body),
111
+ });
112
+ if (!createRes.ok && isLocalHostedApi(api)) {
113
+ const legacy = await fetch(`${api}/deploy`, {
114
+ method: "POST",
115
+ headers: { "Content-Type": "application/json" },
116
+ body: JSON.stringify({ artifact, inspectPolicy }),
117
+ });
118
+ if (!legacy.ok) {
119
+ throw new Error(`Deploy failed (${legacy.status}): ${await legacy.text()}`);
120
+ }
121
+ const deployed = (await legacy.json());
122
+ return { ...deployed, openUrl: hostedNativeOpenUrl(deployed, api) };
123
+ }
124
+ if (!createRes.ok) {
125
+ throw new Error(`Deploy failed (${createRes.status}): ${await createRes.text()}`);
126
+ }
127
+ const deployed = await readResponseJson(createRes);
128
+ return toDeployResponse(deployed, api);
129
+ }
130
+ function toDeployResponse(deployed, apiUrl) {
131
+ const response = {
132
+ deployId: deployed.deployId,
133
+ url: deployed.url,
134
+ openUrl: hostedNativeOpenUrl({
135
+ deployId: deployed.deployId,
136
+ url: deployed.url,
137
+ openUrl: "",
138
+ qrUrl: "",
139
+ inspectPolicy: deployed.inspectPolicy,
140
+ limits: deployed.limits,
141
+ }, apiUrl),
142
+ qrUrl: `${deployed.url.replace(/\/+$/g, "")}/qr`,
143
+ claimUrl: deployed.claimUrl,
144
+ inspectPolicy: deployed.inspectPolicy,
145
+ limits: deployed.limits,
146
+ };
147
+ return response;
148
+ }
149
+ export async function addDeployDomain(apiUrl, metadata, hostname) {
150
+ const api = normalizeHostedUrl(apiUrl);
151
+ if (!deployApiUrlsMatch(metadata.api, api)) {
152
+ throw new Error(`Saved deploy metadata is for ${metadata.api}, but this command is using ${api}.`);
153
+ }
154
+ const res = await fetch(`${api}/v1/deploys/${encodeURIComponent(metadata.deployId)}/domains`, {
155
+ method: "POST",
156
+ headers: {
157
+ Authorization: `Bearer ${metadata.claimToken}`,
158
+ "Content-Type": "application/json",
159
+ },
160
+ body: JSON.stringify({ hostname }),
161
+ });
162
+ return readResponseJson(res);
163
+ }
164
+ export function metadataFromDeploy(apiUrl, deployed) {
165
+ const claimToken = claimTokenFromDeployResponse(deployed);
166
+ if (!claimToken)
167
+ return null;
168
+ return {
169
+ api: normalizeHostedUrl(apiUrl),
170
+ claimToken,
171
+ deployId: deployed.deployId,
172
+ url: deployed.url,
173
+ updatedAt: deployed.updatedAt ?? new Date().toISOString(),
174
+ claimed: deployed.claimed,
175
+ };
176
+ }
177
+ export function readArtifact(capsuleDir) {
178
+ const artifactPath = join(capsuleDir, ".lakebed-native", "artifacts", "app.json");
179
+ if (!existsSync(artifactPath)) {
180
+ throw new Error(`Artifact not found at ${artifactPath}. Run lakebed-native build first.`);
181
+ }
182
+ return JSON.parse(readFileSync(artifactPath, "utf8"));
183
+ }
184
+ /** Deep link to open a capsule in the native shell. */
185
+ export function hostedNativeOpenUrl(deploy, apiUrl, opts) {
186
+ if (opts?.localRunner ?? isLocalRunnerApi(apiUrl)) {
187
+ const api = apiUrl.replace(/\/$/, "");
188
+ return `lakebed-native://capsule?deploy=${deploy.deployId}&api=${encodeURIComponent(api)}`;
189
+ }
190
+ const appUrl = deploy.url.replace(/\/$/, "");
191
+ return `lakebed-native://capsule?url=${encodeURIComponent(appUrl)}`;
192
+ }
193
+ /** Server connection URL for the native client runtime. */
194
+ export function hostedServerUrl(deploy, apiUrl, opts) {
195
+ if (opts?.localRunner || isLocalHostedApi(apiUrl)) {
196
+ return `${apiUrl.replace(/\/$/, "")}/d/${deploy.deployId}/api`;
197
+ }
198
+ return deploy.url.replace(/\/$/, "");
199
+ }
200
+ export function hostedBundleUrl(deployId, apiUrl) {
201
+ return `${apiUrl.replace(/\/$/, "")}/d/${deployId}/bundle`;
202
+ }
203
+ function isLocalCapsuleDevServer(url) {
204
+ try {
205
+ const parsed = new URL(url);
206
+ const host = parsed.hostname;
207
+ const isLocal = host === "localhost" || host === "127.0.0.1" || host === "::1";
208
+ return isLocal && !parsed.pathname.includes("/d/");
209
+ }
210
+ catch {
211
+ return false;
212
+ }
213
+ }
214
+ function inspectPathForUrl(url, hostedPath) {
215
+ if (!isLocalCapsuleDevServer(url))
216
+ return hostedPath;
217
+ const localPaths = {
218
+ "/__lakebed/db": "/db",
219
+ "/__lakebed/logs": "/logs",
220
+ "/__lakebed/manifest": "/inspect",
221
+ };
222
+ return localPaths[hostedPath] ?? hostedPath;
223
+ }
224
+ export async function resolveHostedTarget(target, apiUrl, metadata) {
225
+ if (!target) {
226
+ if (metadata?.url) {
227
+ return { api: normalizeHostedUrl(metadata.api), url: normalizeHostedUrl(metadata.url) };
228
+ }
229
+ const fallback = normalizeHostedUrl(apiUrl);
230
+ if (isLocalCapsuleDevServer(fallback)) {
231
+ return { api: "", url: fallback };
232
+ }
233
+ throw new Error("Expected a deploy ID or URL.");
234
+ }
235
+ try {
236
+ const url = new URL(target);
237
+ return { api: "", url: url.href.replace(/\/+$/g, "") };
238
+ }
239
+ catch {
240
+ const api = metadata?.deployId === target && metadata.api
241
+ ? normalizeHostedUrl(metadata.api)
242
+ : normalizeHostedUrl(apiUrl);
243
+ const deploy = await fetchHostedDeploy(api, target);
244
+ return { api, url: deploy.url.replace(/\/+$/g, "") };
245
+ }
246
+ }
247
+ export function inspectTokenForTarget(target, url, metadata, explicitToken) {
248
+ if (explicitToken)
249
+ return explicitToken;
250
+ if (!metadata?.claimToken)
251
+ return "";
252
+ const normalizedTarget = target?.replace(/\/+$/g, "") ?? "";
253
+ const normalizedUrl = url.replace(/\/+$/g, "");
254
+ const metadataUrl = metadata.url.replace(/\/+$/g, "");
255
+ if (metadata.deployId === target ||
256
+ (metadataUrl &&
257
+ (metadataUrl === normalizedTarget || metadataUrl === normalizedUrl))) {
258
+ return metadata.claimToken;
259
+ }
260
+ return "";
261
+ }
262
+ export async function fetchHostedLakebedJson(target, path, opts) {
263
+ const capsuleDir = opts.capsuleDir ?? process.cwd();
264
+ const metadata = readDeployMetadata(capsuleDir);
265
+ const apiUrl = resolveHostedApi(opts.api, capsuleDir);
266
+ const { url } = await resolveHostedTarget(target, apiUrl, metadata);
267
+ const token = inspectTokenForTarget(target, url, metadata, opts.inspectToken);
268
+ const headers = {};
269
+ if (token)
270
+ headers.Authorization = `Bearer ${token}`;
271
+ const requestPath = inspectPathForUrl(url, path);
272
+ const res = await fetch(`${url}${requestPath}`, { headers });
273
+ return readResponseJson(res);
274
+ }
275
+ //# sourceMappingURL=hosted-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-client.js","sourceRoot":"","sources":["../../src/cli/hosted-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAE5D,+DAA+D;AAC/D,MAAM,UAAU,gBAAgB,CAAC,QAAiB,EAAE,UAAmB;IACrE,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9B,IAAI,QAAQ;QAAE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,OAAO;QAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE,GAAG;YAAE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,KAAK,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,uBAAuB,CAAC,QAKvC;IACC,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,QAAQ,GAAG,CAAC;IACjC,OAAO,OAAO,CACZ,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,CACL,QAAQ,KAAK,WAAW;YACxB,QAAQ,KAAK,WAAW;YACxB,QAAQ,KAAK,KAAK;YAClB,QAAQ,KAAK,UAAU,CACxB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAI,QAAkB;IACnD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,QAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,eAAe,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpG,OAAO,gBAAgB,CAAsB,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,MAAc,EACd,UAAkB,EAClB,QAAwB,EACxB,aAAmC,EACnC,QAAgC;IAEhC,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,4BAA4B,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE;QAClE,6BAA6B,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;KAC7D,CAAC,CAAC;IACH,OAAO,yBAAyB,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,QAAwB,EACxB,gBAAsC,SAAS,EAC/C,QAAgC,EAChC,UAAmB;IAEnB,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IAEhF,MAAM,SAAS,GACb,QAAQ;QACR,kBAAkB,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;QACrC,QAAQ,CAAC,QAAQ;QACjB,QAAQ,CAAC,UAAU,CAAC;IAEtB,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,KAAK,CAC3B,GAAG,GAAG,eAAe,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAC5D;gBACE,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,QAAQ,CAAC,UAAU,EAAE;oBAC9C,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CACF,CAAC;YACF,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAsB,SAAS,CAAC,CAAC;gBACxE,OAAO,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACzD,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,CAAC,MAAM,MAAM,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;QACxC,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,uBAAuB,EAAE;QAC3D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,SAAS,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;SAClD,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAmB,CAAC;QACzD,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,kBAAkB,SAAS,CAAC,MAAM,MAAM,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAsB,SAAS,CAAC,CAAC;IACxE,OAAO,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAA6B,EAAE,MAAc;IACrE,MAAM,QAAQ,GAAmB;QAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,OAAO,EAAE,mBAAmB,CAC1B;YACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;YACT,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,EACD,MAAM,CACP;QACD,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK;QAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,QAAwB,EACxB,QAAgB;IAEhB,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,GAAG,+BAA+B,GAAG,GAAG,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,GAAG,eAAe,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EACpE;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,QAAQ,CAAC,UAAU,EAAE;YAC9C,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;KACnC,CACF,CAAC;IACF,OAAO,gBAAgB,CAAsB,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,QAA6B;IAE7B,MAAM,UAAU,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO;QACL,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC;QAC/B,UAAU;QACV,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzD,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAClF,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,mCAAmC,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAmB,CAAC;AAC1E,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,mBAAmB,CACjC,MAAsB,EACtB,MAAc,EACd,IAAgC;IAEhC,IAAI,IAAI,EAAE,WAAW,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,mCAAmC,MAAM,CAAC,QAAQ,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7F,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7C,OAAO,gCAAgC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAC7B,MAAsB,EACtB,MAAc,EACd,IAAgC;IAEhC,IAAI,IAAI,EAAE,WAAW,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,MAAM,CAAC,QAAQ,MAAM,CAAC;IACjE,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,MAAc;IAC9D,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,QAAQ,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,CAAC;QAC/E,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,UAAkB;IACxD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IACrD,MAAM,UAAU,GAA2B;QACzC,eAAe,EAAE,KAAK;QACtB,iBAAiB,EAAE,OAAO;QAC1B,qBAAqB,EAAE,UAAU;KAClC,CAAC;IACF,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAA0B,EAC1B,MAAc,EACd,QAA+B;IAE/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,QAAQ,EAAE,GAAG,EAAE,CAAC;YAClB,OAAO,EAAE,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1F,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,GACP,QAAQ,EAAE,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,GAAG;YAC3C,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC;YAClC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAA0B,EAC1B,GAAW,EACX,QAA+B,EAC/B,aAAsB;IAEtB,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,UAAU;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,gBAAgB,GAAG,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACtD,IACE,QAAQ,CAAC,QAAQ,KAAK,MAAM;QAC5B,CAAC,WAAW;YACV,CAAC,WAAW,KAAK,gBAAgB,IAAI,WAAW,KAAK,aAAa,CAAC,CAAC,EACtE,CAAC;QACD,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAA0B,EAC1B,IAAY,EACZ,IAAkE;IAElE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9E,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,KAAK;QAAE,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;IAErD,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7D,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,73 @@
1
+ import type { InspectPolicy, LakebedDeployDomain, NativeArtifact } from "@lakebed-native/shared";
2
+ import type { ServerRuntime } from "lakebed/server";
3
+ export declare const DEFAULT_HOSTED_LIMITS: {
4
+ artifactBytes: number;
5
+ stateBytes: number;
6
+ requestsPerDay: number;
7
+ mutationsPerDay: number;
8
+ };
9
+ export type HostedDeployRecord = {
10
+ deployId: string;
11
+ slug: string;
12
+ artifact: NativeArtifact;
13
+ artifactHash: string;
14
+ inspectPolicy: InspectPolicy;
15
+ claimTokenHash: string;
16
+ ownerId?: string;
17
+ claimedAt?: string;
18
+ expiresAt: string;
19
+ updatedAt: string;
20
+ runtime: ServerRuntime;
21
+ domains: LakebedDeployDomain[];
22
+ };
23
+ export declare function getHostedDeployStore(): Map<string, HostedDeployRecord>;
24
+ export declare function createDeployId(): string;
25
+ export declare function createClaimToken(): string;
26
+ export declare function createSlug(): string;
27
+ export declare function hashClaimToken(token: string): string;
28
+ export declare function getDeployByIdOrSlug(id: string): HostedDeployRecord | undefined;
29
+ export declare function registerDeploySlug(record: HostedDeployRecord): void;
30
+ export declare function isDeployTokenValid(record: HostedDeployRecord, token: string | null): boolean;
31
+ export declare function anonymousDeployExpiresAt(ttlSeconds?: number): string;
32
+ export declare function inspectUrls(baseUrl: string): {
33
+ db: string;
34
+ logs: string;
35
+ manifest: string;
36
+ usage: string;
37
+ };
38
+ export declare function claimUrlForDeploy(apiRoot: string, deployId: string, token: string): string;
39
+ export declare function responseForHostedDeploy(record: HostedDeployRecord, apiRoot: string, opts?: {
40
+ claimToken?: string;
41
+ }): {
42
+ deployId: string;
43
+ url: string;
44
+ claimUrl?: string;
45
+ claimed: boolean;
46
+ claimedAt?: string;
47
+ expiresAt: string;
48
+ updatedAt: string;
49
+ inspectPolicy: InspectPolicy;
50
+ limits: typeof DEFAULT_HOSTED_LIMITS;
51
+ inspect: ReturnType<typeof inspectUrls>;
52
+ };
53
+ export declare function responseForDeployDomain(record: HostedDeployRecord, domain: LakebedDeployDomain): LakebedDeployDomain;
54
+ export declare function buildHostedManifest(record: HostedDeployRecord, baseUrl: string): {
55
+ deployId: string;
56
+ url: string;
57
+ updatedAt: string;
58
+ expiresAt: string;
59
+ runtimeVersion: string;
60
+ inspectPolicy: InspectPolicy;
61
+ artifactHash: string;
62
+ name: string;
63
+ platform: string;
64
+ queries: string[];
65
+ mutations: string[];
66
+ endpoints: import("@lakebed-native/shared").EndpointManifest[];
67
+ domains: {
68
+ hostname: string;
69
+ url: string;
70
+ }[];
71
+ claimed: boolean;
72
+ };
73
+ //# sourceMappingURL=hosted-v1-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-v1-store.d.ts","sourceRoot":"","sources":["../../src/cli/hosted-v1-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,qBAAqB;;;;;CAKjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC,CAAC;AAKF,wBAAgB,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAEtE;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAKnC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAE9E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAEnE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAG5F;AAED,wBAAgB,wBAAwB,CAAC,UAAU,SAAmB,GAAG,MAAM,CAE9E;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAQA;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,OAAO,qBAAqB,CAAC;IACrC,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;CACzC,CAgBA;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,mBAAmB,GAC1B,mBAAmB,CAMrB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;EAiB9E"}
@@ -0,0 +1,96 @@
1
+ import { createHash, randomBytes } from "node:crypto";
2
+ export const DEFAULT_HOSTED_LIMITS = {
3
+ artifactBytes: 5_000_000,
4
+ stateBytes: 1_000_000,
5
+ requestsPerDay: 10_000,
6
+ mutationsPerDay: 1_000,
7
+ };
8
+ const store = new Map();
9
+ const slugIndex = new Map();
10
+ export function getHostedDeployStore() {
11
+ return store;
12
+ }
13
+ export function createDeployId() {
14
+ return `dep_${randomBytes(5).toString("base64url")}`;
15
+ }
16
+ export function createClaimToken() {
17
+ return `tok_${randomBytes(24).toString("base64url")}`;
18
+ }
19
+ export function createSlug() {
20
+ const adjectives = ["frosted", "quiet", "bright", "lucky", "silver", "rapid", "clear", "open"];
21
+ const nouns = ["river", "field", "ridge", "harbor", "garden", "signal", "meadow", "orbit"];
22
+ const bytes = randomBytes(4);
23
+ return `${adjectives[bytes[0] % adjectives.length]}-${nouns[bytes[1] % nouns.length]}-${bytes.toString("hex").slice(0, 6)}`;
24
+ }
25
+ export function hashClaimToken(token) {
26
+ return createHash("sha256").update(token).digest("hex");
27
+ }
28
+ export function getDeployByIdOrSlug(id) {
29
+ return store.get(id) ?? (slugIndex.has(id) ? store.get(slugIndex.get(id)) : undefined);
30
+ }
31
+ export function registerDeploySlug(record) {
32
+ slugIndex.set(record.slug, record.deployId);
33
+ }
34
+ export function isDeployTokenValid(record, token) {
35
+ if (!token)
36
+ return false;
37
+ return hashClaimToken(token) === record.claimTokenHash;
38
+ }
39
+ export function anonymousDeployExpiresAt(ttlSeconds = 7 * 24 * 60 * 60) {
40
+ return new Date(Date.now() + ttlSeconds * 1000).toISOString();
41
+ }
42
+ export function inspectUrls(baseUrl) {
43
+ const url = baseUrl.replace(/\/+$/g, "");
44
+ return {
45
+ db: `${url}/__lakebed/db`,
46
+ logs: `${url}/__lakebed/logs`,
47
+ manifest: `${url}/__lakebed/manifest`,
48
+ usage: `${url}/__lakebed/usage`,
49
+ };
50
+ }
51
+ export function claimUrlForDeploy(apiRoot, deployId, token) {
52
+ return `${apiRoot.replace(/\/+$/g, "")}/claim/${encodeURIComponent(deployId)}/${encodeURIComponent(token)}`;
53
+ }
54
+ export function responseForHostedDeploy(record, apiRoot, opts) {
55
+ const baseUrl = `${apiRoot.replace(/\/+$/g, "")}/d/${record.deployId}`;
56
+ return {
57
+ deployId: record.deployId,
58
+ url: baseUrl,
59
+ claimUrl: opts?.claimToken
60
+ ? claimUrlForDeploy(apiRoot, record.deployId, opts.claimToken)
61
+ : undefined,
62
+ claimed: Boolean(record.ownerId),
63
+ claimedAt: record.claimedAt,
64
+ expiresAt: record.expiresAt,
65
+ updatedAt: record.updatedAt,
66
+ inspectPolicy: record.inspectPolicy,
67
+ limits: DEFAULT_HOSTED_LIMITS,
68
+ inspect: inspectUrls(baseUrl),
69
+ };
70
+ }
71
+ export function responseForDeployDomain(record, domain) {
72
+ return {
73
+ ...domain,
74
+ deployId: record.deployId,
75
+ url: `${record.domains.find((d) => d.hostname === domain.hostname)?.url ?? domain.url}`,
76
+ };
77
+ }
78
+ export function buildHostedManifest(record, baseUrl) {
79
+ return {
80
+ deployId: record.deployId,
81
+ url: baseUrl,
82
+ updatedAt: record.updatedAt,
83
+ expiresAt: record.expiresAt,
84
+ runtimeVersion: record.artifact.runtimeVersion,
85
+ inspectPolicy: record.inspectPolicy,
86
+ artifactHash: record.artifactHash,
87
+ name: record.artifact.name,
88
+ platform: "native",
89
+ queries: record.artifact.server.queries,
90
+ mutations: record.artifact.server.mutations,
91
+ endpoints: record.artifact.server.endpoints,
92
+ domains: record.domains.map((d) => ({ hostname: d.hostname, url: d.url })),
93
+ claimed: Boolean(record.ownerId),
94
+ };
95
+ }
96
+ //# sourceMappingURL=hosted-v1-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-v1-store.js","sourceRoot":"","sources":["../../src/cli/hosted-v1-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAItD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,SAAS;IACrB,cAAc,EAAE,MAAM;IACtB,eAAe,EAAE,KAAK;CACvB,CAAC;AAiBF,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;AACpD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE5C,MAAM,UAAU,oBAAoB;IAClC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3F,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAChI,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA0B,EAAE,KAAoB;IACjF,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,cAAc,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACpE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IAMzC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACzC,OAAO;QACL,EAAE,EAAE,GAAG,GAAG,eAAe;QACzB,IAAI,EAAE,GAAG,GAAG,iBAAiB;QAC7B,QAAQ,EAAE,GAAG,GAAG,qBAAqB;QACrC,KAAK,EAAE,GAAG,GAAG,kBAAkB;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,QAAgB,EAChB,KAAa;IAEb,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,kBAAkB,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9G,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAA0B,EAC1B,OAAe,EACf,IAA8B;IAa9B,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACvE,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,EAAE,OAAO;QACZ,QAAQ,EAAE,IAAI,EAAE,UAAU;YACxB,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;YAC9D,CAAC,CAAC,SAAS;QACb,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE,qBAAqB;QAC7B,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAA0B,EAC1B,MAA2B;IAE3B,OAAO;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE;KACxF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA0B,EAAE,OAAe;IAC7E,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,EAAE,OAAO;QACZ,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc;QAC9C,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;QAC1B,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;QACvC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS;QAC3C,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS;QAC3C,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1E,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;KACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { InspectPolicy, NativeArtifact } from "@lakebed-native/shared";
2
+ import { ServerRuntime } from "lakebed/server";
3
+ type DeployRecord = {
4
+ deployId: string;
5
+ artifact: NativeArtifact;
6
+ inspectPolicy: InspectPolicy;
7
+ runtime: ServerRuntime;
8
+ };
9
+ export declare function getDeployStore(): Map<string, DeployRecord>;
10
+ export declare function startHostedRunner(port?: number): Promise<void>;
11
+ export declare function stopHostedRunnerForTests(): void;
12
+ export {};
13
+ //# sourceMappingURL=hosted.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted.d.ts","sourceRoot":"","sources":["../../src/cli/hosted.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAqB,MAAM,gBAAgB,CAAC;AAsBlE,KAAK,YAAY,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC;AAMF,wBAAgB,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAE1D;AAgUD,wBAAsB,iBAAiB,CAAC,IAAI,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFlE;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C"}