@getpara/core-sdk 3.0.0-alpha.1 → 3.1.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 (106) hide show
  1. package/dist/cjs/ParaCore.js +436 -86
  2. package/dist/cjs/constants.js +1 -1
  3. package/dist/cjs/cryptography/utils.js +5 -2
  4. package/dist/cjs/errors.js +10 -0
  5. package/dist/cjs/external/userManagementClient.js +21 -4
  6. package/dist/cjs/index.js +67 -1
  7. package/dist/cjs/services/AuthService.js +66 -47
  8. package/dist/cjs/services/LoginFlowService.js +30 -27
  9. package/dist/cjs/services/PollingService.js +100 -75
  10. package/dist/cjs/services/PortalUrlService.js +112 -19
  11. package/dist/cjs/services/PregenWalletService.js +125 -76
  12. package/dist/cjs/services/SessionManagementService.js +81 -10
  13. package/dist/cjs/services/SignupFlowService.js +52 -47
  14. package/dist/cjs/services/VerificationFlowService.js +13 -10
  15. package/dist/cjs/services/WalletService.js +51 -36
  16. package/dist/cjs/shares/enclave.js +44 -24
  17. package/dist/cjs/state/CoreStateManager.js +17 -5
  18. package/dist/cjs/state/actors/setupPara.js +4 -1
  19. package/dist/cjs/state/machines/walletStateMachine.js +22 -0
  20. package/dist/cjs/telemetry/BeaconSpanProcessor.js +99 -0
  21. package/dist/cjs/telemetry/config.js +15 -0
  22. package/dist/cjs/telemetry/init.js +193 -0
  23. package/dist/cjs/telemetry/modalSession.js +54 -0
  24. package/dist/cjs/telemetry/session.js +39 -0
  25. package/dist/cjs/telemetry/tracer.js +126 -0
  26. package/dist/cjs/telemetry/uxAction.js +30 -0
  27. package/dist/cjs/telemetry/uxBaggagePropagator.js +58 -0
  28. package/dist/cjs/telemetry/uxState.js +46 -0
  29. package/dist/cjs/telemetry/uxStateSpanProcessor.js +51 -0
  30. package/dist/cjs/utils/configEncoding.js +98 -0
  31. package/dist/cjs/utils/deprecation.js +13 -13
  32. package/dist/cjs/utils/index.js +11 -0
  33. package/dist/cjs/utils/partnerConfig.js +103 -0
  34. package/dist/cjs/utils/partnerConfigGating.js +83 -0
  35. package/dist/cjs/utils/stateErrorHelpers.js +6 -1
  36. package/dist/cjs/utils/url.js +10 -2
  37. package/dist/esm/ParaCore.js +441 -88
  38. package/dist/esm/constants.js +1 -1
  39. package/dist/esm/cryptography/utils.js +5 -2
  40. package/dist/esm/errors.js +9 -0
  41. package/dist/esm/external/userManagementClient.js +21 -4
  42. package/dist/esm/index.js +58 -4
  43. package/dist/esm/services/AuthService.js +66 -47
  44. package/dist/esm/services/LoginFlowService.js +30 -27
  45. package/dist/esm/services/PollingService.js +100 -75
  46. package/dist/esm/services/PortalUrlService.js +112 -19
  47. package/dist/esm/services/PregenWalletService.js +125 -76
  48. package/dist/esm/services/SessionManagementService.js +69 -11
  49. package/dist/esm/services/SignupFlowService.js +52 -47
  50. package/dist/esm/services/VerificationFlowService.js +13 -10
  51. package/dist/esm/services/WalletService.js +51 -36
  52. package/dist/esm/shares/enclave.js +44 -24
  53. package/dist/esm/state/CoreStateManager.js +17 -5
  54. package/dist/esm/state/actors/setupPara.js +4 -1
  55. package/dist/esm/state/machines/walletStateMachine.js +22 -0
  56. package/dist/esm/telemetry/BeaconSpanProcessor.js +74 -0
  57. package/dist/esm/telemetry/config.js +0 -0
  58. package/dist/esm/telemetry/init.js +130 -0
  59. package/dist/esm/telemetry/modalSession.js +29 -0
  60. package/dist/esm/telemetry/session.js +16 -0
  61. package/dist/esm/telemetry/tracer.js +84 -0
  62. package/dist/esm/telemetry/uxAction.js +8 -0
  63. package/dist/esm/telemetry/uxBaggagePropagator.js +35 -0
  64. package/dist/esm/telemetry/uxState.js +21 -0
  65. package/dist/esm/telemetry/uxStateSpanProcessor.js +28 -0
  66. package/dist/esm/utils/configEncoding.js +45 -0
  67. package/dist/esm/utils/deprecation.js +11 -12
  68. package/dist/esm/utils/index.js +6 -0
  69. package/dist/esm/utils/partnerConfig.js +67 -0
  70. package/dist/esm/utils/partnerConfigGating.js +61 -0
  71. package/dist/esm/utils/stateErrorHelpers.js +6 -1
  72. package/dist/esm/utils/url.js +10 -2
  73. package/dist/types/ParaCore.d.ts +101 -19
  74. package/dist/types/PlatformUtils.d.ts +1 -0
  75. package/dist/types/errors.d.ts +26 -0
  76. package/dist/types/external/userManagementClient.d.ts +2 -1
  77. package/dist/types/index.d.ts +15 -3
  78. package/dist/types/services/types/AuthServiceTypes.d.ts +10 -3
  79. package/dist/types/services/types/PortalUrlServiceTypes.d.ts +3 -3
  80. package/dist/types/services/types/WalletServiceTypes.d.ts +4 -0
  81. package/dist/types/state/actors/setupPara.d.ts +18 -0
  82. package/dist/types/state/machines/authStateMachine.d.ts +1 -1
  83. package/dist/types/state/machines/coreStateMachine.d.ts +30 -6
  84. package/dist/types/state/machines/walletStateMachine.d.ts +4 -0
  85. package/dist/types/state/types/core.d.ts +7 -1
  86. package/dist/types/telemetry/BeaconSpanProcessor.d.ts +10 -0
  87. package/dist/types/telemetry/config.d.ts +4 -0
  88. package/dist/types/telemetry/init.d.ts +17 -0
  89. package/dist/types/telemetry/modalSession.d.ts +5 -0
  90. package/dist/types/telemetry/session.d.ts +2 -0
  91. package/dist/types/telemetry/tracer.d.ts +10 -0
  92. package/dist/types/telemetry/uxAction.d.ts +3 -0
  93. package/dist/types/telemetry/uxBaggagePropagator.d.ts +7 -0
  94. package/dist/types/telemetry/uxState.d.ts +8 -0
  95. package/dist/types/telemetry/uxStateSpanProcessor.d.ts +9 -0
  96. package/dist/types/types/config.d.ts +15 -3
  97. package/dist/types/types/coreApi.d.ts +7 -9
  98. package/dist/types/types/serviceInterfaces.d.ts +5 -3
  99. package/dist/types/types/util.d.ts +2 -15
  100. package/dist/types/utils/configEncoding.d.ts +51 -0
  101. package/dist/types/utils/deprecation.d.ts +3 -1
  102. package/dist/types/utils/index.d.ts +2 -0
  103. package/dist/types/utils/partnerConfig.d.ts +28 -0
  104. package/dist/types/utils/partnerConfigGating.d.ts +48 -0
  105. package/dist/types/utils/url.d.ts +3 -2
  106. package/package.json +15 -4
