@soropass/core 0.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 (83) hide show
  1. package/dist/checkAuth-C2AcXqFe.d.cts +110 -0
  2. package/dist/checkAuth-C2AcXqFe.d.ts +110 -0
  3. package/dist/chunk-AHFGTIBY.js +36 -0
  4. package/dist/chunk-AHFGTIBY.js.map +1 -0
  5. package/dist/chunk-AMYFJQAC.js +29 -0
  6. package/dist/chunk-AMYFJQAC.js.map +1 -0
  7. package/dist/chunk-BIRF5I6I.js +265 -0
  8. package/dist/chunk-BIRF5I6I.js.map +1 -0
  9. package/dist/chunk-JNJ2FY45.js +209 -0
  10. package/dist/chunk-JNJ2FY45.js.map +1 -0
  11. package/dist/chunk-LB4HOTLV.js +135 -0
  12. package/dist/chunk-LB4HOTLV.js.map +1 -0
  13. package/dist/chunk-LM2AZXKZ.js +108 -0
  14. package/dist/chunk-LM2AZXKZ.js.map +1 -0
  15. package/dist/chunk-LUDXP56M.js +3 -0
  16. package/dist/chunk-LUDXP56M.js.map +1 -0
  17. package/dist/chunk-MMB4ZIW3.js +48 -0
  18. package/dist/chunk-MMB4ZIW3.js.map +1 -0
  19. package/dist/chunk-MOLZIRIH.js +22 -0
  20. package/dist/chunk-MOLZIRIH.js.map +1 -0
  21. package/dist/chunk-OGSUGATA.js +3 -0
  22. package/dist/chunk-OGSUGATA.js.map +1 -0
  23. package/dist/chunk-TPBBZNPP.js +30 -0
  24. package/dist/chunk-TPBBZNPP.js.map +1 -0
  25. package/dist/chunk-UQKNPO44.js +32 -0
  26. package/dist/chunk-UQKNPO44.js.map +1 -0
  27. package/dist/chunk-UV5HORMF.js +175 -0
  28. package/dist/chunk-UV5HORMF.js.map +1 -0
  29. package/dist/chunk-W75OQKHR.js +133 -0
  30. package/dist/chunk-W75OQKHR.js.map +1 -0
  31. package/dist/connect.cjs +166 -0
  32. package/dist/connect.cjs.map +1 -0
  33. package/dist/connect.d.cts +24 -0
  34. package/dist/connect.d.ts +24 -0
  35. package/dist/connect.js +6 -0
  36. package/dist/connect.js.map +1 -0
  37. package/dist/create.cjs +483 -0
  38. package/dist/create.cjs.map +1 -0
  39. package/dist/create.d.cts +106 -0
  40. package/dist/create.d.ts +106 -0
  41. package/dist/create.js +8 -0
  42. package/dist/create.js.map +1 -0
  43. package/dist/index.cjs +1542 -0
  44. package/dist/index.cjs.map +1 -0
  45. package/dist/index.d.cts +197 -0
  46. package/dist/index.d.ts +197 -0
  47. package/dist/index.js +354 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/recover-0wbOXDjR.d.cts +23 -0
  50. package/dist/recover-COnsxhYk.d.ts +23 -0
  51. package/dist/recover.cjs +802 -0
  52. package/dist/recover.cjs.map +1 -0
  53. package/dist/recover.d.cts +49 -0
  54. package/dist/recover.d.ts +49 -0
  55. package/dist/recover.js +10 -0
  56. package/dist/recover.js.map +1 -0
  57. package/dist/sign-Cfg0NM0T.d.cts +73 -0
  58. package/dist/sign-Cfg0NM0T.d.ts +73 -0
  59. package/dist/sign.cjs +883 -0
  60. package/dist/sign.cjs.map +1 -0
  61. package/dist/sign.d.cts +143 -0
  62. package/dist/sign.d.ts +143 -0
  63. package/dist/sign.js +8 -0
  64. package/dist/sign.js.map +1 -0
  65. package/dist/submit-BDKADQq0.d.cts +112 -0
  66. package/dist/submit-BO0Nh49I.d.ts +112 -0
  67. package/dist/testing.cjs +955 -0
  68. package/dist/testing.cjs.map +1 -0
  69. package/dist/testing.d.cts +86 -0
  70. package/dist/testing.d.ts +86 -0
  71. package/dist/testing.js +235 -0
  72. package/dist/testing.js.map +1 -0
  73. package/dist/types--WNl-Sda.d.cts +125 -0
  74. package/dist/types--WNl-Sda.d.ts +125 -0
  75. package/dist/types-dMRWEEo0.d.cts +73 -0
  76. package/dist/types-lW2h8Uxn.d.ts +73 -0
  77. package/dist/types.cjs +44 -0
  78. package/dist/types.cjs.map +1 -0
  79. package/dist/types.d.cts +5 -0
  80. package/dist/types.d.ts +5 -0
  81. package/dist/types.js +5 -0
  82. package/dist/types.js.map +1 -0
  83. package/package.json +117 -0
