@appport/sdk 1.1.19 → 1.1.20

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 (479) hide show
  1. package/LICENSE +126 -0
  2. package/README.md +86 -9
  3. package/dist/application-onboarding.d.ts +52 -0
  4. package/dist/application-onboarding.d.ts.map +1 -0
  5. package/dist/application-onboarding.js +50 -0
  6. package/dist/application-onboarding.js.map +1 -0
  7. package/dist/external-compatibility.d.ts +142 -0
  8. package/dist/external-compatibility.d.ts.map +1 -0
  9. package/dist/external-compatibility.js +132 -0
  10. package/dist/external-compatibility.js.map +1 -0
  11. package/dist/index.d.ts +18 -13
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +18 -13
  14. package/dist/index.js.map +1 -1
  15. package/dist/node.d.ts +1 -1
  16. package/dist/node.js +1 -1
  17. package/dist/provider-lifecycle.d.ts +247 -0
  18. package/dist/provider-lifecycle.d.ts.map +1 -0
  19. package/dist/provider-lifecycle.js +314 -0
  20. package/dist/provider-lifecycle.js.map +1 -0
  21. package/dist/resolution-policy.d.ts +81 -0
  22. package/dist/resolution-policy.d.ts.map +1 -0
  23. package/dist/resolution-policy.js +131 -0
  24. package/dist/resolution-policy.js.map +1 -0
  25. package/package.json +32 -22
  26. package/vendor/@appport/authorization/README.md +28 -0
  27. package/vendor/@appport/authorization/dist/index.d.ts +94 -0
  28. package/vendor/@appport/authorization/dist/index.d.ts.map +1 -0
  29. package/vendor/@appport/authorization/dist/index.js +131 -0
  30. package/vendor/@appport/authorization/dist/index.js.map +1 -0
  31. package/vendor/@appport/authorization/package.json +28 -0
  32. package/vendor/@appport/client/README.md +35 -0
  33. package/vendor/@appport/client/dist/channel.d.ts +14 -0
  34. package/vendor/@appport/client/dist/channel.d.ts.map +1 -0
  35. package/vendor/@appport/client/dist/channel.js +58 -0
  36. package/vendor/@appport/client/dist/channel.js.map +1 -0
  37. package/vendor/@appport/client/dist/client.d.ts +61 -0
  38. package/vendor/@appport/client/dist/client.d.ts.map +1 -0
  39. package/vendor/@appport/client/dist/client.js +214 -0
  40. package/vendor/@appport/client/dist/client.js.map +1 -0
  41. package/vendor/@appport/client/dist/contract.d.ts +55 -0
  42. package/vendor/@appport/client/dist/contract.d.ts.map +1 -0
  43. package/vendor/@appport/client/dist/contract.js +12 -0
  44. package/vendor/@appport/client/dist/contract.js.map +1 -0
  45. package/vendor/@appport/client/dist/discovery.d.ts +17 -0
  46. package/vendor/@appport/client/dist/discovery.d.ts.map +1 -0
  47. package/vendor/@appport/client/dist/discovery.js +56 -0
  48. package/vendor/@appport/client/dist/discovery.js.map +1 -0
  49. package/vendor/@appport/client/dist/duplex.d.ts +25 -0
  50. package/vendor/@appport/client/dist/duplex.d.ts.map +1 -0
  51. package/vendor/@appport/client/dist/duplex.js +194 -0
  52. package/vendor/@appport/client/dist/duplex.js.map +1 -0
  53. package/vendor/@appport/client/dist/host.d.ts +62 -0
  54. package/vendor/@appport/client/dist/host.d.ts.map +1 -0
  55. package/vendor/@appport/client/dist/host.js +139 -0
  56. package/vendor/@appport/client/dist/host.js.map +1 -0
  57. package/vendor/@appport/client/dist/index.d.ts +14 -0
  58. package/vendor/@appport/client/dist/index.d.ts.map +1 -0
  59. package/vendor/@appport/client/dist/index.js +14 -0
  60. package/vendor/@appport/client/dist/index.js.map +1 -0
  61. package/vendor/@appport/client/dist/transport.d.ts +42 -0
  62. package/vendor/@appport/client/dist/transport.d.ts.map +1 -0
  63. package/vendor/@appport/client/dist/transport.js +2 -0
  64. package/vendor/@appport/client/dist/transport.js.map +1 -0
  65. package/vendor/@appport/client/package.json +32 -0
  66. package/vendor/@appport/core/README.md +91 -0
  67. package/vendor/@appport/core/dist/appboundry-capability-catalog.d.ts +930 -0
  68. package/vendor/@appport/core/dist/appboundry-capability-catalog.d.ts.map +1 -0
  69. package/vendor/@appport/core/dist/appboundry-capability-catalog.js +352 -0
  70. package/vendor/@appport/core/dist/appboundry-capability-catalog.js.map +1 -0
  71. package/vendor/@appport/core/dist/appboundry-composition.d.ts +93 -0
  72. package/vendor/@appport/core/dist/appboundry-composition.d.ts.map +1 -0
  73. package/vendor/@appport/core/dist/appboundry-composition.js +184 -0
  74. package/vendor/@appport/core/dist/appboundry-composition.js.map +1 -0
  75. package/vendor/@appport/core/dist/appboundry-contract.d.ts +80 -0
  76. package/vendor/@appport/core/dist/appboundry-contract.d.ts.map +1 -0
  77. package/vendor/@appport/core/dist/appboundry-contract.js +160 -0
  78. package/vendor/@appport/core/dist/appboundry-contract.js.map +1 -0
  79. package/vendor/@appport/core/dist/appboundry-diagnostics.d.ts +107 -0
  80. package/vendor/@appport/core/dist/appboundry-diagnostics.d.ts.map +1 -0
  81. package/vendor/@appport/core/dist/appboundry-diagnostics.js +358 -0
  82. package/vendor/@appport/core/dist/appboundry-diagnostics.js.map +1 -0
  83. package/vendor/@appport/core/dist/appboundry-discovery.d.ts +110 -0
  84. package/vendor/@appport/core/dist/appboundry-discovery.d.ts.map +1 -0
  85. package/vendor/@appport/core/dist/appboundry-discovery.js +141 -0
  86. package/vendor/@appport/core/dist/appboundry-discovery.js.map +1 -0
  87. package/vendor/@appport/core/dist/appboundry-entitlements.d.ts +128 -0
  88. package/vendor/@appport/core/dist/appboundry-entitlements.d.ts.map +1 -0
  89. package/vendor/@appport/core/dist/appboundry-entitlements.js +312 -0
  90. package/vendor/@appport/core/dist/appboundry-entitlements.js.map +1 -0
  91. package/vendor/@appport/core/dist/appboundry-execution.d.ts +84 -0
  92. package/vendor/@appport/core/dist/appboundry-execution.d.ts.map +1 -0
  93. package/vendor/@appport/core/dist/appboundry-execution.js +150 -0
  94. package/vendor/@appport/core/dist/appboundry-execution.js.map +1 -0
  95. package/vendor/@appport/core/dist/appboundry-exercise.d.ts +152 -0
  96. package/vendor/@appport/core/dist/appboundry-exercise.d.ts.map +1 -0
  97. package/vendor/@appport/core/dist/appboundry-exercise.js +416 -0
  98. package/vendor/@appport/core/dist/appboundry-exercise.js.map +1 -0
  99. package/vendor/@appport/core/dist/appboundry-materialization.d.ts +222 -0
  100. package/vendor/@appport/core/dist/appboundry-materialization.d.ts.map +1 -0
  101. package/vendor/@appport/core/dist/appboundry-materialization.js +494 -0
  102. package/vendor/@appport/core/dist/appboundry-materialization.js.map +1 -0
  103. package/vendor/@appport/core/dist/appboundry-migration.d.ts +195 -0
  104. package/vendor/@appport/core/dist/appboundry-migration.d.ts.map +1 -0
  105. package/vendor/@appport/core/dist/appboundry-migration.js +227 -0
  106. package/vendor/@appport/core/dist/appboundry-migration.js.map +1 -0
  107. package/vendor/@appport/core/dist/appboundry-onboarding.d.ts +70 -0
  108. package/vendor/@appport/core/dist/appboundry-onboarding.d.ts.map +1 -0
  109. package/vendor/@appport/core/dist/appboundry-onboarding.js +232 -0
  110. package/vendor/@appport/core/dist/appboundry-onboarding.js.map +1 -0
  111. package/vendor/@appport/core/dist/appboundry-operation-discovery.d.ts +93 -0
  112. package/vendor/@appport/core/dist/appboundry-operation-discovery.d.ts.map +1 -0
  113. package/vendor/@appport/core/dist/appboundry-operation-discovery.js +89 -0
  114. package/vendor/@appport/core/dist/appboundry-operation-discovery.js.map +1 -0
  115. package/vendor/@appport/core/dist/appboundry-resolution.d.ts +160 -0
  116. package/vendor/@appport/core/dist/appboundry-resolution.d.ts.map +1 -0
  117. package/vendor/@appport/core/dist/appboundry-resolution.js +218 -0
  118. package/vendor/@appport/core/dist/appboundry-resolution.js.map +1 -0
  119. package/vendor/@appport/core/dist/appboundry-surface.d.ts +96 -0
  120. package/vendor/@appport/core/dist/appboundry-surface.d.ts.map +1 -0
  121. package/vendor/@appport/core/dist/appboundry-surface.js +223 -0
  122. package/vendor/@appport/core/dist/appboundry-surface.js.map +1 -0
  123. package/vendor/@appport/core/dist/appboundry-usage.d.ts +94 -0
  124. package/vendor/@appport/core/dist/appboundry-usage.d.ts.map +1 -0
  125. package/vendor/@appport/core/dist/appboundry-usage.js +80 -0
  126. package/vendor/@appport/core/dist/appboundry-usage.js.map +1 -0
  127. package/vendor/@appport/core/dist/application-conformance.d.ts +68 -0
  128. package/vendor/@appport/core/dist/application-conformance.d.ts.map +1 -0
  129. package/vendor/@appport/core/dist/application-conformance.js +108 -0
  130. package/vendor/@appport/core/dist/application-conformance.js.map +1 -0
  131. package/vendor/@appport/core/dist/application-implementation.d.ts +125 -0
  132. package/vendor/@appport/core/dist/application-implementation.d.ts.map +1 -0
  133. package/vendor/@appport/core/dist/application-implementation.js +220 -0
  134. package/vendor/@appport/core/dist/application-implementation.js.map +1 -0
  135. package/vendor/@appport/core/dist/application-lifecycle.d.ts +150 -0
  136. package/vendor/@appport/core/dist/application-lifecycle.d.ts.map +1 -0
  137. package/vendor/@appport/core/dist/application-lifecycle.js +70 -0
  138. package/vendor/@appport/core/dist/application-lifecycle.js.map +1 -0
  139. package/vendor/@appport/core/dist/application-package.d.ts +105 -0
  140. package/vendor/@appport/core/dist/application-package.d.ts.map +1 -0
  141. package/vendor/@appport/core/dist/application-package.js +349 -0
  142. package/vendor/@appport/core/dist/application-package.js.map +1 -0
  143. package/vendor/@appport/core/dist/application-source.d.ts +109 -0
  144. package/vendor/@appport/core/dist/application-source.d.ts.map +1 -0
  145. package/vendor/@appport/core/dist/application-source.js +186 -0
  146. package/vendor/@appport/core/dist/application-source.js.map +1 -0
  147. package/vendor/@appport/core/dist/application.d.ts +124 -0
  148. package/vendor/@appport/core/dist/application.d.ts.map +1 -0
  149. package/vendor/@appport/core/dist/application.js +518 -0
  150. package/vendor/@appport/core/dist/application.js.map +1 -0
  151. package/vendor/@appport/core/dist/artifact.d.ts +395 -0
  152. package/vendor/@appport/core/dist/artifact.d.ts.map +1 -0
  153. package/vendor/@appport/core/dist/artifact.js +392 -0
  154. package/vendor/@appport/core/dist/artifact.js.map +1 -0
  155. package/vendor/@appport/core/dist/assembly.d.ts +237 -0
  156. package/vendor/@appport/core/dist/assembly.d.ts.map +1 -0
  157. package/vendor/@appport/core/dist/assembly.js +458 -0
  158. package/vendor/@appport/core/dist/assembly.js.map +1 -0
  159. package/vendor/@appport/core/dist/authority-attestation.d.ts +34 -0
  160. package/vendor/@appport/core/dist/authority-attestation.d.ts.map +1 -0
  161. package/vendor/@appport/core/dist/authority-attestation.js +72 -0
  162. package/vendor/@appport/core/dist/authority-attestation.js.map +1 -0
  163. package/vendor/@appport/core/dist/authorization-grant.d.ts +107 -0
  164. package/vendor/@appport/core/dist/authorization-grant.d.ts.map +1 -0
  165. package/vendor/@appport/core/dist/authorization-grant.js +131 -0
  166. package/vendor/@appport/core/dist/authorization-grant.js.map +1 -0
  167. package/vendor/@appport/core/dist/binding.d.ts +294 -0
  168. package/vendor/@appport/core/dist/binding.d.ts.map +1 -0
  169. package/vendor/@appport/core/dist/binding.js +263 -0
  170. package/vendor/@appport/core/dist/binding.js.map +1 -0
  171. package/vendor/@appport/core/dist/builtins.d.ts +18 -0
  172. package/vendor/@appport/core/dist/builtins.d.ts.map +1 -0
  173. package/vendor/@appport/core/dist/builtins.js +38 -0
  174. package/vendor/@appport/core/dist/builtins.js.map +1 -0
  175. package/vendor/@appport/core/dist/capability.d.ts +94 -0
  176. package/vendor/@appport/core/dist/capability.d.ts.map +1 -0
  177. package/vendor/@appport/core/dist/capability.js +85 -0
  178. package/vendor/@appport/core/dist/capability.js.map +1 -0
  179. package/vendor/@appport/core/dist/concurrency.d.ts +16 -0
  180. package/vendor/@appport/core/dist/concurrency.d.ts.map +1 -0
  181. package/vendor/@appport/core/dist/concurrency.js +46 -0
  182. package/vendor/@appport/core/dist/concurrency.js.map +1 -0
  183. package/vendor/@appport/core/dist/context.d.ts +59 -0
  184. package/vendor/@appport/core/dist/context.d.ts.map +1 -0
  185. package/vendor/@appport/core/dist/context.js +14 -0
  186. package/vendor/@appport/core/dist/context.js.map +1 -0
  187. package/vendor/@appport/core/dist/contract-artifact.d.ts +15 -0
  188. package/vendor/@appport/core/dist/contract-artifact.d.ts.map +1 -0
  189. package/vendor/@appport/core/dist/contract-artifact.js +161 -0
  190. package/vendor/@appport/core/dist/contract-artifact.js.map +1 -0
  191. package/vendor/@appport/core/dist/contract-attestation.d.ts +68 -0
  192. package/vendor/@appport/core/dist/contract-attestation.d.ts.map +1 -0
  193. package/vendor/@appport/core/dist/contract-attestation.js +76 -0
  194. package/vendor/@appport/core/dist/contract-attestation.js.map +1 -0
  195. package/vendor/@appport/core/dist/crash-injection.d.ts +3 -0
  196. package/vendor/@appport/core/dist/crash-injection.d.ts.map +1 -0
  197. package/vendor/@appport/core/dist/crash-injection.js +8 -0
  198. package/vendor/@appport/core/dist/crash-injection.js.map +1 -0
  199. package/vendor/@appport/core/dist/events.d.ts +33 -0
  200. package/vendor/@appport/core/dist/events.d.ts.map +1 -0
  201. package/vendor/@appport/core/dist/events.js +79 -0
  202. package/vendor/@appport/core/dist/events.js.map +1 -0
  203. package/vendor/@appport/core/dist/execution-barrier.d.ts +13 -0
  204. package/vendor/@appport/core/dist/execution-barrier.d.ts.map +1 -0
  205. package/vendor/@appport/core/dist/execution-barrier.js +33 -0
  206. package/vendor/@appport/core/dist/execution-barrier.js.map +1 -0
  207. package/vendor/@appport/core/dist/execution-ledger.d.ts +81 -0
  208. package/vendor/@appport/core/dist/execution-ledger.d.ts.map +1 -0
  209. package/vendor/@appport/core/dist/execution-ledger.js +173 -0
  210. package/vendor/@appport/core/dist/execution-ledger.js.map +1 -0
  211. package/vendor/@appport/core/dist/execution.d.ts +387 -0
  212. package/vendor/@appport/core/dist/execution.d.ts.map +1 -0
  213. package/vendor/@appport/core/dist/execution.js +165 -0
  214. package/vendor/@appport/core/dist/execution.js.map +1 -0
  215. package/vendor/@appport/core/dist/idempotency.d.ts +36 -0
  216. package/vendor/@appport/core/dist/idempotency.d.ts.map +1 -0
  217. package/vendor/@appport/core/dist/idempotency.js +36 -0
  218. package/vendor/@appport/core/dist/idempotency.js.map +1 -0
  219. package/vendor/@appport/core/dist/implementation.d.ts +110 -0
  220. package/vendor/@appport/core/dist/implementation.d.ts.map +1 -0
  221. package/vendor/@appport/core/dist/implementation.js +65 -0
  222. package/vendor/@appport/core/dist/implementation.js.map +1 -0
  223. package/vendor/@appport/core/dist/index.d.ts +62 -0
  224. package/vendor/@appport/core/dist/index.d.ts.map +1 -0
  225. package/vendor/@appport/core/dist/index.js +61 -0
  226. package/vendor/@appport/core/dist/index.js.map +1 -0
  227. package/vendor/@appport/core/dist/invocation.d.ts +253 -0
  228. package/vendor/@appport/core/dist/invocation.d.ts.map +1 -0
  229. package/vendor/@appport/core/dist/invocation.js +258 -0
  230. package/vendor/@appport/core/dist/invocation.js.map +1 -0
  231. package/vendor/@appport/core/dist/manifest.d.ts +157 -0
  232. package/vendor/@appport/core/dist/manifest.d.ts.map +1 -0
  233. package/vendor/@appport/core/dist/manifest.js +255 -0
  234. package/vendor/@appport/core/dist/manifest.js.map +1 -0
  235. package/vendor/@appport/core/dist/memory-application-data-store.d.ts +19 -0
  236. package/vendor/@appport/core/dist/memory-application-data-store.d.ts.map +1 -0
  237. package/vendor/@appport/core/dist/memory-application-data-store.js +161 -0
  238. package/vendor/@appport/core/dist/memory-application-data-store.js.map +1 -0
  239. package/vendor/@appport/core/dist/operations.d.ts +61 -0
  240. package/vendor/@appport/core/dist/operations.d.ts.map +1 -0
  241. package/vendor/@appport/core/dist/operations.js +210 -0
  242. package/vendor/@appport/core/dist/operations.js.map +1 -0
  243. package/vendor/@appport/core/dist/provider-contract.d.ts +89 -0
  244. package/vendor/@appport/core/dist/provider-contract.d.ts.map +1 -0
  245. package/vendor/@appport/core/dist/provider-contract.js +40 -0
  246. package/vendor/@appport/core/dist/provider-contract.js.map +1 -0
  247. package/vendor/@appport/core/dist/public.d.ts +23 -0
  248. package/vendor/@appport/core/dist/public.d.ts.map +1 -0
  249. package/vendor/@appport/core/dist/public.js +22 -0
  250. package/vendor/@appport/core/dist/public.js.map +1 -0
  251. package/vendor/@appport/core/dist/registration.d.ts +165 -0
  252. package/vendor/@appport/core/dist/registration.d.ts.map +1 -0
  253. package/vendor/@appport/core/dist/registration.js +253 -0
  254. package/vendor/@appport/core/dist/registration.js.map +1 -0
  255. package/vendor/@appport/core/dist/registry.d.ts +30 -0
  256. package/vendor/@appport/core/dist/registry.d.ts.map +1 -0
  257. package/vendor/@appport/core/dist/registry.js +149 -0
  258. package/vendor/@appport/core/dist/registry.js.map +1 -0
  259. package/vendor/@appport/core/dist/resolver.d.ts +130 -0
  260. package/vendor/@appport/core/dist/resolver.d.ts.map +1 -0
  261. package/vendor/@appport/core/dist/resolver.js +252 -0
  262. package/vendor/@appport/core/dist/resolver.js.map +1 -0
  263. package/vendor/@appport/core/dist/runtime-manifest.d.ts +68 -0
  264. package/vendor/@appport/core/dist/runtime-manifest.d.ts.map +1 -0
  265. package/vendor/@appport/core/dist/runtime-manifest.js +84 -0
  266. package/vendor/@appport/core/dist/runtime-manifest.js.map +1 -0
  267. package/vendor/@appport/core/dist/sanitize.d.ts +14 -0
  268. package/vendor/@appport/core/dist/sanitize.d.ts.map +1 -0
  269. package/vendor/@appport/core/dist/sanitize.js +49 -0
  270. package/vendor/@appport/core/dist/sanitize.js.map +1 -0
  271. package/vendor/@appport/core/dist/server-internal.d.ts +5 -0
  272. package/vendor/@appport/core/dist/server-internal.d.ts.map +1 -0
  273. package/vendor/@appport/core/dist/server-internal.js +4 -0
  274. package/vendor/@appport/core/dist/server-internal.js.map +1 -0
  275. package/vendor/@appport/core/dist/sessions.d.ts +29 -0
  276. package/vendor/@appport/core/dist/sessions.d.ts.map +1 -0
  277. package/vendor/@appport/core/dist/sessions.js +39 -0
  278. package/vendor/@appport/core/dist/sessions.js.map +1 -0
  279. package/vendor/@appport/core/dist/sha256.d.ts +3 -0
  280. package/vendor/@appport/core/dist/sha256.d.ts.map +1 -0
  281. package/vendor/@appport/core/dist/sha256.js +46 -0
  282. package/vendor/@appport/core/dist/sha256.js.map +1 -0
  283. package/vendor/@appport/core/dist/source-verification.d.ts +53 -0
  284. package/vendor/@appport/core/dist/source-verification.d.ts.map +1 -0
  285. package/vendor/@appport/core/dist/source-verification.js +92 -0
  286. package/vendor/@appport/core/dist/source-verification.js.map +1 -0
  287. package/vendor/@appport/core/dist/state-context.d.ts +312 -0
  288. package/vendor/@appport/core/dist/state-context.d.ts.map +1 -0
  289. package/vendor/@appport/core/dist/state-context.js +100 -0
  290. package/vendor/@appport/core/dist/state-context.js.map +1 -0
  291. package/vendor/@appport/core/dist/state.d.ts +96 -0
  292. package/vendor/@appport/core/dist/state.d.ts.map +1 -0
  293. package/vendor/@appport/core/dist/state.js +89 -0
  294. package/vendor/@appport/core/dist/state.js.map +1 -0
  295. package/vendor/@appport/core/dist/streams.d.ts +38 -0
  296. package/vendor/@appport/core/dist/streams.d.ts.map +1 -0
  297. package/vendor/@appport/core/dist/streams.js +123 -0
  298. package/vendor/@appport/core/dist/streams.js.map +1 -0
  299. package/vendor/@appport/core/dist/telemetry.d.ts +42 -0
  300. package/vendor/@appport/core/dist/telemetry.d.ts.map +1 -0
  301. package/vendor/@appport/core/dist/telemetry.js +32 -0
  302. package/vendor/@appport/core/dist/telemetry.js.map +1 -0
  303. package/vendor/@appport/core/dist/wasm-engine.d.ts +24 -0
  304. package/vendor/@appport/core/dist/wasm-engine.d.ts.map +1 -0
  305. package/vendor/@appport/core/dist/wasm-engine.js +376 -0
  306. package/vendor/@appport/core/dist/wasm-engine.js.map +1 -0
  307. package/vendor/@appport/core/package.json +58 -0
  308. package/vendor/@appport/mcp/README.md +29 -0
  309. package/vendor/@appport/mcp/dist/index.d.ts +59 -0
  310. package/vendor/@appport/mcp/dist/index.d.ts.map +1 -0
  311. package/vendor/@appport/mcp/dist/index.js +70 -0
  312. package/vendor/@appport/mcp/dist/index.js.map +1 -0
  313. package/vendor/@appport/mcp/package.json +29 -0
  314. package/vendor/@appport/mobile/README.md +10 -0
  315. package/vendor/@appport/mobile/dist/index.d.ts +66 -0
  316. package/vendor/@appport/mobile/dist/index.d.ts.map +1 -0
  317. package/vendor/@appport/mobile/dist/index.js +182 -0
  318. package/vendor/@appport/mobile/dist/index.js.map +1 -0
  319. package/vendor/@appport/mobile/package.json +33 -0
  320. package/vendor/@appport/protocol/README.md +41 -0
  321. package/vendor/@appport/protocol/dist/blob.d.ts +46 -0
  322. package/vendor/@appport/protocol/dist/blob.d.ts.map +1 -0
  323. package/vendor/@appport/protocol/dist/blob.js +23 -0
  324. package/vendor/@appport/protocol/dist/blob.js.map +1 -0
  325. package/vendor/@appport/protocol/dist/compatibility.d.ts +25 -0
  326. package/vendor/@appport/protocol/dist/compatibility.d.ts.map +1 -0
  327. package/vendor/@appport/protocol/dist/compatibility.js +189 -0
  328. package/vendor/@appport/protocol/dist/compatibility.js.map +1 -0
  329. package/vendor/@appport/protocol/dist/envelopes.d.ts +175 -0
  330. package/vendor/@appport/protocol/dist/envelopes.d.ts.map +1 -0
  331. package/vendor/@appport/protocol/dist/envelopes.js +97 -0
  332. package/vendor/@appport/protocol/dist/envelopes.js.map +1 -0
  333. package/vendor/@appport/protocol/dist/errors.d.ts +74 -0
  334. package/vendor/@appport/protocol/dist/errors.d.ts.map +1 -0
  335. package/vendor/@appport/protocol/dist/errors.js +92 -0
  336. package/vendor/@appport/protocol/dist/errors.js.map +1 -0
  337. package/vendor/@appport/protocol/dist/ids.d.ts +12 -0
  338. package/vendor/@appport/protocol/dist/ids.d.ts.map +1 -0
  339. package/vendor/@appport/protocol/dist/ids.js +50 -0
  340. package/vendor/@appport/protocol/dist/ids.js.map +1 -0
  341. package/vendor/@appport/protocol/dist/index.d.ts +21 -0
  342. package/vendor/@appport/protocol/dist/index.d.ts.map +1 -0
  343. package/vendor/@appport/protocol/dist/index.js +21 -0
  344. package/vendor/@appport/protocol/dist/index.js.map +1 -0
  345. package/vendor/@appport/protocol/dist/jsonschema.d.ts +50 -0
  346. package/vendor/@appport/protocol/dist/jsonschema.d.ts.map +1 -0
  347. package/vendor/@appport/protocol/dist/jsonschema.js +6 -0
  348. package/vendor/@appport/protocol/dist/jsonschema.js.map +1 -0
  349. package/vendor/@appport/protocol/dist/manifest.d.ts +134 -0
  350. package/vendor/@appport/protocol/dist/manifest.d.ts.map +1 -0
  351. package/vendor/@appport/protocol/dist/manifest.js +20 -0
  352. package/vendor/@appport/protocol/dist/manifest.js.map +1 -0
  353. package/vendor/@appport/protocol/dist/materialization.d.ts +59 -0
  354. package/vendor/@appport/protocol/dist/materialization.d.ts.map +1 -0
  355. package/vendor/@appport/protocol/dist/materialization.js +2 -0
  356. package/vendor/@appport/protocol/dist/materialization.js.map +1 -0
  357. package/vendor/@appport/protocol/dist/names.d.ts +26 -0
  358. package/vendor/@appport/protocol/dist/names.d.ts.map +1 -0
  359. package/vendor/@appport/protocol/dist/names.js +85 -0
  360. package/vendor/@appport/protocol/dist/names.js.map +1 -0
  361. package/vendor/@appport/protocol/dist/operations.d.ts +34 -0
  362. package/vendor/@appport/protocol/dist/operations.d.ts.map +1 -0
  363. package/vendor/@appport/protocol/dist/operations.js +9 -0
  364. package/vendor/@appport/protocol/dist/operations.js.map +1 -0
  365. package/vendor/@appport/protocol/dist/session.d.ts +27 -0
  366. package/vendor/@appport/protocol/dist/session.d.ts.map +1 -0
  367. package/vendor/@appport/protocol/dist/session.js +7 -0
  368. package/vendor/@appport/protocol/dist/session.js.map +1 -0
  369. package/vendor/@appport/protocol/dist/validate.d.ts +37 -0
  370. package/vendor/@appport/protocol/dist/validate.d.ts.map +1 -0
  371. package/vendor/@appport/protocol/dist/validate.js +321 -0
  372. package/vendor/@appport/protocol/dist/validate.js.map +1 -0
  373. package/vendor/@appport/protocol/dist/version.d.ts +27 -0
  374. package/vendor/@appport/protocol/dist/version.d.ts.map +1 -0
  375. package/vendor/@appport/protocol/dist/version.js +26 -0
  376. package/vendor/@appport/protocol/dist/version.js.map +1 -0
  377. package/vendor/@appport/protocol/package.json +25 -0
  378. package/vendor/@appport/schema/README.md +32 -0
  379. package/vendor/@appport/schema/dist/builder.d.ts +85 -0
  380. package/vendor/@appport/schema/dist/builder.d.ts.map +1 -0
  381. package/vendor/@appport/schema/dist/builder.js +278 -0
  382. package/vendor/@appport/schema/dist/builder.js.map +1 -0
  383. package/vendor/@appport/schema/dist/from-json-schema.d.ts +12 -0
  384. package/vendor/@appport/schema/dist/from-json-schema.d.ts.map +1 -0
  385. package/vendor/@appport/schema/dist/from-json-schema.js +186 -0
  386. package/vendor/@appport/schema/dist/from-json-schema.js.map +1 -0
  387. package/vendor/@appport/schema/dist/index.d.ts +23 -0
  388. package/vendor/@appport/schema/dist/index.d.ts.map +1 -0
  389. package/vendor/@appport/schema/dist/index.js +22 -0
  390. package/vendor/@appport/schema/dist/index.js.map +1 -0
  391. package/vendor/@appport/schema/dist/standard.d.ts +46 -0
  392. package/vendor/@appport/schema/dist/standard.d.ts.map +1 -0
  393. package/vendor/@appport/schema/dist/standard.js +42 -0
  394. package/vendor/@appport/schema/dist/standard.js.map +1 -0
  395. package/vendor/@appport/schema/dist/types.d.ts +40 -0
  396. package/vendor/@appport/schema/dist/types.d.ts.map +1 -0
  397. package/vendor/@appport/schema/dist/types.js +19 -0
  398. package/vendor/@appport/schema/dist/types.js.map +1 -0
  399. package/vendor/@appport/schema/package.json +28 -0
  400. package/vendor/@appport/server/README.md +39 -0
  401. package/vendor/@appport/server/dist/connection.d.ts +45 -0
  402. package/vendor/@appport/server/dist/connection.d.ts.map +1 -0
  403. package/vendor/@appport/server/dist/connection.js +217 -0
  404. package/vendor/@appport/server/dist/connection.js.map +1 -0
  405. package/vendor/@appport/server/dist/fetch.d.ts +10 -0
  406. package/vendor/@appport/server/dist/fetch.d.ts.map +1 -0
  407. package/vendor/@appport/server/dist/fetch.js +50 -0
  408. package/vendor/@appport/server/dist/fetch.js.map +1 -0
  409. package/vendor/@appport/server/dist/http.d.ts +80 -0
  410. package/vendor/@appport/server/dist/http.d.ts.map +1 -0
  411. package/vendor/@appport/server/dist/http.js +307 -0
  412. package/vendor/@appport/server/dist/http.js.map +1 -0
  413. package/vendor/@appport/server/dist/index.d.ts +11 -0
  414. package/vendor/@appport/server/dist/index.d.ts.map +1 -0
  415. package/vendor/@appport/server/dist/index.js +11 -0
  416. package/vendor/@appport/server/dist/index.js.map +1 -0
  417. package/vendor/@appport/server/dist/node-entry.d.ts +4 -0
  418. package/vendor/@appport/server/dist/node-entry.d.ts.map +1 -0
  419. package/vendor/@appport/server/dist/node-entry.js +4 -0
  420. package/vendor/@appport/server/dist/node-entry.js.map +1 -0
  421. package/vendor/@appport/server/dist/node.d.ts +45 -0
  422. package/vendor/@appport/server/dist/node.d.ts.map +1 -0
  423. package/vendor/@appport/server/dist/node.js +190 -0
  424. package/vendor/@appport/server/dist/node.js.map +1 -0
  425. package/vendor/@appport/server/dist/server.d.ts +83 -0
  426. package/vendor/@appport/server/dist/server.d.ts.map +1 -0
  427. package/vendor/@appport/server/dist/server.js +114 -0
  428. package/vendor/@appport/server/dist/server.js.map +1 -0
  429. package/vendor/@appport/server/dist/websocket.d.ts +25 -0
  430. package/vendor/@appport/server/dist/websocket.d.ts.map +1 -0
  431. package/vendor/@appport/server/dist/websocket.js +221 -0
  432. package/vendor/@appport/server/dist/websocket.js.map +1 -0
  433. package/vendor/@appport/server/package.json +34 -0
  434. package/vendor/@appport/transport-electron/README.md +56 -0
  435. package/vendor/@appport/transport-electron/dist/index.d.ts +11 -0
  436. package/vendor/@appport/transport-electron/dist/index.d.ts.map +1 -0
  437. package/vendor/@appport/transport-electron/dist/index.js +11 -0
  438. package/vendor/@appport/transport-electron/dist/index.js.map +1 -0
  439. package/vendor/@appport/transport-electron/dist/main.d.ts +31 -0
  440. package/vendor/@appport/transport-electron/dist/main.d.ts.map +1 -0
  441. package/vendor/@appport/transport-electron/dist/main.js +61 -0
  442. package/vendor/@appport/transport-electron/dist/main.js.map +1 -0
  443. package/vendor/@appport/transport-electron/dist/preload.d.ts +22 -0
  444. package/vendor/@appport/transport-electron/dist/preload.d.ts.map +1 -0
  445. package/vendor/@appport/transport-electron/dist/preload.js +29 -0
  446. package/vendor/@appport/transport-electron/dist/preload.js.map +1 -0
  447. package/vendor/@appport/transport-electron/dist/renderer.d.ts +16 -0
  448. package/vendor/@appport/transport-electron/dist/renderer.d.ts.map +1 -0
  449. package/vendor/@appport/transport-electron/dist/renderer.js +36 -0
  450. package/vendor/@appport/transport-electron/dist/renderer.js.map +1 -0
  451. package/vendor/@appport/transport-electron/dist/types.d.ts +49 -0
  452. package/vendor/@appport/transport-electron/dist/types.d.ts.map +1 -0
  453. package/vendor/@appport/transport-electron/dist/types.js +5 -0
  454. package/vendor/@appport/transport-electron/dist/types.js.map +1 -0
  455. package/vendor/@appport/transport-electron/package.json +46 -0
  456. package/vendor/@appport/transport-http/README.md +24 -0
  457. package/vendor/@appport/transport-http/dist/index.d.ts +18 -0
  458. package/vendor/@appport/transport-http/dist/index.d.ts.map +1 -0
  459. package/vendor/@appport/transport-http/dist/index.js +223 -0
  460. package/vendor/@appport/transport-http/dist/index.js.map +1 -0
  461. package/vendor/@appport/transport-http/package.json +29 -0
  462. package/vendor/@appport/transport-inprocess/README.md +24 -0
  463. package/vendor/@appport/transport-inprocess/dist/index.d.ts +16 -0
  464. package/vendor/@appport/transport-inprocess/dist/index.d.ts.map +1 -0
  465. package/vendor/@appport/transport-inprocess/dist/index.js +30 -0
  466. package/vendor/@appport/transport-inprocess/dist/index.js.map +1 -0
  467. package/vendor/@appport/transport-inprocess/package.json +30 -0
  468. package/vendor/@appport/transport-tauri/README.md +45 -0
  469. package/vendor/@appport/transport-tauri/dist/index.d.ts +23 -0
  470. package/vendor/@appport/transport-tauri/dist/index.d.ts.map +1 -0
  471. package/vendor/@appport/transport-tauri/dist/index.js +44 -0
  472. package/vendor/@appport/transport-tauri/dist/index.js.map +1 -0
  473. package/vendor/@appport/transport-tauri/package.json +29 -0
  474. package/vendor/@appport/transport-websocket/README.md +22 -0
  475. package/vendor/@appport/transport-websocket/dist/index.d.ts +26 -0
  476. package/vendor/@appport/transport-websocket/dist/index.d.ts.map +1 -0
  477. package/vendor/@appport/transport-websocket/dist/index.js +72 -0
  478. package/vendor/@appport/transport-websocket/dist/index.js.map +1 -0
  479. package/vendor/@appport/transport-websocket/package.json +29 -0