@@ -0,0 +1,28 @@
1
+ import { mergePartnerAppConfig } from '@getpara/user-management-client';
2
+ import type { PartnerAppConfig, PartnerEntity } from '@getpara/user-management-client';
3
+ export { mergePartnerAppConfig };
4
+ /**
5
+ * Base defaults layer for `paraCore.config`. First argument to
6
+ * `mergePartnerAppConfig(defaults, partner, sdkOverrides)`.
7
+ *
8
+ * Empty today: there are no SDK-side config defaults. OAuth has no default
9
+ * allowlist — an unset `oAuthMethods` means "not configured", which the
10
+ * `assertConfigAllowed` gate treats as "allow any" (so the deprecated
11
+ * `oAuthMethods` prop keeps working) and the modal renders from the resolved
12
+ * config or the prop. Partners opt into an allowlist via the developer portal.
13
+ * Kept as a named const so the merge contract and any future defaults have a
14
+ * single home.
15
+ */
16
+ export declare const DEFAULT_PARTNER_APP_CONFIG: Partial<PartnerAppConfig>;
17
+ /**
18
+ * Extract the app-config layer from a partner entity returned by GET /:partnerId.
19
+ *
20
+ * The server already merges defaults ⊕ organization ⊕ partner before returning,
21
+ * so the entity's JSONB fields are the canonical resolved values. This function
22
+ * shapes them into a `PartnerAppConfig` for downstream merging with SDK overrides.
23
+ *
24
+ * If the JSONB columns are absent but legacy color/social columns are populated,
25
+ * synthesize equivalents so callers see a consistent shape during the transition.
26
+ * Compatibility shim drops at the major release (Phase 7).
27
+ */
28
+ export declare function partnerToAppConfigLayer(partner: PartnerEntity): Partial<PartnerAppConfig>;
@@ -0,0 +1,48 @@
1
+ import type { PartnerAppConfig } from '@getpara/user-management-client';
2
+ /**
3
+ * Discriminated union describing a partner-config check the SDK wants to run
4
+ * before initiating an auth/wallet flow. `assertConfigAllowed` dispatches on
5
+ * `kind` and reads the relevant fields off the merged `PartnerAppConfig`.
6
+ */
7
+ export type ConfigCheck = {
8
+ kind: 'email';
9
+ } | {
10
+ kind: 'phone';
11
+ } | {
12
+ kind: 'oauth';
13
+ method: string;
14
+ } | {
15
+ kind: '2fa';
16
+ } | {
17
+ kind: 'guest';
18
+ };
19
+ /**
20
+ * Throws a `PartnerConfigError` if `check` is disallowed by the resolved
21
+ * partner config.
22
+ *
23
+ * Wired in at the 9 SDK auth entry points (signUpOrLogIn,
24
+ * authenticateWithEmailOrPhone, authenticateWithOAuth, getOAuthUrl,
25
+ * verifyOAuth, setup2fa, verify2fa, enable2fa, createGuestWallets) so
26
+ * partner posture is enforced for direct SDK calls, not just the modal.
27
+ * resendVerificationCode is intentionally not gated — callers can only
28
+ * reach it after the initial auth gate has already fired.
29
+ *
30
+ * Pure helper: takes the merged config + check. No `ParaCore` reference,
31
+ * no I/O. Easy to unit-test.
32
+ *
33
+ * Unset means "not configured" — the gate stays permissive (legacy behavior,
34
+ * also what the deprecated `ParaModalProps` rely on, since those never reach
35
+ * the merged config). Enforcement only fires on an *explicit* partner choice:
36
+ * a `false` opt-in flag, a `true` disable flag, or a non-undefined OAuth
37
+ * allowlist. This keeps the migration non-breaking — restrictions take effect
38
+ * once a partner configures them in the developer portal, not before.
39
+ *
40
+ * Note: the merge is symmetric — SDK overrides can widen or narrow every
41
+ * auth-posture flag (`twoFactorAuthEnabled`, `isGuestModeEnabled`,
42
+ * `disableEmailLogin`, `disablePhoneLogin`), so an override may re-enable
43
+ * something the partner disabled. This gate runs on the post-merge config, so
44
+ * it reflects the override, not the raw partner record. A future partner-level
45
+ * "locked" flag (ecosystem lock primitive) would let a partner pin a value so
46
+ * the override is ignored; until then, overrides always win.
47
+ */
48
+ export declare function assertConfigAllowed(config: PartnerAppConfig, check: ConfigCheck): void;
@@ -1,10 +1,11 @@
1
1
  import { Ctx, Environment } from '../types/index.js';
