@appport/sdk 1.0.1

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 (387) hide show
  1. package/LICENSE +126 -0
  2. package/README.md +39 -0
  3. package/dist/index.d.ts +14 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +14 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/node.d.ts +3 -0
  8. package/dist/node.d.ts.map +1 -0
  9. package/dist/node.js +3 -0
  10. package/dist/node.js.map +1 -0
  11. package/node_modules/@appport/authorization/README.md +28 -0
  12. package/node_modules/@appport/authorization/dist/index.d.ts +94 -0
  13. package/node_modules/@appport/authorization/dist/index.d.ts.map +1 -0
  14. package/node_modules/@appport/authorization/dist/index.js +131 -0
  15. package/node_modules/@appport/authorization/dist/index.js.map +1 -0
  16. package/node_modules/@appport/authorization/package.json +28 -0
  17. package/node_modules/@appport/client/README.md +35 -0
  18. package/node_modules/@appport/client/dist/channel.d.ts +14 -0
  19. package/node_modules/@appport/client/dist/channel.d.ts.map +1 -0
  20. package/node_modules/@appport/client/dist/channel.js +58 -0
  21. package/node_modules/@appport/client/dist/channel.js.map +1 -0
  22. package/node_modules/@appport/client/dist/client.d.ts +61 -0
  23. package/node_modules/@appport/client/dist/client.d.ts.map +1 -0
  24. package/node_modules/@appport/client/dist/client.js +214 -0
  25. package/node_modules/@appport/client/dist/client.js.map +1 -0
  26. package/node_modules/@appport/client/dist/contract.d.ts +55 -0
  27. package/node_modules/@appport/client/dist/contract.d.ts.map +1 -0
  28. package/node_modules/@appport/client/dist/contract.js +12 -0
  29. package/node_modules/@appport/client/dist/contract.js.map +1 -0
  30. package/node_modules/@appport/client/dist/discovery.d.ts +17 -0
  31. package/node_modules/@appport/client/dist/discovery.d.ts.map +1 -0
  32. package/node_modules/@appport/client/dist/discovery.js +56 -0
  33. package/node_modules/@appport/client/dist/discovery.js.map +1 -0
  34. package/node_modules/@appport/client/dist/duplex.d.ts +25 -0
  35. package/node_modules/@appport/client/dist/duplex.d.ts.map +1 -0
  36. package/node_modules/@appport/client/dist/duplex.js +194 -0
  37. package/node_modules/@appport/client/dist/duplex.js.map +1 -0
  38. package/node_modules/@appport/client/dist/index.d.ts +13 -0
  39. package/node_modules/@appport/client/dist/index.d.ts.map +1 -0
  40. package/node_modules/@appport/client/dist/index.js +13 -0
  41. package/node_modules/@appport/client/dist/index.js.map +1 -0
  42. package/node_modules/@appport/client/dist/transport.d.ts +42 -0
  43. package/node_modules/@appport/client/dist/transport.d.ts.map +1 -0
  44. package/node_modules/@appport/client/dist/transport.js +2 -0
  45. package/node_modules/@appport/client/dist/transport.js.map +1 -0
  46. package/node_modules/@appport/client/package.json +32 -0
  47. package/node_modules/@appport/core/README.md +91 -0
  48. package/node_modules/@appport/core/dist/appboundry-contract.d.ts +80 -0
  49. package/node_modules/@appport/core/dist/appboundry-contract.d.ts.map +1 -0
  50. package/node_modules/@appport/core/dist/appboundry-contract.js +160 -0
  51. package/node_modules/@appport/core/dist/appboundry-contract.js.map +1 -0
  52. package/node_modules/@appport/core/dist/application-implementation.d.ts +125 -0
  53. package/node_modules/@appport/core/dist/application-implementation.d.ts.map +1 -0
  54. package/node_modules/@appport/core/dist/application-implementation.js +220 -0
  55. package/node_modules/@appport/core/dist/application-implementation.js.map +1 -0
  56. package/node_modules/@appport/core/dist/application-lifecycle.d.ts +150 -0
  57. package/node_modules/@appport/core/dist/application-lifecycle.d.ts.map +1 -0
  58. package/node_modules/@appport/core/dist/application-lifecycle.js +70 -0
  59. package/node_modules/@appport/core/dist/application-lifecycle.js.map +1 -0
  60. package/node_modules/@appport/core/dist/application-source.d.ts +109 -0
  61. package/node_modules/@appport/core/dist/application-source.d.ts.map +1 -0
  62. package/node_modules/@appport/core/dist/application-source.js +186 -0
  63. package/node_modules/@appport/core/dist/application-source.js.map +1 -0
  64. package/node_modules/@appport/core/dist/application.d.ts +122 -0
  65. package/node_modules/@appport/core/dist/application.d.ts.map +1 -0
  66. package/node_modules/@appport/core/dist/application.js +515 -0
  67. package/node_modules/@appport/core/dist/application.js.map +1 -0
  68. package/node_modules/@appport/core/dist/artifact.d.ts +395 -0
  69. package/node_modules/@appport/core/dist/artifact.d.ts.map +1 -0
  70. package/node_modules/@appport/core/dist/artifact.js +392 -0
  71. package/node_modules/@appport/core/dist/artifact.js.map +1 -0
  72. package/node_modules/@appport/core/dist/assembly.d.ts +237 -0
  73. package/node_modules/@appport/core/dist/assembly.d.ts.map +1 -0
  74. package/node_modules/@appport/core/dist/assembly.js +458 -0
  75. package/node_modules/@appport/core/dist/assembly.js.map +1 -0
  76. package/node_modules/@appport/core/dist/authority-attestation.d.ts +34 -0
  77. package/node_modules/@appport/core/dist/authority-attestation.d.ts.map +1 -0
  78. package/node_modules/@appport/core/dist/authority-attestation.js +72 -0
  79. package/node_modules/@appport/core/dist/authority-attestation.js.map +1 -0
  80. package/node_modules/@appport/core/dist/authorization-grant.d.ts +107 -0
  81. package/node_modules/@appport/core/dist/authorization-grant.d.ts.map +1 -0
  82. package/node_modules/@appport/core/dist/authorization-grant.js +131 -0
  83. package/node_modules/@appport/core/dist/authorization-grant.js.map +1 -0
  84. package/node_modules/@appport/core/dist/binding.d.ts +294 -0
  85. package/node_modules/@appport/core/dist/binding.d.ts.map +1 -0
  86. package/node_modules/@appport/core/dist/binding.js +263 -0
  87. package/node_modules/@appport/core/dist/binding.js.map +1 -0
  88. package/node_modules/@appport/core/dist/builtins.d.ts +18 -0
  89. package/node_modules/@appport/core/dist/builtins.d.ts.map +1 -0
  90. package/node_modules/@appport/core/dist/builtins.js +38 -0
  91. package/node_modules/@appport/core/dist/builtins.js.map +1 -0
  92. package/node_modules/@appport/core/dist/capability.d.ts +94 -0
  93. package/node_modules/@appport/core/dist/capability.d.ts.map +1 -0
  94. package/node_modules/@appport/core/dist/capability.js +85 -0
  95. package/node_modules/@appport/core/dist/capability.js.map +1 -0
  96. package/node_modules/@appport/core/dist/concurrency.d.ts +16 -0
  97. package/node_modules/@appport/core/dist/concurrency.d.ts.map +1 -0
  98. package/node_modules/@appport/core/dist/concurrency.js +46 -0
  99. package/node_modules/@appport/core/dist/concurrency.js.map +1 -0
  100. package/node_modules/@appport/core/dist/context.d.ts +59 -0
  101. package/node_modules/@appport/core/dist/context.d.ts.map +1 -0
  102. package/node_modules/@appport/core/dist/context.js +14 -0
  103. package/node_modules/@appport/core/dist/context.js.map +1 -0
  104. package/node_modules/@appport/core/dist/contract-artifact.d.ts +15 -0
  105. package/node_modules/@appport/core/dist/contract-artifact.d.ts.map +1 -0
  106. package/node_modules/@appport/core/dist/contract-artifact.js +152 -0
  107. package/node_modules/@appport/core/dist/contract-artifact.js.map +1 -0
  108. package/node_modules/@appport/core/dist/contract-attestation.d.ts +68 -0
  109. package/node_modules/@appport/core/dist/contract-attestation.d.ts.map +1 -0
  110. package/node_modules/@appport/core/dist/contract-attestation.js +76 -0
  111. package/node_modules/@appport/core/dist/contract-attestation.js.map +1 -0
  112. package/node_modules/@appport/core/dist/crash-injection.d.ts +3 -0
  113. package/node_modules/@appport/core/dist/crash-injection.d.ts.map +1 -0
  114. package/node_modules/@appport/core/dist/crash-injection.js +8 -0
  115. package/node_modules/@appport/core/dist/crash-injection.js.map +1 -0
  116. package/node_modules/@appport/core/dist/events.d.ts +33 -0
  117. package/node_modules/@appport/core/dist/events.d.ts.map +1 -0
  118. package/node_modules/@appport/core/dist/events.js +79 -0
  119. package/node_modules/@appport/core/dist/events.js.map +1 -0
  120. package/node_modules/@appport/core/dist/execution-barrier.d.ts +13 -0
  121. package/node_modules/@appport/core/dist/execution-barrier.d.ts.map +1 -0
  122. package/node_modules/@appport/core/dist/execution-barrier.js +33 -0
  123. package/node_modules/@appport/core/dist/execution-barrier.js.map +1 -0
  124. package/node_modules/@appport/core/dist/execution-ledger.d.ts +81 -0
  125. package/node_modules/@appport/core/dist/execution-ledger.d.ts.map +1 -0
  126. package/node_modules/@appport/core/dist/execution-ledger.js +173 -0
  127. package/node_modules/@appport/core/dist/execution-ledger.js.map +1 -0
  128. package/node_modules/@appport/core/dist/execution.d.ts +387 -0
  129. package/node_modules/@appport/core/dist/execution.d.ts.map +1 -0
  130. package/node_modules/@appport/core/dist/execution.js +165 -0
  131. package/node_modules/@appport/core/dist/execution.js.map +1 -0
  132. package/node_modules/@appport/core/dist/idempotency.d.ts +36 -0
  133. package/node_modules/@appport/core/dist/idempotency.d.ts.map +1 -0
  134. package/node_modules/@appport/core/dist/idempotency.js +36 -0
  135. package/node_modules/@appport/core/dist/idempotency.js.map +1 -0
  136. package/node_modules/@appport/core/dist/implementation.d.ts +110 -0
  137. package/node_modules/@appport/core/dist/implementation.d.ts.map +1 -0
  138. package/node_modules/@appport/core/dist/implementation.js +65 -0
  139. package/node_modules/@appport/core/dist/implementation.js.map +1 -0
  140. package/node_modules/@appport/core/dist/index.d.ts +44 -0
  141. package/node_modules/@appport/core/dist/index.d.ts.map +1 -0
  142. package/node_modules/@appport/core/dist/index.js +44 -0
  143. package/node_modules/@appport/core/dist/index.js.map +1 -0
  144. package/node_modules/@appport/core/dist/invocation.d.ts +253 -0
  145. package/node_modules/@appport/core/dist/invocation.d.ts.map +1 -0
  146. package/node_modules/@appport/core/dist/invocation.js +258 -0
  147. package/node_modules/@appport/core/dist/invocation.js.map +1 -0
  148. package/node_modules/@appport/core/dist/manifest.d.ts +157 -0
  149. package/node_modules/@appport/core/dist/manifest.d.ts.map +1 -0
  150. package/node_modules/@appport/core/dist/manifest.js +255 -0
  151. package/node_modules/@appport/core/dist/manifest.js.map +1 -0
  152. package/node_modules/@appport/core/dist/memory-application-data-store.d.ts +19 -0
  153. package/node_modules/@appport/core/dist/memory-application-data-store.d.ts.map +1 -0
  154. package/node_modules/@appport/core/dist/memory-application-data-store.js +161 -0
  155. package/node_modules/@appport/core/dist/memory-application-data-store.js.map +1 -0
  156. package/node_modules/@appport/core/dist/operations.d.ts +61 -0
  157. package/node_modules/@appport/core/dist/operations.d.ts.map +1 -0
  158. package/node_modules/@appport/core/dist/operations.js +210 -0
  159. package/node_modules/@appport/core/dist/operations.js.map +1 -0
  160. package/node_modules/@appport/core/dist/public.d.ts +19 -0
  161. package/node_modules/@appport/core/dist/public.d.ts.map +1 -0
  162. package/node_modules/@appport/core/dist/public.js +18 -0
  163. package/node_modules/@appport/core/dist/public.js.map +1 -0
  164. package/node_modules/@appport/core/dist/registration.d.ts +165 -0
  165. package/node_modules/@appport/core/dist/registration.d.ts.map +1 -0
  166. package/node_modules/@appport/core/dist/registration.js +253 -0
  167. package/node_modules/@appport/core/dist/registration.js.map +1 -0
  168. package/node_modules/@appport/core/dist/registry.d.ts +29 -0
  169. package/node_modules/@appport/core/dist/registry.d.ts.map +1 -0
  170. package/node_modules/@appport/core/dist/registry.js +148 -0
  171. package/node_modules/@appport/core/dist/registry.js.map +1 -0
  172. package/node_modules/@appport/core/dist/repository-connection.d.ts +100 -0
  173. package/node_modules/@appport/core/dist/repository-connection.d.ts.map +1 -0
  174. package/node_modules/@appport/core/dist/repository-connection.js +57 -0
  175. package/node_modules/@appport/core/dist/repository-connection.js.map +1 -0
  176. package/node_modules/@appport/core/dist/resolver.d.ts +130 -0
  177. package/node_modules/@appport/core/dist/resolver.d.ts.map +1 -0
  178. package/node_modules/@appport/core/dist/resolver.js +252 -0
  179. package/node_modules/@appport/core/dist/resolver.js.map +1 -0
  180. package/node_modules/@appport/core/dist/runtime-manifest.d.ts +68 -0
  181. package/node_modules/@appport/core/dist/runtime-manifest.d.ts.map +1 -0
  182. package/node_modules/@appport/core/dist/runtime-manifest.js +84 -0
  183. package/node_modules/@appport/core/dist/runtime-manifest.js.map +1 -0
  184. package/node_modules/@appport/core/dist/sanitize.d.ts +14 -0
  185. package/node_modules/@appport/core/dist/sanitize.d.ts.map +1 -0
  186. package/node_modules/@appport/core/dist/sanitize.js +49 -0
  187. package/node_modules/@appport/core/dist/sanitize.js.map +1 -0
  188. package/node_modules/@appport/core/dist/server-internal.d.ts +5 -0
  189. package/node_modules/@appport/core/dist/server-internal.d.ts.map +1 -0
  190. package/node_modules/@appport/core/dist/server-internal.js +4 -0
  191. package/node_modules/@appport/core/dist/server-internal.js.map +1 -0
  192. package/node_modules/@appport/core/dist/sessions.d.ts +29 -0
  193. package/node_modules/@appport/core/dist/sessions.d.ts.map +1 -0
  194. package/node_modules/@appport/core/dist/sessions.js +39 -0
  195. package/node_modules/@appport/core/dist/sessions.js.map +1 -0
  196. package/node_modules/@appport/core/dist/sha256.d.ts +3 -0
  197. package/node_modules/@appport/core/dist/sha256.d.ts.map +1 -0
  198. package/node_modules/@appport/core/dist/sha256.js +46 -0
  199. package/node_modules/@appport/core/dist/sha256.js.map +1 -0
  200. package/node_modules/@appport/core/dist/source-verification.d.ts +53 -0
  201. package/node_modules/@appport/core/dist/source-verification.d.ts.map +1 -0
  202. package/node_modules/@appport/core/dist/source-verification.js +92 -0
  203. package/node_modules/@appport/core/dist/source-verification.js.map +1 -0
  204. package/node_modules/@appport/core/dist/state-context.d.ts +312 -0
  205. package/node_modules/@appport/core/dist/state-context.d.ts.map +1 -0
  206. package/node_modules/@appport/core/dist/state-context.js +100 -0
  207. package/node_modules/@appport/core/dist/state-context.js.map +1 -0
  208. package/node_modules/@appport/core/dist/state.d.ts +96 -0
  209. package/node_modules/@appport/core/dist/state.d.ts.map +1 -0
  210. package/node_modules/@appport/core/dist/state.js +89 -0
  211. package/node_modules/@appport/core/dist/state.js.map +1 -0
  212. package/node_modules/@appport/core/dist/streams.d.ts +38 -0
  213. package/node_modules/@appport/core/dist/streams.d.ts.map +1 -0
  214. package/node_modules/@appport/core/dist/streams.js +123 -0
  215. package/node_modules/@appport/core/dist/streams.js.map +1 -0
  216. package/node_modules/@appport/core/dist/telemetry.d.ts +42 -0
  217. package/node_modules/@appport/core/dist/telemetry.d.ts.map +1 -0
  218. package/node_modules/@appport/core/dist/telemetry.js +32 -0
  219. package/node_modules/@appport/core/dist/telemetry.js.map +1 -0
  220. package/node_modules/@appport/core/dist/wasm-engine.d.ts +22 -0
  221. package/node_modules/@appport/core/dist/wasm-engine.d.ts.map +1 -0
  222. package/node_modules/@appport/core/dist/wasm-engine.js +367 -0
  223. package/node_modules/@appport/core/dist/wasm-engine.js.map +1 -0
  224. package/node_modules/@appport/core/package.json +58 -0
  225. package/node_modules/@appport/mobile/README.md +10 -0
  226. package/node_modules/@appport/mobile/dist/index.d.ts +66 -0
  227. package/node_modules/@appport/mobile/dist/index.d.ts.map +1 -0
  228. package/node_modules/@appport/mobile/dist/index.js +182 -0
  229. package/node_modules/@appport/mobile/dist/index.js.map +1 -0
  230. package/node_modules/@appport/mobile/package.json +33 -0
  231. package/node_modules/@appport/protocol/README.md +41 -0
  232. package/node_modules/@appport/protocol/dist/blob.d.ts +46 -0
  233. package/node_modules/@appport/protocol/dist/blob.d.ts.map +1 -0
  234. package/node_modules/@appport/protocol/dist/blob.js +23 -0
  235. package/node_modules/@appport/protocol/dist/blob.js.map +1 -0
  236. package/node_modules/@appport/protocol/dist/compatibility.d.ts +25 -0
  237. package/node_modules/@appport/protocol/dist/compatibility.d.ts.map +1 -0
  238. package/node_modules/@appport/protocol/dist/compatibility.js +189 -0
  239. package/node_modules/@appport/protocol/dist/compatibility.js.map +1 -0
  240. package/node_modules/@appport/protocol/dist/envelopes.d.ts +175 -0
  241. package/node_modules/@appport/protocol/dist/envelopes.d.ts.map +1 -0
  242. package/node_modules/@appport/protocol/dist/envelopes.js +97 -0
  243. package/node_modules/@appport/protocol/dist/envelopes.js.map +1 -0
  244. package/node_modules/@appport/protocol/dist/errors.d.ts +74 -0
  245. package/node_modules/@appport/protocol/dist/errors.d.ts.map +1 -0
  246. package/node_modules/@appport/protocol/dist/errors.js +91 -0
  247. package/node_modules/@appport/protocol/dist/errors.js.map +1 -0
  248. package/node_modules/@appport/protocol/dist/ids.d.ts +12 -0
  249. package/node_modules/@appport/protocol/dist/ids.d.ts.map +1 -0
  250. package/node_modules/@appport/protocol/dist/ids.js +50 -0
  251. package/node_modules/@appport/protocol/dist/ids.js.map +1 -0
  252. package/node_modules/@appport/protocol/dist/index.d.ts +20 -0
  253. package/node_modules/@appport/protocol/dist/index.d.ts.map +1 -0
  254. package/node_modules/@appport/protocol/dist/index.js +20 -0
  255. package/node_modules/@appport/protocol/dist/index.js.map +1 -0
  256. package/node_modules/@appport/protocol/dist/jsonschema.d.ts +50 -0
  257. package/node_modules/@appport/protocol/dist/jsonschema.d.ts.map +1 -0
  258. package/node_modules/@appport/protocol/dist/jsonschema.js +6 -0
  259. package/node_modules/@appport/protocol/dist/jsonschema.js.map +1 -0
  260. package/node_modules/@appport/protocol/dist/manifest.d.ts +131 -0
  261. package/node_modules/@appport/protocol/dist/manifest.d.ts.map +1 -0
  262. package/node_modules/@appport/protocol/dist/manifest.js +20 -0
  263. package/node_modules/@appport/protocol/dist/manifest.js.map +1 -0
  264. package/node_modules/@appport/protocol/dist/names.d.ts +26 -0
  265. package/node_modules/@appport/protocol/dist/names.d.ts.map +1 -0
  266. package/node_modules/@appport/protocol/dist/names.js +85 -0
  267. package/node_modules/@appport/protocol/dist/names.js.map +1 -0
  268. package/node_modules/@appport/protocol/dist/operations.d.ts +34 -0
  269. package/node_modules/@appport/protocol/dist/operations.d.ts.map +1 -0
  270. package/node_modules/@appport/protocol/dist/operations.js +9 -0
  271. package/node_modules/@appport/protocol/dist/operations.js.map +1 -0
  272. package/node_modules/@appport/protocol/dist/session.d.ts +27 -0
  273. package/node_modules/@appport/protocol/dist/session.d.ts.map +1 -0
  274. package/node_modules/@appport/protocol/dist/session.js +7 -0
  275. package/node_modules/@appport/protocol/dist/session.js.map +1 -0
  276. package/node_modules/@appport/protocol/dist/validate.d.ts +37 -0
  277. package/node_modules/@appport/protocol/dist/validate.d.ts.map +1 -0
  278. package/node_modules/@appport/protocol/dist/validate.js +321 -0
  279. package/node_modules/@appport/protocol/dist/validate.js.map +1 -0
  280. package/node_modules/@appport/protocol/dist/version.d.ts +27 -0
  281. package/node_modules/@appport/protocol/dist/version.d.ts.map +1 -0
  282. package/node_modules/@appport/protocol/dist/version.js +26 -0
  283. package/node_modules/@appport/protocol/dist/version.js.map +1 -0
  284. package/node_modules/@appport/protocol/package.json +25 -0
  285. package/node_modules/@appport/schema/README.md +32 -0
  286. package/node_modules/@appport/schema/dist/builder.d.ts +85 -0
  287. package/node_modules/@appport/schema/dist/builder.d.ts.map +1 -0
  288. package/node_modules/@appport/schema/dist/builder.js +278 -0
  289. package/node_modules/@appport/schema/dist/builder.js.map +1 -0
  290. package/node_modules/@appport/schema/dist/from-json-schema.d.ts +12 -0
  291. package/node_modules/@appport/schema/dist/from-json-schema.d.ts.map +1 -0
  292. package/node_modules/@appport/schema/dist/from-json-schema.js +186 -0
  293. package/node_modules/@appport/schema/dist/from-json-schema.js.map +1 -0
  294. package/node_modules/@appport/schema/dist/index.d.ts +23 -0
  295. package/node_modules/@appport/schema/dist/index.d.ts.map +1 -0
  296. package/node_modules/@appport/schema/dist/index.js +22 -0
  297. package/node_modules/@appport/schema/dist/index.js.map +1 -0
  298. package/node_modules/@appport/schema/dist/standard.d.ts +46 -0
  299. package/node_modules/@appport/schema/dist/standard.d.ts.map +1 -0
  300. package/node_modules/@appport/schema/dist/standard.js +42 -0
  301. package/node_modules/@appport/schema/dist/standard.js.map +1 -0
  302. package/node_modules/@appport/schema/dist/types.d.ts +40 -0
  303. package/node_modules/@appport/schema/dist/types.d.ts.map +1 -0
  304. package/node_modules/@appport/schema/dist/types.js +19 -0
  305. package/node_modules/@appport/schema/dist/types.js.map +1 -0
  306. package/node_modules/@appport/schema/package.json +28 -0
  307. package/node_modules/@appport/server/README.md +39 -0
  308. package/node_modules/@appport/server/dist/connection.d.ts +45 -0
  309. package/node_modules/@appport/server/dist/connection.d.ts.map +1 -0
  310. package/node_modules/@appport/server/dist/connection.js +217 -0
  311. package/node_modules/@appport/server/dist/connection.js.map +1 -0
  312. package/node_modules/@appport/server/dist/fetch.d.ts +10 -0
  313. package/node_modules/@appport/server/dist/fetch.d.ts.map +1 -0
  314. package/node_modules/@appport/server/dist/fetch.js +50 -0
  315. package/node_modules/@appport/server/dist/fetch.js.map +1 -0
  316. package/node_modules/@appport/server/dist/http.d.ts +80 -0
  317. package/node_modules/@appport/server/dist/http.d.ts.map +1 -0
  318. package/node_modules/@appport/server/dist/http.js +306 -0
  319. package/node_modules/@appport/server/dist/http.js.map +1 -0
  320. package/node_modules/@appport/server/dist/index.d.ts +11 -0
  321. package/node_modules/@appport/server/dist/index.d.ts.map +1 -0
  322. package/node_modules/@appport/server/dist/index.js +11 -0
  323. package/node_modules/@appport/server/dist/index.js.map +1 -0
  324. package/node_modules/@appport/server/dist/node-entry.d.ts +4 -0
  325. package/node_modules/@appport/server/dist/node-entry.d.ts.map +1 -0
  326. package/node_modules/@appport/server/dist/node-entry.js +4 -0
  327. package/node_modules/@appport/server/dist/node-entry.js.map +1 -0
  328. package/node_modules/@appport/server/dist/node.d.ts +45 -0
  329. package/node_modules/@appport/server/dist/node.d.ts.map +1 -0
  330. package/node_modules/@appport/server/dist/node.js +190 -0
  331. package/node_modules/@appport/server/dist/node.js.map +1 -0
  332. package/node_modules/@appport/server/dist/server.d.ts +83 -0
  333. package/node_modules/@appport/server/dist/server.d.ts.map +1 -0
  334. package/node_modules/@appport/server/dist/server.js +114 -0
  335. package/node_modules/@appport/server/dist/server.js.map +1 -0
  336. package/node_modules/@appport/server/dist/websocket.d.ts +25 -0
  337. package/node_modules/@appport/server/dist/websocket.d.ts.map +1 -0
  338. package/node_modules/@appport/server/dist/websocket.js +221 -0
  339. package/node_modules/@appport/server/dist/websocket.js.map +1 -0
  340. package/node_modules/@appport/server/package.json +34 -0
  341. package/node_modules/@appport/transport-electron/README.md +56 -0
  342. package/node_modules/@appport/transport-electron/dist/index.d.ts +11 -0
  343. package/node_modules/@appport/transport-electron/dist/index.d.ts.map +1 -0
  344. package/node_modules/@appport/transport-electron/dist/index.js +11 -0
  345. package/node_modules/@appport/transport-electron/dist/index.js.map +1 -0
  346. package/node_modules/@appport/transport-electron/dist/main.d.ts +31 -0
  347. package/node_modules/@appport/transport-electron/dist/main.d.ts.map +1 -0
  348. package/node_modules/@appport/transport-electron/dist/main.js +61 -0
  349. package/node_modules/@appport/transport-electron/dist/main.js.map +1 -0
  350. package/node_modules/@appport/transport-electron/dist/preload.d.ts +22 -0
  351. package/node_modules/@appport/transport-electron/dist/preload.d.ts.map +1 -0
  352. package/node_modules/@appport/transport-electron/dist/preload.js +29 -0
  353. package/node_modules/@appport/transport-electron/dist/preload.js.map +1 -0
  354. package/node_modules/@appport/transport-electron/dist/renderer.d.ts +16 -0
  355. package/node_modules/@appport/transport-electron/dist/renderer.d.ts.map +1 -0
  356. package/node_modules/@appport/transport-electron/dist/renderer.js +36 -0
  357. package/node_modules/@appport/transport-electron/dist/renderer.js.map +1 -0
  358. package/node_modules/@appport/transport-electron/dist/types.d.ts +49 -0
  359. package/node_modules/@appport/transport-electron/dist/types.d.ts.map +1 -0
  360. package/node_modules/@appport/transport-electron/dist/types.js +5 -0
  361. package/node_modules/@appport/transport-electron/dist/types.js.map +1 -0
  362. package/node_modules/@appport/transport-electron/package.json +46 -0
  363. package/node_modules/@appport/transport-http/README.md +24 -0
  364. package/node_modules/@appport/transport-http/dist/index.d.ts +18 -0
  365. package/node_modules/@appport/transport-http/dist/index.d.ts.map +1 -0
  366. package/node_modules/@appport/transport-http/dist/index.js +223 -0
  367. package/node_modules/@appport/transport-http/dist/index.js.map +1 -0
  368. package/node_modules/@appport/transport-http/package.json +29 -0
  369. package/node_modules/@appport/transport-inprocess/README.md +24 -0
  370. package/node_modules/@appport/transport-inprocess/dist/index.d.ts +16 -0
  371. package/node_modules/@appport/transport-inprocess/dist/index.d.ts.map +1 -0
  372. package/node_modules/@appport/transport-inprocess/dist/index.js +30 -0
  373. package/node_modules/@appport/transport-inprocess/dist/index.js.map +1 -0
  374. package/node_modules/@appport/transport-inprocess/package.json +30 -0
  375. package/node_modules/@appport/transport-tauri/README.md +45 -0
  376. package/node_modules/@appport/transport-tauri/dist/index.d.ts +23 -0
  377. package/node_modules/@appport/transport-tauri/dist/index.d.ts.map +1 -0
  378. package/node_modules/@appport/transport-tauri/dist/index.js +44 -0
  379. package/node_modules/@appport/transport-tauri/dist/index.js.map +1 -0
  380. package/node_modules/@appport/transport-tauri/package.json +29 -0
  381. package/node_modules/@appport/transport-websocket/README.md +22 -0
  382. package/node_modules/@appport/transport-websocket/dist/index.d.ts +26 -0
  383. package/node_modules/@appport/transport-websocket/dist/index.d.ts.map +1 -0
  384. package/node_modules/@appport/transport-websocket/dist/index.js +72 -0
  385. package/node_modules/@appport/transport-websocket/dist/index.js.map +1 -0
  386. package/node_modules/@appport/transport-websocket/package.json +29 -0
  387. package/package.json +79 -0
