@oxy.so/services 11.10.0 → 11.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/icons/manifest.json +5 -4
- package/lib/commonjs/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/commonjs/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/commonjs/assets/fonts/icons/manifest.json +5 -4
- package/lib/commonjs/index.js +17 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/appAssertion/AppAssertionContext.js +79 -0
- package/lib/commonjs/ui/appAssertion/AppAssertionContext.js.map +1 -0
- package/lib/commonjs/ui/appAssertion/appAssertionManager.js +309 -0
- package/lib/commonjs/ui/appAssertion/appAssertionManager.js.map +1 -0
- package/lib/commonjs/ui/appAssertion/appIntegrityPlatform.js +18 -0
- package/lib/commonjs/ui/appAssertion/appIntegrityPlatform.js.map +1 -0
- package/lib/commonjs/ui/appAssertion/appIntegrityPlatform.native.js +30 -0
- package/lib/commonjs/ui/appAssertion/appIntegrityPlatform.native.js.map +1 -0
- package/lib/commonjs/ui/appAssertion/appIntegrityTypes.js +6 -0
- package/lib/commonjs/ui/appAssertion/appIntegrityTypes.js.map +1 -0
- package/lib/commonjs/ui/components/fileManagement/FileAppAccessSection.js +121 -0
- package/lib/commonjs/ui/components/fileManagement/FileAppAccessSection.js.map +1 -0
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +6 -2
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +10 -1
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/mutationKeys.js +4 -0
- package/lib/commonjs/ui/hooks/mutations/mutationKeys.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +49 -1
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/queryKeys.js +6 -1
- package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useFileQueries.js +35 -1
- package/lib/commonjs/ui/hooks/queries/useFileQueries.js.map +1 -1
- package/lib/commonjs/ui/icons/subsetGlyphMaps.js +1 -0
- package/lib/commonjs/ui/icons/subsetGlyphMaps.js.map +1 -1
- package/lib/commonjs/ui/index.js +7 -0
- package/lib/commonjs/ui/index.js.map +1 -1
- package/lib/module/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/module/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/module/assets/assets/fonts/icons/manifest.json +5 -4
- package/lib/module/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/module/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/module/assets/fonts/icons/manifest.json +5 -4
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/appAssertion/AppAssertionContext.js +72 -0
- package/lib/module/ui/appAssertion/AppAssertionContext.js.map +1 -0
- package/lib/module/ui/appAssertion/appAssertionManager.js +304 -0
- package/lib/module/ui/appAssertion/appAssertionManager.js.map +1 -0
- package/lib/module/ui/appAssertion/appIntegrityPlatform.js +14 -0
- package/lib/module/ui/appAssertion/appIntegrityPlatform.js.map +1 -0
- package/lib/module/ui/appAssertion/appIntegrityPlatform.native.js +26 -0
- package/lib/module/ui/appAssertion/appIntegrityPlatform.native.js.map +1 -0
- package/lib/module/ui/appAssertion/appIntegrityTypes.js +4 -0
- package/lib/module/ui/appAssertion/appIntegrityTypes.js.map +1 -0
- package/lib/module/ui/components/fileManagement/FileAppAccessSection.js +116 -0
- package/lib/module/ui/components/fileManagement/FileAppAccessSection.js.map +1 -0
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js +6 -2
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +10 -1
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/hooks/mutations/mutationKeys.js +4 -0
- package/lib/module/ui/hooks/mutations/mutationKeys.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +47 -0
- package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/module/ui/hooks/queries/queryKeys.js +6 -1
- package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
- package/lib/module/ui/hooks/queries/useFileQueries.js +33 -1
- package/lib/module/ui/hooks/queries/useFileQueries.js.map +1 -1
- package/lib/module/ui/icons/subsetGlyphMaps.js +1 -0
- package/lib/module/ui/icons/subsetGlyphMaps.js.map +1 -1
- package/lib/module/ui/index.js +1 -0
- package/lib/module/ui/index.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +3 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/appAssertion/AppAssertionContext.d.ts +41 -0
- package/lib/typescript/commonjs/ui/appAssertion/AppAssertionContext.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/appAssertion/appAssertionManager.d.ts +92 -0
- package/lib/typescript/commonjs/ui/appAssertion/appAssertionManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/appAssertion/appIntegrityPlatform.d.ts +9 -0
- package/lib/typescript/commonjs/ui/appAssertion/appIntegrityPlatform.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/appAssertion/appIntegrityPlatform.native.d.ts +3 -0
- package/lib/typescript/commonjs/ui/appAssertion/appIntegrityPlatform.native.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/appAssertion/appIntegrityTypes.d.ts +22 -0
- package/lib/typescript/commonjs/ui/appAssertion/appIntegrityTypes.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/fileManagement/FileAppAccessSection.d.ts +15 -0
- package/lib/typescript/commonjs/ui/components/fileManagement/FileAppAccessSection.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts +2 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/mutationKeys.d.ts +3 -0
- package/lib/typescript/commonjs/ui/hooks/mutations/mutationKeys.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +13 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +5 -0
- package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts +11 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts +1 -1
- package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts +1 -0
- package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/index.d.ts +2 -0
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +3 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/appAssertion/AppAssertionContext.d.ts +41 -0
- package/lib/typescript/module/ui/appAssertion/AppAssertionContext.d.ts.map +1 -0
- package/lib/typescript/module/ui/appAssertion/appAssertionManager.d.ts +92 -0
- package/lib/typescript/module/ui/appAssertion/appAssertionManager.d.ts.map +1 -0
- package/lib/typescript/module/ui/appAssertion/appIntegrityPlatform.d.ts +9 -0
- package/lib/typescript/module/ui/appAssertion/appIntegrityPlatform.d.ts.map +1 -0
- package/lib/typescript/module/ui/appAssertion/appIntegrityPlatform.native.d.ts +3 -0
- package/lib/typescript/module/ui/appAssertion/appIntegrityPlatform.native.d.ts.map +1 -0
- package/lib/typescript/module/ui/appAssertion/appIntegrityTypes.d.ts +22 -0
- package/lib/typescript/module/ui/appAssertion/appIntegrityTypes.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/fileManagement/FileAppAccessSection.d.ts +15 -0
- package/lib/typescript/module/ui/components/fileManagement/FileAppAccessSection.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts +2 -1
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/mutationKeys.d.ts +3 -0
- package/lib/typescript/module/ui/hooks/mutations/mutationKeys.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +13 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +5 -0
- package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts +11 -1
- package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts +1 -1
- package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
- package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts +1 -0
- package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
- package/lib/typescript/module/ui/index.d.ts +2 -0
- package/lib/typescript/module/ui/index.d.ts.map +1 -1
- package/package.json +8 -6
- package/src/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/src/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/src/assets/fonts/icons/manifest.json +5 -4
- package/src/index.ts +12 -0
- package/src/ui/appAssertion/AppAssertionContext.tsx +109 -0
- package/src/ui/appAssertion/appAssertionManager.ts +363 -0
- package/src/ui/appAssertion/appIntegrityPlatform.native.ts +27 -0
- package/src/ui/appAssertion/appIntegrityPlatform.ts +12 -0
- package/src/ui/appAssertion/appIntegrityTypes.ts +23 -0
- package/src/ui/components/fileManagement/FileAppAccessSection.tsx +111 -0
- package/src/ui/components/fileManagement/FileDetailsModal.tsx +5 -1
- package/src/ui/context/OxyContext.tsx +13 -1
- package/src/ui/hooks/mutations/mutationKeys.ts +5 -0
- package/src/ui/hooks/mutations/useAccountMutations.ts +33 -0
- package/src/ui/hooks/queries/queryKeys.ts +5 -0
- package/src/ui/hooks/queries/useFileQueries.ts +44 -2
- package/src/ui/icons/subsetGlyphMaps.ts +1 -0
- package/src/ui/index.ts +2 -0
|
Binary file
|
|
Binary file
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"fontFamily": "OxyServicesIonicons",
|
|
7
7
|
"file": "src/assets/fonts/icons/OxyServicesIonicons.ttf",
|
|
8
8
|
"bytes": 43160,
|
|
9
|
-
"sha256": "
|
|
9
|
+
"sha256": "d96ec296f01cc237bf8e087401879aeef569c82871f40e4447d63bc8a9eaab3e",
|
|
10
10
|
"names": [
|
|
11
11
|
"add",
|
|
12
12
|
"add-circle-outline",
|
|
@@ -152,8 +152,8 @@
|
|
|
152
152
|
"materialCommunityIcons": {
|
|
153
153
|
"fontFamily": "OxyServicesMaterialCommunityIcons",
|
|
154
154
|
"file": "src/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf",
|
|
155
|
-
"bytes":
|
|
156
|
-
"sha256": "
|
|
155
|
+
"bytes": 29292,
|
|
156
|
+
"sha256": "a3bef5c42424d459860676f20d7f1e9aaea4f7295aba3d5361ca2195d8f1d59c",
|
|
157
157
|
"names": [
|
|
158
158
|
"account",
|
|
159
159
|
"account-circle",
|
|
@@ -337,6 +337,7 @@
|
|
|
337
337
|
"trophy",
|
|
338
338
|
"trophy-outline",
|
|
339
339
|
"update",
|
|
340
|
+
"upload",
|
|
340
341
|
"video-outline",
|
|
341
342
|
"volume-off",
|
|
342
343
|
"wallet",
|
|
@@ -352,5 +353,5 @@
|
|
|
352
353
|
}
|
|
353
354
|
},
|
|
354
355
|
"glyphMapsFile": "src/ui/icons/subsetGlyphMaps.ts",
|
|
355
|
-
"glyphMapsSha256": "
|
|
356
|
+
"glyphMapsSha256": "b0a3d21006a83bf10deac1c8e5bb1a4dacac3c0afe9d445ed856f766f49b6c01"
|
|
356
357
|
}
|
|
Binary file
|
|
Binary file
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"fontFamily": "OxyServicesIonicons",
|
|
7
7
|
"file": "src/assets/fonts/icons/OxyServicesIonicons.ttf",
|
|
8
8
|
"bytes": 43160,
|
|
9
|
-
"sha256": "
|
|
9
|
+
"sha256": "d96ec296f01cc237bf8e087401879aeef569c82871f40e4447d63bc8a9eaab3e",
|
|
10
10
|
"names": [
|
|
11
11
|
"add",
|
|
12
12
|
"add-circle-outline",
|
|
@@ -152,8 +152,8 @@
|
|
|
152
152
|
"materialCommunityIcons": {
|
|
153
153
|
"fontFamily": "OxyServicesMaterialCommunityIcons",
|
|
154
154
|
"file": "src/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf",
|
|
155
|
-
"bytes":
|
|
156
|
-
"sha256": "
|
|
155
|
+
"bytes": 29292,
|
|
156
|
+
"sha256": "a3bef5c42424d459860676f20d7f1e9aaea4f7295aba3d5361ca2195d8f1d59c",
|
|
157
157
|
"names": [
|
|
158
158
|
"account",
|
|
159
159
|
"account-circle",
|
|
@@ -337,6 +337,7 @@
|
|
|
337
337
|
"trophy",
|
|
338
338
|
"trophy-outline",
|
|
339
339
|
"update",
|
|
340
|
+
"upload",
|
|
340
341
|
"video-outline",
|
|
341
342
|
"volume-off",
|
|
342
343
|
"wallet",
|
|
@@ -352,5 +353,5 @@
|
|
|
352
353
|
}
|
|
353
354
|
},
|
|
354
355
|
"glyphMapsFile": "src/ui/icons/subsetGlyphMaps.ts",
|
|
355
|
-
"glyphMapsSha256": "
|
|
356
|
+
"glyphMapsSha256": "b0a3d21006a83bf10deac1c8e5bb1a4dacac3c0afe9d445ed856f766f49b6c01"
|
|
356
357
|
}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "AccountInvitationAcceptance", {
|
|
|
9
9
|
return _AccountInvitationAcceptance.AccountInvitationAcceptance;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "AppAssertionProviderMissingError", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _AppAssertionContext.AppAssertionProviderMissingError;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
Object.defineProperty(exports, "CLEARABLE_USER_FIELDS", {
|
|
13
19
|
enumerable: true,
|
|
14
20
|
get: function () {
|
|
@@ -447,6 +453,12 @@ Object.defineProperty(exports, "useActiveAccount", {
|
|
|
447
453
|
return _index.useActiveAccount;
|
|
448
454
|
}
|
|
449
455
|
});
|
|
456
|
+
Object.defineProperty(exports, "useAppAssertion", {
|
|
457
|
+
enumerable: true,
|
|
458
|
+
get: function () {
|
|
459
|
+
return _AppAssertionContext.useAppAssertion;
|
|
460
|
+
}
|
|
461
|
+
});
|
|
450
462
|
Object.defineProperty(exports, "useAsset", {
|
|
451
463
|
enumerable: true,
|
|
452
464
|
get: function () {
|
|
@@ -879,6 +891,7 @@ var _OxyProvider = _interopRequireDefault(require("./ui/components/OxyProvider.j
|
|
|
879
891
|
var _OxyContext = require("./ui/context/OxyContext.js");
|
|
880
892
|
var _index = require("./ui/runtime/index.js");
|
|
881
893
|
var _useAuth = require("./ui/hooks/useAuth.js");
|
|
894
|
+
var _AppAssertionContext = require("./ui/appAssertion/AppAssertionContext.js");
|
|
882
895
|
var _productAnalytics = require("./ui/analytics/productAnalytics.js");
|
|
883
896
|
var _identityBinding = require("./ui/session/identityBinding.js");
|
|
884
897
|
var _authStore = require("./ui/stores/authStore.js");
|
|
@@ -979,6 +992,10 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
979
992
|
// selector, so — unlike `useOxy()`, whose value is rebuilt by any of its fifty
|
|
980
993
|
// members moving — a locale change or a dialog opening does not re-render them.
|
|
981
994
|
|
|
995
|
+
// This app's Oxy-signed assertion of which app it is (ADR 0045), obtained and
|
|
996
|
+
// refreshed by the provider; attach `getAppAssertionHeaders()` to a request
|
|
997
|
+
// for a service that needs to know the app.
|
|
998
|
+
|
|
982
999
|
// Thrown by `switchToAccount` / `switchSession` while `OxyProvider` runs with
|
|
983
1000
|
// `sessionMode="identity"` — an identity-bound app authenticates as the owner of
|
|
984
1001
|
// the local identity key and cannot switch accounts.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","_reactNative","_OxyProvider","_interopRequireDefault","_OxyContext","_index","_useAuth","_productAnalytics","_identityBinding","_authStore","_assetStore","_useAssets","_useFileDownloadUrl","_useFollow","_useStorage","_useAccountQueries","_useServicesQueries","_useSecurityQueries","_useAuthMethods","_usePaymentQueries","_useAccountMutations","_useServicesMutations","_mutationFactory","_mutationKeys","_queryKeys","_userCache","_useMutationStatus","_useOnlineStatus","_useOxyEvent","_errorHandlers","_useFileFiltering","_OxySignInButton","_oauthPopup","_OxyAuthPrompt","_OxyOAuthCallback","_OxyConsentScreen","_RequireOxyAuth","_FollowButton","_FollowTargetButton","_followRules","_useFollowTarget","_followTargetStore","_PeableButton","_OxyPayButton","_LogoIcon","_LogoText","_ProfileButton","_OxySignInPanel","_OxySignUpPanel","_OxyAccountPicker","_OxyDeleteAccountPanel","_OxyLinkCommonsPanel","_OxyPasswordPanel","_OxyAuthenticatorPanel","_OxyAuthScreen","_OxySignInRequestSurface","_useDeviceSwitcher","_bottomSheetManager","_useSurfaceHeader","_SurfaceHeaderAction","_accountDialogManager","_usePersonalPlans","_AccountInvitationAcceptance","_DisplayCurrencySelector","_useDisplayCurrency","_useDisplayPrice","e","__esModule","default","setPlatformOS","Platform","OS"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_core","require","_reactNative","_OxyProvider","_interopRequireDefault","_OxyContext","_index","_useAuth","_AppAssertionContext","_productAnalytics","_identityBinding","_authStore","_assetStore","_useAssets","_useFileDownloadUrl","_useFollow","_useStorage","_useAccountQueries","_useServicesQueries","_useSecurityQueries","_useAuthMethods","_usePaymentQueries","_useAccountMutations","_useServicesMutations","_mutationFactory","_mutationKeys","_queryKeys","_userCache","_useMutationStatus","_useOnlineStatus","_useOxyEvent","_errorHandlers","_useFileFiltering","_OxySignInButton","_oauthPopup","_OxyAuthPrompt","_OxyOAuthCallback","_OxyConsentScreen","_RequireOxyAuth","_FollowButton","_FollowTargetButton","_followRules","_useFollowTarget","_followTargetStore","_PeableButton","_OxyPayButton","_LogoIcon","_LogoText","_ProfileButton","_OxySignInPanel","_OxySignUpPanel","_OxyAccountPicker","_OxyDeleteAccountPanel","_OxyLinkCommonsPanel","_OxyPasswordPanel","_OxyAuthenticatorPanel","_OxyAuthScreen","_OxySignInRequestSurface","_useDeviceSwitcher","_bottomSheetManager","_useSurfaceHeader","_SurfaceHeaderAction","_accountDialogManager","_usePersonalPlans","_AccountInvitationAcceptance","_DisplayCurrencySelector","_useDisplayCurrency","_useDisplayPrice","e","__esModule","default","setPlatformOS","Platform","OS"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAMA,IAAAE,YAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AASA,IAAAK,MAAA,GAAAL,OAAA;AAgBA,IAAAM,QAAA,GAAAN,OAAA;AAIA,IAAAO,oBAAA,GAAAP,OAAA;AAUA,IAAAQ,iBAAA,GAAAR,OAAA;AAKA,IAAAS,gBAAA,GAAAT,OAAA;AAKA,IAAAU,UAAA,GAAAV,OAAA;AACA,IAAAW,WAAA,GAAAX,OAAA;AAgBA,IAAAY,UAAA,GAAAZ,OAAA;AACA,IAAAa,mBAAA,GAAAb,OAAA;AACA,IAAAc,UAAA,GAAAd,OAAA;AACA,IAAAe,WAAA,GAAAf,OAAA;AAMA,IAAAgB,kBAAA,GAAAhB,OAAA;AAUA,IAAAiB,mBAAA,GAAAjB,OAAA;AAQA,IAAAkB,mBAAA,GAAAlB,OAAA;AAKA,IAAAmB,eAAA,GAAAnB,OAAA;AACA,IAAAoB,kBAAA,GAAApB,OAAA;AAyBA,IAAAqB,oBAAA,GAAArB,OAAA;AAUA,IAAAsB,qBAAA,GAAAtB,OAAA;AAOA,IAAAuB,gBAAA,GAAAvB,OAAA;AAUA,IAAAwB,aAAA,GAAAxB,OAAA;AAQA,IAAAyB,UAAA,GAAAzB,OAAA;AAqBA,IAAA0B,UAAA,GAAA1B,OAAA;AAcA,IAAA2B,kBAAA,GAAA3B,OAAA;AAEA,IAAA4B,gBAAA,GAAA5B,OAAA;AACA,IAAA6B,YAAA,GAAA7B,OAAA;AAKA,IAAA8B,cAAA,GAAA9B,OAAA;AAWA,IAAA+B,iBAAA,GAAA/B,OAAA;AA+BA,IAAAgC,gBAAA,GAAA7B,sBAAA,CAAAH,OAAA;AAOA,IAAAiC,WAAA,GAAAjC,OAAA;AAgBA,IAAAkC,cAAA,GAAAlC,OAAA;AAEA,IAAAmC,iBAAA,GAAAnC,OAAA;AAEA,IAAAoC,iBAAA,GAAApC,OAAA;AAaA,IAAAqC,eAAA,GAAArC,OAAA;AAKA,IAAAsC,aAAA,GAAAnC,sBAAA,CAAAH,OAAA;AAOA,IAAAuC,mBAAA,GAAAvC,OAAA;AACA,IAAAwC,YAAA,GAAAxC,OAAA;AAgBA,IAAAyC,gBAAA,GAAAzC,OAAA;AAEA,IAAA0C,kBAAA,GAAA1C,OAAA;AAcA,IAAA2C,aAAA,GAAAxC,sBAAA,CAAAH,OAAA;AAGA,IAAA4C,aAAA,GAAAzC,sBAAA,CAAAH,OAAA;AAGA,IAAA6C,SAAA,GAAA7C,OAAA;AACA,IAAA8C,SAAA,GAAA9C,OAAA;AAKA,IAAA+C,cAAA,GAAA5C,sBAAA,CAAAH,OAAA;AAOA,IAAAgD,eAAA,GAAAhD,OAAA;AAEA,IAAAiD,eAAA,GAAAjD,OAAA;AAEA,IAAAkD,iBAAA,GAAAlD,OAAA;AAKA,IAAAmD,sBAAA,GAAAnD,OAAA;AAEA,IAAAoD,oBAAA,GAAApD,OAAA;AAEA,IAAAqD,iBAAA,GAAArD,OAAA;AAEA,IAAAsD,sBAAA,GAAAtD,OAAA;AAEA,IAAAuD,cAAA,GAAAvD,OAAA;AAgBA,IAAAwD,wBAAA,GAAAxD,OAAA;AAUA,IAAAyD,kBAAA,GAAAzD,OAAA;AAWA,IAAA0D,mBAAA,GAAA1D,OAAA;AAMA,IAAA2D,iBAAA,GAAA3D,OAAA;AACA,IAAA4D,oBAAA,GAAA5D,OAAA;AASA,IAAA6D,qBAAA,GAAA7D,OAAA;AAWA,IAAA8D,iBAAA,GAAA9D,OAAA;AAIA,IAAA+D,4BAAA,GAAA/D,OAAA;AAEA,IAAAgE,wBAAA,GAAAhE,OAAA;AACA,IAAAiE,mBAAA,GAAAjE,OAAA;AACA,IAAAkE,gBAAA,GAAAlE,OAAA;AAA6D,SAAAG,uBAAAgE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAvd7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAIA,IAAAG,mBAAa,EAACC,qBAAQ,CAACC,EAAgB,CAAC;;AAExC;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAkBA;AACA;AACA;;AAaA;AACA;AACA;;AAGA;AACA;AACA;;AAeA;AACA;AACA;;AAOA;AACA;AACA;;AAgCA;;AAeA;AACA;AACA;;AA2BA;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA;;AAMA;AACA;AACA;;AASA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AA6BA;AACA;AACA;AACA;AACA;;AAGA;;AASA;;AAoCA;;AAEA;;AAKA;AACA;AACA;;AAKA;AACA;AACA;;AAOA;AACA;AACA;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAIA;AACA;AACA;;AAOA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AppAssertionProvider = AppAssertionProvider;
|
|
7
|
+
exports.AppAssertionProviderMissingError = void 0;
|
|
8
|
+
exports.useAppAssertion = useAppAssertion;
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _appIntegrityPlatform = require("./appIntegrityPlatform");
|
|
11
|
+
var _appAssertionManager = require("./appAssertionManager.js");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
/**
|
|
14
|
+
* `useAppAssertion()` (ADR 0045): this app's Oxy-signed assertion of which app
|
|
15
|
+
* it is, for the signed-in session.
|
|
16
|
+
*
|
|
17
|
+
* `OxyProvider` mounts {@link AppAssertionProvider} itself and the manager
|
|
18
|
+
* obtains and refreshes the assertion on its own; an app never handles the
|
|
19
|
+
* proof. Something that calls a service which needs to know the app (Alia's
|
|
20
|
+
* SDK, for an agent confined to its application) attaches
|
|
21
|
+
* `await getAppAssertionHeaders()` to the request.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
const AppAssertionContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
25
|
+
function AppAssertionProvider({
|
|
26
|
+
children,
|
|
27
|
+
oxyServices,
|
|
28
|
+
clientId,
|
|
29
|
+
userId,
|
|
30
|
+
sessionId,
|
|
31
|
+
storage,
|
|
32
|
+
storageKeyPrefix,
|
|
33
|
+
integrity = _appIntegrityPlatform.appIntegrityPlatform
|
|
34
|
+
}) {
|
|
35
|
+
// Read only when an iOS install needs its App Attest key id, never in render.
|
|
36
|
+
const storageRef = (0, _react.useRef)(storage);
|
|
37
|
+
(0, _react.useEffect)(() => {
|
|
38
|
+
storageRef.current = storage;
|
|
39
|
+
}, [storage]);
|
|
40
|
+
const manager = (0, _react.useMemo)(() => new _appAssertionManager.AppAssertionManager({
|
|
41
|
+
oxyServices,
|
|
42
|
+
clientId,
|
|
43
|
+
integrity,
|
|
44
|
+
storage: () => storageRef.current,
|
|
45
|
+
storageKeyPrefix
|
|
46
|
+
}), [oxyServices, clientId, integrity, storageKeyPrefix]);
|
|
47
|
+
(0, _react.useEffect)(() => {
|
|
48
|
+
manager.setSession(userId && sessionId ? {
|
|
49
|
+
userId,
|
|
50
|
+
sessionId
|
|
51
|
+
} : null);
|
|
52
|
+
}, [manager, userId, sessionId]);
|
|
53
|
+
(0, _react.useEffect)(() => () => manager.dispose(), [manager]);
|
|
54
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(AppAssertionContext.Provider, {
|
|
55
|
+
value: manager,
|
|
56
|
+
children: children
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
class AppAssertionProviderMissingError extends Error {
|
|
60
|
+
code = 'oxy_provider_missing';
|
|
61
|
+
constructor() {
|
|
62
|
+
super('useAppAssertion() was called outside <OxyProvider>.');
|
|
63
|
+
this.name = 'AppAssertionProviderMissingError';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** This app's assertion of which app it is, kept current for the signed-in session. */
|
|
68
|
+
exports.AppAssertionProviderMissingError = AppAssertionProviderMissingError;
|
|
69
|
+
function useAppAssertion() {
|
|
70
|
+
const manager = (0, _react.useContext)(AppAssertionContext);
|
|
71
|
+
if (!manager) throw new AppAssertionProviderMissingError();
|
|
72
|
+
const snapshot = (0, _react.useSyncExternalStore)(manager.subscribe, manager.getSnapshot, manager.getSnapshot);
|
|
73
|
+
return {
|
|
74
|
+
...snapshot,
|
|
75
|
+
getAppAssertion: manager.getAppAssertion,
|
|
76
|
+
getAppAssertionHeaders: manager.getAppAssertionHeaders
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=AppAssertionContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_appIntegrityPlatform","_appAssertionManager","_jsxRuntime","AppAssertionContext","createContext","AppAssertionProvider","children","oxyServices","clientId","userId","sessionId","storage","storageKeyPrefix","integrity","appIntegrityPlatform","storageRef","useRef","useEffect","current","manager","useMemo","AppAssertionManager","setSession","dispose","jsx","Provider","value","AppAssertionProviderMissingError","Error","code","constructor","name","exports","useAppAssertion","useContext","snapshot","useSyncExternalStore","subscribe","getSnapshot","getAppAssertion","getAppAssertionHeaders"],"sourceRoot":"../../../../src","sources":["ui/appAssertion/AppAssertionContext.tsx"],"mappings":";;;;;;;;AAYA,IAAAA,MAAA,GAAAC,OAAA;AAUA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AAAuF,IAAAG,WAAA,GAAAH,OAAA;AAvBvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiBA,MAAMI,mBAAmB,gBAAG,IAAAC,oBAAa,EAA6B,IAAI,CAAC;AAepE,SAASC,oBAAoBA,CAAC;EACnCC,QAAQ;EACRC,WAAW;EACXC,QAAQ;EACRC,MAAM;EACNC,SAAS;EACTC,OAAO;EACPC,gBAAgB;EAChBC,SAAS,GAAGC;AACa,CAAC,EAAE;EAC5B;EACA,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAA0BL,OAAO,CAAC;EAC3D,IAAAM,gBAAS,EAAC,MAAM;IACdF,UAAU,CAACG,OAAO,GAAGP,OAAO;EAC9B,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEb,MAAMQ,OAAO,GAAG,IAAAC,cAAO,EACrB,MACE,IAAIC,wCAAmB,CAAC;IACtBd,WAAW;IACXC,QAAQ;IACRK,SAAS;IACTF,OAAO,EAAEA,CAAA,KAAMI,UAAU,CAACG,OAAO;IACjCN;EACF,CAAC,CAAC,EACJ,CAACL,WAAW,EAAEC,QAAQ,EAAEK,SAAS,EAAED,gBAAgB,CACrD,CAAC;EAED,IAAAK,gBAAS,EAAC,MAAM;IACdE,OAAO,CAACG,UAAU,CAACb,MAAM,IAAIC,SAAS,GAAG;MAAED,MAAM;MAAEC;IAAU,CAAC,GAAG,IAAI,CAAC;EACxE,CAAC,EAAE,CAACS,OAAO,EAAEV,MAAM,EAAEC,SAAS,CAAC,CAAC;EAEhC,IAAAO,gBAAS,EAAC,MAAM,MAAME,OAAO,CAACI,OAAO,CAAC,CAAC,EAAE,CAACJ,OAAO,CAAC,CAAC;EAEnD,oBAAO,IAAAjB,WAAA,CAAAsB,GAAA,EAACrB,mBAAmB,CAACsB,QAAQ;IAACC,KAAK,EAAEP,OAAQ;IAAAb,QAAA,EAAEA;EAAQ,CAA+B,CAAC;AAChG;AASO,MAAMqB,gCAAgC,SAASC,KAAK,CAAC;EACjDC,IAAI,GAAG,sBAAsB;EAEtCC,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,qDAAqD,CAAC;IAC5D,IAAI,CAACC,IAAI,GAAG,kCAAkC;EAChD;AACF;;AAEA;AAAAC,OAAA,CAAAL,gCAAA,GAAAA,gCAAA;AACO,SAASM,eAAeA,CAAA,EAA0B;EACvD,MAAMd,OAAO,GAAG,IAAAe,iBAAU,EAAC/B,mBAAmB,CAAC;EAC/C,IAAI,CAACgB,OAAO,EAAE,MAAM,IAAIQ,gCAAgC,CAAC,CAAC;EAC1D,MAAMQ,QAAQ,GAAG,IAAAC,2BAAoB,EACnCjB,OAAO,CAACkB,SAAS,EACjBlB,OAAO,CAACmB,WAAW,EACnBnB,OAAO,CAACmB,WACV,CAAC;EACD,OAAO;IACL,GAAGH,QAAQ;IACXI,eAAe,EAAEpB,OAAO,CAACoB,eAAe;IACxCC,sBAAsB,EAAErB,OAAO,CAACqB;EAClC,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AppAssertionManager = void 0;
|
|
7
|
+
var _client = require("@oxy.so/contracts/client");
|
|
8
|
+
/**
|
|
9
|
+
* The app's assertion of which app it is (ADR 0045), obtained and refreshed for
|
|
10
|
+
* the signed-in session without any app code.
|
|
11
|
+
*
|
|
12
|
+
* One manager per `OxyProvider`. For the active session it resolves the app's
|
|
13
|
+
* application id from its registered `clientId`, proves the app by platform —
|
|
14
|
+
* the browser's `Origin` on the web, Play Integrity on Android, App Attest on
|
|
15
|
+
* iOS — trades the proof for an Oxy-signed `OXY-APP+JWT`, and refreshes it a
|
|
16
|
+
* minute before it expires. A session change drops the assertion at once: an
|
|
17
|
+
* assertion names exactly one person and one session.
|
|
18
|
+
*
|
|
19
|
+
* Outcomes are values, never thrown: `ready`, `unsupported` (this build cannot
|
|
20
|
+
* prove itself: no `clientId`, no native module, App Attest unavailable) or
|
|
21
|
+
* `unavailable` (Oxy refused or could not be reached). A refusal that will not
|
|
22
|
+
* change for this session (an unregistered origin or platform) is not retried
|
|
23
|
+
* until the session changes; anything else is retried with a backoff.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/** Refresh this long before expiry. */
|
|
27
|
+
const REFRESH_BEFORE_MS = 60_000;
|
|
28
|
+
/** `getAppAssertion()` fetches anew when less than this is left. */
|
|
29
|
+
const MIN_REMAINING_MS = 30_000;
|
|
30
|
+
const RETRY_FIRST_MS = 30_000;
|
|
31
|
+
const RETRY_MAX_MS = 15 * 60_000;
|
|
32
|
+
|
|
33
|
+
/** Refusals that will not change for this session. */
|
|
34
|
+
const PERMANENT_REFUSALS = new Set(['application_unavailable', 'session_other_application', 'platform_not_registered', 'origin_not_registered', 'integrity_unconfigured']);
|
|
35
|
+
const IDLE = {
|
|
36
|
+
status: 'idle',
|
|
37
|
+
assertion: null,
|
|
38
|
+
applicationId: null,
|
|
39
|
+
platform: null,
|
|
40
|
+
expiresAt: null,
|
|
41
|
+
error: null
|
|
42
|
+
};
|
|
43
|
+
class Unsupported extends Error {
|
|
44
|
+
constructor(reason) {
|
|
45
|
+
super(reason);
|
|
46
|
+
this.reason = reason;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function errorCode(error) {
|
|
50
|
+
if (error instanceof Unsupported) return error.reason;
|
|
51
|
+
const code = error?.code;
|
|
52
|
+
return typeof code === 'string' && code.length > 0 ? code : 'request_failed';
|
|
53
|
+
}
|
|
54
|
+
class AppAssertionManager {
|
|
55
|
+
snapshot = IDLE;
|
|
56
|
+
listeners = new Set();
|
|
57
|
+
session = null;
|
|
58
|
+
/** Bumped on every session change; a result for an older generation is dropped. */
|
|
59
|
+
generation = 0;
|
|
60
|
+
inflight = null;
|
|
61
|
+
timer = null;
|
|
62
|
+
retryMs = RETRY_FIRST_MS;
|
|
63
|
+
retryAt = 0;
|
|
64
|
+
applicationId = null;
|
|
65
|
+
preparedProject = null;
|
|
66
|
+
constructor(options) {
|
|
67
|
+
this.options = options;
|
|
68
|
+
this.now = options.now ?? Date.now;
|
|
69
|
+
this.setTimer = options.setTimer ?? ((run, ms) => setTimeout(run, ms));
|
|
70
|
+
this.clearTimer = options.clearTimer ?? (timer => clearTimeout(timer));
|
|
71
|
+
}
|
|
72
|
+
subscribe = listener => {
|
|
73
|
+
this.listeners.add(listener);
|
|
74
|
+
return () => {
|
|
75
|
+
this.listeners.delete(listener);
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
getSnapshot = () => this.snapshot;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* A current assertion for the active session, obtaining one when there is
|
|
82
|
+
* none or it is about to expire; `null` when this app cannot have one now.
|
|
83
|
+
*/
|
|
84
|
+
getAppAssertion = async () => {
|
|
85
|
+
const current = this.snapshot;
|
|
86
|
+
if (current.status === 'ready' && current.assertion && current.expiresAt !== null && current.expiresAt - this.now() > MIN_REMAINING_MS) {
|
|
87
|
+
return current.assertion;
|
|
88
|
+
}
|
|
89
|
+
if (!this.session || current.status === 'unsupported') return null;
|
|
90
|
+
if (current.status === 'unavailable' && this.now() < this.retryAt) return null;
|
|
91
|
+
return this.refresh();
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* `{ 'X-Oxy-App-Assertion': <assertion> }` for a request to a service that
|
|
96
|
+
* needs to know the app (Alia), or `{}` when there is none.
|
|
97
|
+
*/
|
|
98
|
+
getAppAssertionHeaders = async () => {
|
|
99
|
+
const assertion = await this.getAppAssertion();
|
|
100
|
+
return assertion ? {
|
|
101
|
+
[_client.OXY_APP_ASSERTION_HEADER]: assertion
|
|
102
|
+
} : {};
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
/** Follow the active session; `null` when signed out or not yet able to call Oxy. */
|
|
106
|
+
setSession(session) {
|
|
107
|
+
const same = session?.userId === this.session?.userId && session?.sessionId === this.session?.sessionId;
|
|
108
|
+
if (same) return;
|
|
109
|
+
this.session = session;
|
|
110
|
+
this.generation += 1;
|
|
111
|
+
this.inflight = null;
|
|
112
|
+
this.retryMs = RETRY_FIRST_MS;
|
|
113
|
+
this.retryAt = 0;
|
|
114
|
+
this.cancelTimer();
|
|
115
|
+
this.publish(IDLE);
|
|
116
|
+
if (session) void this.refresh();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** Stop all work. A later `setSession` starts again. */
|
|
120
|
+
dispose() {
|
|
121
|
+
this.session = null;
|
|
122
|
+
this.generation += 1;
|
|
123
|
+
this.inflight = null;
|
|
124
|
+
this.cancelTimer();
|
|
125
|
+
}
|
|
126
|
+
refresh() {
|
|
127
|
+
if (this.inflight) return this.inflight;
|
|
128
|
+
const generation = this.generation;
|
|
129
|
+
const run = this.obtain().then(answer => {
|
|
130
|
+
if (generation !== this.generation) return null;
|
|
131
|
+
const expiresAt = Date.parse(answer.expiresAt);
|
|
132
|
+
this.retryMs = RETRY_FIRST_MS;
|
|
133
|
+
this.publish({
|
|
134
|
+
status: 'ready',
|
|
135
|
+
assertion: answer.assertion,
|
|
136
|
+
applicationId: answer.applicationId,
|
|
137
|
+
platform: answer.platform,
|
|
138
|
+
expiresAt,
|
|
139
|
+
error: null
|
|
140
|
+
});
|
|
141
|
+
this.schedule(Math.max(expiresAt - this.now() - REFRESH_BEFORE_MS, MIN_REMAINING_MS));
|
|
142
|
+
return answer.assertion;
|
|
143
|
+
}).catch(error => {
|
|
144
|
+
if (generation !== this.generation) return null;
|
|
145
|
+
const code = errorCode(error);
|
|
146
|
+
const unsupported = error instanceof Unsupported;
|
|
147
|
+
const current = this.snapshot;
|
|
148
|
+
if (!unsupported && !PERMANENT_REFUSALS.has(code) && current.status === 'ready' && current.expiresAt !== null && current.expiresAt - this.now() > MIN_REMAINING_MS) {
|
|
149
|
+
// The assertion in hand is still good: keep it, and try again soon.
|
|
150
|
+
this.schedule(Math.min(RETRY_FIRST_MS, current.expiresAt - this.now() - MIN_REMAINING_MS));
|
|
151
|
+
return current.assertion;
|
|
152
|
+
}
|
|
153
|
+
this.publish({
|
|
154
|
+
...IDLE,
|
|
155
|
+
status: unsupported ? 'unsupported' : 'unavailable',
|
|
156
|
+
platform: this.options.integrity.platform,
|
|
157
|
+
error: code
|
|
158
|
+
});
|
|
159
|
+
if (!unsupported) {
|
|
160
|
+
if (PERMANENT_REFUSALS.has(code)) {
|
|
161
|
+
this.retryAt = Number.POSITIVE_INFINITY;
|
|
162
|
+
} else {
|
|
163
|
+
this.retryAt = this.now() + this.retryMs;
|
|
164
|
+
this.schedule(this.retryMs);
|
|
165
|
+
this.retryMs = Math.min(this.retryMs * 2, RETRY_MAX_MS);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return null;
|
|
169
|
+
}).finally(() => {
|
|
170
|
+
if (this.inflight === run) this.inflight = null;
|
|
171
|
+
});
|
|
172
|
+
this.inflight = run;
|
|
173
|
+
if (this.snapshot.status !== 'ready') this.publish({
|
|
174
|
+
...this.snapshot,
|
|
175
|
+
status: 'pending'
|
|
176
|
+
});
|
|
177
|
+
return run;
|
|
178
|
+
}
|
|
179
|
+
async obtain() {
|
|
180
|
+
const applicationId = await this.resolveApplicationId();
|
|
181
|
+
const {
|
|
182
|
+
platform
|
|
183
|
+
} = this.options.integrity;
|
|
184
|
+
const assertions = this.options.oxyServices.apps.assertions;
|
|
185
|
+
if (platform === 'web') return assertions.create({
|
|
186
|
+
applicationId,
|
|
187
|
+
platform: 'web'
|
|
188
|
+
});
|
|
189
|
+
const integrity = await this.options.integrity.loadIntegrity();
|
|
190
|
+
if (!integrity) throw new Unsupported('integrity_module_unavailable');
|
|
191
|
+
if (platform === 'android') return this.proveAndroid(applicationId, integrity);
|
|
192
|
+
if (!integrity.isSupported) throw new Unsupported('app_attest_unsupported');
|
|
193
|
+
return this.proveIos(applicationId, integrity);
|
|
194
|
+
}
|
|
195
|
+
resolveApplicationId() {
|
|
196
|
+
const clientId = this.options.clientId;
|
|
197
|
+
if (!clientId) return Promise.reject(new Unsupported('client_id_missing'));
|
|
198
|
+
if (this.applicationId?.clientId !== clientId) {
|
|
199
|
+
const id = this.options.oxyServices.apps.getPublic(clientId).then(app => app.id);
|
|
200
|
+
id.catch(() => {
|
|
201
|
+
if (this.applicationId?.id === id) this.applicationId = null;
|
|
202
|
+
});
|
|
203
|
+
this.applicationId = {
|
|
204
|
+
clientId,
|
|
205
|
+
id
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
return this.applicationId.id;
|
|
209
|
+
}
|
|
210
|
+
async proveAndroid(applicationId, integrity) {
|
|
211
|
+
const assertions = this.options.oxyServices.apps.assertions;
|
|
212
|
+
const challenge = await assertions.challenge({
|
|
213
|
+
applicationId,
|
|
214
|
+
platform: 'android'
|
|
215
|
+
});
|
|
216
|
+
if (!challenge.cloudProjectNumber) throw new Unsupported('integrity_unconfigured');
|
|
217
|
+
try {
|
|
218
|
+
if (this.preparedProject !== challenge.cloudProjectNumber) {
|
|
219
|
+
await integrity.prepareIntegrityTokenProviderAsync(challenge.cloudProjectNumber);
|
|
220
|
+
this.preparedProject = challenge.cloudProjectNumber;
|
|
221
|
+
}
|
|
222
|
+
const integrityToken = await integrity.requestIntegrityCheckAsync(challenge.requestHash);
|
|
223
|
+
return await assertions.create({
|
|
224
|
+
applicationId,
|
|
225
|
+
platform: 'android',
|
|
226
|
+
proof: {
|
|
227
|
+
challenge: challenge.challenge,
|
|
228
|
+
integrityToken
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
} catch (error) {
|
|
232
|
+
// A provider Google invalidated is prepared again on the next attempt.
|
|
233
|
+
this.preparedProject = null;
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
async proveIos(applicationId, integrity) {
|
|
238
|
+
const keyName = `${this.options.storageKeyPrefix}_app_attest_key_${applicationId}`;
|
|
239
|
+
const storage = this.options.storage();
|
|
240
|
+
const assertOnce = async keyId => {
|
|
241
|
+
const assertions = this.options.oxyServices.apps.assertions;
|
|
242
|
+
const challenge = await assertions.challenge({
|
|
243
|
+
applicationId,
|
|
244
|
+
platform: 'ios',
|
|
245
|
+
purpose: 'assertion'
|
|
246
|
+
});
|
|
247
|
+
const assertion = await integrity.generateAssertionAsync(keyId, challenge.requestHash);
|
|
248
|
+
return assertions.create({
|
|
249
|
+
applicationId,
|
|
250
|
+
platform: 'ios',
|
|
251
|
+
proof: {
|
|
252
|
+
challenge: challenge.challenge,
|
|
253
|
+
keyId,
|
|
254
|
+
assertion
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
};
|
|
258
|
+
const stored = await storage?.getItem(keyName).catch(() => null);
|
|
259
|
+
if (stored) {
|
|
260
|
+
try {
|
|
261
|
+
return await assertOnce(stored);
|
|
262
|
+
} catch (error) {
|
|
263
|
+
// Oxy no longer knows the key (swept, or never registered): attest a new one.
|
|
264
|
+
if (errorCode(error) !== 'attest_key_unknown') throw error;
|
|
265
|
+
await storage?.removeItem(keyName).catch(() => undefined);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const keyId = await this.attestKey(applicationId, integrity);
|
|
269
|
+
await storage?.setItem(keyName, keyId).catch(() => undefined);
|
|
270
|
+
return assertOnce(keyId);
|
|
271
|
+
}
|
|
272
|
+
async attestKey(applicationId, integrity) {
|
|
273
|
+
const assertions = this.options.oxyServices.apps.assertions;
|
|
274
|
+
const keyId = await integrity.generateKeyAsync();
|
|
275
|
+
const challenge = await assertions.challenge({
|
|
276
|
+
applicationId,
|
|
277
|
+
platform: 'ios',
|
|
278
|
+
purpose: 'attest_key'
|
|
279
|
+
});
|
|
280
|
+
const attestation = await integrity.attestKeyAsync(keyId, challenge.requestHash);
|
|
281
|
+
await assertions.registerAttestKey({
|
|
282
|
+
applicationId,
|
|
283
|
+
keyId,
|
|
284
|
+
challenge: challenge.challenge,
|
|
285
|
+
attestation
|
|
286
|
+
});
|
|
287
|
+
return keyId;
|
|
288
|
+
}
|
|
289
|
+
schedule(ms) {
|
|
290
|
+
this.cancelTimer();
|
|
291
|
+
const generation = this.generation;
|
|
292
|
+
this.timer = this.setTimer(() => {
|
|
293
|
+
this.timer = null;
|
|
294
|
+
if (generation === this.generation && this.session) void this.refresh();
|
|
295
|
+
}, ms);
|
|
296
|
+
}
|
|
297
|
+
cancelTimer() {
|
|
298
|
+
if (this.timer !== null) {
|
|
299
|
+
this.clearTimer(this.timer);
|
|
300
|
+
this.timer = null;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
publish(next) {
|
|
304
|
+
this.snapshot = next;
|
|
305
|
+
for (const listener of this.listeners) listener();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
exports.AppAssertionManager = AppAssertionManager;
|
|
309
|
+
//# sourceMappingURL=appAssertionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_client","require","REFRESH_BEFORE_MS","MIN_REMAINING_MS","RETRY_FIRST_MS","RETRY_MAX_MS","PERMANENT_REFUSALS","Set","IDLE","status","assertion","applicationId","platform","expiresAt","error","Unsupported","Error","constructor","reason","errorCode","code","length","AppAssertionManager","snapshot","listeners","session","generation","inflight","timer","retryMs","retryAt","preparedProject","options","now","Date","setTimer","run","ms","setTimeout","clearTimer","clearTimeout","subscribe","listener","add","delete","getSnapshot","getAppAssertion","current","refresh","getAppAssertionHeaders","OXY_APP_ASSERTION_HEADER","setSession","same","userId","sessionId","cancelTimer","publish","dispose","obtain","then","answer","parse","schedule","Math","max","catch","unsupported","has","min","integrity","Number","POSITIVE_INFINITY","finally","resolveApplicationId","assertions","oxyServices","apps","create","loadIntegrity","proveAndroid","isSupported","proveIos","clientId","Promise","reject","id","getPublic","app","challenge","cloudProjectNumber","prepareIntegrityTokenProviderAsync","integrityToken","requestIntegrityCheckAsync","requestHash","proof","keyName","storageKeyPrefix","storage","assertOnce","keyId","purpose","generateAssertionAsync","stored","getItem","removeItem","undefined","attestKey","setItem","generateKeyAsync","attestation","attestKeyAsync","registerAttestKey","next","exports"],"sourceRoot":"../../../../src","sources":["ui/appAssertion/appAssertionManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.appIntegrityPlatform = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Web: the app proves itself with the browser's `Origin`, which Oxy reads from
|
|
9
|
+
* the request itself (ADR 0045). Nothing to load.
|
|
10
|
+
*
|
|
11
|
+
* Native builds resolve `appIntegrityPlatform.native.ts` instead.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const appIntegrityPlatform = exports.appIntegrityPlatform = {
|
|
15
|
+
platform: 'web',
|
|
16
|
+
loadIntegrity: async () => null
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=appIntegrityPlatform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["appIntegrityPlatform","exports","platform","loadIntegrity"],"sourceRoot":"../../../../src","sources":["ui/appAssertion/appIntegrityPlatform.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAGO,MAAMA,oBAA0C,GAAAC,OAAA,CAAAD,oBAAA,GAAG;EACxDE,QAAQ,EAAE,KAAK;EACfC,aAAa,EAAE,MAAAA,CAAA,KAAY;AAC7B,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.appIntegrityPlatform = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } /**
|
|
9
|
+
* iOS and Android: the app proves itself with App Attest or Play Integrity
|
|
10
|
+
* through `@expo/app-integrity` (ADR 0045).
|
|
11
|
+
*
|
|
12
|
+
* The module is loaded lazily, and its `import()` is a direct statement of a
|
|
13
|
+
* `try` block — the shape Metro marks OPTIONAL — so an app bundle that lacks
|
|
14
|
+
* the package, or a binary built before it was added (an over-the-air update
|
|
15
|
+
* of the JavaScript alone), still boots: `requireNativeModule` throws inside
|
|
16
|
+
* the import, and the app simply has no assertion.
|
|
17
|
+
*/
|
|
18
|
+
async function loadIntegrity() {
|
|
19
|
+
try {
|
|
20
|
+
const integrity = await Promise.resolve().then(() => _interopRequireWildcard(require('@expo/app-integrity')));
|
|
21
|
+
return integrity;
|
|
22
|
+
} catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const appIntegrityPlatform = exports.appIntegrityPlatform = {
|
|
27
|
+
platform: _reactNative.Platform.OS === 'ios' ? 'ios' : _reactNative.Platform.OS === 'android' ? 'android' : 'web',
|
|
28
|
+
loadIntegrity: _reactNative.Platform.OS === 'ios' || _reactNative.Platform.OS === 'android' ? loadIntegrity : async () => null
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=appIntegrityPlatform.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","loadIntegrity","integrity","Promise","resolve","then","appIntegrityPlatform","exports","platform","Platform","OS"],"sourceRoot":"../../../../src","sources":["ui/appAssertion/appIntegrityPlatform.native.ts"],"mappings":";;;;;;AAUA,IAAAA,YAAA,GAAAC,OAAA;AAAwC,SAAAC,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA,KAVxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA,eAAekB,aAAaA,CAAA,EAAuC;EACjE,IAAI;IACF,MAAMC,SAAS,GAAG,MAAAC,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAxB,uBAAA,CAAAD,OAAA,CAAa,qBAAqB,GAAC;IACrD,OAAOsB,SAAS;EAClB,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEO,MAAMI,oBAA0C,GAAAC,OAAA,CAAAD,oBAAA,GAAG;EACxDE,QAAQ,EAAEC,qBAAQ,CAACC,EAAE,KAAK,KAAK,GAAG,KAAK,GAAGD,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK;EACvFT,aAAa,EACXQ,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAID,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAAGT,aAAa,GAAG,YAAY;AACrF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["ui/appAssertion/appIntegrityTypes.ts"],"mappings":"","ignoreList":[]}
|