@@ -0,0 +1,214 @@
1
+ import { AppPortError, createRequest, createStreamRequest, isValidName, newRequestId, newTraceId } from "../../protocol/dist/index.js";
2
+ import { contractFromManifest } from "./contract.js";
3
+ /**
4
+ * The transport-independent application client.
5
+ *
6
+ * Application code calls capabilities. It never builds an envelope, never sees
7
+ * the transport, and never branches on the runtime (§2, §33).
8
+ */
9
+ export class AppPortClient {
10
+ transport;
11
+ #versions;
12
+ #streams;
13
+ #defaultTimeoutMs;
14
+ #metadata;
15
+ #createTraceId;
16
+ #manifest;
17
+ #connected = false;
18
+ constructor(options) {
19
+ this.transport = options.transport;
20
+ this.#versions = new Map(Object.entries(options.versions ?? {}));
21
+ this.#streams = new Set(options.streamCapabilities ?? []);
22
+ this.#defaultTimeoutMs = options.defaultTimeoutMs;
23
+ this.#metadata = options.metadata;
24
+ this.#createTraceId = options.createTraceId ?? newTraceId;
25
+ if (options.manifest)
26
+ this.#applyManifest(options.manifest);
27
+ }
28
+ get connected() {
29
+ return this.#connected;
30
+ }
31
+ async connect() {
32
+ if (this.#connected)
33
+ return;
34
+ await this.transport.connect();
35
+ this.#connected = true;
36
+ }
37
+ async close() {
38
+ if (!this.#connected)
39
+ return;
40
+ this.#connected = false;
41
+ await this.transport.close();
42
+ }
43
+ /**
44
+ * Loads the manifest through `appport.manifest`, so discovery works the same
45
+ * way over every transport (§39, §40).
46
+ */
47
+ async load() {
48
+ if (this.#manifest)
49
+ return this.#manifest;
50
+ const manifest = (await this.call("appport.manifest", {}));
51
+ this.#applyManifest(manifest);
52
+ return manifest;
53
+ }
54
+ get manifest() {
55
+ return this.#manifest;
56
+ }
57
+ #applyManifest(manifest) {
58
+ this.#manifest = manifest;
59
+ const { versions, streams } = contractFromManifest(manifest);
60
+ for (const [name, version] of Object.entries(versions)) {
61
+ if (!this.#versions.has(name))
62
+ this.#versions.set(name, version);
63
+ }
64
+ for (const name of streams)
65
+ this.#streams.add(name);
66
+ }
67
+ /** Resolves the capability version this client will send. */
68
+ versionOf(name) {
69
+ return this.#versions.get(name) ?? 1;
70
+ }
71
+ isStreamCapability(name) {
72
+ return this.#streams.has(name);
73
+ }
74
+ #buildRequest(name, input, options = {}) {
75
+ if (!isValidName(name)) {
76
+ throw new AppPortError("INVALID_REQUEST", `Invalid capability name: ${name}`);
77
+ }
78
+ const timeoutMs = options.timeoutMs ?? this.#defaultTimeoutMs;
79
+ return createRequest({
80
+ requestId: newRequestId(),
81
+ capability: { name, version: options.version ?? this.versionOf(name) },
82
+ input,
83
+ traceId: options.traceId ?? this.#createTraceId(),
84
+ ...(options.idempotencyKey ? { idempotencyKey: options.idempotencyKey } : {}),
85
+ ...(timeoutMs !== undefined ? { timeoutMs } : {}),
86
+ ...(this.#metadata ? { metadata: this.#metadata } : {})
87
+ });
88
+ }
89
+ /** Calls a request capability and unwraps the response. */
90
+ async call(name, input, options = {}) {
91
+ await this.#ensureConnected();
92
+ const request = this.#buildRequest(name, input, options);
93
+ const response = await this.#withAbort(options.signal, () => this.transport.request(request));
94
+ return unwrap(response);
95
+ }
96
+ /** Sends a pre-built envelope. Escape hatch for tooling; applications use `call`. */
97
+ async send(request) {
98
+ await this.#ensureConnected();
99
+ return this.transport.request(request);
100
+ }
101
+ /** Invokes a stream capability (§20). */
102
+ stream(name, input, options = {}) {
103
+ const base = this.#buildRequest(name, input, options);
104
+ const request = createStreamRequest({
105
+ requestId: base.requestId,
106
+ capability: base.capability,
107
+ input: base.input,
108
+ ...(base.traceId ? { traceId: base.traceId } : {}),
109
+ ...(base.timeoutMs !== undefined ? { timeoutMs: base.timeoutMs } : {}),
110
+ ...(base.metadata ? { metadata: base.metadata } : {})
111
+ });
112
+ const self = this;
113
+ let handle;
114
+ let cancelled;
115
+ const iterable = {
116
+ cancel(reason) {
117
+ cancelled = reason ?? "cancelled";
118
+ handle?.cancel(reason);
119
+ },
120
+ async *[Symbol.asyncIterator]() {
121
+ await self.#ensureConnected();
122
+ handle = self.transport.stream(request);
123
+ if (cancelled !== undefined)
124
+ handle.cancel(cancelled);
125
+ const onAbort = () => handle?.cancel("aborted");
126
+ options.signal?.addEventListener("abort", onAbort, { once: true });
127
+ try {
128
+ for await (const chunk of handle)
129
+ yield chunk;
130
+ }
131
+ finally {
132
+ options.signal?.removeEventListener("abort", onAbort);
133
+ }
134
+ }
135
+ };
136
+ return iterable;
137
+ }
138
+ /** Event subscriptions (§18). */
139
+ events = {
140
+ subscribe: async (name, handler) => {
141
+ await this.#ensureConnected();
142
+ const filter = typeof name === "string" ? { name } : name;
143
+ const listener = (event) => {
144
+ handler(event.payload, event);
145
+ };
146
+ return this.transport.subscribe(listener, filter);
147
+ }
148
+ };
149
+ /**
150
+ * Namespaced capability accessor: `client.capabilities.documents.save(input)`.
151
+ * The proxy resolves versions from the manifest and routes stream
152
+ * capabilities to `stream()`.
153
+ */
154
+ get capabilities() {
155
+ return createCapabilityProxy(this, []);
156
+ }
157
+ async #ensureConnected() {
158
+ if (!this.#connected)
159
+ await this.connect();
160
+ }
161
+ async #withAbort(signal, fn) {
162
+ if (!signal)
163
+ return fn();
164
+ if (signal.aborted)
165
+ throw new AppPortError("CANCELLED", "Request aborted before it was sent");
166
+ let onAbort;
167
+ try {
168
+ return await Promise.race([
169
+ fn(),
170
+ new Promise((_, reject) => {
171
+ onAbort = () => reject(new AppPortError("CANCELLED", "Request aborted"));
172
+ signal.addEventListener("abort", onAbort, { once: true });
173
+ })
174
+ ]);
175
+ }
176
+ finally {
177
+ // A caller may reuse one signal across many calls; do not accumulate
178
+ // listeners on it.
179
+ if (onAbort)
180
+ signal.removeEventListener("abort", onAbort);
181
+ }
182
+ }
183
+ }
184
+ function createCapabilityProxy(client, path) {
185
+ const call = (input, options) => {
186
+ const name = path.join(".");
187
+ return client.isStreamCapability(name)
188
+ ? client.stream(name, input, options)
189
+ : client.call(name, input, options);
190
+ };
191
+ return new Proxy(call, {
192
+ get(_target, property) {
193
+ if (typeof property !== "string")
194
+ return undefined;
195
+ return createCapabilityProxy(client, [...path, property]);
196
+ },
197
+ apply(_target, _thisArg, args) {
198
+ return call(args[0], args[1]);
199
+ }
200
+ });
201
+ }
202
+ /** Turns an error response into a thrown {@link AppPortError} (§14). */
203
+ export function unwrap(response) {
204
+ if (response.ok)
205
+ return response.output;
206
+ throw new AppPortError(response.error.code, response.error.message, {
207
+ ...(response.error.details !== undefined ? { details: response.error.details } : {}),
208
+ ...(response.error.retryable ? { retryable: true } : {})
209
+ });
210
+ }
211
+ export function createClient(options) {
212
+ return new AppPortClient(options);
213
+ }
214
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { AppPortManifest } from "../../protocol/dist/index.d.ts";
2
+ /**
3
+ * The type-level description of an application, produced by
4
+ * `@appport/generators` from a manifest and consumed by the typed client.
5
+ */
6
+ export interface CapabilityContract {
7
+ input: unknown;
8
+ output: unknown;
9
+ kind?: "request" | "stream";
10
+ version?: number;
11
+ }
12
+ export interface AppContract {
13
+ capabilities: Record<string, CapabilityContract>;
14
+ events: Record<string, unknown>;
15
+ }
16
+ /** An untyped contract; every call falls back to `unknown`. */
17
+ export interface AnyContract extends AppContract {
18
+ capabilities: Record<string, {
19
+ input: unknown;
20
+ output: unknown;
21
+ }>;
22
+ events: Record<string, unknown>;
23
+ }
24
+ type Head<S extends string> = S extends `${infer H}.${string}` ? H : S;
25
+ type Tails<Names extends string, H extends string> = Names extends `${H}.${infer R}` ? R : never;
26
+ /**
27
+ * Turns dotted capability names into a nested namespace object type, so
28
+ * `documents.save` is reachable as `app.documents.save(input)`.
29
+ */
30
+ export type CapabilityTree<Names extends string, C extends AppContract, Prefix extends string = ""> = {
31
+ [H in Head<Names>]: [Tails<Names, H>] extends [never] ? Leaf<C, `${Prefix}${H}`> : CapabilityTree<Tails<Names, H>, C, `${Prefix}${H}.`>;
32
+ };
33
+ type Leaf<C extends AppContract, Name extends string> = Name extends keyof C["capabilities"] ? C["capabilities"][Name] extends {
34
+ kind: "stream";
35
+ } ? (input: C["capabilities"][Name]["input"], options?: CallOptions) => TypedStream<C["capabilities"][Name]["output"]> : (input: C["capabilities"][Name]["input"], options?: CallOptions) => Promise<C["capabilities"][Name]["output"]> : never;
36
+ export interface CallOptions {
37
+ /** Overrides the capability version sent on the wire (§42). */
38
+ version?: number;
39
+ idempotencyKey?: string;
40
+ timeoutMs?: number;
41
+ traceId?: string;
42
+ signal?: AbortSignal;
43
+ }
44
+ export interface TypedStream<Chunk> extends AsyncIterable<Chunk> {
45
+ cancel(reason?: string): void;
46
+ }
47
+ /** The namespaced capability accessor exposed as `client.capabilities`. */
48
+ export type CapabilityProxy<C extends AppContract> = CapabilityTree<keyof C["capabilities"] & string, C>;
49
+ /** Derives the runtime facts a client needs from a manifest. */
50
+ export declare function contractFromManifest(manifest: AppPortManifest): {
51
+ versions: Record<string, number>;
52
+ streams: Set<string>;
53
+ };
54
+ export {};
55
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /** Derives the runtime facts a client needs from a manifest. */
2
+ export function contractFromManifest(manifest) {
3
+ const versions = {};
4
+ const streams = new Set();
5
+ for (const entry of manifest.capabilities) {
6
+ versions[entry.name] = entry.latestVersion;
7
+ if (entry.kind === "stream")
8
+ streams.add(entry.name);
9
+ }
10
+ return { versions, streams };
11
+ }
12
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AA2DA,gEAAgE;AAChE,MAAM,UAAU,oBAAoB,CAAC,QAAyB;IAI5D,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1C,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;QAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type AppPortClient } from "./client.js";
2
+ export interface DiscoverOptions {
3
+ origin: string;
4
+ fetch?: typeof globalThis.fetch;
5
+ WebSocket?: unknown;
6
+ sessionId?: string;
7
+ headers?: Record<string, string>;
8
+ }
9
+ /** Discovers a remote/desktop AppPort host and returns the normal client. */
10
+ export declare function discover(options: DiscoverOptions): Promise<AppPortClient>;
11
+ export declare const AppPort: {
12
+ discover: typeof discover;
13
+ connect: (options: {
14
+ url: string;
15
+ } & Omit<DiscoverOptions, "origin">) => Promise<AppPortClient<import("./contract.js").AnyContract>>;
16
+ };
17
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAQD,6EAA6E;AAC7E,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAuC/E;AAED,eAAO,MAAM,OAAO;;uBAEC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;CACrE,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { AppPortError } from "../../protocol/dist/index.js";
2
+ import { createClient } from "./client.js";
3
+ function endpoint(origin, value) {
4
+ return new URL(value, `${origin.replace(/\/$/, "")}/`).toString();
5
+ }
6
+ /** Discovers a remote/desktop AppPort host and returns the normal client. */
7
+ export async function discover(options) {
8
+ const origin = options.origin.replace(/\/$/, "");
9
+ const doFetch = options.fetch ?? globalThis.fetch;
10
+ if (!doFetch)
11
+ throw new AppPortError("INTERNAL_ERROR", "fetch is not available");
12
+ let response;
13
+ try {
14
+ response = await doFetch(`${origin}/.well-known/appport`, { headers: options.headers });
15
+ }
16
+ catch (error) {
17
+ throw new AppPortError("INTERNAL_ERROR", "The AppPort discovery endpoint is unreachable", { retryable: true, cause: error });
18
+ }
19
+ if (!response.ok)
20
+ throw new AppPortError(response.status === 403 ? "FORBIDDEN" : "INTERNAL_ERROR", `Discovery failed (HTTP ${response.status})`);
21
+ const document = await response.json();
22
+ if (document.protocol !== "appport/1" || !document.application?.id || !Array.isArray(document.transports)) {
23
+ throw new AppPortError("INVALID_PROTOCOL", "The discovery document is not compatible with appport/1");
24
+ }
25
+ const sessionId = options.sessionId ?? `ses_${globalThis.crypto?.randomUUID?.().replaceAll("-", "") ?? Math.random().toString(36).slice(2)}`;
26
+ const websocket = document.transports.find((item) => item.kind === "websocket" && item.endpoint);
27
+ const http = document.transports.find((item) => item.kind === "http" && item.endpoint);
28
+ let transport;
29
+ if (websocket) {
30
+ const name = "@appport/transport-websocket";
31
+ const module = await import(name);
32
+ const url = endpoint(origin, websocket.endpoint).replace(/^http:/, "ws:").replace(/^https:/, "wss:");
33
+ transport = module.createWebSocketTransport({ url, sessionId, headers: options.headers, ...(options.WebSocket ? { WebSocket: options.WebSocket } : {}) });
34
+ }
35
+ else if (http) {
36
+ const name = "@appport/transport-http";
37
+ const module = await import(name);
38
+ transport = module.createHttpTransport({ url: endpoint(origin, http.endpoint), sessionId, fetch: doFetch, credentials: "include", headers: options.headers });
39
+ }
40
+ else {
41
+ throw new AppPortError("INVALID_PROTOCOL", "Discovery advertised no compatible browser transport");
42
+ }
43
+ const client = createClient({ transport });
44
+ await client.connect();
45
+ const manifest = await client.load();
46
+ if (manifest.protocol !== "appport/1" || manifest.application.id !== document.application.id) {
47
+ await client.close();
48
+ throw new AppPortError("INVALID_PROTOCOL", "Discovery and manifest identities do not match");
49
+ }
50
+ return client;
51
+ }
52
+ export const AppPort = {
53
+ discover,
54
+ connect: (options) => discover({ ...options, origin: options.url })
55
+ };
56
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type ClientEnvelope } from "../../protocol/dist/index.d.ts";
2
+ import { type AppTransport, type TransportFeatures } from "./transport.js";
3
+ /**
4
+ * The carrier half of a duplex transport.
5
+ *
6
+ * WebSocket, Electron IPC, Tauri IPC and the in-process bridge differ only in
7
+ * how bytes move; the correlation of requests, events and streams is identical,
8
+ * so it lives here once (§72).
9
+ */
10
+ export interface DuplexChannel {
11
+ readonly kind: string;
12
+ open(handlers: DuplexHandlers): Promise<void>;
13
+ send(envelope: ClientEnvelope): void | Promise<void>;
14
+ close(): Promise<void>;
15
+ readonly features?: TransportFeatures;
16
+ }
17
+ export interface DuplexHandlers {
18
+ /** Called with each envelope received from the server, decoded but unvalidated. */
19
+ onEnvelope(value: unknown): void;
20
+ /** Called once when the carrier closes. */
21
+ onClose(reason?: unknown): void;
22
+ }
23
+ /** Builds an {@link AppTransport} from a {@link DuplexChannel}. */
24
+ export declare function createDuplexTransport(channel: DuplexChannel): AppTransport;
25
+ //# sourceMappingURL=duplex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplex.d.ts","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,cAAc,EAEpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAEL,KAAK,YAAY,EAGjB,KAAK,iBAAiB,EAGvB,MAAM,gBAAgB,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,2CAA2C;IAC3C,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACjC;AAaD,mEAAmE;AACnE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAkM1E"}
@@ -0,0 +1,194 @@
1
+ import { AppPortError, createStreamCancel, createSubscribe, createUnsubscribe, errors, newRequestId, newSubscriptionId, parseServerEnvelope } from "../../protocol/dist/index.js";
2
+ import { ClientChannel } from "./channel.js";
3
+ import { DEFAULT_FEATURES } from "./transport.js";
4
+ /** Builds an {@link AppTransport} from a {@link DuplexChannel}. */
5
+ export function createDuplexTransport(channel) {
6
+ const pending = new Map();
7
+ const subscriptions = new Map();
8
+ const streamsByRequest = new Map();
9
+ const streamsById = new Map();
10
+ let opened = false;
11
+ let closing = false;
12
+ let generation = 0;
13
+ const failAll = (reason) => {
14
+ for (const request of pending.values())
15
+ request.reject(reason);
16
+ pending.clear();
17
+ for (const stream of streamsById.values())
18
+ stream.channel.fail(reason);
19
+ for (const stream of streamsByRequest.values())
20
+ stream.channel.fail(reason);
21
+ streamsById.clear();
22
+ streamsByRequest.clear();
23
+ subscriptions.clear();
24
+ };
25
+ const onEnvelope = (value) => {
26
+ let envelope;
27
+ try {
28
+ envelope = parseServerEnvelope(value);
29
+ }
30
+ catch {
31
+ // A malformed server envelope must not corrupt client state (§57).
32
+ return;
33
+ }
34
+ switch (envelope.type) {
35
+ case "response": {
36
+ const request = pending.get(envelope.requestId);
37
+ if (request) {
38
+ pending.delete(envelope.requestId);
39
+ request.resolve(envelope);
40
+ return;
41
+ }
42
+ // A stream request that failed before `stream.start` is answered with a
43
+ // plain error response; surface it on the stream the caller is holding.
44
+ const stream = streamsByRequest.get(envelope.requestId);
45
+ if (stream && !envelope.ok) {
46
+ streamsByRequest.delete(envelope.requestId);
47
+ stream.channel.fail(new AppPortError(envelope.error.code, envelope.error.message));
48
+ }
49
+ return;
50
+ }
51
+ case "event": {
52
+ const handler = envelope.subscriptionId ? subscriptions.get(envelope.subscriptionId) : undefined;
53
+ if (handler)
54
+ handler(envelope);
55
+ else
56
+ for (const listener of subscriptions.values())
57
+ listener(envelope);
58
+ return;
59
+ }
60
+ case "stream.start": {
61
+ const stream = streamsByRequest.get(envelope.requestId);
62
+ if (!stream)
63
+ return;
64
+ stream.streamId = envelope.streamId;
65
+ streamsById.set(envelope.streamId, stream);
66
+ return;
67
+ }
68
+ case "stream.chunk": {
69
+ const stream = streamsById.get(envelope.streamId);
70
+ if (!stream)
71
+ return;
72
+ if (envelope.sequence !== stream.expectedSequence) {
73
+ stream.channel.fail(errors.streamError(`Out-of-order stream chunk: expected ${stream.expectedSequence}, received ${envelope.sequence}`));
74
+ return;
75
+ }
76
+ stream.expectedSequence += 1;
77
+ stream.channel.push(envelope.payload);
78
+ return;
79
+ }
80
+ case "stream.end": {
81
+ const stream = streamsById.get(envelope.streamId);
82
+ if (!stream)
83
+ return;
84
+ streamsById.delete(envelope.streamId);
85
+ for (const [requestId, candidate] of streamsByRequest) {
86
+ if (candidate === stream)
87
+ streamsByRequest.delete(requestId);
88
+ }
89
+ if (envelope.error) {
90
+ stream.channel.fail(new AppPortError(envelope.error.code, envelope.error.message));
91
+ }
92
+ else {
93
+ stream.channel.end();
94
+ }
95
+ return;
96
+ }
97
+ }
98
+ };
99
+ const ensureOpen = async () => {
100
+ if (opened)
101
+ return;
102
+ generation += 1;
103
+ const current = generation;
104
+ await channel.open({
105
+ onEnvelope: (value) => {
106
+ if (current !== generation)
107
+ return;
108
+ onEnvelope(value);
109
+ },
110
+ onClose: (reason) => {
111
+ // Ignore a close from a carrier that has already been superseded.
112
+ if (current !== generation)
113
+ return;
114
+ opened = false;
115
+ failAll(reason ?? (closing ? errors.cancelled("Transport closed") : errors.streamError("Transport disconnected")));
116
+ }
117
+ });
118
+ opened = true;
119
+ };
120
+ const transport = {
121
+ kind: channel.kind,
122
+ features: channel.features ?? DEFAULT_FEATURES,
123
+ async connect() {
124
+ await ensureOpen();
125
+ },
126
+ async close() {
127
+ closing = true;
128
+ generation += 1;
129
+ if (opened) {
130
+ opened = false;
131
+ await channel.close();
132
+ }
133
+ failAll(errors.cancelled("Transport closed"));
134
+ closing = false;
135
+ },
136
+ async request(request) {
137
+ await ensureOpen();
138
+ return new Promise((resolve, reject) => {
139
+ pending.set(request.requestId, { resolve, reject });
140
+ Promise.resolve(channel.send(request)).catch((error) => {
141
+ pending.delete(request.requestId);
142
+ reject(error);
143
+ });
144
+ });
145
+ },
146
+ async subscribe(handler, filter) {
147
+ await ensureOpen();
148
+ const subscriptionId = newSubscriptionId();
149
+ const requestId = newRequestId();
150
+ subscriptions.set(subscriptionId, handler);
151
+ const ack = new Promise((resolve, reject) => {
152
+ pending.set(requestId, { resolve, reject });
153
+ });
154
+ await channel.send(createSubscribe(requestId, subscriptionId, {
155
+ name: filter?.name ?? "*",
156
+ ...(filter?.version !== undefined ? { version: filter.version } : {})
157
+ }));
158
+ const response = await ack;
159
+ if (!response.ok) {
160
+ subscriptions.delete(subscriptionId);
161
+ throw new AppPortError(response.error.code, response.error.message);
162
+ }
163
+ return () => {
164
+ subscriptions.delete(subscriptionId);
165
+ void Promise.resolve(channel.send(createUnsubscribe(newRequestId(), subscriptionId))).catch(() => undefined);
166
+ };
167
+ },
168
+ stream(request) {
169
+ const stream = { channel: new ClientChannel(), expectedSequence: 0 };
170
+ streamsByRequest.set(request.requestId, stream);
171
+ void (async () => {
172
+ try {
173
+ await ensureOpen();
174
+ await channel.send(request);
175
+ }
176
+ catch (error) {
177
+ stream.channel.fail(error);
178
+ }
179
+ })();
180
+ return {
181
+ cancel(reason) {
182
+ const streamId = stream.streamId;
183
+ if (streamId) {
184
+ void Promise.resolve(channel.send(createStreamCancel(streamId, reason))).catch(() => undefined);
185
+ }
186
+ stream.channel.fail(errors.cancelled(reason ?? "Cancelled by client"));
187
+ },
188
+ [Symbol.asyncIterator]: () => stream.channel[Symbol.asyncIterator]()
189
+ };
190
+ }
191
+ };
192
+ return transport;
193
+ }
194
+ //# sourceMappingURL=duplex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplex.js","sourceRoot":"","sources":["../src/duplex.ts"],"names":[],"mappings":"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"}