@@ -0,0 +1,61 @@
1
+ import { type AppEventEnvelope, type AppPortManifest, type AppRequest, type AppResponse, type RequestMetadata } from "@appport/protocol";
2
+ import type { AnyContract, AppContract, CallOptions, CapabilityProxy, TypedStream } from "./contract.js";
3
+ import type { AppTransport, TransportEventFilter, Unsubscribe } from "./transport.js";
4
+ export interface ClientOptions {
5
+ transport: AppTransport;
6
+ /** Client-side deadline sent as `timeoutMs` (§46). */
7
+ defaultTimeoutMs?: number;
8
+ /** Manifest used to resolve capability versions and stream capabilities. */
9
+ manifest?: AppPortManifest;
10
+ /** Explicit capability versions, overriding the manifest. */
11
+ versions?: Record<string, number>;
12
+ /** Capability names that answer with a stream. */
13
+ streamCapabilities?: Iterable<string>;
14
+ /** Metadata attached to every request. Never credentials (§53). */
15
+ metadata?: RequestMetadata;
16
+ /** Trace identifier factory for correlating a call across processes (§54). */
17
+ createTraceId?: () => string;
18
+ }
19
+ /**
20
+ * The transport-independent application client.
21
+ *
22
+ * Application code calls capabilities. It never builds an envelope, never sees
23
+ * the transport, and never branches on the runtime (§2, §33).
24
+ */
25
+ export declare class AppPortClient<C extends AppContract = AnyContract> {
26
+ #private;
27
+ readonly transport: AppTransport;
28
+ constructor(options: ClientOptions);
29
+ get connected(): boolean;
30
+ connect(): Promise<void>;
31
+ close(): Promise<void>;
32
+ /**
33
+ * Loads the manifest through `appport.manifest`, so discovery works the same
34
+ * way over every transport (§39, §40).
35
+ */
36
+ load(): Promise<AppPortManifest>;
37
+ get manifest(): AppPortManifest | undefined;
38
+ /** Resolves the capability version this client will send. */
39
+ versionOf(name: string): number;
40
+ isStreamCapability(name: string): boolean;
41
+ /** Calls a request capability and unwraps the response. */
42
+ call<Output = unknown>(name: string, input: unknown, options?: CallOptions): Promise<Output>;
43
+ /** Sends a pre-built envelope. Escape hatch for tooling; applications use `call`. */
44
+ send(request: AppRequest): Promise<AppResponse>;
45
+ /** Invokes a stream capability (§20). */
46
+ stream<Chunk = unknown>(name: string, input: unknown, options?: CallOptions): TypedStream<Chunk>;
47
+ /** Event subscriptions (§18). */
48
+ readonly events: {
49
+ subscribe: (name: string | TransportEventFilter, handler: (payload: never, event: AppEventEnvelope) => void) => Promise<Unsubscribe>;
50
+ };
51
+ /**
52
+ * Namespaced capability accessor: `client.capabilities.documents.save(input)`.
53
+ * The proxy resolves versions from the manifest and routes stream
54
+ * capabilities to `stream()`.
55
+ */
56
+ get capabilities(): CapabilityProxy<C>;
57
+ }
58
+ /** Turns an error response into a thrown {@link AppPortError} (§14). */
59
+ export declare function unwrap<Output>(response: AppResponse): Output;
60
+ export declare function createClient<C extends AppContract = AnyContract>(options: ClientOptions): AppPortClient<C>;
61
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEzG,OAAO,KAAK,EAAE,YAAY,EAAgB,oBAAoB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEpG,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,YAAY,CAAC;IACxB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;;IAC5D,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;gBASrB,OAAO,EAAE,aAAa;IAUlC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAOtC,IAAI,QAAQ,IAAI,eAAe,GAAG,SAAS,CAE1C;IAWD,6DAA6D;IAC7D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/B,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAoBzC,2DAA2D;IACrD,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAOtG,qFAAqF;IAC/E,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAKrD,yCAAyC;IACzC,MAAM,CAAC,KAAK,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,WAAgB,GAAG,WAAW,CAAC,KAAK,CAAC;IAoCpG,iCAAiC;IACjC,QAAQ,CAAC,MAAM;0BAEL,MAAM,GAAG,oBAAoB,WAC1B,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,KAAK,IAAI,KACzD,OAAO,CAAC,WAAW,CAAC;MAQvB;IAEF;;;;OAIG;IACH,IAAI,YAAY,IAAI,eAAe,CAAC,CAAC,CAAC,CAErC;CAwBF;AA4BD,wEAAwE;AACxE,wBAAgB,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,CAM5D;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAE1G"}
@@ -0,0 +1,214 @@
1
+ import { AppPortError, createRequest, createStreamRequest, isValidName, newRequestId, newTraceId } from "@appport/protocol";
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 "@appport/protocol";
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 "@appport/protocol";
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 "@appport/protocol";
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"}