@oxy.so/core 4.5.0-oxy-one.1 → 4.5.0

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 (282) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/HttpService.js +63 -19
  3. package/dist/cjs/api/accounts.js +10 -3
  4. package/dist/cjs/api/agency.js +3 -1
  5. package/dist/cjs/api/apps.js +15 -4
  6. package/dist/cjs/api/assets.js +39 -11
  7. package/dist/cjs/api/auth.js +28 -8
  8. package/dist/cjs/api/billing.js +24 -7
  9. package/dist/cjs/api/civic.js +14 -4
  10. package/dist/cjs/api/follows.js +9 -2
  11. package/dist/cjs/api/identity.js +31 -9
  12. package/dist/cjs/api/nodes.js +3 -1
  13. package/dist/cjs/api/privacy.js +8 -2
  14. package/dist/cjs/api/session.js +15 -4
  15. package/dist/cjs/api/store.js +15 -5
  16. package/dist/cjs/api/topics.js +10 -3
  17. package/dist/cjs/api/users.js +16 -4
  18. package/dist/cjs/boot/sessionColdBoot.js +40 -13
  19. package/dist/cjs/constants/version.js +6 -6
  20. package/dist/cjs/crypto/identityMarker.js +3 -1
  21. package/dist/cjs/crypto/identityProof.js +6 -1
  22. package/dist/cjs/crypto/keyManager.js +87 -32
  23. package/dist/cjs/crypto/recoveryPhrase.js +2 -2
  24. package/dist/cjs/crypto/signatureService.js +3 -4
  25. package/dist/cjs/i18n/index.js +16 -3
  26. package/dist/cjs/i18n/locales/ar-SA.js +366 -366
  27. package/dist/cjs/i18n/locales/ca-ES.js +366 -366
  28. package/dist/cjs/i18n/locales/de-DE.js +366 -366
  29. package/dist/cjs/i18n/locales/en-US.js +1994 -1994
  30. package/dist/cjs/i18n/locales/es-ES.js +1994 -1994
  31. package/dist/cjs/i18n/locales/fr-FR.js +366 -366
  32. package/dist/cjs/i18n/locales/it-IT.js +366 -366
  33. package/dist/cjs/i18n/locales/ja-JP.js +366 -366
  34. package/dist/cjs/i18n/locales/ko-KR.js +366 -366
  35. package/dist/cjs/i18n/locales/pt-PT.js +366 -366
  36. package/dist/cjs/i18n/locales/zh-CN.js +366 -366
  37. package/dist/cjs/inference/OxyInferenceClient.js +12 -18
  38. package/dist/cjs/models/interfaces.js +11 -11
  39. package/dist/cjs/server/OxyServer.js +86 -28
  40. package/dist/cjs/server/agentAccount.js +6 -2
  41. package/dist/cjs/server/aliaMachineCredential.js +39 -14
  42. package/dist/cjs/server/auth.js +5 -4
  43. package/dist/cjs/server/capabilityTicket.js +5 -5
  44. package/dist/cjs/server/index.js +2 -1
  45. package/dist/cjs/server/liveCapabilityTicket.js +4 -1
  46. package/dist/cjs/server/middleware.js +61 -42
  47. package/dist/cjs/server/namespaces.js +28 -7
  48. package/dist/cjs/server/requesterAssertion.js +36 -30
  49. package/dist/cjs/server/serviceTokenLifetime.js +7 -4
  50. package/dist/cjs/server/traffic.js +53 -14
  51. package/dist/cjs/server/trafficNodeHttp.js +33 -8
  52. package/dist/cjs/server/workloadIdentity.client.js +4 -0
  53. package/dist/cjs/server/workloadIdentity.js +28 -1
  54. package/dist/cjs/session/SessionClient.js +54 -17
  55. package/dist/cjs/session/accountDelegationAccess.js +4 -6
  56. package/dist/cjs/session/accountDialogController.js +1 -1
  57. package/dist/cjs/session/authStateStore.js +18 -9
  58. package/dist/cjs/session/identityPin.js +6 -2
  59. package/dist/cjs/session/refresh.js +81 -23
  60. package/dist/cjs/session/sharedDeviceCredential.js +28 -15
  61. package/dist/cjs/shared/utils/errorUtils.js +1 -1
  62. package/dist/cjs/shared/utils/networkUtils.js +1 -1
  63. package/dist/cjs/shared/utils/themeUtils.js +1 -1
  64. package/dist/cjs/utils/accountCacheSweep.js +3 -1
  65. package/dist/cjs/utils/accountUtils.js +1 -3
  66. package/dist/cjs/utils/asyncUtils.js +1 -1
  67. package/dist/cjs/utils/authHelpers.js +2 -1
  68. package/dist/cjs/utils/avatarUtils.js +4 -2
  69. package/dist/cjs/utils/cache.js +1 -1
  70. package/dist/cjs/utils/cacheKey.js +3 -1
  71. package/dist/cjs/utils/deviceManager.js +4 -4
  72. package/dist/cjs/utils/errorUtils.js +6 -4
  73. package/dist/cjs/utils/languageUtils.js +404 -57
  74. package/dist/cjs/utils/profileLinks.js +1 -3
  75. package/dist/cjs/utils/requestUtils.js +7 -1
  76. package/dist/cjs/utils/userIdentity.js +1 -1
  77. package/dist/cjs/utils/validationUtils.js +5 -6
  78. package/dist/esm/HttpService.js +64 -20
  79. package/dist/esm/api/accounts.js +11 -4
  80. package/dist/esm/api/agency.js +3 -1
  81. package/dist/esm/api/apps.js +15 -4
  82. package/dist/esm/api/assets.js +39 -11
  83. package/dist/esm/api/auth.js +28 -8
  84. package/dist/esm/api/billing.js +25 -8
  85. package/dist/esm/api/civic.js +14 -4
  86. package/dist/esm/api/follows.js +9 -2
  87. package/dist/esm/api/identity.js +31 -9
  88. package/dist/esm/api/nodes.js +3 -1
  89. package/dist/esm/api/privacy.js +8 -2
  90. package/dist/esm/api/session.js +15 -4
  91. package/dist/esm/api/store.js +15 -5
  92. package/dist/esm/api/topics.js +10 -3
  93. package/dist/esm/api/users.js +16 -4
  94. package/dist/esm/boot/sessionColdBoot.js +41 -14
  95. package/dist/esm/constants/version.js +6 -6
  96. package/dist/esm/crypto/identityMarker.js +3 -1
  97. package/dist/esm/crypto/identityProof.js +6 -1
  98. package/dist/esm/crypto/internal.js +1 -1
  99. package/dist/esm/crypto/keyManager.js +87 -32
  100. package/dist/esm/crypto/recoveryPhrase.js +2 -2
  101. package/dist/esm/crypto/signatureService.js +3 -4
  102. package/dist/esm/i18n/index.js +16 -3
  103. package/dist/esm/i18n/locales/ar-SA.js +366 -366
  104. package/dist/esm/i18n/locales/ca-ES.js +366 -366
  105. package/dist/esm/i18n/locales/de-DE.js +366 -366
  106. package/dist/esm/i18n/locales/en-US.js +1994 -1994
  107. package/dist/esm/i18n/locales/es-ES.js +1994 -1994
  108. package/dist/esm/i18n/locales/fr-FR.js +366 -366
  109. package/dist/esm/i18n/locales/it-IT.js +366 -366
  110. package/dist/esm/i18n/locales/ja-JP.js +366 -366
  111. package/dist/esm/i18n/locales/ko-KR.js +366 -366
  112. package/dist/esm/i18n/locales/pt-PT.js +366 -366
  113. package/dist/esm/i18n/locales/zh-CN.js +366 -366
  114. package/dist/esm/index.js +1 -1
  115. package/dist/esm/inference/OxyInferenceClient.js +13 -19
  116. package/dist/esm/models/interfaces.js +11 -11
  117. package/dist/esm/server/OxyServer.js +87 -29
  118. package/dist/esm/server/agentAccount.js +6 -2
  119. package/dist/esm/server/aliaMachineCredential.js +39 -14
  120. package/dist/esm/server/auth.js +6 -5
  121. package/dist/esm/server/capabilityTicket.js +6 -6
  122. package/dist/esm/server/index.js +5 -5
  123. package/dist/esm/server/liveCapabilityTicket.js +6 -3
  124. package/dist/esm/server/middleware.js +62 -43
  125. package/dist/esm/server/namespaces.js +31 -10
  126. package/dist/esm/server/requesterAssertion.js +36 -30
  127. package/dist/esm/server/serviceTokenLifetime.js +7 -4
  128. package/dist/esm/server/traffic.js +55 -16
  129. package/dist/esm/server/trafficNodeHttp.js +34 -9
  130. package/dist/esm/server/userInvalidation.js +1 -1
  131. package/dist/esm/server/workloadIdentity.client.js +3 -0
  132. package/dist/esm/server/workloadIdentity.js +27 -1
  133. package/dist/esm/session/SessionClient.js +54 -17
  134. package/dist/esm/session/accountDelegationAccess.js +5 -7
  135. package/dist/esm/session/accountDialogController.js +1 -1
  136. package/dist/esm/session/authStateStore.js +18 -9
  137. package/dist/esm/session/identityPin.js +6 -2
  138. package/dist/esm/session/refresh.js +82 -24
  139. package/dist/esm/session/sharedDeviceCredential.js +28 -15
  140. package/dist/esm/shared/utils/errorUtils.js +1 -1
  141. package/dist/esm/shared/utils/networkUtils.js +1 -1
  142. package/dist/esm/shared/utils/themeUtils.js +1 -1
  143. package/dist/esm/utils/accountCacheSweep.js +3 -1
  144. package/dist/esm/utils/accountUtils.js +1 -3
  145. package/dist/esm/utils/asyncUtils.js +1 -1
  146. package/dist/esm/utils/authHelpers.js +2 -1
  147. package/dist/esm/utils/avatarUtils.js +4 -2
  148. package/dist/esm/utils/cache.js +1 -1
  149. package/dist/esm/utils/cacheKey.js +3 -1
  150. package/dist/esm/utils/deviceManager.js +4 -4
  151. package/dist/esm/utils/errorUtils.js +6 -4
  152. package/dist/esm/utils/languageUtils.js +404 -57
  153. package/dist/esm/utils/profileLinks.js +1 -3
  154. package/dist/esm/utils/requestUtils.js +7 -1
  155. package/dist/esm/utils/userIdentity.js +1 -1
  156. package/dist/esm/utils/validationUtils.js +5 -6
  157. package/dist/types/HttpService.d.ts +1 -1
  158. package/dist/types/api/accounts.d.ts +1 -1
  159. package/dist/types/api/apps.d.ts +4 -4
  160. package/dist/types/crypto/internal.d.ts +1 -1
  161. package/dist/types/index.d.ts +4 -4
  162. package/dist/types/server/index.d.ts +6 -6
  163. package/dist/types/server/workloadIdentity.client.d.ts +5 -1
  164. package/dist/types/server/workloadIdentity.d.ts +26 -0
  165. package/dist/types/session/accountDelegationAccess.d.ts +1 -1
  166. package/dist/types/session/index.d.ts +1 -1
  167. package/dist/types/utils/userIdentity.d.ts +1 -1
  168. package/dist/types/utils/validationUtils.d.ts +4 -5
  169. package/package.json +2 -3
  170. package/src/HttpService.ts +183 -53
  171. package/src/OxyServices.errors.ts +7 -3
  172. package/src/OxyServices.ts +6 -2
  173. package/src/api/accounts.ts +76 -26
  174. package/src/api/agency.ts +24 -9
  175. package/src/api/appData.ts +12 -2
  176. package/src/api/apps.ts +81 -31
  177. package/src/api/assets.ts +113 -43
  178. package/src/api/auth.ts +145 -77
  179. package/src/api/billing.ts +112 -65
  180. package/src/api/civic.ts +61 -19
  181. package/src/api/contacts.ts +4 -1
  182. package/src/api/devices.ts +54 -21
  183. package/src/api/follows.ts +88 -31
  184. package/src/api/identity.ts +101 -33
  185. package/src/api/linkedAccounts.ts +26 -8
  186. package/src/api/nodes.ts +18 -6
  187. package/src/api/notifications.ts +26 -6
  188. package/src/api/privacy.ts +42 -8
  189. package/src/api/reputation.ts +18 -7
  190. package/src/api/session.ts +23 -5
  191. package/src/api/store.ts +81 -31
  192. package/src/api/topics.ts +18 -6
  193. package/src/api/users.ts +98 -35
  194. package/src/boot/sessionColdBoot.ts +60 -19
  195. package/src/civic/payloads.ts +1 -4
  196. package/src/client/context.ts +6 -1
  197. package/src/constants/version.ts +7 -6
  198. package/src/crypto/aead.ts +1 -5
  199. package/src/crypto/ecdh.ts +1 -4
  200. package/src/crypto/identityDerivations.ts +5 -1
  201. package/src/crypto/identityMarker.ts +3 -1
  202. package/src/crypto/identityProof.ts +6 -1
  203. package/src/crypto/index.ts +11 -11
  204. package/src/crypto/internal.ts +6 -1
  205. package/src/crypto/keyManager.ts +348 -98
  206. package/src/crypto/recoveryPhrase.ts +14 -9
  207. package/src/crypto/registrationPow.ts +1 -1
  208. package/src/crypto/signatureService.ts +14 -6
  209. package/src/i18n/accountCategoryLabels.ts +1 -4
  210. package/src/i18n/accountRoleLabels.ts +1 -4
  211. package/src/i18n/index.ts +25 -7
  212. package/src/i18n/locales/ar-SA.ts +375 -366
  213. package/src/i18n/locales/ca-ES.ts +382 -366
  214. package/src/i18n/locales/de-DE.ts +387 -366
  215. package/src/i18n/locales/en-US.ts +2034 -1994
  216. package/src/i18n/locales/es-ES.ts +2043 -1994
  217. package/src/i18n/locales/fr-FR.ts +387 -366
  218. package/src/i18n/locales/it-IT.ts +380 -366
  219. package/src/i18n/locales/ja-JP.ts +380 -366
  220. package/src/i18n/locales/ko-KR.ts +377 -366
  221. package/src/i18n/locales/pt-PT.ts +383 -366
  222. package/src/i18n/locales/zh-CN.ts +373 -366
  223. package/src/i18n/trustTierLabels.ts +1 -4
  224. package/src/index.ts +371 -349
  225. package/src/inference/OxyInferenceClient.ts +784 -780
  226. package/src/models/interfaces.ts +30 -27
  227. package/src/server/OxyServer.ts +227 -68
  228. package/src/server/agentAccount.ts +8 -2
  229. package/src/server/aliaMachineCredential.ts +57 -16
  230. package/src/server/auth.ts +9 -5
  231. package/src/server/capabilityTicket.ts +30 -21
  232. package/src/server/index.ts +29 -6
  233. package/src/server/liveCapabilityTicket.ts +31 -9
  234. package/src/server/middleware.ts +212 -121
  235. package/src/server/namespaces.ts +247 -94
  236. package/src/server/rateLimit.ts +2 -4
  237. package/src/server/requesterAssertion.ts +93 -54
  238. package/src/server/serviceTokenLifetime.ts +9 -4
  239. package/src/server/traffic.ts +117 -23
  240. package/src/server/trafficNodeHttp.ts +61 -14
  241. package/src/server/userInvalidation.ts +1 -4
  242. package/src/server/workloadIdentity.client.ts +12 -1
  243. package/src/server/workloadIdentity.ts +52 -5
  244. package/src/session/SessionClient.ts +170 -49
  245. package/src/session/accountDelegationAccess.ts +24 -31
  246. package/src/session/accountDialogController.ts +59 -14
  247. package/src/session/accountSwitchTargets.ts +10 -15
  248. package/src/session/authStateStore.ts +121 -81
  249. package/src/session/deviceDirectory.ts +1 -3
  250. package/src/session/identityPin.ts +10 -11
  251. package/src/session/identitySession.ts +3 -1
  252. package/src/session/index.ts +87 -82
  253. package/src/session/refresh.ts +138 -44
  254. package/src/session/sessionClientHost.ts +1 -3
  255. package/src/session/sharedDeviceCredential.ts +35 -14
  256. package/src/session/socketLoader.ts +9 -2
  257. package/src/shared/utils/errorUtils.ts +5 -2
  258. package/src/shared/utils/networkUtils.ts +5 -8
  259. package/src/shared/utils/themeUtils.ts +2 -6
  260. package/src/types/buffer.d.ts +66 -21
  261. package/src/types/expo-secure-store.d.ts +5 -1
  262. package/src/utils/accountCacheSweep.ts +4 -5
  263. package/src/utils/accountUtils.ts +107 -108
  264. package/src/utils/apiUtils.ts +3 -3
  265. package/src/utils/asyncUtils.ts +2 -2
  266. package/src/utils/authHelpers.ts +10 -5
  267. package/src/utils/avatarUtils.ts +11 -6
  268. package/src/utils/cache.ts +9 -10
  269. package/src/utils/cacheKey.ts +5 -1
  270. package/src/utils/coldBoot.ts +1 -3
  271. package/src/utils/commonsDelivery.ts +1 -4
  272. package/src/utils/deviceManager.ts +15 -14
  273. package/src/utils/errorUtils.ts +68 -86
  274. package/src/utils/languageUtils.ts +407 -58
  275. package/src/utils/oauthPkce.ts +1 -4
  276. package/src/utils/platform.ts +0 -1
  277. package/src/utils/profileLinks.ts +2 -5
  278. package/src/utils/requestUtils.ts +18 -14
  279. package/src/utils/sessionUtils.ts +34 -33
  280. package/src/utils/userHandle.ts +3 -1
  281. package/src/utils/userIdentity.ts +1 -1
  282. package/src/utils/validationUtils.ts +11 -9
