@oxy.so/core 1.0.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 (673) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +16 -0
  3. package/README.md +221 -0
  4. package/dist/cjs/.tsbuildinfo +1 -0
  5. package/dist/cjs/HttpService.js +1270 -0
  6. package/dist/cjs/OxyServices.base.js +390 -0
  7. package/dist/cjs/OxyServices.errors.js +95 -0
  8. package/dist/cjs/OxyServices.js +72 -0
  9. package/dist/cjs/boot/sessionColdBoot.js +395 -0
  10. package/dist/cjs/constants/version.js +16 -0
  11. package/dist/cjs/crypto/aead.js +79 -0
  12. package/dist/cjs/crypto/ecdh.js +35 -0
  13. package/dist/cjs/crypto/identityMarker.js +255 -0
  14. package/dist/cjs/crypto/kdf.js +39 -0
  15. package/dist/cjs/crypto/keyManager.js +2234 -0
  16. package/dist/cjs/crypto/polyfill.js +131 -0
  17. package/dist/cjs/crypto/recoveryPhrase.js +242 -0
  18. package/dist/cjs/crypto/signatureService.js +273 -0
  19. package/dist/cjs/i18n/accountCategoryLabels.js +44 -0
  20. package/dist/cjs/i18n/accountRoleLabels.js +27 -0
  21. package/dist/cjs/i18n/index.js +90 -0
  22. package/dist/cjs/i18n/locales/ar-SA.json +282 -0
  23. package/dist/cjs/i18n/locales/ca-ES.json +282 -0
  24. package/dist/cjs/i18n/locales/de-DE.json +282 -0
  25. package/dist/cjs/i18n/locales/en-US.json +2161 -0
  26. package/dist/cjs/i18n/locales/es-ES.json +2161 -0
  27. package/dist/cjs/i18n/locales/fr-FR.json +282 -0
  28. package/dist/cjs/i18n/locales/it-IT.json +282 -0
  29. package/dist/cjs/i18n/locales/ja-JP.json +282 -0
  30. package/dist/cjs/i18n/locales/ko-KR.json +282 -0
  31. package/dist/cjs/i18n/locales/locales/ar-SA.json +282 -0
  32. package/dist/cjs/i18n/locales/locales/ca-ES.json +282 -0
  33. package/dist/cjs/i18n/locales/locales/de-DE.json +282 -0
  34. package/dist/cjs/i18n/locales/locales/en-US.json +2161 -0
  35. package/dist/cjs/i18n/locales/locales/es-ES.json +2161 -0
  36. package/dist/cjs/i18n/locales/locales/fr-FR.json +282 -0
  37. package/dist/cjs/i18n/locales/locales/it-IT.json +282 -0
  38. package/dist/cjs/i18n/locales/locales/ja-JP.json +282 -0
  39. package/dist/cjs/i18n/locales/locales/ko-KR.json +282 -0
  40. package/dist/cjs/i18n/locales/locales/pt-PT.json +282 -0
  41. package/dist/cjs/i18n/locales/locales/zh-CN.json +282 -0
  42. package/dist/cjs/i18n/locales/pt-PT.json +282 -0
  43. package/dist/cjs/i18n/locales/zh-CN.json +282 -0
  44. package/dist/cjs/i18n/reputationCategoryLabels.js +20 -0
  45. package/dist/cjs/i18n/trustTierLabels.js +19 -0
  46. package/dist/cjs/index.js +498 -0
  47. package/dist/cjs/inference/OxyInferenceClient.js +544 -0
  48. package/dist/cjs/logger/index.js +149 -0
  49. package/dist/cjs/mixins/OxyServices.accounts.js +555 -0
  50. package/dist/cjs/mixins/OxyServices.analytics.js +49 -0
  51. package/dist/cjs/mixins/OxyServices.appData.js +108 -0
  52. package/dist/cjs/mixins/OxyServices.assets.js +764 -0
  53. package/dist/cjs/mixins/OxyServices.auth.js +1254 -0
  54. package/dist/cjs/mixins/OxyServices.chains.js +73 -0
  55. package/dist/cjs/mixins/OxyServices.civic.js +611 -0
  56. package/dist/cjs/mixins/OxyServices.connectedApps.js +78 -0
  57. package/dist/cjs/mixins/OxyServices.contacts.js +50 -0
  58. package/dist/cjs/mixins/OxyServices.deviceBoot.js +191 -0
  59. package/dist/cjs/mixins/OxyServices.deviceTransfer.js +314 -0
  60. package/dist/cjs/mixins/OxyServices.devices.js +116 -0
  61. package/dist/cjs/mixins/OxyServices.features.js +335 -0
  62. package/dist/cjs/mixins/OxyServices.followGraph.js +221 -0
  63. package/dist/cjs/mixins/OxyServices.identity.js +461 -0
  64. package/dist/cjs/mixins/OxyServices.identityBackup.js +172 -0
  65. package/dist/cjs/mixins/OxyServices.inference.js +59 -0
  66. package/dist/cjs/mixins/OxyServices.language.js +125 -0
  67. package/dist/cjs/mixins/OxyServices.links.js +72 -0
  68. package/dist/cjs/mixins/OxyServices.location.js +43 -0
  69. package/dist/cjs/mixins/OxyServices.nodes.js +175 -0
  70. package/dist/cjs/mixins/OxyServices.notifications.js +63 -0
  71. package/dist/cjs/mixins/OxyServices.payment.js +158 -0
  72. package/dist/cjs/mixins/OxyServices.privacy.js +199 -0
  73. package/dist/cjs/mixins/OxyServices.reputation.js +289 -0
  74. package/dist/cjs/mixins/OxyServices.security.js +89 -0
  75. package/dist/cjs/mixins/OxyServices.store.js +266 -0
  76. package/dist/cjs/mixins/OxyServices.topics.js +137 -0
  77. package/dist/cjs/mixins/OxyServices.user.js +902 -0
  78. package/dist/cjs/mixins/OxyServices.utility.js +1098 -0
  79. package/dist/cjs/mixins/index.js +135 -0
  80. package/dist/cjs/mixins/mixinHelpers.js +53 -0
  81. package/dist/cjs/models/Topic.js +16 -0
  82. package/dist/cjs/models/interfaces.js +20 -0
  83. package/dist/cjs/models/session.js +2 -0
  84. package/dist/cjs/server/auth.js +167 -0
  85. package/dist/cjs/server/capabilityTicket.js +192 -0
  86. package/dist/cjs/server/cors.js +225 -0
  87. package/dist/cjs/server/index.js +97 -0
  88. package/dist/cjs/server/rateLimit.js +207 -0
  89. package/dist/cjs/server/safeFetch.js +458 -0
  90. package/dist/cjs/server/securityHeaders.js +377 -0
  91. package/dist/cjs/server/userInvalidation.js +156 -0
  92. package/dist/cjs/server/verifySecret.js +50 -0
  93. package/dist/cjs/session/SessionClient.js +865 -0
  94. package/dist/cjs/session/accountDelegationAccess.js +48 -0
  95. package/dist/cjs/session/accountDialogController.js +1131 -0
  96. package/dist/cjs/session/accountSwitchTargets.js +81 -0
  97. package/dist/cjs/session/authStateStore.js +404 -0
  98. package/dist/cjs/session/createSessionClient.js +32 -0
  99. package/dist/cjs/session/deviceDirectory.js +143 -0
  100. package/dist/cjs/session/deviceSwitcherRows.js +76 -0
  101. package/dist/cjs/session/identityPin.js +256 -0
  102. package/dist/cjs/session/identitySession.js +135 -0
  103. package/dist/cjs/session/projectSessionState.js +121 -0
  104. package/dist/cjs/session/refresh.js +398 -0
  105. package/dist/cjs/session/sessionClientHost.js +34 -0
  106. package/dist/cjs/session/sharedDeviceCredential.js +247 -0
  107. package/dist/cjs/session/socketLoader.js +55 -0
  108. package/dist/cjs/shared/utils/colorUtils.js +153 -0
  109. package/dist/cjs/shared/utils/errorUtils.js +183 -0
  110. package/dist/cjs/shared/utils/index.js +49 -0
  111. package/dist/cjs/shared/utils/networkUtils.js +183 -0
  112. package/dist/cjs/shared/utils/themeUtils.js +106 -0
  113. package/dist/cjs/utils/accountCacheSweep.js +80 -0
  114. package/dist/cjs/utils/accountUtils.js +140 -0
  115. package/dist/cjs/utils/activityId.js +6 -0
  116. package/dist/cjs/utils/apiUtils.js +91 -0
  117. package/dist/cjs/utils/asyncUtils.js +222 -0
  118. package/dist/cjs/utils/authHelpers.js +120 -0
  119. package/dist/cjs/utils/authWebUrl.js +19 -0
  120. package/dist/cjs/utils/avatarUtils.js +29 -0
  121. package/dist/cjs/utils/cache.js +235 -0
  122. package/dist/cjs/utils/cacheKey.js +85 -0
  123. package/dist/cjs/utils/coldBoot.js +122 -0
  124. package/dist/cjs/utils/commonsApproval.js +31 -0
  125. package/dist/cjs/utils/commonsDelivery.js +59 -0
  126. package/dist/cjs/utils/deviceManager.js +174 -0
  127. package/dist/cjs/utils/displayNamePolicyRanges.generated.js +60 -0
  128. package/dist/cjs/utils/edgeRegion.js +6 -0
  129. package/dist/cjs/utils/errorUtils.js +243 -0
  130. package/dist/cjs/utils/identityCacheSweep.js +97 -0
  131. package/dist/cjs/utils/languageUtils.js +224 -0
  132. package/dist/cjs/utils/oauthPkce.js +311 -0
  133. package/dist/cjs/utils/officialOrigins.js +64 -0
  134. package/dist/cjs/utils/oxyServiceEnvironment.js +19 -0
  135. package/dist/cjs/utils/platform.js +119 -0
  136. package/dist/cjs/utils/profileLinks.js +63 -0
  137. package/dist/cjs/utils/redactUrl.js +29 -0
  138. package/dist/cjs/utils/registrableApex.js +45 -0
  139. package/dist/cjs/utils/requestUtils.js +209 -0
  140. package/dist/cjs/utils/sessionUtils.js +181 -0
  141. package/dist/cjs/utils/textNormalization.js +158 -0
  142. package/dist/cjs/utils/userHandle.js +37 -0
  143. package/dist/cjs/utils/userIdentity.js +50 -0
  144. package/dist/cjs/utils/validationUtils.js +370 -0
  145. package/dist/cjs/utils/webauthnOrigin.js +51 -0
  146. package/dist/esm/.tsbuildinfo +1 -0
  147. package/dist/esm/HttpService.js +1266 -0
  148. package/dist/esm/OxyServices.base.js +386 -0
  149. package/dist/esm/OxyServices.errors.js +88 -0
  150. package/dist/esm/OxyServices.js +66 -0
  151. package/dist/esm/boot/sessionColdBoot.js +392 -0
  152. package/dist/esm/constants/version.js +13 -0
  153. package/dist/esm/crypto/aead.js +74 -0
  154. package/dist/esm/crypto/ecdh.js +32 -0
  155. package/dist/esm/crypto/identityMarker.js +248 -0
  156. package/dist/esm/crypto/kdf.js +36 -0
  157. package/dist/esm/crypto/keyManager.js +2227 -0
  158. package/dist/esm/crypto/polyfill.js +129 -0
  159. package/dist/esm/crypto/recoveryPhrase.js +238 -0
  160. package/dist/esm/crypto/signatureService.js +269 -0
  161. package/dist/esm/i18n/accountCategoryLabels.js +37 -0
  162. package/dist/esm/i18n/accountRoleLabels.js +20 -0
  163. package/dist/esm/i18n/index.js +83 -0
  164. package/dist/esm/i18n/locales/ar-SA.json +282 -0
  165. package/dist/esm/i18n/locales/ca-ES.json +282 -0
  166. package/dist/esm/i18n/locales/de-DE.json +282 -0
  167. package/dist/esm/i18n/locales/en-US.json +2161 -0
  168. package/dist/esm/i18n/locales/es-ES.json +2161 -0
  169. package/dist/esm/i18n/locales/fr-FR.json +282 -0
  170. package/dist/esm/i18n/locales/it-IT.json +282 -0
  171. package/dist/esm/i18n/locales/ja-JP.json +282 -0
  172. package/dist/esm/i18n/locales/ko-KR.json +282 -0
  173. package/dist/esm/i18n/locales/locales/ar-SA.json +282 -0
  174. package/dist/esm/i18n/locales/locales/ca-ES.json +282 -0
  175. package/dist/esm/i18n/locales/locales/de-DE.json +282 -0
  176. package/dist/esm/i18n/locales/locales/en-US.json +2161 -0
  177. package/dist/esm/i18n/locales/locales/es-ES.json +2161 -0
  178. package/dist/esm/i18n/locales/locales/fr-FR.json +282 -0
  179. package/dist/esm/i18n/locales/locales/it-IT.json +282 -0
  180. package/dist/esm/i18n/locales/locales/ja-JP.json +282 -0
  181. package/dist/esm/i18n/locales/locales/ko-KR.json +282 -0
  182. package/dist/esm/i18n/locales/locales/pt-PT.json +282 -0
  183. package/dist/esm/i18n/locales/locales/zh-CN.json +282 -0
  184. package/dist/esm/i18n/locales/pt-PT.json +282 -0
  185. package/dist/esm/i18n/locales/zh-CN.json +282 -0
  186. package/dist/esm/i18n/reputationCategoryLabels.js +13 -0
  187. package/dist/esm/i18n/trustTierLabels.js +12 -0
  188. package/dist/esm/index.js +254 -0
  189. package/dist/esm/inference/OxyInferenceClient.js +538 -0
  190. package/dist/esm/logger/index.js +140 -0
  191. package/dist/esm/mixins/OxyServices.accounts.js +543 -0
  192. package/dist/esm/mixins/OxyServices.analytics.js +46 -0
  193. package/dist/esm/mixins/OxyServices.appData.js +103 -0
  194. package/dist/esm/mixins/OxyServices.assets.js +761 -0
  195. package/dist/esm/mixins/OxyServices.auth.js +1247 -0
  196. package/dist/esm/mixins/OxyServices.chains.js +70 -0
  197. package/dist/esm/mixins/OxyServices.civic.js +605 -0
  198. package/dist/esm/mixins/OxyServices.connectedApps.js +75 -0
  199. package/dist/esm/mixins/OxyServices.contacts.js +47 -0
  200. package/dist/esm/mixins/OxyServices.deviceBoot.js +186 -0
  201. package/dist/esm/mixins/OxyServices.deviceTransfer.js +311 -0
  202. package/dist/esm/mixins/OxyServices.devices.js +113 -0
  203. package/dist/esm/mixins/OxyServices.features.js +332 -0
  204. package/dist/esm/mixins/OxyServices.followGraph.js +218 -0
  205. package/dist/esm/mixins/OxyServices.identity.js +457 -0
  206. package/dist/esm/mixins/OxyServices.identityBackup.js +169 -0
  207. package/dist/esm/mixins/OxyServices.inference.js +56 -0
  208. package/dist/esm/mixins/OxyServices.language.js +122 -0
  209. package/dist/esm/mixins/OxyServices.links.js +69 -0
  210. package/dist/esm/mixins/OxyServices.location.js +40 -0
  211. package/dist/esm/mixins/OxyServices.nodes.js +172 -0
  212. package/dist/esm/mixins/OxyServices.notifications.js +60 -0
  213. package/dist/esm/mixins/OxyServices.payment.js +155 -0
  214. package/dist/esm/mixins/OxyServices.privacy.js +196 -0
  215. package/dist/esm/mixins/OxyServices.reputation.js +286 -0
  216. package/dist/esm/mixins/OxyServices.security.js +86 -0
  217. package/dist/esm/mixins/OxyServices.store.js +263 -0
  218. package/dist/esm/mixins/OxyServices.topics.js +134 -0
  219. package/dist/esm/mixins/OxyServices.user.js +899 -0
  220. package/dist/esm/mixins/OxyServices.utility.js +1095 -0
  221. package/dist/esm/mixins/index.js +132 -0
  222. package/dist/esm/mixins/mixinHelpers.js +48 -0
  223. package/dist/esm/models/Topic.js +13 -0
  224. package/dist/esm/models/interfaces.js +17 -0
  225. package/dist/esm/models/session.js +1 -0
  226. package/dist/esm/server/auth.js +154 -0
  227. package/dist/esm/server/capabilityTicket.js +183 -0
  228. package/dist/esm/server/cors.js +220 -0
  229. package/dist/esm/server/index.js +47 -0
  230. package/dist/esm/server/rateLimit.js +201 -0
  231. package/dist/esm/server/safeFetch.js +447 -0
  232. package/dist/esm/server/securityHeaders.js +364 -0
  233. package/dist/esm/server/userInvalidation.js +152 -0
  234. package/dist/esm/server/verifySecret.js +47 -0
  235. package/dist/esm/session/SessionClient.js +861 -0
  236. package/dist/esm/session/accountDelegationAccess.js +45 -0
  237. package/dist/esm/session/accountDialogController.js +1126 -0
  238. package/dist/esm/session/accountSwitchTargets.js +77 -0
  239. package/dist/esm/session/authStateStore.js +398 -0
  240. package/dist/esm/session/createSessionClient.js +29 -0
  241. package/dist/esm/session/deviceDirectory.js +135 -0
  242. package/dist/esm/session/deviceSwitcherRows.js +72 -0
  243. package/dist/esm/session/identityPin.js +249 -0
  244. package/dist/esm/session/identitySession.js +131 -0
  245. package/dist/esm/session/projectSessionState.js +114 -0
  246. package/dist/esm/session/refresh.js +390 -0
  247. package/dist/esm/session/sessionClientHost.js +31 -0
  248. package/dist/esm/session/sharedDeviceCredential.js +239 -0
  249. package/dist/esm/session/socketLoader.js +19 -0
  250. package/dist/esm/shared/utils/colorUtils.js +143 -0
  251. package/dist/esm/shared/utils/errorUtils.js +170 -0
  252. package/dist/esm/shared/utils/index.js +15 -0
  253. package/dist/esm/shared/utils/networkUtils.js +173 -0
  254. package/dist/esm/shared/utils/themeUtils.js +98 -0
  255. package/dist/esm/utils/accountCacheSweep.js +75 -0
  256. package/dist/esm/utils/accountUtils.js +131 -0
  257. package/dist/esm/utils/activityId.js +2 -0
  258. package/dist/esm/utils/apiUtils.js +84 -0
  259. package/dist/esm/utils/asyncUtils.js +207 -0
  260. package/dist/esm/utils/authHelpers.js +111 -0
  261. package/dist/esm/utils/authWebUrl.js +16 -0
  262. package/dist/esm/utils/avatarUtils.js +26 -0
  263. package/dist/esm/utils/cache.js +227 -0
  264. package/dist/esm/utils/cacheKey.js +80 -0
  265. package/dist/esm/utils/coldBoot.js +119 -0
  266. package/dist/esm/utils/commonsApproval.js +27 -0
  267. package/dist/esm/utils/commonsDelivery.js +54 -0
  268. package/dist/esm/utils/deviceManager.js +170 -0
  269. package/dist/esm/utils/displayNamePolicyRanges.generated.js +57 -0
  270. package/dist/esm/utils/edgeRegion.js +2 -0
  271. package/dist/esm/utils/errorUtils.js +232 -0
  272. package/dist/esm/utils/identityCacheSweep.js +92 -0
  273. package/dist/esm/utils/languageUtils.js +212 -0
  274. package/dist/esm/utils/oauthPkce.js +297 -0
  275. package/dist/esm/utils/officialOrigins.js +59 -0
  276. package/dist/esm/utils/oxyServiceEnvironment.js +16 -0
  277. package/dist/esm/utils/platform.js +110 -0
  278. package/dist/esm/utils/profileLinks.js +60 -0
  279. package/dist/esm/utils/redactUrl.js +26 -0
  280. package/dist/esm/utils/registrableApex.js +42 -0
  281. package/dist/esm/utils/requestUtils.js +203 -0
  282. package/dist/esm/utils/sessionUtils.js +171 -0
  283. package/dist/esm/utils/textNormalization.js +154 -0
  284. package/dist/esm/utils/userHandle.js +33 -0
  285. package/dist/esm/utils/userIdentity.js +45 -0
  286. package/dist/esm/utils/validationUtils.js +350 -0
  287. package/dist/esm/utils/webauthnOrigin.js +48 -0
  288. package/dist/types/.tsbuildinfo +1 -0
  289. package/dist/types/HttpService.d.ts +413 -0
  290. package/dist/types/OxyServices.base.d.ts +187 -0
  291. package/dist/types/OxyServices.d.ts +139 -0
  292. package/dist/types/OxyServices.errors.d.ts +84 -0
  293. package/dist/types/boot/sessionColdBoot.d.ts +140 -0
  294. package/dist/types/constants/version.d.ts +13 -0
  295. package/dist/types/crypto/aead.d.ts +56 -0
  296. package/dist/types/crypto/ecdh.d.ts +29 -0
  297. package/dist/types/crypto/identityMarker.d.ts +94 -0
  298. package/dist/types/crypto/kdf.d.ts +25 -0
  299. package/dist/types/crypto/keyManager.d.ts +582 -0
  300. package/dist/types/crypto/polyfill.d.ts +25 -0
  301. package/dist/types/crypto/recoveryPhrase.d.ts +173 -0
  302. package/dist/types/crypto/signatureService.d.ts +136 -0
  303. package/dist/types/i18n/accountCategoryLabels.d.ts +34 -0
  304. package/dist/types/i18n/accountRoleLabels.d.ts +10 -0
  305. package/dist/types/i18n/index.d.ts +3 -0
  306. package/dist/types/i18n/reputationCategoryLabels.d.ts +10 -0
  307. package/dist/types/i18n/trustTierLabels.d.ts +9 -0
  308. package/dist/types/index.d.ts +145 -0
  309. package/dist/types/inference/OxyInferenceClient.d.ts +342 -0
  310. package/dist/types/logger/index.d.ts +104 -0
  311. package/dist/types/mixins/OxyServices.accounts.d.ts +868 -0
  312. package/dist/types/mixins/OxyServices.analytics.d.ts +72 -0
  313. package/dist/types/mixins/OxyServices.appData.d.ts +108 -0
  314. package/dist/types/mixins/OxyServices.assets.d.ts +329 -0
  315. package/dist/types/mixins/OxyServices.auth.d.ts +908 -0
  316. package/dist/types/mixins/OxyServices.chains.d.ts +156 -0
  317. package/dist/types/mixins/OxyServices.civic.d.ts +510 -0
  318. package/dist/types/mixins/OxyServices.connectedApps.d.ts +169 -0
  319. package/dist/types/mixins/OxyServices.contacts.d.ts +100 -0
  320. package/dist/types/mixins/OxyServices.deviceBoot.d.ts +185 -0
  321. package/dist/types/mixins/OxyServices.deviceTransfer.d.ts +149 -0
  322. package/dist/types/mixins/OxyServices.devices.d.ts +103 -0
  323. package/dist/types/mixins/OxyServices.features.d.ts +250 -0
  324. package/dist/types/mixins/OxyServices.followGraph.d.ts +223 -0
  325. package/dist/types/mixins/OxyServices.identity.d.ts +351 -0
  326. package/dist/types/mixins/OxyServices.identityBackup.d.ts +129 -0
  327. package/dist/types/mixins/OxyServices.inference.d.ts +95 -0
  328. package/dist/types/mixins/OxyServices.language.d.ts +87 -0
  329. package/dist/types/mixins/OxyServices.links.d.ts +104 -0
  330. package/dist/types/mixins/OxyServices.location.d.ts +70 -0
  331. package/dist/types/mixins/OxyServices.nodes.d.ts +198 -0
  332. package/dist/types/mixins/OxyServices.notifications.d.ts +143 -0
  333. package/dist/types/mixins/OxyServices.payment.d.ts +117 -0
  334. package/dist/types/mixins/OxyServices.privacy.d.ts +146 -0
  335. package/dist/types/mixins/OxyServices.reputation.d.ts +202 -0
  336. package/dist/types/mixins/OxyServices.security.d.ts +84 -0
  337. package/dist/types/mixins/OxyServices.store.d.ts +334 -0
  338. package/dist/types/mixins/OxyServices.topics.d.ts +110 -0
  339. package/dist/types/mixins/OxyServices.user.d.ts +558 -0
  340. package/dist/types/mixins/OxyServices.utility.d.ts +393 -0
  341. package/dist/types/mixins/index.d.ts +87 -0
  342. package/dist/types/mixins/mixinHelpers.d.ts +31 -0
  343. package/dist/types/models/Topic.d.ts +42 -0
  344. package/dist/types/models/interfaces.d.ts +675 -0
  345. package/dist/types/models/session.d.ts +51 -0
  346. package/dist/types/server/auth.d.ts +130 -0
  347. package/dist/types/server/capabilityTicket.d.ts +41 -0
  348. package/dist/types/server/cors.d.ts +98 -0
  349. package/dist/types/server/index.d.ts +35 -0
  350. package/dist/types/server/rateLimit.d.ts +40 -0
  351. package/dist/types/server/safeFetch.d.ts +137 -0
  352. package/dist/types/server/securityHeaders.d.ts +221 -0
  353. package/dist/types/server/userInvalidation.d.ts +114 -0
  354. package/dist/types/server/verifySecret.d.ts +29 -0
  355. package/dist/types/session/SessionClient.d.ts +418 -0
  356. package/dist/types/session/accountDelegationAccess.d.ts +40 -0
  357. package/dist/types/session/accountDialogController.d.ts +648 -0
  358. package/dist/types/session/accountSwitchTargets.d.ts +70 -0
  359. package/dist/types/session/authStateStore.d.ts +153 -0
  360. package/dist/types/session/createSessionClient.d.ts +30 -0
  361. package/dist/types/session/deviceDirectory.d.ts +182 -0
  362. package/dist/types/session/deviceSwitcherRows.d.ts +92 -0
  363. package/dist/types/session/identityPin.d.ts +87 -0
  364. package/dist/types/session/identitySession.d.ts +105 -0
  365. package/dist/types/session/projectSessionState.d.ts +74 -0
  366. package/dist/types/session/refresh.d.ts +179 -0
  367. package/dist/types/session/sessionClientHost.d.ts +18 -0
  368. package/dist/types/session/sharedDeviceCredential.d.ts +202 -0
  369. package/dist/types/session/socketLoader.d.ts +11 -0
  370. package/dist/types/shared/utils/colorUtils.d.ts +104 -0
  371. package/dist/types/shared/utils/errorUtils.d.ts +97 -0
  372. package/dist/types/shared/utils/index.d.ts +13 -0
  373. package/dist/types/shared/utils/networkUtils.d.ts +139 -0
  374. package/dist/types/shared/utils/themeUtils.d.ts +90 -0
  375. package/dist/types/utils/accountCacheSweep.d.ts +75 -0
  376. package/dist/types/utils/accountUtils.d.ts +100 -0
  377. package/dist/types/utils/activityId.d.ts +2 -0
  378. package/dist/types/utils/apiUtils.d.ts +95 -0
  379. package/dist/types/utils/asyncUtils.d.ts +62 -0
  380. package/dist/types/utils/authHelpers.d.ts +58 -0
  381. package/dist/types/utils/authWebUrl.d.ts +16 -0
  382. package/dist/types/utils/avatarUtils.d.ts +16 -0
  383. package/dist/types/utils/cache.d.ts +130 -0
  384. package/dist/types/utils/cacheKey.d.ts +66 -0
  385. package/dist/types/utils/coldBoot.d.ts +131 -0
  386. package/dist/types/utils/commonsApproval.d.ts +13 -0
  387. package/dist/types/utils/commonsDelivery.d.ts +105 -0
  388. package/dist/types/utils/deviceManager.d.ts +65 -0
  389. package/dist/types/utils/displayNamePolicyRanges.generated.d.ts +57 -0
  390. package/dist/types/utils/edgeRegion.d.ts +2 -0
  391. package/dist/types/utils/errorUtils.d.ts +125 -0
  392. package/dist/types/utils/identityCacheSweep.d.ts +80 -0
  393. package/dist/types/utils/languageUtils.d.ts +100 -0
  394. package/dist/types/utils/oauthPkce.d.ts +157 -0
  395. package/dist/types/utils/officialOrigins.d.ts +13 -0
  396. package/dist/types/utils/oxyServiceEnvironment.d.ts +17 -0
  397. package/dist/types/utils/platform.d.ts +49 -0
  398. package/dist/types/utils/profileLinks.d.ts +44 -0
  399. package/dist/types/utils/redactUrl.d.ts +17 -0
  400. package/dist/types/utils/registrableApex.d.ts +27 -0
  401. package/dist/types/utils/requestUtils.d.ts +123 -0
  402. package/dist/types/utils/sessionUtils.d.ts +54 -0
  403. package/dist/types/utils/textNormalization.d.ts +103 -0
  404. package/dist/types/utils/userHandle.d.ts +26 -0
  405. package/dist/types/utils/userIdentity.d.ts +21 -0
  406. package/dist/types/utils/validationUtils.d.ts +268 -0
  407. package/dist/types/utils/webauthnOrigin.d.ts +32 -0
  408. package/package.json +168 -0
  409. package/src/HttpService.ts +1553 -0
  410. package/src/OxyServices.base.ts +478 -0
  411. package/src/OxyServices.errors.ts +122 -0
  412. package/src/OxyServices.ts +172 -0
  413. package/src/__tests__/authSocket.test.ts +96 -0
  414. package/src/__tests__/httpServiceActivityId.test.ts +49 -0
  415. package/src/__tests__/httpServiceAuthSelfAwait.test.ts +108 -0
  416. package/src/__tests__/httpServiceCache.test.ts +318 -0
  417. package/src/__tests__/httpServiceCsrf.test.ts +235 -0
  418. package/src/__tests__/httpServiceFormEncoded.test.ts +142 -0
  419. package/src/__tests__/httpServiceQueueDeadlock.test.ts +128 -0
  420. package/src/__tests__/httpServiceUnwrapEnvelope.test.ts +115 -0
  421. package/src/__tests__/inSessionRefresh.test.ts +260 -0
  422. package/src/__tests__/linkedClient.test.ts +370 -0
  423. package/src/__tests__/parseHttpErrorBody.test.ts +116 -0
  424. package/src/__tests__/serverValueImportsDeclared.test.ts +120 -0
  425. package/src/__tests__/userIdentity.test.ts +143 -0
  426. package/src/boot/__tests__/sessionColdBoot.identity.test.ts +393 -0
  427. package/src/boot/__tests__/sessionColdBoot.sharedDevice.test.ts +325 -0
  428. package/src/boot/__tests__/sessionColdBoot.test.ts +570 -0
  429. package/src/boot/sessionColdBoot.ts +529 -0
  430. package/src/constants/version.ts +15 -0
  431. package/src/crypto/__tests__/backupMaterial.test.ts +86 -0
  432. package/src/crypto/__tests__/cryptoPrimitives.test.ts +226 -0
  433. package/src/crypto/__tests__/identityMocks.ts +125 -0
  434. package/src/crypto/__tests__/keyManager.atomicity.test.ts +272 -0
  435. package/src/crypto/__tests__/keyManager.cacheSafety.test.ts +175 -0
  436. package/src/crypto/__tests__/keyManager.identityStatus.test.ts +217 -0
  437. package/src/crypto/__tests__/keyManager.recoveryLadder.test.ts +179 -0
  438. package/src/crypto/__tests__/keyManager.recoveryMnemonic.test.ts +138 -0
  439. package/src/crypto/__tests__/keyManager.storageMigration.test.ts +227 -0
  440. package/src/crypto/__tests__/keyManager.test.ts +329 -0
  441. package/src/crypto/__tests__/polyfill.test.ts +109 -0
  442. package/src/crypto/__tests__/recoveryPhrase.test.ts +61 -0
  443. package/src/crypto/__tests__/scopedSeed.test.ts +126 -0
  444. package/src/crypto/__tests__/signChallengeShared.test.ts +63 -0
  445. package/src/crypto/__tests__/signedRecord.test.ts +230 -0
  446. package/src/crypto/aead.ts +97 -0
  447. package/src/crypto/ecdh.ts +37 -0
  448. package/src/crypto/identityMarker.ts +291 -0
  449. package/src/crypto/kdf.ts +43 -0
  450. package/src/crypto/keyManager.ts +2607 -0
  451. package/src/crypto/polyfill.ts +143 -0
  452. package/src/crypto/recoveryPhrase.ts +337 -0
  453. package/src/crypto/signatureService.ts +350 -0
  454. package/src/i18n/__tests__/accountCategoryLabels.test.ts +62 -0
  455. package/src/i18n/__tests__/accountRoleLabels.test.ts +54 -0
  456. package/src/i18n/__tests__/reputationCategoryLabels.test.ts +56 -0
  457. package/src/i18n/__tests__/trustTierLabels.test.ts +47 -0
  458. package/src/i18n/accountCategoryLabels.ts +44 -0
  459. package/src/i18n/accountRoleLabels.ts +26 -0
  460. package/src/i18n/index.ts +88 -0
  461. package/src/i18n/locales/ar-SA.json +282 -0
  462. package/src/i18n/locales/ca-ES.json +282 -0
  463. package/src/i18n/locales/de-DE.json +282 -0
  464. package/src/i18n/locales/en-US.json +2161 -0
  465. package/src/i18n/locales/es-ES.json +2161 -0
  466. package/src/i18n/locales/fr-FR.json +282 -0
  467. package/src/i18n/locales/it-IT.json +282 -0
  468. package/src/i18n/locales/ja-JP.json +282 -0
  469. package/src/i18n/locales/ko-KR.json +282 -0
  470. package/src/i18n/locales/pt-PT.json +282 -0
  471. package/src/i18n/locales/zh-CN.json +282 -0
  472. package/src/i18n/reputationCategoryLabels.ts +20 -0
  473. package/src/i18n/trustTierLabels.ts +18 -0
  474. package/src/index.ts +881 -0
  475. package/src/inference/OxyInferenceClient.ts +888 -0
  476. package/src/inference/__tests__/OxyInferenceClient.test.ts +834 -0
  477. package/src/logger/__tests__/logger.test.ts +207 -0
  478. package/src/logger/index.ts +217 -0
  479. package/src/mixins/OxyServices.accounts.ts +1330 -0
  480. package/src/mixins/OxyServices.analytics.ts +53 -0
  481. package/src/mixins/OxyServices.appData.ts +158 -0
  482. package/src/mixins/OxyServices.assets.ts +861 -0
  483. package/src/mixins/OxyServices.auth.ts +1858 -0
  484. package/src/mixins/OxyServices.chains.ts +134 -0
  485. package/src/mixins/OxyServices.civic.ts +945 -0
  486. package/src/mixins/OxyServices.connectedApps.ts +174 -0
  487. package/src/mixins/OxyServices.contacts.ts +73 -0
  488. package/src/mixins/OxyServices.deviceBoot.ts +210 -0
  489. package/src/mixins/OxyServices.deviceTransfer.ts +393 -0
  490. package/src/mixins/OxyServices.devices.ts +120 -0
  491. package/src/mixins/OxyServices.features.ts +454 -0
  492. package/src/mixins/OxyServices.followGraph.ts +293 -0
  493. package/src/mixins/OxyServices.identity.ts +705 -0
  494. package/src/mixins/OxyServices.identityBackup.ts +250 -0
  495. package/src/mixins/OxyServices.inference.ts +57 -0
  496. package/src/mixins/OxyServices.language.ts +144 -0
  497. package/src/mixins/OxyServices.links.ts +107 -0
  498. package/src/mixins/OxyServices.location.ts +46 -0
  499. package/src/mixins/OxyServices.nodes.ts +337 -0
  500. package/src/mixins/OxyServices.notifications.ts +142 -0
  501. package/src/mixins/OxyServices.payment.ts +163 -0
  502. package/src/mixins/OxyServices.privacy.ts +219 -0
  503. package/src/mixins/OxyServices.reputation.ts +436 -0
  504. package/src/mixins/OxyServices.security.ts +110 -0
  505. package/src/mixins/OxyServices.store.ts +585 -0
  506. package/src/mixins/OxyServices.topics.ts +169 -0
  507. package/src/mixins/OxyServices.user.ts +1137 -0
  508. package/src/mixins/OxyServices.utility.ts +1370 -0
  509. package/src/mixins/__tests__/OxyServices.civic.test.ts +1095 -0
  510. package/src/mixins/__tests__/OxyServices.deviceBoot.test.ts +124 -0
  511. package/src/mixins/__tests__/OxyServices.deviceTransfer.test.ts +271 -0
  512. package/src/mixins/__tests__/OxyServices.identity.test.ts +376 -0
  513. package/src/mixins/__tests__/OxyServices.links.test.ts +154 -0
  514. package/src/mixins/__tests__/OxyServices.nodes.test.ts +341 -0
  515. package/src/mixins/__tests__/OxyServices.rotateKey.test.ts +276 -0
  516. package/src/mixins/__tests__/OxyServices.serviceAssetMetadata.test.ts +192 -0
  517. package/src/mixins/__tests__/OxyServices.serviceAssetMetadataBySha.test.ts +135 -0
  518. package/src/mixins/__tests__/accounts.test.ts +727 -0
  519. package/src/mixins/__tests__/appData.test.ts +203 -0
  520. package/src/mixins/__tests__/assetCredentials.test.ts +47 -0
  521. package/src/mixins/__tests__/assetUpload.test.ts +191 -0
  522. package/src/mixins/__tests__/backgroundCredential.httpIntegration.test.ts +135 -0
  523. package/src/mixins/__tests__/chains.test.ts +113 -0
  524. package/src/mixins/__tests__/commonsSignIn.test.ts +1144 -0
  525. package/src/mixins/__tests__/connectedApps.test.ts +123 -0
  526. package/src/mixins/__tests__/deviceTokenMintPinned.test.ts +113 -0
  527. package/src/mixins/__tests__/discoveryErrorHandling.test.ts +266 -0
  528. package/src/mixins/__tests__/followCacheInvalidation.test.ts +173 -0
  529. package/src/mixins/__tests__/followGraph.test.ts +147 -0
  530. package/src/mixins/__tests__/followGraphPagination.test.ts +271 -0
  531. package/src/mixins/__tests__/getFileDownloadUrl.test.ts +346 -0
  532. package/src/mixins/__tests__/getFollowStatuses.test.ts +95 -0
  533. package/src/mixins/__tests__/getUsersByIds.test.ts +149 -0
  534. package/src/mixins/__tests__/identityBackup.test.ts +315 -0
  535. package/src/mixins/__tests__/identityWriteCacheInvalidation.test.ts +407 -0
  536. package/src/mixins/__tests__/inferenceFactory.test.ts +58 -0
  537. package/src/mixins/__tests__/onTokensChanged.test.ts +129 -0
  538. package/src/mixins/__tests__/preSessionSkipAuth.test.ts +284 -0
  539. package/src/mixins/__tests__/privacyCacheInvalidation.test.ts +155 -0
  540. package/src/mixins/__tests__/reputation.test.ts +522 -0
  541. package/src/mixins/__tests__/serviceAuth.test.ts +832 -0
  542. package/src/mixins/__tests__/serviceTokenJwks.test.ts +208 -0
  543. package/src/mixins/__tests__/store.test.ts +304 -0
  544. package/src/mixins/__tests__/topics.test.ts +156 -0
  545. package/src/mixins/__tests__/userReadCacheBypass.test.ts +129 -0
  546. package/src/mixins/__tests__/userTokenAuth.test.ts +746 -0
  547. package/src/mixins/__tests__/verifyChallenge.test.ts +130 -0
  548. package/src/mixins/__tests__/verifyServiceActingAs.test.ts +167 -0
  549. package/src/mixins/__tests__/webauthnAuth.test.ts +205 -0
  550. package/src/mixins/index.ts +201 -0
  551. package/src/mixins/mixinHelpers.ts +69 -0
  552. package/src/models/Topic.ts +46 -0
  553. package/src/models/interfaces.ts +786 -0
  554. package/src/models/session.ts +55 -0
  555. package/src/server/__tests__/auth.test.ts +78 -0
  556. package/src/server/__tests__/capabilityTicket.test.ts +111 -0
  557. package/src/server/__tests__/cors.socket.test.ts +225 -0
  558. package/src/server/__tests__/cors.test.ts +158 -0
  559. package/src/server/__tests__/rateLimit.test.ts +257 -0
  560. package/src/server/__tests__/safeFetch.test.ts +232 -0
  561. package/src/server/__tests__/securityHeaders.test.ts +348 -0
  562. package/src/server/__tests__/serviceTokenAttribution.test.ts +396 -0
  563. package/src/server/__tests__/userInvalidation.test.ts +203 -0
  564. package/src/server/__tests__/verifySecret.test.ts +40 -0
  565. package/src/server/auth.ts +271 -0
  566. package/src/server/capabilityTicket.ts +258 -0
  567. package/src/server/cors.ts +277 -0
  568. package/src/server/index.ts +136 -0
  569. package/src/server/rateLimit.ts +313 -0
  570. package/src/server/safeFetch.ts +586 -0
  571. package/src/server/securityHeaders.ts +467 -0
  572. package/src/server/userInvalidation.ts +199 -0
  573. package/src/server/verifySecret.ts +52 -0
  574. package/src/session/SessionClient.ts +1001 -0
  575. package/src/session/__tests__/SessionClient.additive.test.ts +153 -0
  576. package/src/session/__tests__/SessionClient.broadcastChannel.test.ts +114 -0
  577. package/src/session/__tests__/SessionClient.diagnostics.test.ts +91 -0
  578. package/src/session/__tests__/SessionClient.directory.test.ts +688 -0
  579. package/src/session/__tests__/SessionClient.httpIntegration.test.ts +65 -0
  580. package/src/session/__tests__/SessionClient.identityPin.test.ts +175 -0
  581. package/src/session/__tests__/SessionClient.rest.test.ts +119 -0
  582. package/src/session/__tests__/SessionClient.serverEvents.test.ts +72 -0
  583. package/src/session/__tests__/SessionClient.socket.test.ts +202 -0
  584. package/src/session/__tests__/SessionClient.socketFactory.test.ts +81 -0
  585. package/src/session/__tests__/SessionClient.state.test.ts +78 -0
  586. package/src/session/__tests__/SessionClient.switchTokenOrder.test.ts +170 -0
  587. package/src/session/__tests__/accountDelegationAccess.test.ts +104 -0
  588. package/src/session/__tests__/accountDialogController.test.ts +1969 -0
  589. package/src/session/__tests__/accountDialogShape.test.ts +118 -0
  590. package/src/session/__tests__/accountSwitchTargets.test.ts +137 -0
  591. package/src/session/__tests__/authStateStore.test.ts +451 -0
  592. package/src/session/__tests__/deviceDirectory.test.ts +422 -0
  593. package/src/session/__tests__/deviceSwitcherRows.test.ts +223 -0
  594. package/src/session/__tests__/identityPin.test.ts +131 -0
  595. package/src/session/__tests__/identitySession.test.ts +194 -0
  596. package/src/session/__tests__/projectSessionState.test.ts +105 -0
  597. package/src/session/__tests__/refresh.identityPin.test.ts +307 -0
  598. package/src/session/__tests__/refresh.test.ts +443 -0
  599. package/src/session/__tests__/sessionIntegration.test.ts +209 -0
  600. package/src/session/__tests__/sharedDeviceCredential.test.ts +300 -0
  601. package/src/session/accountDelegationAccess.ts +72 -0
  602. package/src/session/accountDialogController.ts +1494 -0
  603. package/src/session/accountSwitchTargets.ts +93 -0
  604. package/src/session/authStateStore.ts +502 -0
  605. package/src/session/createSessionClient.ts +39 -0
  606. package/src/session/deviceDirectory.ts +269 -0
  607. package/src/session/deviceSwitcherRows.ts +145 -0
  608. package/src/session/identityPin.ts +310 -0
  609. package/src/session/identitySession.ts +206 -0
  610. package/src/session/projectSessionState.ts +137 -0
  611. package/src/session/refresh.ts +517 -0
  612. package/src/session/sessionClientHost.ts +39 -0
  613. package/src/session/sharedDeviceCredential.ts +349 -0
  614. package/src/session/socketLoader.ts +30 -0
  615. package/src/shared/utils/colorUtils.ts +155 -0
  616. package/src/shared/utils/errorUtils.ts +181 -0
  617. package/src/shared/utils/index.ts +59 -0
  618. package/src/shared/utils/networkUtils.ts +248 -0
  619. package/src/shared/utils/themeUtils.ts +115 -0
  620. package/src/types/buffer.d.ts +97 -0
  621. package/src/types/expo-crypto.d.ts +16 -0
  622. package/src/types/expo-secure-store.d.ts +17 -0
  623. package/src/utils/__tests__/accountUtils.test.ts +151 -0
  624. package/src/utils/__tests__/activityId.test.ts +45 -0
  625. package/src/utils/__tests__/asyncUtils.test.ts +187 -0
  626. package/src/utils/__tests__/authWebUrl.test.ts +15 -0
  627. package/src/utils/__tests__/cacheKey.test.ts +0 -0
  628. package/src/utils/__tests__/coldBoot.test.ts +496 -0
  629. package/src/utils/__tests__/commonsApproval.test.ts +60 -0
  630. package/src/utils/__tests__/identityCacheSweep.test.ts +151 -0
  631. package/src/utils/__tests__/languageUtils.test.ts +219 -0
  632. package/src/utils/__tests__/oauthPkce.test.ts +272 -0
  633. package/src/utils/__tests__/officialOrigins.test.ts +31 -0
  634. package/src/utils/__tests__/oxyServiceEnvironment.test.ts +7 -0
  635. package/src/utils/__tests__/profileLinks.test.ts +180 -0
  636. package/src/utils/__tests__/redactUrl.test.ts +33 -0
  637. package/src/utils/__tests__/registrableApex.test.ts +62 -0
  638. package/src/utils/__tests__/textNormalization.test.ts +205 -0
  639. package/src/utils/__tests__/validationUtils.test.ts +703 -0
  640. package/src/utils/__tests__/webauthnOrigin.test.ts +83 -0
  641. package/src/utils/accountCacheSweep.ts +93 -0
  642. package/src/utils/accountUtils.ts +194 -0
  643. package/src/utils/activityId.ts +2 -0
  644. package/src/utils/apiUtils.ts +137 -0
  645. package/src/utils/asyncUtils.ts +280 -0
  646. package/src/utils/authHelpers.ts +148 -0
  647. package/src/utils/authWebUrl.ts +17 -0
  648. package/src/utils/avatarUtils.ts +39 -0
  649. package/src/utils/cache.ts +273 -0
  650. package/src/utils/cacheKey.ts +93 -0
  651. package/src/utils/coldBoot.ts +218 -0
  652. package/src/utils/commonsApproval.ts +39 -0
  653. package/src/utils/commonsDelivery.ts +132 -0
  654. package/src/utils/deviceManager.ts +203 -0
  655. package/src/utils/displayNamePolicyRanges.generated.ts +69 -0
  656. package/src/utils/edgeRegion.ts +2 -0
  657. package/src/utils/errorUtils.ts +352 -0
  658. package/src/utils/identityCacheSweep.ts +104 -0
  659. package/src/utils/languageUtils.ts +256 -0
  660. package/src/utils/oauthPkce.ts +392 -0
  661. package/src/utils/officialOrigins.ts +62 -0
  662. package/src/utils/oxyServiceEnvironment.ts +17 -0
  663. package/src/utils/platform.ts +139 -0
  664. package/src/utils/profileLinks.ts +91 -0
  665. package/src/utils/redactUrl.ts +28 -0
  666. package/src/utils/registrableApex.ts +41 -0
  667. package/src/utils/requestUtils.ts +237 -0
  668. package/src/utils/sessionUtils.ts +206 -0
  669. package/src/utils/textNormalization.ts +162 -0
  670. package/src/utils/userHandle.ts +49 -0
  671. package/src/utils/userIdentity.ts +60 -0
  672. package/src/utils/validationUtils.ts +390 -0
  673. package/src/utils/webauthnOrigin.ts +52 -0
