@private.me/xbind 3.0.2 → 3.0.4

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 (222) hide show
  1. package/README.md +2366 -204
  2. package/dist-standalone/_deps/mldsa-wasm/dist/mldsa.js +1 -1920
  3. package/dist-standalone/_deps/shared/cjs/errors.js +1 -729
  4. package/dist-standalone/_deps/shared/cjs/index.js +1 -463
  5. package/dist-standalone/_deps/shared/cjs/types.js +1 -315
  6. package/dist-standalone/_deps/shared/errors.js +1 -244
  7. package/dist-standalone/_deps/shared/index.js +1 -72
  8. package/dist-standalone/_deps/shared/types.js +1 -86
  9. package/dist-standalone/_deps/ux-helpers/cjs/errors.js +1 -1
  10. package/dist-standalone/_deps/ux-helpers/cjs/index.js +1 -1
  11. package/dist-standalone/_deps/ux-helpers/cjs/pagination.js +1 -1
  12. package/dist-standalone/_deps/ux-helpers/cjs/progress.js +1 -1
  13. package/dist-standalone/_deps/ux-helpers/cjs/search.js +1 -1
  14. package/dist-standalone/_deps/ux-helpers/cjs/types.js +1 -1
  15. package/dist-standalone/_deps/ux-helpers/errors.js +1 -1
  16. package/dist-standalone/_deps/ux-helpers/index.js +1 -1
  17. package/dist-standalone/_deps/ux-helpers/pagination.js +1 -1
  18. package/dist-standalone/_deps/ux-helpers/progress.js +1 -1
  19. package/dist-standalone/_deps/ux-helpers/search.js +1 -1
  20. package/dist-standalone/_deps/xchange/auto-accept.js +1 -1
  21. package/dist-standalone/_deps/xchange/cjs/auto-accept.js +1 -1
  22. package/dist-standalone/_deps/xchange/cjs/errors.js +1 -1
  23. package/dist-standalone/_deps/xchange/cjs/index.js +1 -1
  24. package/dist-standalone/_deps/xchange/cjs/invite-client.js +1 -1
  25. package/dist-standalone/_deps/xchange/cjs/lazy-init.js +1 -1
  26. package/dist-standalone/_deps/xchange/cjs/trust-integration.js +1 -1
  27. package/dist-standalone/_deps/xchange/cjs/xchange.js +1 -1
  28. package/dist-standalone/_deps/xchange/errors.js +1 -1
  29. package/dist-standalone/_deps/xchange/index.js +1 -1
  30. package/dist-standalone/_deps/xchange/invite-client.js +1 -1
  31. package/dist-standalone/_deps/xchange/lazy-init.js +1 -1
  32. package/dist-standalone/_deps/xchange/trust-integration.js +1 -1
  33. package/dist-standalone/_deps/xchange/xchange.js +1 -1
  34. package/dist-standalone/_deps/xregistry/cjs/discovery.js +1 -1
  35. package/dist-standalone/_deps/xregistry/cjs/errors.js +1 -1
  36. package/dist-standalone/_deps/xregistry/cjs/index.js +1 -1
  37. package/dist-standalone/_deps/xregistry/cjs/registry.js +1 -1
  38. package/dist-standalone/_deps/xregistry/cjs/schema.js +1 -1
  39. package/dist-standalone/_deps/xregistry/cjs/types.js +1 -1
  40. package/dist-standalone/_deps/xregistry/discovery.js +1 -1
  41. package/dist-standalone/_deps/xregistry/errors.js +1 -1
  42. package/dist-standalone/_deps/xregistry/index.js +1 -1
  43. package/dist-standalone/_deps/xregistry/registry.js +1 -1
  44. package/dist-standalone/_deps/xregistry/schema.js +1 -1
  45. package/dist-standalone/_deps/xregistry/types.js +1 -1
  46. package/dist-standalone/agent-call.d.ts +2 -2
  47. package/dist-standalone/agent-call.js +1 -659
  48. package/dist-standalone/agent-sdk.js +1 -328
  49. package/dist-standalone/agent.d.ts +2 -0
  50. package/dist-standalone/agent.js +1 -1800
  51. package/dist-standalone/approval.js +1 -193
  52. package/dist-standalone/async-iterators.d.ts +3 -3
  53. package/dist-standalone/async-iterators.js +1 -382
  54. package/dist-standalone/auth.js +1 -219
  55. package/dist-standalone/auto-accept.js +1 -229
  56. package/dist-standalone/backup-config.js +1 -201
  57. package/dist-standalone/backup.js +1 -326
  58. package/dist-standalone/batch-operations.js +1 -388
  59. package/dist-standalone/cancellation.js +1 -477
  60. package/dist-standalone/checkpoint.js +1 -186
  61. package/dist-standalone/circuit-breaker.js +1 -468
  62. package/dist-standalone/cjs/agent-call.js +1 -701
  63. package/dist-standalone/cjs/agent-sdk.js +1 -332
  64. package/dist-standalone/cjs/agent.js +1 -1837
  65. package/dist-standalone/cjs/approval.js +1 -199
  66. package/dist-standalone/cjs/async-iterators.js +1 -392
  67. package/dist-standalone/cjs/auth.js +1 -225
  68. package/dist-standalone/cjs/auto-accept.js +1 -233
  69. package/dist-standalone/cjs/backup-config.js +1 -207
  70. package/dist-standalone/cjs/backup.js +1 -330
  71. package/dist-standalone/cjs/batch-operations.js +1 -397
  72. package/dist-standalone/cjs/cancellation.js +1 -490
  73. package/dist-standalone/cjs/checkpoint.js +1 -193
  74. package/dist-standalone/cjs/circuit-breaker.js +1 -476
  75. package/dist-standalone/cjs/cli/init.js +1 -492
  76. package/dist-standalone/cjs/config-validation.js +1 -522
  77. package/dist-standalone/cjs/connect.js +1 -312
  78. package/dist-standalone/cjs/connection-pool.js +1 -506
  79. package/dist-standalone/cjs/correlation-id.js +1 -339
  80. package/dist-standalone/cjs/crypto-utils.js +1 -176
  81. package/dist-standalone/cjs/debug-mode.js +1 -534
  82. package/dist-standalone/cjs/did-document.js +1 -101
  83. package/dist-standalone/cjs/did-privateme.js +1 -130
  84. package/dist-standalone/cjs/did-web.js +1 -201
  85. package/dist-standalone/cjs/discovery.js +1 -462
  86. package/dist-standalone/cjs/dual-mode.js +1 -251
  87. package/dist-standalone/cjs/email-templates.js +1 -313
  88. package/dist-standalone/cjs/email-transport.js +1 -239
  89. package/dist-standalone/cjs/envelope.js +1 -538
  90. package/dist-standalone/cjs/errors.js +1 -913
  91. package/dist-standalone/cjs/event-emitter.js +1 -461
  92. package/dist-standalone/cjs/gateway-state.js +1 -55
  93. package/dist-standalone/cjs/gateway-transport.js +1 -120
  94. package/dist-standalone/cjs/graceful-degradation.js +1 -403
  95. package/dist-standalone/cjs/guardrails.js +1 -223
  96. package/dist-standalone/cjs/health-check.js +1 -336
  97. package/dist-standalone/cjs/http-compat.js +1 -272
  98. package/dist-standalone/cjs/http-status-map.js +1 -571
  99. package/dist-standalone/cjs/identity.js +1 -645
  100. package/dist-standalone/cjs/index.js +1 -406
  101. package/dist-standalone/cjs/invitation.js +1 -421
  102. package/dist-standalone/cjs/invite.js +1 -328
  103. package/dist-standalone/cjs/key-agreement.js +1 -335
  104. package/dist-standalone/cjs/lazy-init.js +1 -300
  105. package/dist-standalone/cjs/logger.js +1 -291
  106. package/dist-standalone/cjs/loopback-transport.js +1 -0
  107. package/dist-standalone/cjs/mdns-discovery.js +1 -202
  108. package/dist-standalone/cjs/nonce-store.js +1 -80
  109. package/dist-standalone/cjs/pairing-manager.js +1 -223
  110. package/dist-standalone/cjs/plugin-system.js +1 -264
  111. package/dist-standalone/cjs/plugins/logging.js +1 -168
  112. package/dist-standalone/cjs/plugins/metrics.js +1 -181
  113. package/dist-standalone/cjs/plugins/validation.js +1 -302
  114. package/dist-standalone/cjs/policy.js +1 -320
  115. package/dist-standalone/cjs/progress-callbacks.js +1 -583
  116. package/dist-standalone/cjs/redis-nonce-store.js +1 -76
  117. package/dist-standalone/cjs/registry-middleware.js +1 -50
  118. package/dist-standalone/cjs/retry-strategies.js +1 -544
  119. package/dist-standalone/cjs/retry-transport.js +1 -102
  120. package/dist-standalone/cjs/runtime/browser.js +1 -533
  121. package/dist-standalone/cjs/runtime/edge.js +1 -526
  122. package/dist-standalone/cjs/runtime/react-native.js +1 -394
  123. package/dist-standalone/cjs/security-policy.js +1 -245
  124. package/dist-standalone/cjs/serialization.js +1 -1040
  125. package/dist-standalone/cjs/split-channel.js +1 -225
  126. package/dist-standalone/cjs/subscription-proof.js +1 -230
  127. package/dist-standalone/cjs/succession.js +1 -148
  128. package/dist-standalone/cjs/timeouts.js +1 -412
  129. package/dist-standalone/cjs/trace-context.js +1 -424
  130. package/dist-standalone/cjs/trace-spans.js +1 -495
  131. package/dist-standalone/cjs/transport.js +1 -63
  132. package/dist-standalone/cjs/trust-registry.js +1 -991
  133. package/dist-standalone/cjs/types/error-response.js +1 -56
  134. package/dist-standalone/cjs/vault-auth.js +1 -178
  135. package/dist-standalone/cjs/vault-store-loader.js +1 -194
  136. package/dist-standalone/cjs/verify.js +1 -25
  137. package/dist-standalone/cjs/version-info.js +1 -543
  138. package/dist-standalone/cjs/xfetch.js +1 -340
  139. package/dist-standalone/cli/init.js +1 -455
  140. package/dist-standalone/cli/setup.js +1 -514
  141. package/dist-standalone/cli/types.js +1 -27
  142. package/dist-standalone/cli/xbind.js +1 -148
  143. package/dist-standalone/config-validation.js +1 -513
  144. package/dist-standalone/connect.js +1 -274
  145. package/dist-standalone/connection-pool.js +1 -500
  146. package/dist-standalone/correlation-id.js +1 -326
  147. package/dist-standalone/crypto-utils.d.ts +2 -7
  148. package/dist-standalone/crypto-utils.js +1 -157
  149. package/dist-standalone/debug-mode.js +1 -510
  150. package/dist-standalone/did-document.js +1 -96
  151. package/dist-standalone/did-privateme.js +1 -121
  152. package/dist-standalone/did-web.js +1 -196
  153. package/dist-standalone/discovery.js +1 -458
  154. package/dist-standalone/dual-mode.js +1 -247
  155. package/dist-standalone/email-templates.js +1 -309
  156. package/dist-standalone/email-transport.d.ts +2 -2
  157. package/dist-standalone/email-transport.js +1 -232
  158. package/dist-standalone/envelope.js +1 -525
  159. package/dist-standalone/errors.d.ts +13 -3
  160. package/dist-standalone/errors.js +1 -896
  161. package/dist-standalone/event-emitter.js +1 -456
  162. package/dist-standalone/gateway-state.d.ts +1 -1
  163. package/dist-standalone/gateway-state.js +1 -51
  164. package/dist-standalone/gateway-transport.js +1 -116
  165. package/dist-standalone/graceful-degradation.js +1 -396
  166. package/dist-standalone/guardrails.js +1 -216
  167. package/dist-standalone/health-check.d.ts +5 -1
  168. package/dist-standalone/health-check.js +1 -332
  169. package/dist-standalone/http-compat.d.ts +1 -1
  170. package/dist-standalone/http-compat.js +1 -267
  171. package/dist-standalone/http-status-map.js +1 -561
  172. package/dist-standalone/identity.js +1 -619
  173. package/dist-standalone/index.d.ts +15 -4
  174. package/dist-standalone/index.js +1 -78
  175. package/dist-standalone/invitation.js +1 -415
  176. package/dist-standalone/invite.js +1 -324
  177. package/dist-standalone/key-agreement.js +1 -325
  178. package/dist-standalone/lazy-init.d.ts +11 -6
  179. package/dist-standalone/lazy-init.js +1 -295
  180. package/dist-standalone/logger.js +1 -285
  181. package/dist-standalone/loopback-transport.d.ts +87 -0
  182. package/dist-standalone/loopback-transport.js +1 -0
  183. package/dist-standalone/mdns-discovery.js +1 -195
  184. package/dist-standalone/nonce-store.js +1 -76
  185. package/dist-standalone/pairing-manager.js +1 -219
  186. package/dist-standalone/plugin-system.js +1 -257
  187. package/dist-standalone/plugins/logging.js +1 -163
  188. package/dist-standalone/plugins/metrics.d.ts +4 -4
  189. package/dist-standalone/plugins/metrics.js +1 -176
  190. package/dist-standalone/plugins/validation.js +1 -297
  191. package/dist-standalone/policy.js +1 -315
  192. package/dist-standalone/progress-callbacks.js +1 -576
  193. package/dist-standalone/redis-nonce-store.js +1 -72
  194. package/dist-standalone/registry-middleware.js +1 -47
  195. package/dist-standalone/retry-strategies.js +1 -534
  196. package/dist-standalone/retry-transport.js +1 -98
  197. package/dist-standalone/runtime/browser.js +1 -516
  198. package/dist-standalone/runtime/edge.js +1 -511
  199. package/dist-standalone/runtime/react-native.d.ts +1 -1
  200. package/dist-standalone/runtime/react-native.js +1 -383
  201. package/dist-standalone/security-policy.js +1 -239
  202. package/dist-standalone/serialization.js +1 -1031
  203. package/dist-standalone/split-channel.d.ts +1 -1
  204. package/dist-standalone/split-channel.js +1 -219
  205. package/dist-standalone/subscription-proof.js +1 -224
  206. package/dist-standalone/succession.js +1 -142
  207. package/dist-standalone/timeouts.js +1 -398
  208. package/dist-standalone/trace-context.js +1 -414
  209. package/dist-standalone/trace-spans.js +1 -488
  210. package/dist-standalone/transport.d.ts +1 -1
  211. package/dist-standalone/transport.js +1 -59
  212. package/dist-standalone/trust-registry.d.ts +3 -3
  213. package/dist-standalone/trust-registry.js +1 -950
  214. package/dist-standalone/types/error-response.js +1 -52
  215. package/dist-standalone/vault-auth.js +1 -174
  216. package/dist-standalone/vault-store-loader.d.ts +9 -0
  217. package/dist-standalone/vault-store-loader.js +1 -187
  218. package/dist-standalone/verify.js +1 -16
  219. package/dist-standalone/version-info.js +1 -530
  220. package/dist-standalone/xfetch.js +1 -335
  221. package/package.json +1 -1
  222. package/share1.dat +0 -0