@@ -44,7 +44,11 @@ import { runColdBoot, type ColdBootOutcome, type ColdBootStep } from '../utils/c
44
44
  import { isNative as detectNative } from '../utils/platform';
45
45
  import { logger } from '../logger';
46
46
  import { computeIdentityTag } from '../utils/cacheKey';
47
- import { TOKEN_REFRESH_LEAD_MS, refreshDeviceSecretArm, refreshSharedDeviceArm } from '../session/refresh';
47
+ import {
48
+ TOKEN_REFRESH_LEAD_MS,
49
+ refreshDeviceSecretArm,
50
+ refreshSharedDeviceArm,
51
+ } from '../session/refresh';
48
52
  import {
49
53
  establishIdentitySession,
50
54
  resolveIdentityPin,
@@ -156,7 +160,7 @@ export async function runSessionColdBoot(
156
160
 
157
161
  // Non-null ONLY in identity mode; every `!== null` test below therefore reads
158
162
  // as "is this boot identity-bound?" while also narrowing the binding.
159
- const identityBinding = opts.sessionMode === 'identity' ? opts.identity ?? null : null;
163
+ const identityBinding = opts.sessionMode === 'identity' ? (opts.identity ?? null) : null;
160
164
  if (opts.sessionMode === 'identity' && identityBinding === null) {
161
165
  logger.error(
162
166
  'runSessionColdBoot: sessionMode "identity" requires an `identity` binding — refusing to run any lane (an identity-bound client must never adopt the device active account)',
@@ -211,9 +215,19 @@ export async function runSessionColdBoot(
211
215
  steps.push({
212
216
  id: 'warm-token-plant',
213
217
  run: async () => {
214
- if (identityBinding === null && isNative && await store.isAutomaticIdentitySignInSuppressed?.()) return { kind: 'skip' };
218
+ if (
219
+ identityBinding === null &&
220
+ isNative &&
221
+ (await store.isAutomaticIdentitySignInSuppressed?.())
222
+ )
223
+ return { kind: 'skip' };
215
224
  const persisted = await store.load();
216
- if (!persisted?.accessToken || !persisted.sessionId || !persisted.userId || !persisted.expiresAt) {
225
+ if (
226
+ !persisted?.accessToken ||
227
+ !persisted.sessionId ||
228
+ !persisted.userId ||
229
+ !persisted.expiresAt
230
+ ) {
217
231
  return { kind: 'skip' };
218
232
  }
219
233
  // Guard a malformed `expiresAt` (Date.parse -> NaN): treat as not-valid and
@@ -287,10 +301,14 @@ export async function runSessionColdBoot(
287
301
  },
288
302
  };
289
303
  case 'invalid-secret': {
290
- if (identityBinding === null && store.setAutomaticIdentitySignInSuppressed && await store.isAutomaticIdentitySignInSuppressed?.()) {
304
+ if (
305
+ identityBinding === null &&
306
+ store.setAutomaticIdentitySignInSuppressed &&
307
+ (await store.isAutomaticIdentitySignInSuppressed?.())
308
+ ) {
291
309
  rejectedLocalHolder = true;
292
310
  signedOutReason = 'no_session';
293
- return {kind: 'skip'};
311
+ return { kind: 'skip' };
294
312
  }
295
313
  // Stale/diverged secret — drop it so the mint lane stops firing. On
296
314
  // native the Commons-proof step below can still recover; on web this ends
@@ -329,10 +347,10 @@ export async function runSessionColdBoot(
329
347
  return { kind: 'skip' };
330
348
  case 'transient':
331
349
  // Network / 5xx: keep the secret; a later attempt can succeed.
332
- logger.debug(
333
- 'device-secret mint failed (transient) — keeping secret',
334
- { component: 'sessionColdBoot', method: 'device-secret-mint' },
335
- );
350
+ logger.debug('device-secret mint failed (transient) — keeping secret', {
351
+ component: 'sessionColdBoot',
352
+ method: 'device-secret-mint',
353
+ });
336
354
  return { kind: 'skip' };
337
355
  case 'session-ended':
338
356
  // The prior holder/epoch was superseded. This boot must not turn a
@@ -404,14 +422,25 @@ export async function runSessionColdBoot(
404
422
  // like every other network step.
405
423
  enabled: () => isNative && !isOffline() && !accountRecoverySuperseded,
406
424
  run: async () => {
407
- const result = await refreshSharedDeviceArm({oxy, store, shared: sharedSlot, rejectedLocalHolder});
425
+ const result = await refreshSharedDeviceArm({
426
+ oxy,
427
+ store,
428
+ shared: sharedSlot,
429
+ rejectedLocalHolder,
430
+ });
408
431
  if (result.status === 'ok') {
409
- return {kind: 'session', session: {
410
- sessionId: result.sessionId, userId: result.userId, accessToken: result.token, state: result.state,
411
- }};
432
+ return {
433
+ kind: 'session',
434
+ session: {
435
+ sessionId: result.sessionId,
436
+ userId: result.userId,
437
+ accessToken: result.token,
438
+ state: result.state,
439
+ },
440
+ };
412
441
  }
413
442
  if (result.status === 'no-session') signedOutReason = 'no_session';
414
- return {kind: 'skip'};
443
+ return { kind: 'skip' };
415
444
  },
416
445
  });
417
446
  }
@@ -439,10 +468,18 @@ export async function runSessionColdBoot(
439
468
  id: 'commons-proof-signin',
440
469
  enabled: () => isNative && !isOffline(),
441
470
  run: async () => {
442
- if (accountRecoverySuperseded || await store.isAutomaticIdentitySignInSuppressed?.()) return { kind: 'skip' };
471
+ if (accountRecoverySuperseded || (await store.isAutomaticIdentitySignInSuppressed?.()))
472
+ return { kind: 'skip' };
443
473
  const epoch = oxy.http.getSessionEpoch();
444
- const session = await oxy.auth.signInWithCommonsIdentity({ plantTokens: false, requestOptions: { retry: false } });
445
- if (!session?.accessToken || oxy.http.getSessionEpoch() !== epoch || await store.isAutomaticIdentitySignInSuppressed?.()) {
474
+ const session = await oxy.auth.signInWithCommonsIdentity({
475
+ plantTokens: false,
476
+ requestOptions: { retry: false },
477
+ });
478
+ if (
479
+ !session?.accessToken ||
480
+ oxy.http.getSessionEpoch() !== epoch ||
481
+ (await store.isAutomaticIdentitySignInSuppressed?.())
482
+ ) {
446
483
  return { kind: 'skip' };
447
484
  }
448
485
  // `verifyChallenge` issues a deviceSecret; persist it so the next
@@ -458,7 +495,11 @@ export async function runSessionColdBoot(
458
495
  expiresAt: session.expiresAt,
459
496
  });
460
497
  }
461
- if (oxy.http.getSessionEpoch() !== epoch || await store.isAutomaticIdentitySignInSuppressed?.()) return { kind: 'skip' };
498
+ if (
499
+ oxy.http.getSessionEpoch() !== epoch ||
500
+ (await store.isAutomaticIdentitySignInSuppressed?.())
501
+ )
502
+ return { kind: 'skip' };
462
503
  oxy.session.setAccessToken(session.accessToken);
463
504
  return {
464
505
  kind: 'session',
@@ -44,10 +44,7 @@ function parseCommonsQuery(raw: string): Map<string, string> {
44
44
  const rawKey = eq < 0 ? pair : pair.slice(0, eq);
45
45
  const rawValue = eq < 0 ? '' : pair.slice(eq + 1);
46
46
  try {
47
- params.set(
48
- decodeURIComponent(rawKey),
49
- decodeURIComponent(rawValue.replace(/\+/g, ' ')),
50
- );
47
+ params.set(decodeURIComponent(rawKey), decodeURIComponent(rawValue.replace(/\+/g, ' ')));
51
48
  } catch {
52
49
  // Malformed percent-encoding — keep the raw token rather than throwing, so
53
50
  // a single bad field doesn't sink an otherwise valid payload.
@@ -20,7 +20,12 @@ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
20
20
  export interface ServiceLane {
21
21
  /** Whether a service token can be minted here (a key pair, or workload identity). */
22
22
  readonly available: boolean;
23
- request<T>(method: HttpMethod, url: string, data?: unknown, options?: RequestOptions & { actAs?: string }): Promise<T>;
23
+ request<T>(
24
+ method: HttpMethod,
25
+ url: string,
26
+ data?: unknown,
27
+ options?: RequestOptions & { actAs?: string },
28
+ ): Promise<T>;
24
29
  }
25
30
 
26
31
  export interface OxyContext {
@@ -4,12 +4,13 @@
4
4
  */
5
5
 
6
6
  export const packageInfo = {
7
- name: "@oxy.so/services",
8
- version: "5.2.1",
9
- description: "Reusable OxyHQ module to handle authentication, user management, reputation system (Oxy Trust) and more 🚀",
10
- main: "lib/commonjs/node/index.js",
11
- module: "lib/module/node/index.js",
12
- types: "lib/typescript/node/index.d.ts"
7
+ name: '@oxy.so/services',
8
+ version: '5.2.1',
9
+ description:
10
+ 'Reusable OxyHQ module to handle authentication, user management, reputation system (Oxy Trust) and more 🚀',
11
+ main: 'lib/commonjs/node/index.js',
12
+ module: 'lib/module/node/index.js',
13
+ types: 'lib/typescript/node/index.d.ts',
13
14
  } as const;
14
15
 
15
16
  export const { name, version, description } = packageInfo;
@@ -60,11 +60,7 @@ function randomNonce(): Uint8Array {
60
60
  * @param aad Optional associated data authenticated but not encrypted.
61
61
  * @returns `{ nonce, ciphertext }` — both are required to decrypt.
62
62
  */
63
- export function encryptAead(
64
- key: Uint8Array,
65
- plaintext: Uint8Array,
66
- aad?: Uint8Array,
67
- ): AeadResult {
63
+ export function encryptAead(key: Uint8Array, plaintext: Uint8Array, aad?: Uint8Array): AeadResult {
68
64
  assertKey(key);
69
65
  const nonce = randomNonce();
70
66
  const ciphertext = xchacha20poly1305(key, nonce, aad).encrypt(plaintext);
@@ -29,9 +29,6 @@ import { deriveSecp256k1SharedSecret } from '@oxy.so/protocol/secp256k1';
29
29
  * bytes) or uncompressed (`04` + 64 bytes).
30
30
  * @returns The 32-byte big-endian shared secret.
31
31
  */
32
- export function deriveSharedSecret(
33
- privateKeyHex: string,
34
- otherPublicKeyHex: string,
35
- ): Uint8Array {
32
+ export function deriveSharedSecret(privateKeyHex: string, otherPublicKeyHex: string): Uint8Array {
36
33
  return deriveSecp256k1SharedSecret(privateKeyHex, otherPublicKeyHex);
37
34
  }
@@ -117,6 +117,10 @@ export function signSocialReceiveDigest(
117
117
  * `sha256("auth:${publicKey}:${challenge}:${timestamp}")`, hex. The message
118
118
  * format is the one `POST /auth/verify` checks, unchanged.
119
119
  */
120
- export function authChallengeDigest(publicKey: string, challenge: string, timestamp: number): string {
120
+ export function authChallengeDigest(
121
+ publicKey: string,
122
+ challenge: string,
123
+ timestamp: number,
124
+ ): string {
121
125
  return bytesToHex(sha256(utf8(`auth:${publicKey}:${challenge}:${timestamp}`)));
122
126
  }
@@ -252,7 +252,9 @@ export async function updateIdentityMarker(
252
252
  }
253
253
 
254
254
  const nextOnboarding =
255
- partial.onboardingComplete !== undefined ? partial.onboardingComplete : existing.onboardingComplete;
255
+ partial.onboardingComplete !== undefined
256
+ ? partial.onboardingComplete
257
+ : existing.onboardingComplete;
256
258
  const next: IdentityMarker = {
257
259
  v: 1,
258
260
  publicKey: partial.publicKey ?? existing.publicKey,
@@ -32,5 +32,10 @@ export async function signIdentityProof(
32
32
  throw new Error('identity proof: the claims name a different root');
33
33
  }
34
34
  const signature = await signMessage(buildIdentityProofMessage(claims), identity.privateKey);
35
- return { v: IDENTITY_PROOF_VERSION, challenge: claims.challenge, expiresAt: claims.expiresAt, signature };
35
+ return {
36
+ v: IDENTITY_PROOF_VERSION,
37
+ challenge: claims.challenge,
38
+ expiresAt: claims.expiresAt,
39
+ signature,
40
+ };
36
41
  }
@@ -12,10 +12,10 @@
12
12
  import './polyfill';
13
13
 
14
14
  export {
15
- KeyManager,
16
- IdentityAlreadyExistsError,
17
- IdentityPersistError,
18
- IdentityUnavailableError,
15
+ KeyManager,
16
+ IdentityAlreadyExistsError,
17
+ IdentityPersistError,
18
+ IdentityUnavailableError,
19
19
  } from './keyManager';
20
20
  export type { KeyPair, IdentityStatus, IdentityRecoveryResult } from './keyManager';
21
21
  export { readIdentityMarker, updateIdentityMarker } from './identityMarker';
@@ -36,13 +36,13 @@ export { deriveSharedSecret } from './ecdh';
36
36
  // What the identity key computes without leaving its holder: the same functions
37
37
  // Commons' identity host implements natively on Android.
38
38
  export {
39
- SCOPED_SEED_KDF_SALT,
40
- SOCIAL_RECEIVE_CHAIN_CODE_KEY,
41
- MAX_SOCIAL_RECEIVE_INDEX,
42
- deriveScopedSeedFromKey,
43
- deriveSocialReceiveKey,
44
- signSocialReceiveDigest,
45
- authChallengeDigest,
39
+ SCOPED_SEED_KDF_SALT,
40
+ SOCIAL_RECEIVE_CHAIN_CODE_KEY,
41
+ MAX_SOCIAL_RECEIVE_INDEX,
42
+ deriveScopedSeedFromKey,
43
+ deriveSocialReceiveKey,
44
+ signSocialReceiveDigest,
45
+ authChallengeDigest,
46
46
  } from './identityDerivations';
47
47
 
48
48
  // Identity proofs — the one signed format for operations on a personal root
@@ -17,4 +17,9 @@ export { encryptAead, decryptAead, AEAD_KEY_LENGTH, AEAD_NONCE_LENGTH } from './
17
17
  export { digestIdentityPayload, signIdentityProof } from './identityProof';
18
18
  export { deriveIdentityLinkCode } from './identityLink';
19
19
  export { solveRegistrationPow } from './registrationPow';
20
- export { canonicalize, loadCommonsIdentityBridge, signMessage, verifySignature } from '@oxy.so/protocol';
20
+ export {
21
+ canonicalize,
22
+ loadCommonsIdentityBridge,
23
+ signMessage,
24
+ verifySignature,
25
+ } from '@oxy.so/protocol';