package/dist/types.cjs ADDED
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ // src/errors.ts
4
+ var KIT_ERROR_CODES = Object.freeze([
5
+ "USER_CANCELLED",
6
+ "ES256_NOT_SUPPORTED",
7
+ "RP_ID_MISMATCH",
8
+ "ORIGIN_MISMATCH",
9
+ "CHALLENGE_MISMATCH",
10
+ "INVALID_SIGNATURE_DER",
11
+ "INVALID_PUBLIC_KEY",
12
+ "CONTRACT_AUTH_FAILED",
13
+ "NETWORK_ERROR",
14
+ "UNSUPPORTED_AUTHENTICATOR"
15
+ ]);
16
+ var KitError = class _KitError extends Error {
17
+ code;
18
+ name = "KitError";
19
+ constructor(code, message, options) {
20
+ super(message ?? code, options);
21
+ this.code = code;
22
+ Object.setPrototypeOf(this, _KitError.prototype);
23
+ }
24
+ };
25
+ function isKitError(value) {
26
+ return value instanceof KitError;
27
+ }
28
+
29
+ // src/anchors.ts
30
+ var BATTLE_TESTED_ANCHORS = Object.freeze({
31
+ /** Apple Touch ID/Face ID emit high-S ~50% of the time; we normalize to low-S. */
32
+ LOW_S_NORMALIZATION: "low-s-normalization",
33
+ /** Non-ES256 credentials (e.g. some Windows Hello configs) cannot verify on-chain. */
34
+ RS256_HARD_FAIL: "rs256-hard-fail",
35
+ /** Safari requires create/get inside a user activation or it silently rejects. */
36
+ APPLE_USER_GESTURE: "apple-user-gesture"
37
+ });
38
+
39
+ exports.BATTLE_TESTED_ANCHORS = BATTLE_TESTED_ANCHORS;
40
+ exports.KIT_ERROR_CODES = KIT_ERROR_CODES;
41
+ exports.KitError = KitError;
42
+ exports.isKitError = isKitError;
43
+ //# sourceMappingURL=types.cjs.map
44
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts","../src/anchors.ts"],"names":[],"mappings":";;;AAIO,IAAM,eAAA,GAAkB,OAAO,MAAA,CAAO;AAAA,EAC3C,gBAAA;AAAA,EACA,qBAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,uBAAA;AAAA,EACA,oBAAA;AAAA,EACA,sBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAU;AAKH,IAAM,QAAA,GAAN,MAAM,SAAA,SAAiB,KAAA,CAAM;AAAA,EACzB,IAAA;AAAA,EACS,IAAA,GAAO,UAAA;AAAA,EAEzB,WAAA,CAAY,IAAA,EAAoB,OAAA,EAAkB,OAAA,EAA+B;AAC/E,IAAA,KAAA,CAAM,OAAA,IAAW,MAAM,OAAO,CAAA;AAC9B,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAGZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,SAAA,CAAS,SAAS,CAAA;AAAA,EAChD;AACF;AAEO,SAAS,WAAW,KAAA,EAAmC;AAC5D,EAAA,OAAO,KAAA,YAAiB,QAAA;AAC1B;;;AC3BO,IAAM,qBAAA,GAAwB,OAAO,MAAA,CAAO;AAAA;AAAA,EAEjD,mBAAA,EAAqB,qBAAA;AAAA;AAAA,EAErB,eAAA,EAAiB,iBAAA;AAAA;AAAA,EAEjB,kBAAA,EAAoB;AACtB,CAAU","file":"types.cjs","sourcesContent":["/**\n * The frozen taxonomy of error codes the SDK can throw. This union is\n * deliberately closed — every failure path maps to exactly one of these.\n */\nexport const KIT_ERROR_CODES = Object.freeze([\n 'USER_CANCELLED',\n 'ES256_NOT_SUPPORTED',\n 'RP_ID_MISMATCH',\n 'ORIGIN_MISMATCH',\n 'CHALLENGE_MISMATCH',\n 'INVALID_SIGNATURE_DER',\n 'INVALID_PUBLIC_KEY',\n 'CONTRACT_AUTH_FAILED',\n 'NETWORK_ERROR',\n 'UNSUPPORTED_AUTHENTICATOR',\n] as const);\n\nexport type KitErrorCode = (typeof KIT_ERROR_CODES)[number];\n\n/** Structured error carrying a machine-readable {@link KitErrorCode}. */\nexport class KitError extends Error {\n readonly code: KitErrorCode;\n override readonly name = 'KitError';\n\n constructor(code: KitErrorCode, message?: string, options?: { cause?: unknown }) {\n super(message ?? code, options);\n this.code = code;\n // Restore the prototype chain so `instanceof KitError` works after\n // down-level transpilation to CJS.\n Object.setPrototypeOf(this, KitError.prototype);\n }\n}\n\nexport function isKitError(value: unknown): value is KitError {\n return value instanceof KitError;\n}\n","import { KitError } from './errors';\n\n/**\n * Stable identifiers for the three battle-tested anchors (S04 / YK-430) — the\n * bugs that silently break ~50% of users. Referenced by stable name from the\n * threat model (S14) and the compatibility matrix (S09) so each mitigation has\n * one canonical id across code and docs.\n */\nexport const BATTLE_TESTED_ANCHORS = Object.freeze({\n /** Apple Touch ID/Face ID emit high-S ~50% of the time; we normalize to low-S. */\n LOW_S_NORMALIZATION: 'low-s-normalization',\n /** Non-ES256 credentials (e.g. some Windows Hello configs) cannot verify on-chain. */\n RS256_HARD_FAIL: 'rs256-hard-fail',\n /** Safari requires create/get inside a user activation or it silently rejects. */\n APPLE_USER_GESTURE: 'apple-user-gesture',\n} as const);\n\nexport type BattleTestedAnchor = (typeof BATTLE_TESTED_ANCHORS)[keyof typeof BATTLE_TESTED_ANCHORS];\n\n/** COSE algorithm id for ES256 (ECDSA w/ SHA-256 over P-256). */\nconst ALG_ES256 = -7;\n\n/**\n * Anchor `RS256_HARD_FAIL`. The Soroban webauthn-wallet verifies *only*\n * secp256r1, so a non-ES256 credential would produce an unusable account.\n * Hard-fail rather than continue (invariant #1).\n */\nexport function assertES256(alg: number): void {\n if (alg !== ALG_ES256) {\n throw new KitError('ES256_NOT_SUPPORTED', `COSE alg ${alg} is not ES256 (-7)`);\n }\n}\n\ninterface UserActivationLike {\n isActive: boolean;\n}\n\n/**\n * Anchor `APPLE_USER_GESTURE`. `navigator.credentials.create/get` on\n * Safari/WebKit must run inside a transient user activation (a real click/tap)\n * or the promise silently rejects. Call this at the very top of a create/sign\n * handler.\n *\n * UI pattern (for S18): never auto-trigger the ceremony from a mount/effect —\n * always gate it behind an explicit user click, and surface `USER_CANCELLED`\n * in the flow state machine. Lenient when `navigator.userActivation` is\n * unavailable (non-browser / older engines) so the SDK stays isomorphic; pass\n * an explicit `{ isActive }` to force the check.\n */\nexport function assertUserActivation(activation?: UserActivationLike): void {\n const ua =\n activation ??\n (globalThis.navigator as { userActivation?: UserActivationLike } | undefined)?.userActivation;\n if (ua && !ua.isActive) {\n throw new KitError(\n 'USER_CANCELLED',\n 'WebAuthn ceremony must be invoked inside a user activation (click/tap)',\n );\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export { B as BATTLE_TESTED_ANCHORS, a as BattleTestedAnchor, K as KIT_ERROR_CODES, b as KitError, c as KitErrorCode, P as PasskeyCredential, i as isKitError } from './types-dMRWEEo0.cjs';
2
+ export { A as AuthenticatorDataFlags, C as CheckAuthResult, a as ClientData, P as ParsedAuthenticatorData, V as VerifyAssertionInput } from './checkAuth-C2AcXqFe.cjs';
3
+ export { A as AccountDeployer, B as BuildCreateOptionsInput, C as CredentialStorage, I as IndexerAdapter, P as PubKeyCredParam, a as PublicKeyCredentialCreationOptionsJSON, R as ResidentKeyRequirement, b as ResolvedAccount, S as SubmissionAdapter, c as SubmitResult, U as UserVerificationRequirement, W as WebAuthnClient, d as WebAuthnCreateResult, e as WebAuthnGetOptions, f as WebAuthnGetResult } from './types--WNl-Sda.cjs';
4
+ export { A as AssertionResult, a as SorobanSignOptions, b as WebAuthnSigner } from './sign-Cfg0NM0T.cjs';
5
+ import '@stellar/stellar-sdk';
@@ -0,0 +1,5 @@
1
+ export { B as BATTLE_TESTED_ANCHORS, a as BattleTestedAnchor, K as KIT_ERROR_CODES, b as KitError, c as KitErrorCode, P as PasskeyCredential, i as isKitError } from './types-lW2h8Uxn.js';
2
+ export { A as AuthenticatorDataFlags, C as CheckAuthResult, a as ClientData, P as ParsedAuthenticatorData, V as VerifyAssertionInput } from './checkAuth-C2AcXqFe.js';
3
+ export { A as AccountDeployer, B as BuildCreateOptionsInput, C as CredentialStorage, I as IndexerAdapter, P as PubKeyCredParam, a as PublicKeyCredentialCreationOptionsJSON, R as ResidentKeyRequirement, b as ResolvedAccount, S as SubmissionAdapter, c as SubmitResult, U as UserVerificationRequirement, W as WebAuthnClient, d as WebAuthnCreateResult, e as WebAuthnGetOptions, f as WebAuthnGetResult } from './types--WNl-Sda.js';
4
+ export { A as AssertionResult, a as SorobanSignOptions, b as WebAuthnSigner } from './sign-Cfg0NM0T.js';
5
+ import '@stellar/stellar-sdk';
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ import './chunk-LUDXP56M.js';
2
+ export { BATTLE_TESTED_ANCHORS } from './chunk-TPBBZNPP.js';
3
+ export { KIT_ERROR_CODES, KitError, isKitError } from './chunk-AMYFJQAC.js';
4
+ //# sourceMappingURL=types.js.map
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"types.js"}
package/package.json ADDED
@@ -0,0 +1,117 @@
1
+ {
2
+ "name": "@soropass/core",
3
+ "version": "0.1.0",
4
+ "description": "Minimal, headless, ES256-only passkey SDK for Stellar smart accounts.",
5
+ "license": "Apache-2.0",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "type": "module",
10
+ "sideEffects": false,
11
+ "main": "./dist/index.cjs",
12
+ "module": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "import": {
17
+ "types": "./dist/index.d.ts",
18
+ "default": "./dist/index.js"
19
+ },
20
+ "require": {
21
+ "types": "./dist/index.d.cts",
22
+ "default": "./dist/index.cjs"
23
+ }
24
+ },
25
+ "./create": {
26
+ "import": {
27
+ "types": "./dist/create.d.ts",
28
+ "default": "./dist/create.js"
29
+ },
30
+ "require": {
31
+ "types": "./dist/create.d.cts",
32
+ "default": "./dist/create.cjs"
33
+ }
34
+ },
35
+ "./connect": {
36
+ "import": {
37
+ "types": "./dist/connect.d.ts",
38
+ "default": "./dist/connect.js"
39
+ },
40
+ "require": {
41
+ "types": "./dist/connect.d.cts",
42
+ "default": "./dist/connect.cjs"
43
+ }
44
+ },
45
+ "./sign": {
46
+ "import": {
47
+ "types": "./dist/sign.d.ts",
48
+ "default": "./dist/sign.js"
49
+ },
50
+ "require": {
51
+ "types": "./dist/sign.d.cts",
52
+ "default": "./dist/sign.cjs"
53
+ }
54
+ },
55
+ "./recover": {
56
+ "import": {
57
+ "types": "./dist/recover.d.ts",
58
+ "default": "./dist/recover.js"
59
+ },
60
+ "require": {
61
+ "types": "./dist/recover.d.cts",
62
+ "default": "./dist/recover.cjs"
63
+ }
64
+ },
65
+ "./types": {
66
+ "import": {
67
+ "types": "./dist/types.d.ts",
68
+ "default": "./dist/types.js"
69
+ },
70
+ "require": {
71
+ "types": "./dist/types.d.cts",
72
+ "default": "./dist/types.cjs"
73
+ }
74
+ },
75
+ "./testing": {
76
+ "import": {
77
+ "types": "./dist/testing.d.ts",
78
+ "default": "./dist/testing.js"
79
+ },
80
+ "require": {
81
+ "types": "./dist/testing.d.cts",
82
+ "default": "./dist/testing.cjs"
83
+ }
84
+ },
85
+ "./package.json": "./package.json"
86
+ },
87
+ "files": [
88
+ "dist"
89
+ ],
90
+ "scripts": {
91
+ "build": "tsup",
92
+ "test": "vitest run",
93
+ "test:coverage": "vitest run --coverage --coverage.reporter=text --coverage.reporter=json-summary",
94
+ "typecheck": "tsc --noEmit -p tsconfig.json",
95
+ "lint": "eslint src"
96
+ },
97
+ "peerDependencies": {
98
+ "@stellar/stellar-sdk": ">=12"
99
+ },
100
+ "peerDependenciesMeta": {
101
+ "@stellar/stellar-sdk": {
102
+ "optional": false
103
+ }
104
+ },
105
+ "dependencies": {
106
+ "@noble/curves": "^1.6.0",
107
+ "@noble/hashes": "^1.5.0"
108
+ },
109
+ "devDependencies": {
110
+ "@stellar/stellar-sdk": "^15.1.0",
111
+ "@types/node": "^22.0.0",
112
+ "@vitest/coverage-v8": "^2.0.0",
113
+ "tsup": "^8.0.0",
114
+ "typescript": "^5.6.0",
115
+ "vitest": "^2.0.0"
116
+ }
117
+ }