@@ -1,543 +1 @@
1
- "use strict";
2
- /**
3
- * @module version-info
4
- * Runtime SDK version information and capability detection
5
- *
6
- * Provides version metadata, feature flags, deprecation warnings,
7
- * and compatibility checks for the xBind SDK.
8
- *
9
- * Usage:
10
- * ```typescript
11
- * import { getVersion, hasCapability, checkCompatibility } from '@private.me/xbind';
12
- *
13
- * // Get version information
14
- * const version = getVersion();
15
- * console.log(version.semver); // "1.4.0"
16
- * console.log(version.features); // ["envelope-v4", "ml-kem-768", ...]
17
- *
18
- * // Check capabilities
19
- * if (hasCapability('envelope-v4')) {
20
- * // Use v4 envelopes
21
- * }
22
- *
23
- * // Compatibility check
24
- * const compat = checkCompatibility('1.0.0');
25
- * if (!compat.compatible) {
26
- * console.warn(compat.message);
27
- * }
28
- * ```
29
- */
30
- Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.Capability = void 0;
32
- exports.getVersion = getVersion;
33
- exports.hasCapability = hasCapability;
34
- exports.getCapabilities = getCapabilities;
35
- exports.getDeprecationInfo = getDeprecationInfo;
36
- exports.warnIfDeprecated = warnIfDeprecated;
37
- exports.parseVersion = parseVersion;
38
- exports.compareVersions = compareVersions;
39
- exports.checkCompatibility = checkCompatibility;
40
- exports.getMinimumVersionFor = getMinimumVersionFor;
41
- exports.assertMinimumVersion = assertMinimumVersion;
42
- const logger_js_1 = require("./logger.js");
43
- const logger = (0, logger_js_1.createLogger)('version-info');
44
- /**
45
- * Feature capability flags
46
- */
47
- var Capability;
48
- (function (Capability) {
49
- /** Transport Envelope v1 support */
50
- Capability["ENVELOPE_V1"] = "envelope-v1";
51
- /** Transport Envelope v2 support (split-channel) */
52
- Capability["ENVELOPE_V2"] = "envelope-v2";
53
- /** Transport Envelope v3 support (hybrid PQ) */
54
- Capability["ENVELOPE_V3"] = "envelope-v3";
55
- /** Transport Envelope v4 support (ML-DSA signatures) */
56
- Capability["ENVELOPE_V4"] = "envelope-v4";
57
- /** ML-KEM-768 post-quantum KEM */
58
- Capability["ML_KEM_768"] = "ml-kem-768";
59
- /** ML-DSA-65 post-quantum signatures */
60
- Capability["ML_DSA_65"] = "ml-dsa-65";
61
- /** X25519 ECDH key agreement */
62
- Capability["X25519_ECDH"] = "x25519-ecdh";
63
- /** Ed25519 signatures */
64
- Capability["ED25519_SIG"] = "ed25519-sig";
65
- /** XorIDA threshold sharing */
66
- Capability["XORIDA"] = "xorida";
67
- /** Split-channel transport */
68
- Capability["SPLIT_CHANNEL"] = "split-channel";
69
- /** Trust registry support */
70
- Capability["TRUST_REGISTRY"] = "trust-registry";
71
- /** Service discovery (mDNS) */
72
- Capability["SERVICE_DISCOVERY"] = "service-discovery";
73
- /** Invite system (viral growth) */
74
- Capability["INVITE_SYSTEM"] = "invite-system";
75
- /** Agent.call() API */
76
- Capability["AGENT_CALL"] = "agent-call";
77
- /** xFetch auto-upgrade */
78
- Capability["XFETCH"] = "xfetch";
79
- /** Dual-mode adapter (xBind + API key fallback) */
80
- Capability["DUAL_MODE"] = "dual-mode";
81
- /** Encrypted backup/restore */
82
- Capability["BACKUP_RESTORE"] = "backup-restore";
83
- /** Correlation ID tracing */
84
- Capability["CORRELATION_ID"] = "correlation-id";
85
- /** Structured logging */
86
- Capability["STRUCTURED_LOGGING"] = "structured-logging";
87
- /** DID succession */
88
- Capability["DID_SUCCESSION"] = "did-succession";
89
- /** Gateway connection state */
90
- Capability["GATEWAY_STATE"] = "gateway-state";
91
- /** Subscription proofs (portability) */
92
- Capability["SUBSCRIPTION_PROOF"] = "subscription-proof";
93
- /** Policy engine (constraints) */
94
- Capability["POLICY_ENGINE"] = "policy-engine";
95
- /** Approval flow (consent) */
96
- Capability["APPROVAL_FLOW"] = "approval-flow";
97
- /** Guardrails (error suggestions) */
98
- Capability["GUARDRAILS"] = "guardrails";
99
- /** HTTP client compatibility (axios, got) */
100
- Capability["HTTP_COMPAT"] = "http-compat";
101
- /** did:web resolver */
102
- Capability["DID_WEB"] = "did-web";
103
- /** did:privateme method */
104
- Capability["DID_PRIVATEME"] = "did:privateme";
105
- /** Redis nonce store */
106
- Capability["REDIS_NONCE"] = "redis-nonce";
107
- /** Retry transport */
108
- Capability["RETRY_TRANSPORT"] = "retry-transport";
109
- })(Capability || (exports.Capability = Capability = {}));
110
- /**
111
- * Current version metadata (extracted at build time)
112
- */
113
- const VERSION_METADATA = {
114
- semver: '3.0.0',
115
- major: 1,
116
- minor: 4,
117
- patch: 2,
118
- prerelease: undefined,
119
- build: undefined,
120
- features: [
121
- Capability.ENVELOPE_V1,
122
- Capability.ENVELOPE_V2,
123
- Capability.ENVELOPE_V3,
124
- Capability.ENVELOPE_V4,
125
- Capability.ML_KEM_768,
126
- Capability.ML_DSA_65,
127
- Capability.X25519_ECDH,
128
- Capability.ED25519_SIG,
129
- Capability.XORIDA,
130
- Capability.SPLIT_CHANNEL,
131
- Capability.TRUST_REGISTRY,
132
- Capability.SERVICE_DISCOVERY,
133
- Capability.INVITE_SYSTEM,
134
- Capability.AGENT_CALL,
135
- Capability.XFETCH,
136
- Capability.DUAL_MODE,
137
- Capability.BACKUP_RESTORE,
138
- Capability.CORRELATION_ID,
139
- Capability.STRUCTURED_LOGGING,
140
- Capability.DID_SUCCESSION,
141
- Capability.GATEWAY_STATE,
142
- Capability.SUBSCRIPTION_PROOF,
143
- Capability.POLICY_ENGINE,
144
- Capability.APPROVAL_FLOW,
145
- Capability.GUARDRAILS,
146
- Capability.HTTP_COMPAT,
147
- Capability.DID_WEB,
148
- Capability.DID_PRIVATEME,
149
- Capability.REDIS_NONCE,
150
- Capability.RETRY_TRANSPORT,
151
- ],
152
- deprecated: [
153
- {
154
- name: 'envelope-v1',
155
- since: '1.2.0',
156
- removedIn: '2.0.0',
157
- migration: 'Use createEnvelopeV2() or higher for split-channel support',
158
- docs: 'https://private.me/docs/xbind/migration-v2',
159
- },
160
- ],
161
- buildDate: new Date().toISOString(),
162
- nodeVersion: process.version,
163
- };
164
- /**
165
- * Get SDK version information
166
- *
167
- * Returns complete version metadata including semver, capabilities,
168
- * deprecated features, and build information.
169
- *
170
- * @returns Version information object
171
- *
172
- * @example
173
- * ```typescript
174
- * const version = getVersion();
175
- * console.log(`xBind v${version.semver}`);
176
- * console.log(`Features: ${version.features.join(', ')}`);
177
- * ```
178
- */
179
- function getVersion() {
180
- return Object.freeze({ ...VERSION_METADATA });
181
- }
182
- /**
183
- * Check if SDK supports a specific capability
184
- *
185
- * @param capability - Capability name to check
186
- * @returns True if capability is supported
187
- *
188
- * @example
189
- * ```typescript
190
- * if (hasCapability('envelope-v4')) {
191
- * // Use ML-DSA signatures
192
- * }
193
- * ```
194
- */
195
- function hasCapability(capability) {
196
- return VERSION_METADATA.features.includes(capability);
197
- }
198
- /**
199
- * Get all supported capabilities
200
- *
201
- * @returns Array of capability names
202
- */
203
- function getCapabilities() {
204
- return Object.freeze([...VERSION_METADATA.features]);
205
- }
206
- /**
207
- * Check if a feature is deprecated
208
- *
209
- * @param feature - Feature name to check
210
- * @returns Deprecation info if deprecated, undefined otherwise
211
- */
212
- function getDeprecationInfo(feature) {
213
- return VERSION_METADATA.deprecated.find((d) => d.name === feature);
214
- }
215
- /**
216
- * Emit deprecation warning if feature is deprecated
217
- *
218
- * Logs warning message with migration instructions if the feature
219
- * is marked as deprecated. Safe to call multiple times (warnings
220
- * are deduplicated).
221
- *
222
- * @param feature - Feature name to check
223
- *
224
- * @example
225
- * ```typescript
226
- * warnIfDeprecated('envelope-v1');
227
- * // Logs: "Warning: envelope-v1 is deprecated since 1.2.0..."
228
- * ```
229
- */
230
- const warnedFeatures = new Set();
231
- function warnIfDeprecated(feature) {
232
- if (warnedFeatures.has(feature)) {
233
- return; // Already warned
234
- }
235
- const info = getDeprecationInfo(feature);
236
- if (!info) {
237
- return; // Not deprecated
238
- }
239
- warnedFeatures.add(feature);
240
- const message = [
241
- `Feature "${feature}" is deprecated since v${info.since}`,
242
- info.removedIn ? `and will be removed in v${info.removedIn}.` : '.',
243
- info.migration,
244
- ].join(' ');
245
- logger.warn(message, {
246
- feature,
247
- deprecatedSince: info.since,
248
- removedIn: info.removedIn,
249
- docs: info.docs,
250
- });
251
- // Also log to console for visibility
252
- // eslint-disable-next-line no-console
253
- if (typeof console !== 'undefined' && console.warn) {
254
- // eslint-disable-next-line no-console
255
- console.warn(`[xBind] ${message}`);
256
- if (info.docs) {
257
- // eslint-disable-next-line no-console
258
- console.warn(`[xBind] See: ${info.docs}`);
259
- }
260
- }
261
- }
262
- /**
263
- * Parse semantic version string
264
- *
265
- * @param version - Version string (e.g., "1.3.5-beta.1+abc123")
266
- * @returns Parsed version components
267
- */
268
- function parseVersion(version) {
269
- // Match semver pattern: MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]
270
- const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9.-]+))?(?:\+([a-zA-Z0-9.-]+))?$/);
271
- if (!match || !match[1] || !match[2] || !match[3]) {
272
- throw new Error(`Invalid semantic version: ${version}`);
273
- }
274
- return {
275
- major: parseInt(match[1], 10),
276
- minor: parseInt(match[2], 10),
277
- patch: parseInt(match[3], 10),
278
- prerelease: match[4] || undefined,
279
- build: match[5] || undefined,
280
- };
281
- }
282
- /**
283
- * Compare two semantic versions
284
- *
285
- * @param a - First version
286
- * @param b - Second version
287
- * @returns -1 if a < b, 0 if a == b, 1 if a > b
288
- */
289
- function compareVersions(a, b) {
290
- const parsedA = parseVersion(a);
291
- const parsedB = parseVersion(b);
292
- // Compare major
293
- if (parsedA.major < parsedB.major)
294
- return -1;
295
- if (parsedA.major > parsedB.major)
296
- return 1;
297
- // Compare minor
298
- if (parsedA.minor < parsedB.minor)
299
- return -1;
300
- if (parsedA.minor > parsedB.minor)
301
- return 1;
302
- // Compare patch
303
- if (parsedA.patch < parsedB.patch)
304
- return -1;
305
- if (parsedA.patch > parsedB.patch)
306
- return 1;
307
- // Compare prerelease (semver: 1.0.0-alpha < 1.0.0)
308
- if (parsedA.prerelease && !parsedB.prerelease)
309
- return -1;
310
- if (!parsedA.prerelease && parsedB.prerelease)
311
- return 1;
312
- if (parsedA.prerelease && parsedB.prerelease) {
313
- if (parsedA.prerelease < parsedB.prerelease)
314
- return -1;
315
- if (parsedA.prerelease > parsedB.prerelease)
316
- return 1;
317
- }
318
- return 0;
319
- }
320
- /**
321
- * Check version compatibility
322
- *
323
- * Determines if the current SDK version is compatible with a
324
- * required version constraint. Follows semantic versioning rules:
325
- * - Breaking changes increment major version
326
- * - Minor/patch updates are backward compatible
327
- *
328
- * @param requiredVersion - Required version or range (e.g., "1.0.0", "^1.2.0")
329
- * @returns Compatibility result with message
330
- *
331
- * @example
332
- * ```typescript
333
- * const compat = checkCompatibility('1.0.0');
334
- * if (!compat.compatible) {
335
- * throw new Error(compat.message);
336
- * }
337
- * ```
338
- */
339
- function checkCompatibility(requiredVersion) {
340
- const current = VERSION_METADATA.semver;
341
- // Handle caret range (^1.2.0 means >=1.2.0 <2.0.0)
342
- if (requiredVersion.startsWith('^')) {
343
- const minVersion = requiredVersion.slice(1);
344
- const minParsed = parseVersion(minVersion);
345
- const currentParsed = parseVersion(current);
346
- // Major must match
347
- if (currentParsed.major !== minParsed.major) {
348
- return {
349
- compatible: false,
350
- message: `Incompatible major version. Required: ^${minVersion}, Current: ${current}`,
351
- severity: 'error',
352
- required: requiredVersion,
353
- actual: current,
354
- };
355
- }
356
- // Current must be >= min version
357
- if (compareVersions(current, minVersion) < 0) {
358
- return {
359
- compatible: false,
360
- message: `SDK version too old. Required: ^${minVersion}, Current: ${current}`,
361
- severity: 'error',
362
- required: requiredVersion,
363
- actual: current,
364
- };
365
- }
366
- return {
367
- compatible: true,
368
- message: `Compatible (${current} satisfies ^${minVersion})`,
369
- severity: 'info',
370
- required: requiredVersion,
371
- actual: current,
372
- };
373
- }
374
- // Handle tilde range (~1.2.0 means >=1.2.0 <1.3.0)
375
- if (requiredVersion.startsWith('~')) {
376
- const minVersion = requiredVersion.slice(1);
377
- const minParsed = parseVersion(minVersion);
378
- const currentParsed = parseVersion(current);
379
- // Major and minor must match
380
- if (currentParsed.major !== minParsed.major ||
381
- currentParsed.minor !== minParsed.minor) {
382
- return {
383
- compatible: false,
384
- message: `Incompatible version. Required: ~${minVersion}, Current: ${current}`,
385
- severity: 'error',
386
- required: requiredVersion,
387
- actual: current,
388
- };
389
- }
390
- // Current must be >= min version
391
- if (compareVersions(current, minVersion) < 0) {
392
- return {
393
- compatible: false,
394
- message: `SDK version too old. Required: ~${minVersion}, Current: ${current}`,
395
- severity: 'error',
396
- required: requiredVersion,
397
- actual: current,
398
- };
399
- }
400
- return {
401
- compatible: true,
402
- message: `Compatible (${current} satisfies ~${minVersion})`,
403
- severity: 'info',
404
- required: requiredVersion,
405
- actual: current,
406
- };
407
- }
408
- // Exact version match or comparison
409
- let cmp;
410
- try {
411
- cmp = compareVersions(current, requiredVersion);
412
- }
413
- catch (error) {
414
- // Invalid version format
415
- return {
416
- compatible: false,
417
- message: `Invalid version format: ${requiredVersion}`,
418
- severity: 'error',
419
- required: requiredVersion,
420
- actual: current,
421
- };
422
- }
423
- if (cmp === 0) {
424
- return {
425
- compatible: true,
426
- message: `Exact version match (${current})`,
427
- severity: 'info',
428
- required: requiredVersion,
429
- actual: current,
430
- };
431
- }
432
- if (cmp < 0) {
433
- return {
434
- compatible: false,
435
- message: `SDK version too old. Required: ${requiredVersion}, Current: ${current}`,
436
- severity: 'error',
437
- required: requiredVersion,
438
- actual: current,
439
- };
440
- }
441
- // Current version is newer - check major version compatibility
442
- let requiredParsed;
443
- let currentParsed;
444
- try {
445
- requiredParsed = parseVersion(requiredVersion);
446
- currentParsed = parseVersion(current);
447
- }
448
- catch (error) {
449
- // Version parsing error, already newer
450
- return {
451
- compatible: true,
452
- message: `Compatible (${current} is newer than ${requiredVersion})`,
453
- severity: 'info',
454
- required: requiredVersion,
455
- actual: current,
456
- };
457
- }
458
- if (currentParsed.major > requiredParsed.major) {
459
- return {
460
- compatible: false,
461
- message: `Breaking changes in SDK. Required: ${requiredVersion}, Current: ${current}`,
462
- severity: 'warning',
463
- required: requiredVersion,
464
- actual: current,
465
- };
466
- }
467
- return {
468
- compatible: true,
469
- message: `Compatible (${current} is newer than ${requiredVersion})`,
470
- severity: 'info',
471
- required: requiredVersion,
472
- actual: current,
473
- };
474
- }
475
- /**
476
- * Get recommended SDK version for a feature
477
- *
478
- * Returns the minimum SDK version required to use a specific feature.
479
- *
480
- * @param feature - Feature or capability name
481
- * @returns Minimum version string, or undefined if feature is unknown
482
- */
483
- function getMinimumVersionFor(feature) {
484
- // Feature introduction versions
485
- const featureVersions = {
486
- [Capability.ENVELOPE_V1]: '1.0.0',
487
- [Capability.ENVELOPE_V2]: '1.1.0',
488
- [Capability.ENVELOPE_V3]: '1.2.0',
489
- [Capability.ENVELOPE_V4]: '1.3.0',
490
- [Capability.ML_KEM_768]: '1.2.0',
491
- [Capability.ML_DSA_65]: '1.3.0',
492
- [Capability.X25519_ECDH]: '1.0.0',
493
- [Capability.ED25519_SIG]: '1.0.0',
494
- [Capability.XORIDA]: '1.0.0',
495
- [Capability.SPLIT_CHANNEL]: '1.1.0',
496
- [Capability.TRUST_REGISTRY]: '1.0.0',
497
- [Capability.SERVICE_DISCOVERY]: '1.1.0',
498
- [Capability.INVITE_SYSTEM]: '1.1.0',
499
- [Capability.AGENT_CALL]: '1.0.0',
500
- [Capability.XFETCH]: '1.2.0',
501
- [Capability.DUAL_MODE]: '1.2.0',
502
- [Capability.BACKUP_RESTORE]: '1.3.0',
503
- [Capability.CORRELATION_ID]: '1.3.0',
504
- [Capability.STRUCTURED_LOGGING]: '1.3.0',
505
- [Capability.DID_SUCCESSION]: '1.2.0',
506
- [Capability.GATEWAY_STATE]: '1.2.0',
507
- [Capability.SUBSCRIPTION_PROOF]: '1.2.0',
508
- [Capability.POLICY_ENGINE]: '1.1.0',
509
- [Capability.APPROVAL_FLOW]: '1.1.0',
510
- [Capability.GUARDRAILS]: '1.2.0',
511
- [Capability.HTTP_COMPAT]: '1.2.0',
512
- [Capability.DID_WEB]: '1.1.0',
513
- [Capability.DID_PRIVATEME]: '1.2.0',
514
- [Capability.REDIS_NONCE]: '1.1.0',
515
- [Capability.RETRY_TRANSPORT]: '1.1.0',
516
- };
517
- return featureVersions[feature];
518
- }
519
- /**
520
- * Assert minimum SDK version
521
- *
522
- * Throws an error if the current SDK version does not meet the
523
- * minimum required version.
524
- *
525
- * @param minVersion - Minimum required version
526
- * @param context - Optional context message
527
- * @throws Error if version is too old
528
- *
529
- * @example
530
- * ```typescript
531
- * assertMinimumVersion('1.2.0', 'ML-KEM-768 support');
532
- * // Throws if SDK < 1.2.0
533
- * ```
534
- */
535
- function assertMinimumVersion(minVersion, context) {
536
- const compat = checkCompatibility(minVersion);
537
- if (!compat.compatible && compat.severity === 'error') {
538
- const message = context
539
- ? `${context} requires xBind >= ${minVersion} (current: ${VERSION_METADATA.semver})`
540
- : compat.message;
541
- throw new Error(message);
542
- }
543
- }
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Capability=void 0,exports.getVersion=getVersion,exports.hasCapability=hasCapability,exports.getCapabilities=getCapabilities,exports.getDeprecationInfo=getDeprecationInfo,exports.warnIfDeprecated=warnIfDeprecated,exports.parseVersion=parseVersion,exports.compareVersions=compareVersions,exports.checkCompatibility=checkCompatibility,exports.getMinimumVersionFor=getMinimumVersionFor,exports.assertMinimumVersion=assertMinimumVersion;const logger_js_1=require("./logger.js"),logger=(0,logger_js_1.createLogger)("version-info");var Capability;!function(e){e.ENVELOPE_V1="envelope-v1",e.ENVELOPE_V2="envelope-v2",e.ENVELOPE_V3="envelope-v3",e.ENVELOPE_V4="envelope-v4",e.ML_KEM_768="ml-kem-768",e.ML_DSA_65="ml-dsa-65",e.X25519_ECDH="x25519-ecdh",e.ED25519_SIG="ed25519-sig",e.XORIDA="xorida",e.SPLIT_CHANNEL="split-channel",e.TRUST_REGISTRY="trust-registry",e.SERVICE_DISCOVERY="service-discovery",e.INVITE_SYSTEM="invite-system",e.AGENT_CALL="agent-call",e.XFETCH="xfetch",e.DUAL_MODE="dual-mode",e.BACKUP_RESTORE="backup-restore",e.CORRELATION_ID="correlation-id",e.STRUCTURED_LOGGING="structured-logging",e.DID_SUCCESSION="did-succession",e.GATEWAY_STATE="gateway-state",e.SUBSCRIPTION_PROOF="subscription-proof",e.POLICY_ENGINE="policy-engine",e.APPROVAL_FLOW="approval-flow",e.GUARDRAILS="guardrails",e.HTTP_COMPAT="http-compat",e.DID_WEB="did-web",e.DID_PRIVATEME="did:privateme",e.REDIS_NONCE="redis-nonce",e.RETRY_TRANSPORT="retry-transport"}(Capability||(exports.Capability=Capability={}));const VERSION_METADATA={semver:"3.0.3",major:3,minor:0,patch:3,prerelease:void 0,build:void 0,features:[Capability.ENVELOPE_V1,Capability.ENVELOPE_V2,Capability.ENVELOPE_V3,Capability.ENVELOPE_V4,Capability.ML_KEM_768,Capability.ML_DSA_65,Capability.X25519_ECDH,Capability.ED25519_SIG,Capability.XORIDA,Capability.SPLIT_CHANNEL,Capability.TRUST_REGISTRY,Capability.SERVICE_DISCOVERY,Capability.INVITE_SYSTEM,Capability.AGENT_CALL,Capability.XFETCH,Capability.DUAL_MODE,Capability.BACKUP_RESTORE,Capability.CORRELATION_ID,Capability.STRUCTURED_LOGGING,Capability.DID_SUCCESSION,Capability.GATEWAY_STATE,Capability.SUBSCRIPTION_PROOF,Capability.POLICY_ENGINE,Capability.APPROVAL_FLOW,Capability.GUARDRAILS,Capability.HTTP_COMPAT,Capability.DID_WEB,Capability.DID_PRIVATEME,Capability.REDIS_NONCE,Capability.RETRY_TRANSPORT],deprecated:[{name:"envelope-v1",since:"1.2.0",removedIn:"2.0.0",migration:"Use createEnvelopeV2() or higher for split-channel support",docs:"https://private.me/docs/xbind/migration-v2"}],buildDate:(new Date).toISOString(),nodeVersion:process.version};function getVersion(){return Object.freeze({...VERSION_METADATA})}function hasCapability(e){return VERSION_METADATA.features.includes(e)}function getCapabilities(){return Object.freeze([...VERSION_METADATA.features])}function getDeprecationInfo(e){return VERSION_METADATA.deprecated.find(i=>i.name===e)}const warnedFeatures=new Set;function warnIfDeprecated(e){if(warnedFeatures.has(e))return;const i=getDeprecationInfo(e);if(!i)return;warnedFeatures.add(e);const r=[`Feature "${e}" is deprecated since v${i.since}`,i.removedIn?`and will be removed in v${i.removedIn}.`:".",i.migration].join(" ");logger.warn(r,{feature:e,deprecatedSince:i.since,removedIn:i.removedIn,docs:i.docs}),"undefined"!=typeof console&&console.warn&&(console.warn(`[xBind] ${r}`),i.docs&&console.warn(`[xBind] See: ${i.docs}`))}function parseVersion(e){const i=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9.-]+))?(?:\+([a-zA-Z0-9.-]+))?$/);if(!(i&&i[1]&&i[2]&&i[3]))throw new Error(`Invalid semantic version: ${e}`);return{major:parseInt(i[1],10),minor:parseInt(i[2],10),patch:parseInt(i[3],10),prerelease:i[4]||void 0,build:i[5]||void 0}}function compareVersions(e,i){const r=parseVersion(e),a=parseVersion(i);if(r.major<a.major)return-1;if(r.major>a.major)return 1;if(r.minor<a.minor)return-1;if(r.minor>a.minor)return 1;if(r.patch<a.patch)return-1;if(r.patch>a.patch)return 1;if(r.prerelease&&!a.prerelease)return-1;if(!r.prerelease&&a.prerelease)return 1;if(r.prerelease&&a.prerelease){if(r.prerelease<a.prerelease)return-1;if(r.prerelease>a.prerelease)return 1}return 0}function checkCompatibility(e){const i=VERSION_METADATA.semver;if(e.startsWith("^")){const r=e.slice(1),a=parseVersion(r);return parseVersion(i).major!==a.major?{compatible:!1,message:`Incompatible major version. Required: ^${r}, Current: ${i}`,severity:"error",required:e,actual:i}:compareVersions(i,r)<0?{compatible:!1,message:`SDK version too old. Required: ^${r}, Current: ${i}`,severity:"error",required:e,actual:i}:{compatible:!0,message:`Compatible (${i} satisfies ^${r})`,severity:"info",required:e,actual:i}}if(e.startsWith("~")){const r=e.slice(1),a=parseVersion(r),t=parseVersion(i);return t.major!==a.major||t.minor!==a.minor?{compatible:!1,message:`Incompatible version. Required: ~${r}, Current: ${i}`,severity:"error",required:e,actual:i}:compareVersions(i,r)<0?{compatible:!1,message:`SDK version too old. Required: ~${r}, Current: ${i}`,severity:"error",required:e,actual:i}:{compatible:!0,message:`Compatible (${i} satisfies ~${r})`,severity:"info",required:e,actual:i}}let r,a,t;try{r=compareVersions(i,e)}catch{return{compatible:!1,message:`Invalid version format: ${e}`,severity:"error",required:e,actual:i}}if(0===r)return{compatible:!0,message:`Exact version match (${i})`,severity:"info",required:e,actual:i};if(r<0)return{compatible:!1,message:`SDK version too old. Required: ${e}, Current: ${i}`,severity:"error",required:e,actual:i};try{a=parseVersion(e),t=parseVersion(i)}catch{return{compatible:!0,message:`Compatible (${i} is newer than ${e})`,severity:"info",required:e,actual:i}}return t.major>a.major?{compatible:!1,message:`Breaking changes in SDK. Required: ${e}, Current: ${i}`,severity:"warning",required:e,actual:i}:{compatible:!0,message:`Compatible (${i} is newer than ${e})`,severity:"info",required:e,actual:i}}function getMinimumVersionFor(e){return{[Capability.ENVELOPE_V1]:"1.0.0",[Capability.ENVELOPE_V2]:"1.1.0",[Capability.ENVELOPE_V3]:"1.2.0",[Capability.ENVELOPE_V4]:"1.3.0",[Capability.ML_KEM_768]:"1.2.0",[Capability.ML_DSA_65]:"1.3.0",[Capability.X25519_ECDH]:"1.0.0",[Capability.ED25519_SIG]:"1.0.0",[Capability.XORIDA]:"1.0.0",[Capability.SPLIT_CHANNEL]:"1.1.0",[Capability.TRUST_REGISTRY]:"1.0.0",[Capability.SERVICE_DISCOVERY]:"1.1.0",[Capability.INVITE_SYSTEM]:"1.1.0",[Capability.AGENT_CALL]:"1.0.0",[Capability.XFETCH]:"1.2.0",[Capability.DUAL_MODE]:"1.2.0",[Capability.BACKUP_RESTORE]:"1.3.0",[Capability.CORRELATION_ID]:"1.3.0",[Capability.STRUCTURED_LOGGING]:"1.3.0",[Capability.DID_SUCCESSION]:"1.2.0",[Capability.GATEWAY_STATE]:"1.2.0",[Capability.SUBSCRIPTION_PROOF]:"1.2.0",[Capability.POLICY_ENGINE]:"1.1.0",[Capability.APPROVAL_FLOW]:"1.1.0",[Capability.GUARDRAILS]:"1.2.0",[Capability.HTTP_COMPAT]:"1.2.0",[Capability.DID_WEB]:"1.1.0",[Capability.DID_PRIVATEME]:"1.2.0",[Capability.REDIS_NONCE]:"1.1.0",[Capability.RETRY_TRANSPORT]:"1.1.0"}[e]}function assertMinimumVersion(e,i){const r=checkCompatibility(e);if(!r.compatible&&"error"===r.severity){const a=i?`${i} requires xBind >= ${e} (current: ${VERSION_METADATA.semver})`:r.message;throw new Error(a)}}