@private.me/xbind 3.0.2 → 3.0.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.
Files changed (221) hide show
  1. package/README.md +2366 -204
  2. package/README.md.backup +2121 -0
  3. package/dist-standalone/_deps/mldsa-wasm/dist/mldsa.js +1 -1920
  4. package/dist-standalone/_deps/shared/cjs/errors.js +1 -729
  5. package/dist-standalone/_deps/shared/cjs/index.js +1 -463
  6. package/dist-standalone/_deps/shared/cjs/types.js +1 -315
  7. package/dist-standalone/_deps/shared/errors.js +1 -244
  8. package/dist-standalone/_deps/shared/index.js +1 -72
  9. package/dist-standalone/_deps/shared/types.js +1 -86
  10. package/dist-standalone/_deps/ux-helpers/cjs/errors.js +1 -1
  11. package/dist-standalone/_deps/ux-helpers/cjs/index.js +1 -1
  12. package/dist-standalone/_deps/ux-helpers/cjs/pagination.js +1 -1
  13. package/dist-standalone/_deps/ux-helpers/cjs/progress.js +1 -1
  14. package/dist-standalone/_deps/ux-helpers/cjs/search.js +1 -1
  15. package/dist-standalone/_deps/ux-helpers/cjs/types.js +1 -1
  16. package/dist-standalone/_deps/ux-helpers/errors.js +1 -1
  17. package/dist-standalone/_deps/ux-helpers/index.js +1 -1
  18. package/dist-standalone/_deps/ux-helpers/pagination.js +1 -1
  19. package/dist-standalone/_deps/ux-helpers/progress.js +1 -1
  20. package/dist-standalone/_deps/ux-helpers/search.js +1 -1
  21. package/dist-standalone/_deps/xchange/auto-accept.js +1 -1
  22. package/dist-standalone/_deps/xchange/cjs/auto-accept.js +1 -1
  23. package/dist-standalone/_deps/xchange/cjs/errors.js +1 -1
  24. package/dist-standalone/_deps/xchange/cjs/index.js +1 -1
  25. package/dist-standalone/_deps/xchange/cjs/invite-client.js +1 -1
  26. package/dist-standalone/_deps/xchange/cjs/lazy-init.js +1 -1
  27. package/dist-standalone/_deps/xchange/cjs/trust-integration.js +1 -1
  28. package/dist-standalone/_deps/xchange/cjs/xchange.js +1 -1
  29. package/dist-standalone/_deps/xchange/errors.js +1 -1
  30. package/dist-standalone/_deps/xchange/index.js +1 -1
  31. package/dist-standalone/_deps/xchange/invite-client.js +1 -1
  32. package/dist-standalone/_deps/xchange/lazy-init.js +1 -1
  33. package/dist-standalone/_deps/xchange/trust-integration.js +1 -1
  34. package/dist-standalone/_deps/xchange/xchange.js +1 -1
  35. package/dist-standalone/_deps/xregistry/cjs/discovery.js +1 -1
  36. package/dist-standalone/_deps/xregistry/cjs/errors.js +1 -1
  37. package/dist-standalone/_deps/xregistry/cjs/index.js +1 -1
  38. package/dist-standalone/_deps/xregistry/cjs/registry.js +1 -1
  39. package/dist-standalone/_deps/xregistry/cjs/schema.js +1 -1
  40. package/dist-standalone/_deps/xregistry/cjs/types.js +1 -1
  41. package/dist-standalone/_deps/xregistry/discovery.js +1 -1
  42. package/dist-standalone/_deps/xregistry/errors.js +1 -1
  43. package/dist-standalone/_deps/xregistry/index.js +1 -1
  44. package/dist-standalone/_deps/xregistry/registry.js +1 -1
  45. package/dist-standalone/_deps/xregistry/schema.js +1 -1
  46. package/dist-standalone/_deps/xregistry/types.js +1 -1
  47. package/dist-standalone/agent-call.d.ts +2 -2
  48. package/dist-standalone/agent-call.js +1 -659
  49. package/dist-standalone/agent-sdk.js +1 -328
  50. package/dist-standalone/agent.d.ts +2 -0
  51. package/dist-standalone/agent.js +1 -1800
  52. package/dist-standalone/approval.js +1 -193
  53. package/dist-standalone/async-iterators.d.ts +3 -3
  54. package/dist-standalone/async-iterators.js +1 -382
  55. package/dist-standalone/auth.js +1 -219
  56. package/dist-standalone/auto-accept.js +1 -229
  57. package/dist-standalone/backup-config.js +1 -201
  58. package/dist-standalone/backup.js +1 -326
  59. package/dist-standalone/batch-operations.js +1 -388
  60. package/dist-standalone/cancellation.js +1 -477
  61. package/dist-standalone/checkpoint.js +1 -186
  62. package/dist-standalone/circuit-breaker.js +1 -468
  63. package/dist-standalone/cjs/agent-call.js +1 -701
  64. package/dist-standalone/cjs/agent-sdk.js +1 -332
  65. package/dist-standalone/cjs/agent.js +1 -1837
  66. package/dist-standalone/cjs/approval.js +1 -199
  67. package/dist-standalone/cjs/async-iterators.js +1 -392
  68. package/dist-standalone/cjs/auth.js +1 -225
  69. package/dist-standalone/cjs/auto-accept.js +1 -233
  70. package/dist-standalone/cjs/backup-config.js +1 -207
  71. package/dist-standalone/cjs/backup.js +1 -330
  72. package/dist-standalone/cjs/batch-operations.js +1 -397
  73. package/dist-standalone/cjs/cancellation.js +1 -490
  74. package/dist-standalone/cjs/checkpoint.js +1 -193
  75. package/dist-standalone/cjs/circuit-breaker.js +1 -476
  76. package/dist-standalone/cjs/cli/init.js +1 -492
  77. package/dist-standalone/cjs/config-validation.js +1 -522
  78. package/dist-standalone/cjs/connect.js +1 -312
  79. package/dist-standalone/cjs/connection-pool.js +1 -506
  80. package/dist-standalone/cjs/correlation-id.js +1 -339
  81. package/dist-standalone/cjs/crypto-utils.js +1 -176
  82. package/dist-standalone/cjs/debug-mode.js +1 -534
  83. package/dist-standalone/cjs/did-document.js +1 -101
  84. package/dist-standalone/cjs/did-privateme.js +1 -130
  85. package/dist-standalone/cjs/did-web.js +1 -201
  86. package/dist-standalone/cjs/discovery.js +1 -462
  87. package/dist-standalone/cjs/dual-mode.js +1 -251
  88. package/dist-standalone/cjs/email-templates.js +1 -313
  89. package/dist-standalone/cjs/email-transport.js +1 -239
  90. package/dist-standalone/cjs/envelope.js +1 -538
  91. package/dist-standalone/cjs/errors.js +1 -913
  92. package/dist-standalone/cjs/event-emitter.js +1 -461
  93. package/dist-standalone/cjs/gateway-state.js +1 -55
  94. package/dist-standalone/cjs/gateway-transport.js +1 -120
  95. package/dist-standalone/cjs/graceful-degradation.js +1 -403
  96. package/dist-standalone/cjs/guardrails.js +1 -223
  97. package/dist-standalone/cjs/health-check.js +1 -336
  98. package/dist-standalone/cjs/http-compat.js +1 -272
  99. package/dist-standalone/cjs/http-status-map.js +1 -571
  100. package/dist-standalone/cjs/identity.js +1 -645
  101. package/dist-standalone/cjs/index.js +1 -406
  102. package/dist-standalone/cjs/invitation.js +1 -421
  103. package/dist-standalone/cjs/invite.js +1 -328
  104. package/dist-standalone/cjs/key-agreement.js +1 -335
  105. package/dist-standalone/cjs/lazy-init.js +1 -300
  106. package/dist-standalone/cjs/logger.js +1 -291
  107. package/dist-standalone/cjs/loopback-transport.js +1 -0
  108. package/dist-standalone/cjs/mdns-discovery.js +1 -202
  109. package/dist-standalone/cjs/nonce-store.js +1 -80
  110. package/dist-standalone/cjs/pairing-manager.js +1 -223
  111. package/dist-standalone/cjs/plugin-system.js +1 -264
  112. package/dist-standalone/cjs/plugins/logging.js +1 -168
  113. package/dist-standalone/cjs/plugins/metrics.js +1 -181
  114. package/dist-standalone/cjs/plugins/validation.js +1 -302
  115. package/dist-standalone/cjs/policy.js +1 -320
  116. package/dist-standalone/cjs/progress-callbacks.js +1 -583
  117. package/dist-standalone/cjs/redis-nonce-store.js +1 -76
  118. package/dist-standalone/cjs/registry-middleware.js +1 -50
  119. package/dist-standalone/cjs/retry-strategies.js +1 -544
  120. package/dist-standalone/cjs/retry-transport.js +1 -102
  121. package/dist-standalone/cjs/runtime/browser.js +1 -533
  122. package/dist-standalone/cjs/runtime/edge.js +1 -526
  123. package/dist-standalone/cjs/runtime/react-native.js +1 -394
  124. package/dist-standalone/cjs/security-policy.js +1 -245
  125. package/dist-standalone/cjs/serialization.js +1 -1040
  126. package/dist-standalone/cjs/split-channel.js +1 -225
  127. package/dist-standalone/cjs/subscription-proof.js +1 -230
  128. package/dist-standalone/cjs/succession.js +1 -148
  129. package/dist-standalone/cjs/timeouts.js +1 -412
  130. package/dist-standalone/cjs/trace-context.js +1 -424
  131. package/dist-standalone/cjs/trace-spans.js +1 -495
  132. package/dist-standalone/cjs/transport.js +1 -63
  133. package/dist-standalone/cjs/trust-registry.js +1 -991
  134. package/dist-standalone/cjs/types/error-response.js +1 -56
  135. package/dist-standalone/cjs/vault-auth.js +1 -178
  136. package/dist-standalone/cjs/vault-store-loader.js +1 -194
  137. package/dist-standalone/cjs/verify.js +1 -25
  138. package/dist-standalone/cjs/version-info.js +1 -543
  139. package/dist-standalone/cjs/xfetch.js +1 -340
  140. package/dist-standalone/cli/init.js +1 -455
  141. package/dist-standalone/cli/setup.js +1 -514
  142. package/dist-standalone/cli/types.js +1 -27
  143. package/dist-standalone/cli/xbind.js +1 -148
  144. package/dist-standalone/config-validation.js +1 -513
  145. package/dist-standalone/connect.js +1 -274
  146. package/dist-standalone/connection-pool.js +1 -500
  147. package/dist-standalone/correlation-id.js +1 -326
  148. package/dist-standalone/crypto-utils.d.ts +2 -7
  149. package/dist-standalone/crypto-utils.js +1 -157
  150. package/dist-standalone/debug-mode.js +1 -510
  151. package/dist-standalone/did-document.js +1 -96
  152. package/dist-standalone/did-privateme.js +1 -121
  153. package/dist-standalone/did-web.js +1 -196
  154. package/dist-standalone/discovery.js +1 -458
  155. package/dist-standalone/dual-mode.js +1 -247
  156. package/dist-standalone/email-templates.js +1 -309
  157. package/dist-standalone/email-transport.d.ts +2 -2
  158. package/dist-standalone/email-transport.js +1 -232
  159. package/dist-standalone/envelope.js +1 -525
  160. package/dist-standalone/errors.d.ts +13 -3
  161. package/dist-standalone/errors.js +1 -896
  162. package/dist-standalone/event-emitter.js +1 -456
  163. package/dist-standalone/gateway-state.d.ts +1 -1
  164. package/dist-standalone/gateway-state.js +1 -51
  165. package/dist-standalone/gateway-transport.js +1 -116
  166. package/dist-standalone/graceful-degradation.js +1 -396
  167. package/dist-standalone/guardrails.js +1 -216
  168. package/dist-standalone/health-check.d.ts +5 -1
  169. package/dist-standalone/health-check.js +1 -332
  170. package/dist-standalone/http-compat.d.ts +1 -1
  171. package/dist-standalone/http-compat.js +1 -267
  172. package/dist-standalone/http-status-map.js +1 -561
  173. package/dist-standalone/identity.js +1 -619
  174. package/dist-standalone/index.d.ts +15 -4
  175. package/dist-standalone/index.js +1 -78
  176. package/dist-standalone/invitation.js +1 -415
  177. package/dist-standalone/invite.js +1 -324
  178. package/dist-standalone/key-agreement.js +1 -325
  179. package/dist-standalone/lazy-init.d.ts +11 -6
  180. package/dist-standalone/lazy-init.js +1 -295
  181. package/dist-standalone/logger.js +1 -285
  182. package/dist-standalone/loopback-transport.d.ts +87 -0
  183. package/dist-standalone/loopback-transport.js +1 -0
  184. package/dist-standalone/mdns-discovery.js +1 -195
  185. package/dist-standalone/nonce-store.js +1 -76
  186. package/dist-standalone/pairing-manager.js +1 -219
  187. package/dist-standalone/plugin-system.js +1 -257
  188. package/dist-standalone/plugins/logging.js +1 -163
  189. package/dist-standalone/plugins/metrics.d.ts +4 -4
  190. package/dist-standalone/plugins/metrics.js +1 -176
  191. package/dist-standalone/plugins/validation.js +1 -297
  192. package/dist-standalone/policy.js +1 -315
  193. package/dist-standalone/progress-callbacks.js +1 -576
  194. package/dist-standalone/redis-nonce-store.js +1 -72
  195. package/dist-standalone/registry-middleware.js +1 -47
  196. package/dist-standalone/retry-strategies.js +1 -534
  197. package/dist-standalone/retry-transport.js +1 -98
  198. package/dist-standalone/runtime/browser.js +1 -516
  199. package/dist-standalone/runtime/edge.js +1 -511
  200. package/dist-standalone/runtime/react-native.d.ts +1 -1
  201. package/dist-standalone/runtime/react-native.js +1 -383
  202. package/dist-standalone/security-policy.js +1 -239
  203. package/dist-standalone/serialization.js +1 -1031
  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.js +1 -59
  211. package/dist-standalone/trust-registry.d.ts +3 -3
  212. package/dist-standalone/trust-registry.js +1 -950
  213. package/dist-standalone/types/error-response.js +1 -52
  214. package/dist-standalone/vault-auth.js +1 -174
  215. package/dist-standalone/vault-store-loader.d.ts +9 -0
  216. package/dist-standalone/vault-store-loader.js +1 -187
  217. package/dist-standalone/verify.js +1 -16
  218. package/dist-standalone/version-info.js +1 -530
  219. package/dist-standalone/xfetch.js +1 -335
  220. package/package.json +1 -1
  221. 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)}}