2
2
  export declare function getPortalDomain(env: Environment, isE2E?: boolean, isLegacy?: boolean): string;
3
- export declare function getPortalBaseURL({ env, isE2E }: {
3
+ export declare function getPortalBaseURL({ env, isE2E, portalUrlOverride }: {
4
4
  env: Environment;
5
5
  isE2E?: boolean;
6
+ portalUrlOverride?: string;
6
7
  }, useLocalIp?: boolean, isForWasm?: boolean, isLegacy?: boolean): string;
7
- export declare function getParaConnectDomain(env: Environment): "localhost" | "connect.sandbox.getpara.com" | "connect.beta.getpara.com" | "connect.getpara.com";
8
+ export declare function getParaConnectDomain(env: Environment): "localhost" | "connect.sandbox.getpara.com" | "connect.getpara.com";
8
9
  export declare function getParaConnectBaseUrl({ env }: {
9
10
  env: Environment;
10
11
  }, useLocalIp?: boolean): string;
package/package.json CHANGED
@@ -1,12 +1,23 @@
1
1
  {
2
2
  "name": "@getpara/core-sdk",
3
- "version": "3.0.0-alpha.1",
3
+ "version": "3.1.0",
4
4
  "dependencies": {
5
5
  "@celo/utils": "^8.0.2",
6
6
  "@cosmjs/encoding": "^0.32.4",
7
7
  "@ethereumjs/util": "^9.1.0",
8
- "@getpara/user-management-client": "3.0.0-alpha.1",
8
+ "@getpara/user-management-client": "3.1.0",
9
9
  "@noble/hashes": "^1.5.0",
10
+ "@opentelemetry/api": "^1.9.1",
11
+ "@opentelemetry/context-zone": "^2.7.1",
12
+ "@opentelemetry/core": "^2.7.0",
13
+ "@opentelemetry/exporter-trace-otlp-http": "^0.215.0",
14
+ "@opentelemetry/instrumentation": "^0.215.0",
15
+ "@opentelemetry/instrumentation-fetch": "^0.215.0",
16
+ "@opentelemetry/instrumentation-xml-http-request": "^0.216.0",
17
+ "@opentelemetry/otlp-transformer": "^0.215.0",
18
+ "@opentelemetry/resources": "^2.7.0",
19
+ "@opentelemetry/sdk-trace-base": "^2.7.0",
20
+ "@opentelemetry/semantic-conventions": "^1.40.0",
10
21
  "axios": "^1.8.4",
11
22
  "base64url": "^3.0.1",
12
23
  "elliptic": "^6.6.1",
@@ -30,14 +41,14 @@
30
41
  "dist",
31
42
  "package.json"
32
43
  ],
33
- "gitHead": "839d225579de67feb5be4da225d232290b2a2a04",
44
+ "gitHead": "e73f17cd7960fdfe62ff68a972b3461e47b21eb0",
34
45
  "main": "dist/cjs/index.js",
35
46
  "module": "dist/esm/index.js",
36
47
  "scripts": {
37
48
  "build": "rm -rf dist && node ./scripts/build.mjs && yarn build:types",
38
49
  "build:cjs": "rm -rf dist/cjs && tsc --module commonjs --outDir dist/cjs && printf '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
39
50
  "build:esm": "rm -rf dist/esm && tsc --module es6 --outDir dist/esm && printf '{\"type\":\"module\",\"sideEffects\":false}' > dist/esm/package.json",
40
- "build:types": "rm -rf dist/types && tsc --module es6 --declarationDir dist/types --emitDeclarationOnly --declaration",
51
+ "build:types": "rm -rf dist/types && tsc --module es2020 --declarationDir dist/types --emitDeclarationOnly --declaration",
41
52
  "old-build": "yarn build:cjs && yarn build:esm && yarn build:types; yarn post-build",
42
53
  "post-build": "./scripts/set-version.sh",
43
54
  "test": "vitest run --coverage"