@sempdev/semp 0.4.3
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.
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/brief/address.d.ts +77 -0
- package/dist/brief/address.d.ts.map +1 -0
- package/dist/brief/address.js +217 -0
- package/dist/brief/address.js.map +1 -0
- package/dist/brief/brief.d.ts +75 -0
- package/dist/brief/brief.d.ts.map +1 -0
- package/dist/brief/brief.js +56 -0
- package/dist/brief/brief.js.map +1 -0
- package/dist/brief/index.d.ts +11 -0
- package/dist/brief/index.d.ts.map +1 -0
- package/dist/brief/index.js +11 -0
- package/dist/brief/index.js.map +1 -0
- package/dist/canonical/index.d.ts +8 -0
- package/dist/canonical/index.d.ts.map +1 -0
- package/dist/canonical/index.js +8 -0
- package/dist/canonical/index.js.map +1 -0
- package/dist/canonical/marshal.d.ts +35 -0
- package/dist/canonical/marshal.d.ts.map +1 -0
- package/dist/canonical/marshal.js +107 -0
- package/dist/canonical/marshal.js.map +1 -0
- package/dist/clockskew/index.d.ts +52 -0
- package/dist/clockskew/index.d.ts.map +1 -0
- package/dist/clockskew/index.js +62 -0
- package/dist/clockskew/index.js.map +1 -0
- package/dist/closure/closure.d.ts +106 -0
- package/dist/closure/closure.d.ts.map +1 -0
- package/dist/closure/closure.js +152 -0
- package/dist/closure/closure.js.map +1 -0
- package/dist/closure/driver.d.ts +103 -0
- package/dist/closure/driver.d.ts.map +1 -0
- package/dist/closure/driver.js +126 -0
- package/dist/closure/driver.js.map +1 -0
- package/dist/closure/index.d.ts +13 -0
- package/dist/closure/index.d.ts.map +1 -0
- package/dist/closure/index.js +13 -0
- package/dist/closure/index.js.map +1 -0
- package/dist/closure/store.d.ts +80 -0
- package/dist/closure/store.d.ts.map +1 -0
- package/dist/closure/store.js +89 -0
- package/dist/closure/store.js.map +1 -0
- package/dist/crypto/aead.d.ts +29 -0
- package/dist/crypto/aead.d.ts.map +1 -0
- package/dist/crypto/aead.js +48 -0
- package/dist/crypto/aead.js.map +1 -0
- package/dist/crypto/argon2.d.ts +20 -0
- package/dist/crypto/argon2.d.ts.map +1 -0
- package/dist/crypto/argon2.js +28 -0
- package/dist/crypto/argon2.js.map +1 -0
- package/dist/crypto/index.d.ts +14 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +14 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/kdf.d.ts +96 -0
- package/dist/crypto/kdf.d.ts.map +1 -0
- package/dist/crypto/kdf.js +122 -0
- package/dist/crypto/kdf.js.map +1 -0
- package/dist/crypto/kem.d.ts +85 -0
- package/dist/crypto/kem.d.ts.map +1 -0
- package/dist/crypto/kem.js +130 -0
- package/dist/crypto/kem.js.map +1 -0
- package/dist/crypto/mac.d.ts +19 -0
- package/dist/crypto/mac.d.ts.map +1 -0
- package/dist/crypto/mac.js +32 -0
- package/dist/crypto/mac.js.map +1 -0
- package/dist/delivery/ack.d.ts +125 -0
- package/dist/delivery/ack.d.ts.map +1 -0
- package/dist/delivery/ack.js +141 -0
- package/dist/delivery/ack.js.map +1 -0
- package/dist/delivery/blocklist.d.ts +87 -0
- package/dist/delivery/blocklist.d.ts.map +1 -0
- package/dist/delivery/blocklist.js +107 -0
- package/dist/delivery/blocklist.js.map +1 -0
- package/dist/delivery/cancel.d.ts +60 -0
- package/dist/delivery/cancel.d.ts.map +1 -0
- package/dist/delivery/cancel.js +43 -0
- package/dist/delivery/cancel.js.map +1 -0
- package/dist/delivery/disposition.d.ts +106 -0
- package/dist/delivery/disposition.d.ts.map +1 -0
- package/dist/delivery/disposition.js +105 -0
- package/dist/delivery/disposition.js.map +1 -0
- package/dist/delivery/fetch.d.ts +59 -0
- package/dist/delivery/fetch.d.ts.map +1 -0
- package/dist/delivery/fetch.js +47 -0
- package/dist/delivery/fetch.js.map +1 -0
- package/dist/delivery/forwarder.d.ts +106 -0
- package/dist/delivery/forwarder.d.ts.map +1 -0
- package/dist/delivery/forwarder.js +251 -0
- package/dist/delivery/forwarder.js.map +1 -0
- package/dist/delivery/inbox.d.ts +42 -0
- package/dist/delivery/inbox.d.ts.map +1 -0
- package/dist/delivery/inbox.js +68 -0
- package/dist/delivery/inbox.js.map +1 -0
- package/dist/delivery/index.d.ts +31 -0
- package/dist/delivery/index.d.ts.map +1 -0
- package/dist/delivery/index.js +31 -0
- package/dist/delivery/index.js.map +1 -0
- package/dist/delivery/internalroute.d.ts +50 -0
- package/dist/delivery/internalroute.d.ts.map +1 -0
- package/dist/delivery/internalroute.js +23 -0
- package/dist/delivery/internalroute.js.map +1 -0
- package/dist/delivery/pipeline.d.ts +153 -0
- package/dist/delivery/pipeline.d.ts.map +1 -0
- package/dist/delivery/pipeline.js +356 -0
- package/dist/delivery/pipeline.js.map +1 -0
- package/dist/delivery/policy_state.d.ts +105 -0
- package/dist/delivery/policy_state.d.ts.map +1 -0
- package/dist/delivery/policy_state.js +293 -0
- package/dist/delivery/policy_state.js.map +1 -0
- package/dist/delivery/queue.d.ts +47 -0
- package/dist/delivery/queue.d.ts.map +1 -0
- package/dist/delivery/queue.js +33 -0
- package/dist/delivery/queue.js.map +1 -0
- package/dist/delivery/receipt.d.ts +137 -0
- package/dist/delivery/receipt.d.ts.map +1 -0
- package/dist/delivery/receipt.js +181 -0
- package/dist/delivery/receipt.js.map +1 -0
- package/dist/delivery/receipt_store.d.ts +81 -0
- package/dist/delivery/receipt_store.d.ts.map +1 -0
- package/dist/delivery/receipt_store.js +74 -0
- package/dist/delivery/receipt_store.js.map +1 -0
- package/dist/delivery/retry.d.ts +78 -0
- package/dist/delivery/retry.d.ts.map +1 -0
- package/dist/delivery/retry.js +132 -0
- package/dist/delivery/retry.js.map +1 -0
- package/dist/delivery/scheduler.d.ts +156 -0
- package/dist/delivery/scheduler.d.ts.map +1 -0
- package/dist/delivery/scheduler.js +349 -0
- package/dist/delivery/scheduler.js.map +1 -0
- package/dist/delivery/stage_partition.d.ts +87 -0
- package/dist/delivery/stage_partition.d.ts.map +1 -0
- package/dist/delivery/stage_partition.js +122 -0
- package/dist/delivery/stage_partition.js.map +1 -0
- package/dist/delivery/staged_runner.d.ts +100 -0
- package/dist/delivery/staged_runner.d.ts.map +1 -0
- package/dist/delivery/staged_runner.js +277 -0
- package/dist/delivery/staged_runner.js.map +1 -0
- package/dist/delivery/submission.d.ts +72 -0
- package/dist/delivery/submission.d.ts.map +1 -0
- package/dist/delivery/submission.js +58 -0
- package/dist/delivery/submission.js.map +1 -0
- package/dist/delivery/sync.d.ts +68 -0
- package/dist/delivery/sync.d.ts.map +1 -0
- package/dist/delivery/sync.js +99 -0
- package/dist/delivery/sync.js.map +1 -0
- package/dist/delivery/user_policy.d.ts +74 -0
- package/dist/delivery/user_policy.d.ts.map +1 -0
- package/dist/delivery/user_policy.js +140 -0
- package/dist/delivery/user_policy.js.map +1 -0
- package/dist/discovery/cache.d.ts +37 -0
- package/dist/discovery/cache.d.ts.map +1 -0
- package/dist/discovery/cache.js +45 -0
- package/dist/discovery/cache.js.map +1 -0
- package/dist/discovery/configuration.d.ts +97 -0
- package/dist/discovery/configuration.d.ts.map +1 -0
- package/dist/discovery/configuration.js +146 -0
- package/dist/discovery/configuration.js.map +1 -0
- package/dist/discovery/dns.d.ts +56 -0
- package/dist/discovery/dns.d.ts.map +1 -0
- package/dist/discovery/dns.js +120 -0
- package/dist/discovery/dns.js.map +1 -0
- package/dist/discovery/domain_keys.d.ts +62 -0
- package/dist/discovery/domain_keys.d.ts.map +1 -0
- package/dist/discovery/domain_keys.js +89 -0
- package/dist/discovery/domain_keys.js.map +1 -0
- package/dist/discovery/index.d.ts +19 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +19 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/lookup.d.ts +72 -0
- package/dist/discovery/lookup.d.ts.map +1 -0
- package/dist/discovery/lookup.js +121 -0
- package/dist/discovery/lookup.js.map +1 -0
- package/dist/discovery/onion.d.ts +34 -0
- package/dist/discovery/onion.d.ts.map +1 -0
- package/dist/discovery/onion.js +61 -0
- package/dist/discovery/onion.js.map +1 -0
- package/dist/discovery/partition.d.ts +96 -0
- package/dist/discovery/partition.d.ts.map +1 -0
- package/dist/discovery/partition.js +247 -0
- package/dist/discovery/partition.js.map +1 -0
- package/dist/discovery/resolver.d.ts +113 -0
- package/dist/discovery/resolver.d.ts.map +1 -0
- package/dist/discovery/resolver.js +176 -0
- package/dist/discovery/resolver.js.map +1 -0
- package/dist/discovery/txt.d.ts +39 -0
- package/dist/discovery/txt.d.ts.map +1 -0
- package/dist/discovery/txt.js +71 -0
- package/dist/discovery/txt.js.map +1 -0
- package/dist/enclosure/forwarding.d.ts +128 -0
- package/dist/enclosure/forwarding.d.ts.map +1 -0
- package/dist/enclosure/forwarding.js +119 -0
- package/dist/enclosure/forwarding.js.map +1 -0
- package/dist/enclosure/index.d.ts +11 -0
- package/dist/enclosure/index.d.ts.map +1 -0
- package/dist/enclosure/index.js +11 -0
- package/dist/enclosure/index.js.map +1 -0
- package/dist/envelope/buckets.d.ts +38 -0
- package/dist/envelope/buckets.d.ts.map +1 -0
- package/dist/envelope/buckets.js +73 -0
- package/dist/envelope/buckets.js.map +1 -0
- package/dist/envelope/canonical.d.ts +28 -0
- package/dist/envelope/canonical.d.ts.map +1 -0
- package/dist/envelope/canonical.js +54 -0
- package/dist/envelope/canonical.js.map +1 -0
- package/dist/envelope/compose.d.ts +171 -0
- package/dist/envelope/compose.d.ts.map +1 -0
- package/dist/envelope/compose.js +237 -0
- package/dist/envelope/compose.js.map +1 -0
- package/dist/envelope/encode.d.ts +41 -0
- package/dist/envelope/encode.d.ts.map +1 -0
- package/dist/envelope/encode.js +69 -0
- package/dist/envelope/encode.js.map +1 -0
- package/dist/envelope/index.d.ts +20 -0
- package/dist/envelope/index.d.ts.map +1 -0
- package/dist/envelope/index.js +20 -0
- package/dist/envelope/index.js.map +1 -0
- package/dist/envelope/open_any.d.ts +48 -0
- package/dist/envelope/open_any.d.ts.map +1 -0
- package/dist/envelope/open_any.js +81 -0
- package/dist/envelope/open_any.js.map +1 -0
- package/dist/envelope/open_verified.d.ts +59 -0
- package/dist/envelope/open_verified.d.ts.map +1 -0
- package/dist/envelope/open_verified.js +67 -0
- package/dist/envelope/open_verified.js.map +1 -0
- package/dist/envelope/padding.d.ts +55 -0
- package/dist/envelope/padding.d.ts.map +1 -0
- package/dist/envelope/padding.js +162 -0
- package/dist/envelope/padding.js.map +1 -0
- package/dist/envelope/rejection.d.ts +22 -0
- package/dist/envelope/rejection.d.ts.map +1 -0
- package/dist/envelope/rejection.js +30 -0
- package/dist/envelope/rejection.js.map +1 -0
- package/dist/envelope/sendtime.d.ts +49 -0
- package/dist/envelope/sendtime.d.ts.map +1 -0
- package/dist/envelope/sendtime.js +87 -0
- package/dist/envelope/sendtime.js.map +1 -0
- package/dist/envelope/verify.d.ts +29 -0
- package/dist/envelope/verify.d.ts.map +1 -0
- package/dist/envelope/verify.js +90 -0
- package/dist/envelope/verify.js.map +1 -0
- package/dist/extensions/index.d.ts +7 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +7 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/limits.d.ts +101 -0
- package/dist/extensions/limits.d.ts.map +1 -0
- package/dist/extensions/limits.js +175 -0
- package/dist/extensions/limits.js.map +1 -0
- package/dist/handshake/abort.d.ts +49 -0
- package/dist/handshake/abort.d.ts.map +1 -0
- package/dist/handshake/abort.js +82 -0
- package/dist/handshake/abort.js.map +1 -0
- package/dist/handshake/capabilities.d.ts +46 -0
- package/dist/handshake/capabilities.d.ts.map +1 -0
- package/dist/handshake/capabilities.js +114 -0
- package/dist/handshake/capabilities.js.map +1 -0
- package/dist/handshake/client_state.d.ts +186 -0
- package/dist/handshake/client_state.d.ts.map +1 -0
- package/dist/handshake/client_state.js +520 -0
- package/dist/handshake/client_state.js.map +1 -0
- package/dist/handshake/confirm.d.ts +21 -0
- package/dist/handshake/confirm.d.ts.map +1 -0
- package/dist/handshake/confirm.js +27 -0
- package/dist/handshake/confirm.js.map +1 -0
- package/dist/handshake/driver.d.ts +126 -0
- package/dist/handshake/driver.d.ts.map +1 -0
- package/dist/handshake/driver.js +251 -0
- package/dist/handshake/driver.js.map +1 -0
- package/dist/handshake/federation.d.ts +365 -0
- package/dist/handshake/federation.d.ts.map +1 -0
- package/dist/handshake/federation.js +664 -0
- package/dist/handshake/federation.js.map +1 -0
- package/dist/handshake/first_contact.d.ts +57 -0
- package/dist/handshake/first_contact.d.ts.map +1 -0
- package/dist/handshake/first_contact.js +124 -0
- package/dist/handshake/first_contact.js.map +1 -0
- package/dist/handshake/identity.d.ts +101 -0
- package/dist/handshake/identity.d.ts.map +1 -0
- package/dist/handshake/identity.js +117 -0
- package/dist/handshake/identity.js.map +1 -0
- package/dist/handshake/index.d.ts +21 -0
- package/dist/handshake/index.d.ts.map +1 -0
- package/dist/handshake/index.js +21 -0
- package/dist/handshake/index.js.map +1 -0
- package/dist/handshake/messages.d.ts +176 -0
- package/dist/handshake/messages.d.ts.map +1 -0
- package/dist/handshake/messages.js +125 -0
- package/dist/handshake/messages.js.map +1 -0
- package/dist/handshake/pow.d.ts +53 -0
- package/dist/handshake/pow.d.ts.map +1 -0
- package/dist/handshake/pow.js +142 -0
- package/dist/handshake/pow.js.map +1 -0
- package/dist/handshake/resume_driver.d.ts +56 -0
- package/dist/handshake/resume_driver.d.ts.map +1 -0
- package/dist/handshake/resume_driver.js +75 -0
- package/dist/handshake/resume_driver.js.map +1 -0
- package/dist/handshake/server.d.ts +112 -0
- package/dist/handshake/server.d.ts.map +1 -0
- package/dist/handshake/server.js +247 -0
- package/dist/handshake/server.js.map +1 -0
- package/dist/handshake/server_state.d.ts +102 -0
- package/dist/handshake/server_state.d.ts.map +1 -0
- package/dist/handshake/server_state.js +278 -0
- package/dist/handshake/server_state.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/keys/compromise.d.ts +118 -0
- package/dist/keys/compromise.d.ts.map +1 -0
- package/dist/keys/compromise.js +218 -0
- package/dist/keys/compromise.js.map +1 -0
- package/dist/keys/device_certificate.d.ts +166 -0
- package/dist/keys/device_certificate.d.ts.map +1 -0
- package/dist/keys/device_certificate.js +328 -0
- package/dist/keys/device_certificate.js.map +1 -0
- package/dist/keys/device_records.d.ts +175 -0
- package/dist/keys/device_records.d.ts.map +1 -0
- package/dist/keys/device_records.js +418 -0
- package/dist/keys/device_records.js.map +1 -0
- package/dist/keys/directory_cache.d.ts +64 -0
- package/dist/keys/directory_cache.d.ts.map +1 -0
- package/dist/keys/directory_cache.js +98 -0
- package/dist/keys/directory_cache.js.map +1 -0
- package/dist/keys/directory_state.d.ts +79 -0
- package/dist/keys/directory_state.d.ts.map +1 -0
- package/dist/keys/directory_state.js +155 -0
- package/dist/keys/directory_state.js.map +1 -0
- package/dist/keys/index.d.ts +18 -0
- package/dist/keys/index.d.ts.map +1 -0
- package/dist/keys/index.js +18 -0
- package/dist/keys/index.js.map +1 -0
- package/dist/keys/key_revocation.d.ts +61 -0
- package/dist/keys/key_revocation.d.ts.map +1 -0
- package/dist/keys/key_revocation.js +88 -0
- package/dist/keys/key_revocation.js.map +1 -0
- package/dist/keys/request.d.ts +124 -0
- package/dist/keys/request.d.ts.map +1 -0
- package/dist/keys/request.js +130 -0
- package/dist/keys/request.js.map +1 -0
- package/dist/keys/sign.d.ts +49 -0
- package/dist/keys/sign.d.ts.map +1 -0
- package/dist/keys/sign.js +80 -0
- package/dist/keys/sign.js.map +1 -0
- package/dist/keys/signed.d.ts +80 -0
- package/dist/keys/signed.d.ts.map +1 -0
- package/dist/keys/signed.js +138 -0
- package/dist/keys/signed.js.map +1 -0
- package/dist/keys/store.d.ts +138 -0
- package/dist/keys/store.d.ts.map +1 -0
- package/dist/keys/store.js +107 -0
- package/dist/keys/store.js.map +1 -0
- package/dist/largeattachment/crypto.d.ts +47 -0
- package/dist/largeattachment/crypto.d.ts.map +1 -0
- package/dist/largeattachment/crypto.js +235 -0
- package/dist/largeattachment/crypto.js.map +1 -0
- package/dist/largeattachment/enclosure.d.ts +48 -0
- package/dist/largeattachment/enclosure.d.ts.map +1 -0
- package/dist/largeattachment/enclosure.js +102 -0
- package/dist/largeattachment/enclosure.js.map +1 -0
- package/dist/largeattachment/index.d.ts +15 -0
- package/dist/largeattachment/index.d.ts.map +1 -0
- package/dist/largeattachment/index.js +15 -0
- package/dist/largeattachment/index.js.map +1 -0
- package/dist/largeattachment/store.d.ts +36 -0
- package/dist/largeattachment/store.d.ts.map +1 -0
- package/dist/largeattachment/store.js +37 -0
- package/dist/largeattachment/store.js.map +1 -0
- package/dist/largeattachment/types.d.ts +56 -0
- package/dist/largeattachment/types.d.ts.map +1 -0
- package/dist/largeattachment/types.js +31 -0
- package/dist/largeattachment/types.js.map +1 -0
- package/dist/largeattachment/upload.d.ts +62 -0
- package/dist/largeattachment/upload.d.ts.map +1 -0
- package/dist/largeattachment/upload.js +166 -0
- package/dist/largeattachment/upload.js.map +1 -0
- package/dist/migration/index.d.ts +17 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +17 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/lockout.d.ts +48 -0
- package/dist/migration/lockout.d.ts.map +1 -0
- package/dist/migration/lockout.js +57 -0
- package/dist/migration/lockout.js.map +1 -0
- package/dist/migration/migration.d.ts +48 -0
- package/dist/migration/migration.d.ts.map +1 -0
- package/dist/migration/migration.js +58 -0
- package/dist/migration/migration.js.map +1 -0
- package/dist/migration/notice.d.ts +33 -0
- package/dist/migration/notice.d.ts.map +1 -0
- package/dist/migration/notice.js +85 -0
- package/dist/migration/notice.js.map +1 -0
- package/dist/migration/orchestrate.d.ts +109 -0
- package/dist/migration/orchestrate.d.ts.map +1 -0
- package/dist/migration/orchestrate.js +212 -0
- package/dist/migration/orchestrate.js.map +1 -0
- package/dist/migration/publication_store.d.ts +34 -0
- package/dist/migration/publication_store.d.ts.map +1 -0
- package/dist/migration/publication_store.js +44 -0
- package/dist/migration/publication_store.js.map +1 -0
- package/dist/migration/sign.d.ts +65 -0
- package/dist/migration/sign.d.ts.map +1 -0
- package/dist/migration/sign.js +331 -0
- package/dist/migration/sign.js.map +1 -0
- package/dist/migration/types.d.ts +92 -0
- package/dist/migration/types.d.ts.map +1 -0
- package/dist/migration/types.js +26 -0
- package/dist/migration/types.js.map +1 -0
- package/dist/reasoncodes.d.ts +42 -0
- package/dist/reasoncodes.d.ts.map +1 -0
- package/dist/reasoncodes.js +80 -0
- package/dist/reasoncodes.js.map +1 -0
- package/dist/recovery/bundle.d.ts +34 -0
- package/dist/recovery/bundle.d.ts.map +1 -0
- package/dist/recovery/bundle.js +144 -0
- package/dist/recovery/bundle.js.map +1 -0
- package/dist/recovery/bundle_crypto.d.ts +60 -0
- package/dist/recovery/bundle_crypto.d.ts.map +1 -0
- package/dist/recovery/bundle_crypto.js +179 -0
- package/dist/recovery/bundle_crypto.js.map +1 -0
- package/dist/recovery/bundle_store.d.ts +57 -0
- package/dist/recovery/bundle_store.d.ts.map +1 -0
- package/dist/recovery/bundle_store.js +104 -0
- package/dist/recovery/bundle_store.js.map +1 -0
- package/dist/recovery/index.d.ts +19 -0
- package/dist/recovery/index.d.ts.map +1 -0
- package/dist/recovery/index.js +19 -0
- package/dist/recovery/index.js.map +1 -0
- package/dist/recovery/manifest_crosscheck.d.ts +59 -0
- package/dist/recovery/manifest_crosscheck.d.ts.map +1 -0
- package/dist/recovery/manifest_crosscheck.js +59 -0
- package/dist/recovery/manifest_crosscheck.js.map +1 -0
- package/dist/recovery/shamir.d.ts +51 -0
- package/dist/recovery/shamir.d.ts.map +1 -0
- package/dist/recovery/shamir.js +181 -0
- package/dist/recovery/shamir.js.map +1 -0
- package/dist/recovery/sign.d.ts +61 -0
- package/dist/recovery/sign.d.ts.map +1 -0
- package/dist/recovery/sign.js +359 -0
- package/dist/recovery/sign.js.map +1 -0
- package/dist/recovery/types.d.ts +180 -0
- package/dist/recovery/types.d.ts.map +1 -0
- package/dist/recovery/types.js +31 -0
- package/dist/recovery/types.js.map +1 -0
- package/dist/reputation/abuse_report.d.ts +62 -0
- package/dist/reputation/abuse_report.d.ts.map +1 -0
- package/dist/reputation/abuse_report.js +111 -0
- package/dist/reputation/abuse_report.js.map +1 -0
- package/dist/reputation/bucketize.d.ts +31 -0
- package/dist/reputation/bucketize.d.ts.map +1 -0
- package/dist/reputation/bucketize.js +77 -0
- package/dist/reputation/bucketize.js.map +1 -0
- package/dist/reputation/gossip.d.ts +24 -0
- package/dist/reputation/gossip.d.ts.map +1 -0
- package/dist/reputation/gossip.js +64 -0
- package/dist/reputation/gossip.js.map +1 -0
- package/dist/reputation/gossip_fetch.d.ts +64 -0
- package/dist/reputation/gossip_fetch.d.ts.map +1 -0
- package/dist/reputation/gossip_fetch.js +114 -0
- package/dist/reputation/gossip_fetch.js.map +1 -0
- package/dist/reputation/index.d.ts +20 -0
- package/dist/reputation/index.d.ts.map +1 -0
- package/dist/reputation/index.js +20 -0
- package/dist/reputation/index.js.map +1 -0
- package/dist/reputation/observation_store.d.ts +67 -0
- package/dist/reputation/observation_store.d.ts.map +1 -0
- package/dist/reputation/observation_store.js +171 -0
- package/dist/reputation/observation_store.js.map +1 -0
- package/dist/reputation/pow.d.ts +91 -0
- package/dist/reputation/pow.d.ts.map +1 -0
- package/dist/reputation/pow.js +209 -0
- package/dist/reputation/pow.js.map +1 -0
- package/dist/reputation/sign.d.ts +40 -0
- package/dist/reputation/sign.d.ts.map +1 -0
- package/dist/reputation/sign.js +202 -0
- package/dist/reputation/sign.js.map +1 -0
- package/dist/reputation/types.d.ts +133 -0
- package/dist/reputation/types.d.ts.map +1 -0
- package/dist/reputation/types.js +33 -0
- package/dist/reputation/types.js.map +1 -0
- package/dist/reputation/whois.d.ts +25 -0
- package/dist/reputation/whois.d.ts.map +1 -0
- package/dist/reputation/whois.js +20 -0
- package/dist/reputation/whois.js.map +1 -0
- package/dist/seal/index.d.ts +8 -0
- package/dist/seal/index.d.ts.map +1 -0
- package/dist/seal/index.js +8 -0
- package/dist/seal/index.js.map +1 -0
- package/dist/seal/wrap.d.ts +74 -0
- package/dist/seal/wrap.d.ts.map +1 -0
- package/dist/seal/wrap.js +213 -0
- package/dist/seal/wrap.js.map +1 -0
- package/dist/session/dispatcher.d.ts +65 -0
- package/dist/session/dispatcher.d.ts.map +1 -0
- package/dist/session/dispatcher.js +96 -0
- package/dist/session/dispatcher.js.map +1 -0
- package/dist/session/index.d.ts +15 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +15 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/rekey.d.ts +108 -0
- package/dist/session/rekey.d.ts.map +1 -0
- package/dist/session/rekey.js +207 -0
- package/dist/session/rekey.js.map +1 -0
- package/dist/session/rekey_seal.d.ts +66 -0
- package/dist/session/rekey_seal.d.ts.map +1 -0
- package/dist/session/rekey_seal.js +153 -0
- package/dist/session/rekey_seal.js.map +1 -0
- package/dist/session/resume.d.ts +125 -0
- package/dist/session/resume.d.ts.map +1 -0
- package/dist/session/resume.js +263 -0
- package/dist/session/resume.js.map +1 -0
- package/dist/session/session.d.ts +136 -0
- package/dist/session/session.d.ts.map +1 -0
- package/dist/session/session.js +188 -0
- package/dist/session/session.js.map +1 -0
- package/dist/transparency/index.d.ts +13 -0
- package/dist/transparency/index.d.ts.map +1 -0
- package/dist/transparency/index.js +13 -0
- package/dist/transparency/index.js.map +1 -0
- package/dist/transparency/log.d.ts +61 -0
- package/dist/transparency/log.d.ts.map +1 -0
- package/dist/transparency/log.js +133 -0
- package/dist/transparency/log.js.map +1 -0
- package/dist/transparency/merkle.d.ts +59 -0
- package/dist/transparency/merkle.d.ts.map +1 -0
- package/dist/transparency/merkle.js +314 -0
- package/dist/transparency/merkle.js.map +1 -0
- package/dist/transparency/sign.d.ts +48 -0
- package/dist/transparency/sign.d.ts.map +1 -0
- package/dist/transparency/sign.js +140 -0
- package/dist/transparency/sign.js.map +1 -0
- package/dist/transparency/types.d.ts +97 -0
- package/dist/transparency/types.d.ts.map +1 -0
- package/dist/transparency/types.js +25 -0
- package/dist/transparency/types.js.map +1 -0
- package/dist/transport/h2.d.ts +163 -0
- package/dist/transport/h2.d.ts.map +1 -0
- package/dist/transport/h2.js +397 -0
- package/dist/transport/h2.js.map +1 -0
- package/dist/transport/index.d.ts +15 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +15 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/memory.d.ts +21 -0
- package/dist/transport/memory.d.ts.map +1 -0
- package/dist/transport/memory.js +112 -0
- package/dist/transport/memory.js.map +1 -0
- package/dist/transport/transport.d.ts +54 -0
- package/dist/transport/transport.d.ts.map +1 -0
- package/dist/transport/transport.js +20 -0
- package/dist/transport/transport.js.map +1 -0
- package/dist/transport/ws.d.ts +40 -0
- package/dist/transport/ws.d.ts.map +1 -0
- package/dist/transport/ws.js +204 -0
- package/dist/transport/ws.js.map +1 -0
- package/package.json +147 -0
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP/2 transport binding per TRANSPORT.md §4.2.
|
|
3
|
+
*
|
|
4
|
+
* Unlike WebSocket — which gives us a single bidirectional pipe —
|
|
5
|
+
* the SEMP HTTP/2 binding is a collection of HTTP endpoints with
|
|
6
|
+
* path-based routing:
|
|
7
|
+
*
|
|
8
|
+
* - `POST /v1/discovery` — discovery lookup
|
|
9
|
+
* - `POST /v1/keys` — key request
|
|
10
|
+
* - `POST /v1/handshake` — handshake step
|
|
11
|
+
* - `POST /v1/envelope` — envelope submit
|
|
12
|
+
* - `POST /v1/session/{id}` — long-lived bidirectional session
|
|
13
|
+
* stream (server pushes via SSE,
|
|
14
|
+
* client posts additional messages
|
|
15
|
+
* to the same URL)
|
|
16
|
+
*
|
|
17
|
+
* This module exposes:
|
|
18
|
+
*
|
|
19
|
+
* - {@link h2Post}: a typed JSON POST helper for the four
|
|
20
|
+
* request/response endpoints. Surfaces the `Semp-Session-Id`
|
|
21
|
+
* response header to the caller.
|
|
22
|
+
* - {@link dialH2Session}: opens a long-lived POST to
|
|
23
|
+
* `/v1/session/{id}` and returns a {@link Transport} whose
|
|
24
|
+
* `receive()` reads SSE events from the open stream and `send()`
|
|
25
|
+
* POSTs additional messages to the same URL.
|
|
26
|
+
* - {@link encodeSSE} / {@link decodeSSE}: encode/decode helpers
|
|
27
|
+
* for callers that want to roll their own.
|
|
28
|
+
*
|
|
29
|
+
* @module
|
|
30
|
+
*/
|
|
31
|
+
/** Header name the server sets on its response to handshake init. */
|
|
32
|
+
export const SempSessionIdHeader = "Semp-Session-Id";
|
|
33
|
+
/**
|
|
34
|
+
* POST a SEMP message to one of the request/response endpoints
|
|
35
|
+
* (`/v1/handshake`, `/v1/keys`, `/v1/envelope`, `/v1/discovery`).
|
|
36
|
+
* Resolves with the response body and the `Semp-Session-Id` header.
|
|
37
|
+
*
|
|
38
|
+
* Translates HTTP status codes per §4.2.2:
|
|
39
|
+
* - 2xx: resolves successfully.
|
|
40
|
+
* - 400, 413, 429, 503: rejects with a structured error.
|
|
41
|
+
* - other non-2xx: rejects with the status as the message.
|
|
42
|
+
*/
|
|
43
|
+
export async function h2Post(url, message, opts = {}) {
|
|
44
|
+
if (url === "") {
|
|
45
|
+
throw new Error("h2: empty url");
|
|
46
|
+
}
|
|
47
|
+
const fetchImpl = opts.fetchImpl ?? defaultFetch();
|
|
48
|
+
const headers = {
|
|
49
|
+
"Content-Type": "application/json; charset=utf-8",
|
|
50
|
+
Accept: "application/json",
|
|
51
|
+
...(opts.headers ?? {}),
|
|
52
|
+
};
|
|
53
|
+
if (opts.sessionId !== undefined && opts.sessionId !== "") {
|
|
54
|
+
headers[SempSessionIdHeader] = opts.sessionId;
|
|
55
|
+
}
|
|
56
|
+
const { signal, cleanup } = composeSignal(opts.signal, opts.timeoutMs);
|
|
57
|
+
let resp;
|
|
58
|
+
try {
|
|
59
|
+
resp = await fetchImpl(url, {
|
|
60
|
+
method: "POST",
|
|
61
|
+
headers,
|
|
62
|
+
body: message,
|
|
63
|
+
signal,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
cleanup();
|
|
68
|
+
}
|
|
69
|
+
if (!resp.ok) {
|
|
70
|
+
const reason = httpReason(resp.status);
|
|
71
|
+
throw new Error(`h2: POST ${url} ${reason} (${resp.status})`);
|
|
72
|
+
}
|
|
73
|
+
const buf = await resp.arrayBuffer();
|
|
74
|
+
return {
|
|
75
|
+
body: new Uint8Array(buf),
|
|
76
|
+
status: resp.status,
|
|
77
|
+
sessionId: resp.headers.get(SempSessionIdHeader),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function httpReason(status) {
|
|
81
|
+
switch (status) {
|
|
82
|
+
case 400:
|
|
83
|
+
return "malformed SEMP message";
|
|
84
|
+
case 413:
|
|
85
|
+
return "payload exceeds max_envelope_size";
|
|
86
|
+
case 429:
|
|
87
|
+
return "transport-level rate limit";
|
|
88
|
+
case 503:
|
|
89
|
+
return "server temporarily unavailable";
|
|
90
|
+
default:
|
|
91
|
+
return `HTTP ${status}`;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Open a long-lived POST to the session URL and return a
|
|
96
|
+
* {@link Transport} whose `receive()` reads SSE events from that
|
|
97
|
+
* response and `send()` POSTs additional messages to the same URL.
|
|
98
|
+
*
|
|
99
|
+
* Per TRANSPORT.md §4.2.4: each `data:` line in the response carries
|
|
100
|
+
* a complete SEMP JSON message; blank lines delimit events.
|
|
101
|
+
*/
|
|
102
|
+
export async function dialH2Session(opts) {
|
|
103
|
+
if (opts.sessionUrl === "") {
|
|
104
|
+
throw new Error("h2: empty sessionUrl");
|
|
105
|
+
}
|
|
106
|
+
const fetchImpl = opts.fetchImpl ?? defaultFetch();
|
|
107
|
+
const sendController = new AbortController();
|
|
108
|
+
const composed = composeSignal(opts.signal, opts.timeoutMs);
|
|
109
|
+
const headers = {
|
|
110
|
+
"Content-Type": "application/json; charset=utf-8",
|
|
111
|
+
Accept: "text/event-stream",
|
|
112
|
+
};
|
|
113
|
+
let resp;
|
|
114
|
+
try {
|
|
115
|
+
resp = await fetchImpl(opts.sessionUrl, {
|
|
116
|
+
method: "POST",
|
|
117
|
+
headers,
|
|
118
|
+
body: opts.initialBody,
|
|
119
|
+
signal: composed.signal,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
composed.cleanup();
|
|
124
|
+
throw err;
|
|
125
|
+
}
|
|
126
|
+
composed.cleanup();
|
|
127
|
+
if (!resp.ok) {
|
|
128
|
+
throw new Error(`h2: session POST ${opts.sessionUrl} ${httpReason(resp.status)} (${resp.status})`);
|
|
129
|
+
}
|
|
130
|
+
if (resp.body === null || resp.body === undefined) {
|
|
131
|
+
throw new Error("h2: session response has no body");
|
|
132
|
+
}
|
|
133
|
+
const eventReader = createEventReader(resp.body);
|
|
134
|
+
let closed = false;
|
|
135
|
+
const url = opts.sessionUrl;
|
|
136
|
+
const transport = {
|
|
137
|
+
async send(message) {
|
|
138
|
+
if (closed) {
|
|
139
|
+
throw new Error("h2: session transport closed");
|
|
140
|
+
}
|
|
141
|
+
const r = await fetchImpl(url, {
|
|
142
|
+
method: "POST",
|
|
143
|
+
headers: {
|
|
144
|
+
"Content-Type": "application/json; charset=utf-8",
|
|
145
|
+
Accept: "application/json",
|
|
146
|
+
},
|
|
147
|
+
body: message,
|
|
148
|
+
signal: sendController.signal,
|
|
149
|
+
});
|
|
150
|
+
if (!r.ok) {
|
|
151
|
+
throw new Error(`h2: session send ${httpReason(r.status)} (${r.status})`);
|
|
152
|
+
}
|
|
153
|
+
// Discard the body; per spec, server-pushed messages arrive on
|
|
154
|
+
// the SSE stream, not on the per-send response.
|
|
155
|
+
await r.arrayBuffer();
|
|
156
|
+
},
|
|
157
|
+
async receive() {
|
|
158
|
+
if (closed) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const event = await eventReader.read();
|
|
162
|
+
if (event === null) {
|
|
163
|
+
closed = true;
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
return new TextEncoder().encode(event);
|
|
167
|
+
},
|
|
168
|
+
async close() {
|
|
169
|
+
if (closed) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
closed = true;
|
|
173
|
+
sendController.abort();
|
|
174
|
+
eventReader.close();
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
return transport;
|
|
178
|
+
}
|
|
179
|
+
// ---------------------------------------------------------------------------
|
|
180
|
+
// SSE encode
|
|
181
|
+
/**
|
|
182
|
+
* Encode a single SEMP message as an SSE event. Each line in the
|
|
183
|
+
* message body produces a `data:` line; the event is terminated with
|
|
184
|
+
* a single blank line.
|
|
185
|
+
*
|
|
186
|
+
* The encoder normalizes CR / CRLF line terminators to LF before
|
|
187
|
+
* emitting each `data:` line. SEMP payloads are JSON documents whose
|
|
188
|
+
* control bytes are escaped (`\r`, `\n`), so the wire form never
|
|
189
|
+
* actually carries a literal CR or LF — but be defensive.
|
|
190
|
+
*/
|
|
191
|
+
export function encodeSSE(message) {
|
|
192
|
+
const lines = splitSSELines(message);
|
|
193
|
+
let out = "";
|
|
194
|
+
for (const line of lines) {
|
|
195
|
+
out += "data: " + line + "\n";
|
|
196
|
+
}
|
|
197
|
+
out += "\n";
|
|
198
|
+
return out;
|
|
199
|
+
}
|
|
200
|
+
function splitSSELines(s) {
|
|
201
|
+
if (s === "") {
|
|
202
|
+
return [""];
|
|
203
|
+
}
|
|
204
|
+
const out = [];
|
|
205
|
+
let start = 0;
|
|
206
|
+
for (let i = 0; i < s.length; i++) {
|
|
207
|
+
const c = s.charCodeAt(i);
|
|
208
|
+
if (c !== 0x0d && c !== 0x0a) {
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
out.push(s.slice(start, i));
|
|
212
|
+
if (c === 0x0d && i + 1 < s.length && s.charCodeAt(i + 1) === 0x0a) {
|
|
213
|
+
i++; // skip LF in CRLF
|
|
214
|
+
}
|
|
215
|
+
start = i + 1;
|
|
216
|
+
}
|
|
217
|
+
out.push(s.slice(start));
|
|
218
|
+
return out;
|
|
219
|
+
}
|
|
220
|
+
// ---------------------------------------------------------------------------
|
|
221
|
+
// SSE decode
|
|
222
|
+
/**
|
|
223
|
+
* Decode SSE events from a string buffer. Each call returns the next
|
|
224
|
+
* complete event's `data` payload (or `null` if no complete event is
|
|
225
|
+
* buffered yet). Stateful — the buffer accumulates partial input.
|
|
226
|
+
*/
|
|
227
|
+
export class SSEDecoder {
|
|
228
|
+
buffer = "";
|
|
229
|
+
dataLines = [];
|
|
230
|
+
/** Append more bytes to the buffer. */
|
|
231
|
+
push(chunk) {
|
|
232
|
+
this.buffer += chunk;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Return the data payload of the next complete event, or `null` if
|
|
236
|
+
* none is buffered. Repeatedly call until `null` to drain.
|
|
237
|
+
*/
|
|
238
|
+
next() {
|
|
239
|
+
while (true) {
|
|
240
|
+
const lf = this.buffer.indexOf("\n");
|
|
241
|
+
if (lf < 0) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
let line = this.buffer.slice(0, lf);
|
|
245
|
+
this.buffer = this.buffer.slice(lf + 1);
|
|
246
|
+
if (line.endsWith("\r")) {
|
|
247
|
+
line = line.slice(0, -1);
|
|
248
|
+
}
|
|
249
|
+
if (line === "") {
|
|
250
|
+
if (this.dataLines.length > 0) {
|
|
251
|
+
const event = this.dataLines.join("\n");
|
|
252
|
+
this.dataLines = [];
|
|
253
|
+
return event;
|
|
254
|
+
}
|
|
255
|
+
// Empty leading lines (keepalives) — skip.
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
// Comment lines start with ":" — ignore.
|
|
259
|
+
if (line.startsWith(":")) {
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
// Field parse: "<field>:<value>" with optional space after colon.
|
|
263
|
+
const colon = line.indexOf(":");
|
|
264
|
+
let field;
|
|
265
|
+
let value;
|
|
266
|
+
if (colon < 0) {
|
|
267
|
+
field = line;
|
|
268
|
+
value = "";
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
field = line.slice(0, colon);
|
|
272
|
+
value = line.slice(colon + 1);
|
|
273
|
+
if (value.startsWith(" ")) {
|
|
274
|
+
value = value.slice(1);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (field !== "data") {
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
this.dataLines.push(value);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Flush any pending data lines as a final event. Called on EOF when
|
|
285
|
+
* the underlying stream ends without a trailing blank line.
|
|
286
|
+
*/
|
|
287
|
+
flush() {
|
|
288
|
+
if (this.dataLines.length === 0) {
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
const event = this.dataLines.join("\n");
|
|
292
|
+
this.dataLines = [];
|
|
293
|
+
return event;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/** Decode all events present in a complete (already-buffered) SSE blob. */
|
|
297
|
+
export function decodeSSE(blob) {
|
|
298
|
+
const dec = new SSEDecoder();
|
|
299
|
+
dec.push(blob);
|
|
300
|
+
const out = [];
|
|
301
|
+
while (true) {
|
|
302
|
+
const ev = dec.next();
|
|
303
|
+
if (ev === null) {
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
out.push(ev);
|
|
307
|
+
}
|
|
308
|
+
const trailing = dec.flush();
|
|
309
|
+
if (trailing !== null) {
|
|
310
|
+
out.push(trailing);
|
|
311
|
+
}
|
|
312
|
+
return out;
|
|
313
|
+
}
|
|
314
|
+
function createEventReader(body) {
|
|
315
|
+
const decoder = new SSEDecoder();
|
|
316
|
+
const utf8 = new TextDecoder("utf-8");
|
|
317
|
+
let done = false;
|
|
318
|
+
let buffered = null;
|
|
319
|
+
const iter = makeAsyncIterator(body);
|
|
320
|
+
return {
|
|
321
|
+
async read() {
|
|
322
|
+
if (buffered !== null) {
|
|
323
|
+
const out = buffered;
|
|
324
|
+
buffered = null;
|
|
325
|
+
return out;
|
|
326
|
+
}
|
|
327
|
+
while (true) {
|
|
328
|
+
const ev = decoder.next();
|
|
329
|
+
if (ev !== null) {
|
|
330
|
+
return ev;
|
|
331
|
+
}
|
|
332
|
+
if (done) {
|
|
333
|
+
return decoder.flush();
|
|
334
|
+
}
|
|
335
|
+
const result = await iter.next();
|
|
336
|
+
if (result.done === true) {
|
|
337
|
+
done = true;
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
if (result.value === undefined) {
|
|
341
|
+
continue;
|
|
342
|
+
}
|
|
343
|
+
decoder.push(utf8.decode(result.value, { stream: true }));
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
close() {
|
|
347
|
+
done = true;
|
|
348
|
+
iter.return?.();
|
|
349
|
+
},
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
function makeAsyncIterator(body) {
|
|
353
|
+
if (typeof body[Symbol.asyncIterator] === "function") {
|
|
354
|
+
const it = body[Symbol.asyncIterator]();
|
|
355
|
+
return it;
|
|
356
|
+
}
|
|
357
|
+
const reader = body.getReader();
|
|
358
|
+
return {
|
|
359
|
+
async next() {
|
|
360
|
+
return reader.read();
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
function composeSignal(externalSignal, timeoutMs) {
|
|
365
|
+
const controller = new AbortController();
|
|
366
|
+
const timer = timeoutMs !== undefined && timeoutMs > 0
|
|
367
|
+
? setTimeout(() => controller.abort(), timeoutMs)
|
|
368
|
+
: undefined;
|
|
369
|
+
const externalListener = () => controller.abort();
|
|
370
|
+
if (externalSignal !== undefined) {
|
|
371
|
+
if (externalSignal.aborted) {
|
|
372
|
+
controller.abort();
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
externalSignal.addEventListener("abort", externalListener, { once: true });
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return {
|
|
379
|
+
signal: controller.signal,
|
|
380
|
+
cleanup() {
|
|
381
|
+
if (timer !== undefined) {
|
|
382
|
+
clearTimeout(timer);
|
|
383
|
+
}
|
|
384
|
+
if (externalSignal !== undefined) {
|
|
385
|
+
externalSignal.removeEventListener("abort", externalListener);
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
function defaultFetch() {
|
|
391
|
+
const f = globalThis.fetch;
|
|
392
|
+
if (f === undefined) {
|
|
393
|
+
throw new Error("h2: globalThis.fetch is undefined. Pass a fetchImpl option, or run on Node 22+ / a browser.");
|
|
394
|
+
}
|
|
395
|
+
return f;
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=h2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"h2.js","sourceRoot":"","sources":["../../src/transport/h2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport layer: SEMP runs over WebSocket, HTTP/2, and QUIC per
|
|
3
|
+
* `TRANSPORT.md` §4. Higher layers (handshake driver, session
|
|
4
|
+
* machine) consume the abstract `Transport` interface and are
|
|
5
|
+
* agnostic to the underlying socket.
|
|
6
|
+
*
|
|
7
|
+
* v0.x ships WebSocket and HTTP/2. QUIC comes in a later release.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
export { type DialOptions, type Transport } from "./transport.js";
|
|
12
|
+
export { type WSDialOptions, SempSubprotocol, dial as dialWS } from "./ws.js";
|
|
13
|
+
export { newPair as newMemoryPair } from "./memory.js";
|
|
14
|
+
export { type DialH2SessionOptions, type H2FetchLike, type H2PostOptions, type H2PostResult, type H2Response, SSEDecoder, SempSessionIdHeader, decodeSSE, dialH2Session, encodeSSE, h2Post, } from "./h2.js";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,KAAK,aAAa,EAAE,eAAe,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,UAAU,EACV,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,SAAS,EACT,MAAM,GACP,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport layer: SEMP runs over WebSocket, HTTP/2, and QUIC per
|
|
3
|
+
* `TRANSPORT.md` §4. Higher layers (handshake driver, session
|
|
4
|
+
* machine) consume the abstract `Transport` interface and are
|
|
5
|
+
* agnostic to the underlying socket.
|
|
6
|
+
*
|
|
7
|
+
* v0.x ships WebSocket and HTTP/2. QUIC comes in a later release.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
export {} from "./transport.js";
|
|
12
|
+
export { SempSubprotocol, dial as dialWS } from "./ws.js";
|
|
13
|
+
export { newPair as newMemoryPair } from "./memory.js";
|
|
14
|
+
export { SSEDecoder, SempSessionIdHeader, decodeSSE, dialH2Session, encodeSSE, h2Post, } from "./h2.js";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoC,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAsB,eAAe,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAML,UAAU,EACV,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,SAAS,EACT,MAAM,GACP,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process loopback transport. Two ends share a pair of FIFO
|
|
3
|
+
* queues; whatever one peer sends, the other receives. Used by
|
|
4
|
+
* tests that exercise the handshake driver, session machine, and
|
|
5
|
+
* client/server orchestration without standing up a real
|
|
6
|
+
* WebSocket / HTTP/2 server.
|
|
7
|
+
*
|
|
8
|
+
* NOT a transport for production traffic. The two peers run in
|
|
9
|
+
* the same process and share memory; there is no encryption,
|
|
10
|
+
* no flow control, no message-size enforcement.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import type { Transport } from "./transport.js";
|
|
15
|
+
/**
|
|
16
|
+
* Construct a connected pair of in-process transports. The two
|
|
17
|
+
* returned ends communicate symmetrically: bytes sent on one are
|
|
18
|
+
* receivable on the other.
|
|
19
|
+
*/
|
|
20
|
+
export declare function newPair(): [Transport, Transport];
|
|
21
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/transport/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoGhD;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAMhD"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process loopback transport. Two ends share a pair of FIFO
|
|
3
|
+
* queues; whatever one peer sends, the other receives. Used by
|
|
4
|
+
* tests that exercise the handshake driver, session machine, and
|
|
5
|
+
* client/server orchestration without standing up a real
|
|
6
|
+
* WebSocket / HTTP/2 server.
|
|
7
|
+
*
|
|
8
|
+
* NOT a transport for production traffic. The two peers run in
|
|
9
|
+
* the same process and share memory; there is no encryption,
|
|
10
|
+
* no flow control, no message-size enforcement.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
class Endpoint {
|
|
15
|
+
outbox;
|
|
16
|
+
inbox;
|
|
17
|
+
closed = false;
|
|
18
|
+
constructor(outbox, inbox) {
|
|
19
|
+
this.outbox = outbox;
|
|
20
|
+
this.inbox = inbox;
|
|
21
|
+
}
|
|
22
|
+
send(message) {
|
|
23
|
+
if (this.closed) {
|
|
24
|
+
return Promise.reject(new Error("memory transport: send after close"));
|
|
25
|
+
}
|
|
26
|
+
this.outbox.push(message);
|
|
27
|
+
return Promise.resolve();
|
|
28
|
+
}
|
|
29
|
+
receive() {
|
|
30
|
+
return this.inbox.shift();
|
|
31
|
+
}
|
|
32
|
+
close() {
|
|
33
|
+
if (this.closed) {
|
|
34
|
+
return Promise.resolve();
|
|
35
|
+
}
|
|
36
|
+
this.closed = true;
|
|
37
|
+
// Closing one end does NOT immediately drain the other side's
|
|
38
|
+
// outbox — buffered messages from the closed peer are still
|
|
39
|
+
// delivered before the inbox returns null.
|
|
40
|
+
this.outbox.closeWriter();
|
|
41
|
+
this.inbox.closeReader();
|
|
42
|
+
return Promise.resolve();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* One-element-at-a-time async queue with closeable writer +
|
|
47
|
+
* closeable reader. Once the writer closes, queued items still
|
|
48
|
+
* drain to readers, then `shift` returns null. Once the reader
|
|
49
|
+
* closes, `shift` rejects on subsequent calls.
|
|
50
|
+
*/
|
|
51
|
+
class Queue {
|
|
52
|
+
items = [];
|
|
53
|
+
waiters = [];
|
|
54
|
+
writerClosed = false;
|
|
55
|
+
readerClosed = false;
|
|
56
|
+
push(v) {
|
|
57
|
+
if (this.writerClosed) {
|
|
58
|
+
throw new Error("memory transport: push after writer close");
|
|
59
|
+
}
|
|
60
|
+
const next = this.waiters.shift();
|
|
61
|
+
if (next !== undefined) {
|
|
62
|
+
next.resolve(v);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.items.push(v);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
shift() {
|
|
69
|
+
if (this.readerClosed) {
|
|
70
|
+
return Promise.reject(new Error("memory transport: receive after reader close"));
|
|
71
|
+
}
|
|
72
|
+
const buffered = this.items.shift();
|
|
73
|
+
if (buffered !== undefined) {
|
|
74
|
+
return Promise.resolve(buffered);
|
|
75
|
+
}
|
|
76
|
+
if (this.writerClosed) {
|
|
77
|
+
return Promise.resolve(null);
|
|
78
|
+
}
|
|
79
|
+
return new Promise((resolve, reject) => {
|
|
80
|
+
this.waiters.push({ resolve, reject });
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
closeWriter() {
|
|
84
|
+
this.writerClosed = true;
|
|
85
|
+
if (this.items.length === 0) {
|
|
86
|
+
const drained = this.waiters.splice(0);
|
|
87
|
+
for (const w of drained) {
|
|
88
|
+
w.resolve(null);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
closeReader() {
|
|
93
|
+
this.readerClosed = true;
|
|
94
|
+
const drained = this.waiters.splice(0);
|
|
95
|
+
for (const w of drained) {
|
|
96
|
+
w.reject(new Error("memory transport: receiver closed"));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Construct a connected pair of in-process transports. The two
|
|
102
|
+
* returned ends communicate symmetrically: bytes sent on one are
|
|
103
|
+
* receivable on the other.
|
|
104
|
+
*/
|
|
105
|
+
export function newPair() {
|
|
106
|
+
const aToB = new Queue();
|
|
107
|
+
const bToA = new Queue();
|
|
108
|
+
const a = new Endpoint(aToB, bToA);
|
|
109
|
+
const b = new Endpoint(bToA, aToB);
|
|
110
|
+
return [a, b];
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/transport/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport abstraction per `TRANSPORT.md` §2.
|
|
3
|
+
*
|
|
4
|
+
* SEMP messages are exchanged as opaque byte slices over a stream
|
|
5
|
+
* the higher layers treat as bidirectional, ordered, and
|
|
6
|
+
* framed. The handshake driver, session machine, and inbox
|
|
7
|
+
* client all consume this same interface; the choice of
|
|
8
|
+
* underlying transport (WebSocket, HTTP/2, QUIC) is swapped at
|
|
9
|
+
* the boundary.
|
|
10
|
+
*
|
|
11
|
+
* Each `send` writes one SEMP message per spec §4.1.2 (no
|
|
12
|
+
* splitting across frames). Each `receive` returns one complete
|
|
13
|
+
* SEMP message (the underlying transport reassembles fragmented
|
|
14
|
+
* frames before yielding). When the remote side closes,
|
|
15
|
+
* `receive` returns `null`; subsequent calls also return `null`.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* One direction of a connected SEMP transport. Implementations
|
|
21
|
+
* MUST guarantee message boundary preservation: one `send` on
|
|
22
|
+
* one peer corresponds to exactly one `receive` on the other,
|
|
23
|
+
* with the same byte sequence.
|
|
24
|
+
*/
|
|
25
|
+
export interface Transport {
|
|
26
|
+
/** Send one SEMP message. Resolves once the bytes are committed to the underlying transport. */
|
|
27
|
+
send(message: Uint8Array): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Receive the next SEMP message. Resolves with the message bytes
|
|
30
|
+
* on success; with `null` when the remote side has cleanly closed
|
|
31
|
+
* AND no buffered messages remain.
|
|
32
|
+
*
|
|
33
|
+
* Rejects if the underlying transport surfaces an error (network
|
|
34
|
+
* failure, framing violation, subprotocol mismatch). The caller
|
|
35
|
+
* SHOULD treat any rejection as terminal for the connection.
|
|
36
|
+
*/
|
|
37
|
+
receive(): Promise<Uint8Array | null>;
|
|
38
|
+
/** Close the underlying connection. Idempotent. */
|
|
39
|
+
close(code?: number, reason?: string): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
/** Optional context passed through to dialers. */
|
|
42
|
+
export interface DialOptions {
|
|
43
|
+
/**
|
|
44
|
+
* Abort signal observed by dialers. When fired before connect
|
|
45
|
+
* completes, the returned promise rejects with the abort reason.
|
|
46
|
+
*/
|
|
47
|
+
signal?: AbortSignal;
|
|
48
|
+
/**
|
|
49
|
+
* Timeout in milliseconds for the connect handshake. Default: 30s.
|
|
50
|
+
* Ignored if `signal` is also supplied.
|
|
51
|
+
*/
|
|
52
|
+
timeoutMs?: number;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transport/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,gGAAgG;IAChG,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC;;;;;;;;OAQG;IACH,OAAO,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAEtC,mDAAmD;IACnD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport abstraction per `TRANSPORT.md` §2.
|
|
3
|
+
*
|
|
4
|
+
* SEMP messages are exchanged as opaque byte slices over a stream
|
|
5
|
+
* the higher layers treat as bidirectional, ordered, and
|
|
6
|
+
* framed. The handshake driver, session machine, and inbox
|
|
7
|
+
* client all consume this same interface; the choice of
|
|
8
|
+
* underlying transport (WebSocket, HTTP/2, QUIC) is swapped at
|
|
9
|
+
* the boundary.
|
|
10
|
+
*
|
|
11
|
+
* Each `send` writes one SEMP message per spec §4.1.2 (no
|
|
12
|
+
* splitting across frames). Each `receive` returns one complete
|
|
13
|
+
* SEMP message (the underlying transport reassembles fragmented
|
|
14
|
+
* frames before yielding). When the remote side closes,
|
|
15
|
+
* `receive` returns `null`; subsequent calls also return `null`.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=transport.js.map
|