@@ -0,0 +1,370 @@
1
+ "use strict";
2
+ /**
3
+ * Validation utilities for common data validation patterns
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DISPLAY_NAME_UNFLANKED_SEPARATOR_SOURCE = exports.DISPLAY_NAME_ORPHANED_MARK_SOURCE = exports.DISPLAY_NAME_DISALLOWED_SOURCE = exports.DISPLAY_NAME_ALLOWED_SCRIPTS = exports.PASSWORD_REGEX = exports.EMAIL_REGEX = exports.DISPLAY_NAME_INVALID_MESSAGE = exports.MAX_DISPLAY_NAME_LENGTH = void 0;
7
+ exports.isValidEmail = isValidEmail;
8
+ exports.isValidPassword = isValidPassword;
9
+ exports.isValidDisplayName = isValidDisplayName;
10
+ exports.isRequiredString = isRequiredString;
11
+ exports.isRequiredNumber = isRequiredNumber;
12
+ exports.isRequiredBoolean = isRequiredBoolean;
13
+ exports.isValidArray = isValidArray;
14
+ exports.isValidObject = isValidObject;
15
+ exports.isValidUUID = isValidUUID;
16
+ exports.isValidURL = isValidURL;
17
+ exports.isValidDate = isValidDate;
18
+ exports.isValidFileSize = isValidFileSize;
19
+ exports.isValidFileType = isValidFileType;
20
+ exports.sanitizeString = sanitizeString;
21
+ exports.sanitizeHTML = sanitizeHTML;
22
+ exports.isValidObjectId = isValidObjectId;
23
+ exports.validateAndSanitizeUserInput = validateAndSanitizeUserInput;
24
+ const displayNamePolicyRanges_generated_1 = require("./displayNamePolicyRanges.generated");
25
+ const contracts_1 = require("@oxy.so/contracts");
26
+ /**
27
+ * Maximum stored length of a display name, in code units after cleaning.
28
+ * Shared by the API write path and client input surfaces.
29
+ */
30
+ exports.MAX_DISPLAY_NAME_LENGTH = 80;
31
+ /** Shared 400 / inline-validation copy for native display-name policy rejections. */
32
+ exports.DISPLAY_NAME_INVALID_MESSAGE = 'Name may only contain letters, spaces, apostrophes, and name separators (·, ־, ་, ・).';
33
+ /**
34
+ * Email validation regex
35
+ */
36
+ exports.EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
37
+ /**
38
+ * Password validation regex (at least 8 chars, 1 uppercase, 1 lowercase, 1 number)
39
+ */
40
+ // At least 8 characters (tests expect len>=8 without complexity requirements)
41
+ exports.PASSWORD_REGEX = /^.{8,}$/;
42
+ /**
43
+ * Validate email format
44
+ */
45
+ function isValidEmail(email) {
46
+ return exports.EMAIL_REGEX.test(email);
47
+ }
48
+ /**
49
+ * Validate password strength
50
+ */
51
+ function isValidPassword(password) {
52
+ return exports.PASSWORD_REGEX.test(password);
53
+ }
54
+ /**
55
+ * Display-name character policy.
56
+ *
57
+ * A clean display name is composed ONLY of:
58
+ * - letters from a curated ALLOWLIST of scripts that real names use
59
+ * ({@link DISPLAY_NAME_ALLOWED_SCRIPTS}) — NOT every letter (General_Category
60
+ * L of ANY script), which admits decorative / historic / limited-use scripts
61
+ * whose characters are letters yet never appear in a real name (e.g. `ᯅ`
62
+ * U+1BC5 Batak, Runic, Deseret, dingbat letters),
63
+ * - combining marks / accents (General_Category M, e.g. the acute accent in a
64
+ * decomposed "é"),
65
+ * - Unicode space separators (General_Category Zs: the ASCII space, NBSP,
66
+ * ideographic space, …) — but NOT control whitespace such as tab, newline,
67
+ * or carriage return, which would break layout or enable multi-line
68
+ * spoofing,
69
+ * - the straight apostrophe (`'`, e.g. "O'Brien"),
70
+ * - four name SEPARATORS — `·` U+00B7, `־` U+05BE, `་` U+0F0B, `・` U+30FB —
71
+ * but ONLY directly between two letters (`Codeur·euses`, `お坐・エガード`,
72
+ * `אברמסקי־קרוננברג`, `འོད་ཟེར`). Every one is General_Category P, so the
73
+ * letters intersection strips them by default; they are re-admitted because
74
+ * stripping them SPLITS a real name in two. The flanking condition is not a
75
+ * refinement but the whole point: the same characters are also used as
76
+ * ornament (a trailing `Roberto ·`), and unconditional admission would let
77
+ * that through. See {@link DISPLAY_NAME_UNFLANKED_SEPARATOR_SOURCE}. The
78
+ * ASCII hyphen is NOT among them — `Jean-Luc` stays rejected.
79
+ *
80
+ * Everything else is rejected: emoji (🐧), symbols (⁂ ⏚), `:emoji:` shortcodes,
81
+ * digits, hyphens, dots, control whitespace (tab/newline/CR), letters from
82
+ * non-allowlisted scripts, and any other punctuation. The allowed set never
83
+ * includes `<`, `>`, `&`, or `"`, so a value that passes this predicate can
84
+ * never contain an HTML/XSS vector.
85
+ *
86
+ * The allowlist is expressed with Unicode Script_Extensions (scx=…) so a letter
87
+ * shared by several scripts (e.g. a Han ideograph used in both Chinese and
88
+ * Japanese) still matches, INTERSECTED with General_Category L so only the
89
+ * scripts' LETTERS are admitted. That intersection is load-bearing, not a
90
+ * refinement: `scx=X` also carries script X's own digits, punctuation and
91
+ * symbols, so the un-intersected allowlist admitted 1831 non-letter code points
92
+ * — script digits (`٠١٢`, `०१२`), 1082 symbols (`֍ ۞ ৳`), 180 punctuation marks
93
+ * (`։ ، ؛ ।`), and 9 INVISIBLE format/control characters, among them U+061C
94
+ * ARABIC LETTER MARK (a bidi control that can visually reorder a name) and
95
+ * U+180E MONGOLIAN VOWEL SEPARATOR. Without it the rejections listed above held
96
+ * for ASCII input only. It is the set of scripts Unicode UTS #39 marks
97
+ * "Recommended" for general interchange / identifiers, plus Cherokee and
98
+ * Mongolian (both in real modern name use). "Common" script is deliberately
99
+ * EXCLUDED — that is where ASCII digits and general punctuation live, and this
100
+ * policy excludes those; the space separators, combining marks, and apostrophe a
101
+ * name needs are added back explicitly. Limited-use / excluded / historic
102
+ * scripts (Batak, Runic, Deseret, Adlam, …) are simply absent.
103
+ *
104
+ * CODE-POINT DENYLIST — a character policy classifies FORM, never MEANING, so a
105
+ * code point can be a perfectly ordinary letter to Unicode and a hate symbol to
106
+ * a reader. `卐` U+5350 and `卍` U+534D are the case in point: both are CJK
107
+ * Unified Ideographs (General_Category Lo, Script_Extensions Han), i.e. the same
108
+ * kind of thing as `山` in `山田太郎`, so NO script-level or category-level rule
109
+ * can separate them — every rule that would exclude these two also excludes Han
110
+ * itself, rejecting every real Chinese, Japanese and Korean name. They are
111
+ * therefore enumerated and SUBTRACTED from the allowlist at generation time (see
112
+ * `SYMBOL_LETTER_DENYLIST` in `scripts/generateDisplayNamePolicyRanges.mjs`).
113
+ * Because the subtraction happens inside the one emitted allowlist, every
114
+ * consumer enforces it with no extra probe and none can forget it; the generator
115
+ * additionally REFUSES an entry that an existing lever already excludes (e.g.
116
+ * the Tibetan svasti signs U+0FD5–U+0FD8, General_Category So, already dropped
117
+ * by the intersection above), so the list cannot silently accumulate dead
118
+ * weight.
119
+ *
120
+ * REMAINING LIMIT — that closes the "letter that reads as a symbol" gap, not the
121
+ * other one: slurs and abusive phrasing spelled in ordinary allowlisted letters
122
+ * pass by construction, because they are built from exactly the characters every
123
+ * real name needs. No character-level rule — allowlist, intersection, or
124
+ * denylist — can reject them; that needs a word-level moderation layer, which is
125
+ * deliberately not attempted here.
126
+ *
127
+ * HERMES / RANGES: the class bodies below are built from explicit Unicode
128
+ * code-point RANGES ({@link DISPLAY_NAME_ALLOWED_SCRIPTS_RANGES} et al. from
129
+ * `./displayNamePolicyRanges.generated`), NOT from `scx`/General_Category
130
+ * property escapes. React Native's Hermes engine ships with Unicode property
131
+ * escapes compiled OUT and throws "Invalid RegExp: Invalid property name" for
132
+ * any such escape at module load, crashing every Oxy RN/Expo app at boot. The
133
+ * ranges are the compressed union of exactly those properties (generated on
134
+ * Node/V8, which supports them — see `scripts/generateDisplayNamePolicyRanges.mjs`),
135
+ * so behavior is IDENTICAL on V8 (web) and Hermes (native) with the same `u`
136
+ * flag and lookbehind, but with zero property escapes in the shipped regex.
137
+ *
138
+ * This is the SINGLE definition of the policy: the character-class sources below
139
+ * are the ONE source of truth, shared between the API strip/gate
140
+ * (`@oxy.so/api` `displayNameSanitize.ts` builds its global-flag patterns from
141
+ * them) and client-side inline validation (the RN profile editor via
142
+ * {@link isValidDisplayName}) so the two can never drift. It is platform-agnostic
143
+ * (no react/react-native/expo).
144
+ */
145
+ /**
146
+ * The curated allowlist of Unicode scripts permitted in a display name, as a
147
+ * character-class body of explicit code-point ranges: the union of the 30
148
+ * allowlisted Script_Extensions, INTERSECTED with General_Category L (so letters
149
+ * only), MINUS the symbol-letter denylist — 120823 code points. Interpolated
150
+ * into the negated class below, which is why both the reject gate here and the
151
+ * `@oxy.so/api` strip path inherit the denylist without a second pattern.
152
+ */
153
+ exports.DISPLAY_NAME_ALLOWED_SCRIPTS = displayNamePolicyRanges_generated_1.DISPLAY_NAME_ALLOWED_SCRIPTS_RANGES;
154
+ /**
155
+ * Source of the disallowed-character pattern: the negation of the full allowed
156
+ * set (allowlisted scripts + combining marks + space separators + the straight
157
+ * apostrophe + the name separators). Consumers compile this with the `u` flag
158
+ * (and `g` for a global strip). The whitespace class is space separators only
159
+ * (General_Category Zs), NOT `\s` — the latter would admit tab/newline/carriage
160
+ * return, which break layout and enable multi-line spoofing.
161
+ *
162
+ * The name separators are admitted here only as CHARACTERS. Their position rule
163
+ * is a separate pattern ({@link DISPLAY_NAME_UNFLANKED_SEPARATOR_SOURCE}), for
164
+ * the same reason combining marks are: a negated character class cannot express
165
+ * "allowed only in this context". Both halves must be applied together.
166
+ */
167
+ exports.DISPLAY_NAME_DISALLOWED_SOURCE = `[^${exports.DISPLAY_NAME_ALLOWED_SCRIPTS}${displayNamePolicyRanges_generated_1.DISPLAY_NAME_COMBINING_MARKS_RANGES}${displayNamePolicyRanges_generated_1.DISPLAY_NAME_SPACE_SEPARATORS_RANGES}${displayNamePolicyRanges_generated_1.DISPLAY_NAME_NAME_SEPARATORS_RANGES}']`;
168
+ /**
169
+ * Source of the orphaned combining-mark pattern: a run of combining marks NOT
170
+ * attached to a base letter (preceded by string start, whitespace, the
171
+ * apostrophe, or a position vacated by a stripped character). A mark preceded by
172
+ * a base letter (e.g. the decomposed accent in "Renée") or by another combining
173
+ * mark (a multi-mark cluster) is NOT matched because the negative lookbehind
174
+ * fails at its position. Used both as a non-global probe (`.test`) and, with the
175
+ * `g` flag, to strip whole orphaned runs. The lookbehind intentionally uses the
176
+ * BROAD letters set (General_Category L of any script) so that a mark riding on
177
+ * an allowlisted base letter is preserved.
178
+ */
179
+ exports.DISPLAY_NAME_ORPHANED_MARK_SOURCE = `(?<![${displayNamePolicyRanges_generated_1.DISPLAY_NAME_LETTERS_RANGES}${displayNamePolicyRanges_generated_1.DISPLAY_NAME_COMBINING_MARKS_RANGES}])[${displayNamePolicyRanges_generated_1.DISPLAY_NAME_COMBINING_MARKS_RANGES}]+`;
180
+ /**
181
+ * Source of the unflanked name-separator pattern — the positional half of the
182
+ * name-separator rule, and the exact counterpart of
183
+ * {@link DISPLAY_NAME_ORPHANED_MARK_SOURCE}: a combining mark is allowed only
184
+ * when it rides a base letter, and a name separator is allowed only when it JOINS
185
+ * two letters. Matches a separator that is missing a letter on either side, so
186
+ * consumers can reject it (non-global probe) or strip it (`g` flag).
187
+ *
188
+ * Two alternatives, one per side, because JS has no "not surrounded by" atom:
189
+ * - `(?<![letters][marks])[sep]` — nothing letter-like immediately BEFORE.
190
+ * - `[sep](?![letters])` — no letter immediately AFTER.
191
+ *
192
+ * The left-hand class deliberately includes combining marks as well as letters:
193
+ * a base letter can carry an accent (`Renée·euses`, or a decomposed `e`+◌́), and
194
+ * that mark sits between the letter and the separator. Treating a mark as
195
+ * letter-like is what stops an accent from defeating the flanking test — the
196
+ * same reason the orphaned-mark lookbehind uses the identical pair of classes.
197
+ * The right-hand class is letters only: a mark AFTER a separator has no base and
198
+ * is removed by the orphaned-mark rule, so the separator is genuinely unflanked.
199
+ *
200
+ * Both lookarounds are single-character (no variable-length lookbehind), and the
201
+ * classes are explicit code-point ranges, so the compiled regex is within what
202
+ * Hermes accepts.
203
+ *
204
+ * `Codeur·euses` and `お坐・エガード` match NOTHING here and survive. A leading
205
+ * `·Roberto`, a trailing `Roberto ·`, and a doubled `a··b` each match and are
206
+ * stripped — which is what keeps a decorative middle dot from riding in on the
207
+ * back of the orthographic one.
208
+ */
209
+ exports.DISPLAY_NAME_UNFLANKED_SEPARATOR_SOURCE = `(?<![${displayNamePolicyRanges_generated_1.DISPLAY_NAME_LETTERS_RANGES}${displayNamePolicyRanges_generated_1.DISPLAY_NAME_COMBINING_MARKS_RANGES}])[${displayNamePolicyRanges_generated_1.DISPLAY_NAME_NAME_SEPARATORS_RANGES}]|[${displayNamePolicyRanges_generated_1.DISPLAY_NAME_NAME_SEPARATORS_RANGES}](?![${displayNamePolicyRanges_generated_1.DISPLAY_NAME_LETTERS_RANGES}])`;
210
+ /** Non-global probe for the presence of a disallowed character. */
211
+ const DISALLOWED_PROBE = new RegExp(exports.DISPLAY_NAME_DISALLOWED_SOURCE, 'u');
212
+ /** Non-global probe for the presence of an orphaned combining mark. */
213
+ const ORPHANED_MARK_PROBE = new RegExp(exports.DISPLAY_NAME_ORPHANED_MARK_SOURCE, 'u');
214
+ /** Non-global probe for the presence of an unflanked name separator. */
215
+ const UNFLANKED_SEPARATOR_PROBE = new RegExp(exports.DISPLAY_NAME_UNFLANKED_SEPARATOR_SOURCE, 'u');
216
+ /**
217
+ * Whether `raw` already satisfies the display-name policy, i.e. it contains no
218
+ * disallowed characters, no orphaned combining marks, and no unflanked name
219
+ * separator. Used to REJECT native (signup / profile edit) names with a 400
220
+ * rather than silently stripping them, and to validate inline in the client
221
+ * editor.
222
+ *
223
+ * The two positional probes run on the NFC-normalized form, the character probe
224
+ * on the raw input. Normalization matters for both: a legitimate decomposed
225
+ * accent (`e`+◌́) recomposes into `é`, so it is NOT rejected as an orphaned mark,
226
+ * and a separator after that accent sees a base letter rather than a mark.
227
+ *
228
+ * The function only checks the character set and separator placement; an empty
229
+ * or whitespace-only string is considered valid (`true`). Call sites that require
230
+ * a non-empty name enforce that separately.
231
+ */
232
+ function isValidDisplayName(raw) {
233
+ const normalized = raw.normalize('NFC');
234
+ return (!DISALLOWED_PROBE.test(raw) &&
235
+ !ORPHANED_MARK_PROBE.test(normalized) &&
236
+ !UNFLANKED_SEPARATOR_PROBE.test(normalized));
237
+ }
238
+ /**
239
+ * Validate required string
240
+ */
241
+ function isRequiredString(value) {
242
+ return typeof value === 'string' && value.trim().length > 0;
243
+ }
244
+ /**
245
+ * Validate required number
246
+ */
247
+ function isRequiredNumber(value) {
248
+ return typeof value === 'number' && !Number.isNaN(value);
249
+ }
250
+ /**
251
+ * Validate required boolean
252
+ */
253
+ function isRequiredBoolean(value) {
254
+ return typeof value === 'boolean';
255
+ }
256
+ /**
257
+ * Validate array
258
+ */
259
+ function isValidArray(value) {
260
+ return Array.isArray(value);
261
+ }
262
+ /**
263
+ * Validate object
264
+ */
265
+ function isValidObject(value) {
266
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
267
+ }
268
+ /**
269
+ * Validate UUID format.
270
+ *
271
+ * The version nibble accepts **1-8**, the versions RFC 9562 defines. It read
272
+ * `[1-5]` — RFC 4122's set — which meant this function answered `false` for
273
+ * every id this ecosystem actually mints: `@oxy.so/db`'s `generatedId()` is a
274
+ * **uuid v7**, so `users.id`, `files.id` and every other Postgres primary key
275
+ * since the 2026-07-31 cutover is one. A validator that rejects the only
276
+ * version its own platform produces is worse than no validator: callers read
277
+ * `false` as "malformed" and drop a perfectly good id.
278
+ *
279
+ * Nil (`00000000-…`) and max (`ffffffff-…`) stay invalid, as does any variant
280
+ * outside `[89ab]` — this is a FORMAT check, and those two are not identifiers.
281
+ */
282
+ function isValidUUID(uuid) {
283
+ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
284
+ return UUID_REGEX.test(uuid);
285
+ }
286
+ /**
287
+ * Validate URL format
288
+ */
289
+ function isValidURL(url) {
290
+ try {
291
+ new URL(url);
292
+ return true;
293
+ }
294
+ catch {
295
+ return false;
296
+ }
297
+ }
298
+ /**
299
+ * Validate date string
300
+ */
301
+ function isValidDate(dateString) {
302
+ const date = new Date(dateString);
303
+ return !Number.isNaN(date.getTime());
304
+ }
305
+ /**
306
+ * Validate file size (in bytes)
307
+ */
308
+ function isValidFileSize(size, maxSize) {
309
+ return size > 0 && size <= maxSize;
310
+ }
311
+ /**
312
+ * Validate file type
313
+ */
314
+ function isValidFileType(filename, allowedTypes) {
315
+ const extension = filename.split('.').pop()?.toLowerCase();
316
+ return extension ? allowedTypes.includes(extension) : false;
317
+ }
318
+ /**
319
+ * Sanitize string input
320
+ */
321
+ function sanitizeString(input) {
322
+ // Remove HTML tags entirely and trim whitespace
323
+ return input.trim().replace(/<[^>]*>/g, '');
324
+ }
325
+ /**
326
+ * Sanitize HTML input
327
+ */
328
+ function sanitizeHTML(input) {
329
+ return input
330
+ .replace(/&/g, '&amp;')
331
+ .replace(/</g, '&lt;')
332
+ .replace(/>/g, '&gt;')
333
+ .replace(/"/g, '&quot;')
334
+ .replace(/'/g, '&#x27;');
335
+ }
336
+ /**
337
+ * Validate MongoDB ObjectId format
338
+ * Note: This is a basic format check. For full validation, use mongoose.Types.ObjectId.isValid()
339
+ * This function works in environments where mongoose may not be available (e.g., client-side)
340
+ */
341
+ function isValidObjectId(id) {
342
+ if (typeof id !== 'string') {
343
+ return false;
344
+ }
345
+ // MongoDB ObjectId is 24 hex characters
346
+ const OBJECT_ID_REGEX = /^[0-9a-fA-F]{24}$/;
347
+ return OBJECT_ID_REGEX.test(id);
348
+ }
349
+ /**
350
+ * Validate and sanitize user input
351
+ */
352
+ function validateAndSanitizeUserInput(input, type) {
353
+ if (typeof input !== 'string') {
354
+ return null;
355
+ }
356
+ const sanitized = sanitizeString(input);
357
+ switch (type) {
358
+ case 'email':
359
+ return isValidEmail(sanitized) ? sanitized : null;
360
+ case 'username':
361
+ // The ONE policy, from `@oxy.so/contracts`. This module used to declare a
362
+ // second one (`^[a-zA-Z0-9_-]{3,30}$`) that the server did not enforce, so
363
+ // the SDK could call a name valid and the API 400 it.
364
+ return contracts_1.usernameSchema.safeParse(sanitized).success ? sanitized : null;
365
+ case 'string':
366
+ return isRequiredString(sanitized) ? sanitized : null;
367
+ default:
368
+ return null;
369
+ }
370
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /**
3
+ * WebAuthn relying-party origin guard (client side).
4
+ *
5
+ * The passkey ceremonies (`OxyServices.webauthn*`) are only meaningful when the
6
+ * page is served from a first-party Oxy web origin: a credential minted with
7
+ * `WEBAUTHN_RP_ID=oxy.so` can only be created/asserted from `oxy.so`, one of its
8
+ * subdomains, or a loopback dev server. This is the browser-side mirror of the
9
+ * server's `isOxyApexOrigin` (`packages/api/src/utils/origin.ts`), which forms
10
+ * the server's `expectedOrigin` allow-set — consumers use it to decide whether to
11
+ * even offer the passkey UI on the current page.
12
+ *
13
+ * It reads `globalThis.location` directly (no argument) because that is the only
14
+ * origin the browser will let a WebAuthn ceremony run against. On native / SSR /
15
+ * any environment without a DOM `location`, it returns `false` (there is no
16
+ * relying-party origin, so passkeys are not applicable).
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.isOxyRpOrigin = isOxyRpOrigin;
20
+ /**
21
+ * True iff the current page's host is a first-party Oxy relying-party origin:
22
+ * `oxy.so`, any `*.oxy.so` subdomain, or a loopback dev host
23
+ * (`localhost` / `127.0.0.1` / `[::1]`).
24
+ *
25
+ * Fails closed: no `location` (native/SSR), a non-string/empty hostname, or a
26
+ * host that merely ends in the literal `oxy.so` without the dot boundary
27
+ * (`evil-oxy.so`, `oxy.so.evil.com`) all return `false`.
28
+ *
29
+ * @example
30
+ * isOxyRpOrigin() // true on https://accounts.oxy.so
31
+ * isOxyRpOrigin() // true on http://localhost:8081
32
+ * isOxyRpOrigin() // false on https://evil.com
33
+ * isOxyRpOrigin() // false in a React Native / SSR context (no location)
34
+ */
35
+ function isOxyRpOrigin() {
36
+ // `globalThis.location` is typed `Location` by the DOM lib, but is genuinely
37
+ // `undefined` on native/SSR — widen to a nullable local so the guard is a real
38
+ // runtime check, not a type-level no-op.
39
+ const location = globalThis.location;
40
+ if (!location || typeof location.hostname !== 'string') {
41
+ return false;
42
+ }
43
+ const hostname = location.hostname.toLowerCase();
44
+ if (hostname.length === 0) {
45
+ return false;
46
+ }
47
+ if (hostname === 'oxy.so' || hostname.endsWith('.oxy.so')) {
48
+ return true;
49
+ }
50
+ return hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '[::1]';
51
+ }