passkey-kit 0.10.8 → 0.10.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "passkey-kit",
3
- "version": "0.10.8",
3
+ "version": "0.10.11",
4
4
  "description": "A helper library for creating and using smart wallet accounts on the Stellar blockchain.",
5
5
  "author": "Tyler van der Hoeven",
6
6
  "license": "MIT",
@@ -12,8 +12,8 @@
12
12
  "@stellar/stellar-sdk": "^13.1.0",
13
13
  "base64url": "^3.0.1",
14
14
  "buffer": "^6.0.3",
15
- "passkey-kit-sdk": "0.6.4",
16
- "sac-sdk": "0.3.4"
15
+ "passkey-kit-sdk": "0.6.5",
16
+ "sac-sdk": "0.3.5"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@simplewebauthn/types": "^12.0.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.6.4",
2
+ "version": "0.6.5",
3
3
  "name": "passkey-kit-sdk",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
@@ -27,13 +27,13 @@ export const Errors = {
27
27
  8: { message: "ClientDataJsonChallengeIncorrect" },
28
28
  9: { message: "JsonParseError" }
29
29
  }
30
-
31
- export type SignerLimits = readonly [Option<Map<string, Option<Array<SignerKey>>>>];
32
30
  export type SignerExpiration = readonly [Option<u32>];
33
- export type SignerKey = { tag: "Policy", values: readonly [string] } | { tag: "Ed25519", values: readonly [Buffer] } | { tag: "Secp256r1", values: readonly [Buffer] };
34
- export type SignerVal = { tag: "Policy", values: readonly [SignerExpiration, SignerLimits] } | { tag: "Ed25519", values: readonly [SignerExpiration, SignerLimits] } | { tag: "Secp256r1", values: readonly [Buffer, SignerExpiration, SignerLimits] };
31
+ export type SignerLimits = readonly [Option<Map<string, Option<Array<SignerKey>>>>];
35
32
  export type SignerStorage = { tag: "Persistent", values: void } | { tag: "Temporary", values: void };
36
33
  export type Signer = { tag: "Policy", values: readonly [string, SignerExpiration, SignerLimits, SignerStorage] } | { tag: "Ed25519", values: readonly [Buffer, SignerExpiration, SignerLimits, SignerStorage] } | { tag: "Secp256r1", values: readonly [Buffer, Buffer, SignerExpiration, SignerLimits, SignerStorage] };
34
+ export type SignerKey = { tag: "Policy", values: readonly [string] } | { tag: "Ed25519", values: readonly [Buffer] } | { tag: "Secp256r1", values: readonly [Buffer] };
35
+ export type SignerVal = { tag: "Policy", values: readonly [SignerExpiration, SignerLimits] } | { tag: "Ed25519", values: readonly [SignerExpiration, SignerLimits] } | { tag: "Secp256r1", values: readonly [Buffer, SignerExpiration, SignerLimits] };
36
+
37
37
  export interface Secp256r1Signature {
38
38
  authenticator_data: Buffer;
39
39
  client_data_json: Buffer;
@@ -143,12 +143,12 @@ export class Client extends ContractClient {
143
143
  constructor(public readonly options: ContractClientOptions) {
144
144
  super(
145
145
  new ContractSpec(["AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAACQAAAAAAAAAITm90Rm91bmQAAAABAAAAAAAAAA1BbHJlYWR5RXhpc3RzAAAAAAAAAgAAAAAAAAAOTWlzc2luZ0NvbnRleHQAAAAAAAMAAAAAAAAADVNpZ25lckV4cGlyZWQAAAAAAAAEAAAAAAAAABJGYWlsZWRTaWduZXJMaW1pdHMAAAAAAAUAAAAAAAAAGEZhaWxlZFBvbGljeVNpZ25lckxpbWl0cwAAAAYAAAAAAAAAGVNpZ25hdHVyZUtleVZhbHVlTWlzbWF0Y2gAAAAAAAAHAAAAAAAAACBDbGllbnREYXRhSnNvbkNoYWxsZW5nZUluY29ycmVjdAAAAAgAAAAAAAAADkpzb25QYXJzZUVycm9yAAAAAAAJ",
146
- "AAAAAQAAAAAAAAAAAAAADFNpZ25lckxpbWl0cwAAAAEAAAAAAAAAATAAAAAAAAPoAAAD7AAAABMAAAPoAAAD6gAAB9AAAAAJU2lnbmVyS2V5AAAA",
147
146
  "AAAAAQAAAAAAAAAAAAAAEFNpZ25lckV4cGlyYXRpb24AAAABAAAAAAAAAAEwAAAAAAAD6AAAAAQ=",
148
- "AAAAAgAAAAAAAAAAAAAACVNpZ25lcktleQAAAAAAAAMAAAABAAAAAAAAAAZQb2xpY3kAAAAAAAEAAAATAAAAAQAAAAAAAAAHRWQyNTUxOQAAAAABAAAD7gAAACAAAAABAAAAAAAAAAlTZWNwMjU2cjEAAAAAAAABAAAADg==",
149
- "AAAAAgAAAAAAAAAAAAAACVNpZ25lclZhbAAAAAAAAAMAAAABAAAAAAAAAAZQb2xpY3kAAAAAAAIAAAfQAAAAEFNpZ25lckV4cGlyYXRpb24AAAfQAAAADFNpZ25lckxpbWl0cwAAAAEAAAAAAAAAB0VkMjU1MTkAAAAAAgAAB9AAAAAQU2lnbmVyRXhwaXJhdGlvbgAAB9AAAAAMU2lnbmVyTGltaXRzAAAAAQAAAAAAAAAJU2VjcDI1NnIxAAAAAAAAAwAAA+4AAABBAAAH0AAAABBTaWduZXJFeHBpcmF0aW9uAAAH0AAAAAxTaWduZXJMaW1pdHM=",
147
+ "AAAAAQAAAAAAAAAAAAAADFNpZ25lckxpbWl0cwAAAAEAAAAAAAAAATAAAAAAAAPoAAAD7AAAABMAAAPoAAAD6gAAB9AAAAAJU2lnbmVyS2V5AAAA",
150
148
  "AAAAAgAAAAAAAAAAAAAADVNpZ25lclN0b3JhZ2UAAAAAAAACAAAAAAAAAAAAAAAKUGVyc2lzdGVudAAAAAAAAAAAAAAAAAAJVGVtcG9yYXJ5AAAA",
151
149
  "AAAAAgAAAAAAAAAAAAAABlNpZ25lcgAAAAAAAwAAAAEAAAAAAAAABlBvbGljeQAAAAAABAAAABMAAAfQAAAAEFNpZ25lckV4cGlyYXRpb24AAAfQAAAADFNpZ25lckxpbWl0cwAAB9AAAAANU2lnbmVyU3RvcmFnZQAAAAAAAAEAAAAAAAAAB0VkMjU1MTkAAAAABAAAA+4AAAAgAAAH0AAAABBTaWduZXJFeHBpcmF0aW9uAAAH0AAAAAxTaWduZXJMaW1pdHMAAAfQAAAADVNpZ25lclN0b3JhZ2UAAAAAAAABAAAAAAAAAAlTZWNwMjU2cjEAAAAAAAAFAAAADgAAA+4AAABBAAAH0AAAABBTaWduZXJFeHBpcmF0aW9uAAAH0AAAAAxTaWduZXJMaW1pdHMAAAfQAAAADVNpZ25lclN0b3JhZ2UAAAA=",
150
+ "AAAAAgAAAAAAAAAAAAAACVNpZ25lcktleQAAAAAAAAMAAAABAAAAAAAAAAZQb2xpY3kAAAAAAAEAAAATAAAAAQAAAAAAAAAHRWQyNTUxOQAAAAABAAAD7gAAACAAAAABAAAAAAAAAAlTZWNwMjU2cjEAAAAAAAABAAAADg==",
151
+ "AAAAAgAAAAAAAAAAAAAACVNpZ25lclZhbAAAAAAAAAMAAAABAAAAAAAAAAZQb2xpY3kAAAAAAAIAAAfQAAAAEFNpZ25lckV4cGlyYXRpb24AAAfQAAAADFNpZ25lckxpbWl0cwAAAAEAAAAAAAAAB0VkMjU1MTkAAAAAAgAAB9AAAAAQU2lnbmVyRXhwaXJhdGlvbgAAB9AAAAAMU2lnbmVyTGltaXRzAAAAAQAAAAAAAAAJU2VjcDI1NnIxAAAAAAAAAwAAA+4AAABBAAAH0AAAABBTaWduZXJFeHBpcmF0aW9uAAAH0AAAAAxTaWduZXJMaW1pdHM=",
152
152
  "AAAAAQAAAAAAAAAAAAAAElNlY3AyNTZyMVNpZ25hdHVyZQAAAAAAAwAAAAAAAAASYXV0aGVudGljYXRvcl9kYXRhAAAAAAAOAAAAAAAAABBjbGllbnRfZGF0YV9qc29uAAAADgAAAAAAAAAJc2lnbmF0dXJlAAAAAAAD7gAAAEA=",
153
153
  "AAAAAgAAAAAAAAAAAAAACVNpZ25hdHVyZQAAAAAAAAMAAAAAAAAAAAAAAAZQb2xpY3kAAAAAAAEAAAAAAAAAB0VkMjU1MTkAAAAAAQAAA+4AAABAAAAAAQAAAAAAAAAJU2VjcDI1NnIxAAAAAAAAAQAAB9AAAAASU2VjcDI1NnIxU2lnbmF0dXJlAAA=",
154
154
  "AAAAAQAAAAAAAAAAAAAAClNpZ25hdHVyZXMAAAAAAAEAAAAAAAAAATAAAAAAAAPsAAAH0AAAAAlTaWduZXJLZXkAAAAAAAfQAAAACVNpZ25hdHVyZQAAAA==",
@@ -157,8 +157,7 @@ export class Client extends ContractClient {
157
157
  "AAAAAAAAAAAAAAANdXBkYXRlX3NpZ25lcgAAAAAAAAEAAAAAAAAABnNpZ25lcgAAAAAH0AAAAAZTaWduZXIAAAAAAAA=",
158
158
  "AAAAAAAAAAAAAAANcmVtb3ZlX3NpZ25lcgAAAAAAAAEAAAAAAAAACnNpZ25lcl9rZXkAAAAAB9AAAAAJU2lnbmVyS2V5AAAAAAAAAA==",
159
159
  "AAAAAAAAAAAAAAAUdXBkYXRlX2NvbnRyYWN0X2NvZGUAAAABAAAAAAAAAARoYXNoAAAD7gAAACAAAAAA",
160
- "AAAAAAAAAAAAAAAMX19jaGVja19hdXRoAAAAAwAAAAAAAAARc2lnbmF0dXJlX3BheWxvYWQAAAAAAAPuAAAAIAAAAAAAAAAKc2lnbmF0dXJlcwAAAAAH0AAAAApTaWduYXR1cmVzAAAAAAAAAAAADWF1dGhfY29udGV4dHMAAAAAAAPqAAAH0AAAAAdDb250ZXh0AAAAAAEAAAPpAAAD7QAAAAAAAAAD",
161
- "AAAAAQAAAAAAAAAAAAAAEFNpZ25lckV4cGlyYXRpb24AAAABAAAAAAAAAAEwAAAAAAAD6AAAAAQ="]),
160
+ "AAAAAAAAAAAAAAAMX19jaGVja19hdXRoAAAAAwAAAAAAAAARc2lnbmF0dXJlX3BheWxvYWQAAAAAAAPuAAAAIAAAAAAAAAAKc2lnbmF0dXJlcwAAAAAH0AAAAApTaWduYXR1cmVzAAAAAAAAAAAADWF1dGhfY29udGV4dHMAAAAAAAPqAAAH0AAAAAdDb250ZXh0AAAAAAEAAAPpAAAD7QAAAAAAAAAD"]),
162
161
  options
163
162
  )
164
163
  }
@@ -30,8 +30,25 @@ export declare const Errors: {
30
30
  message: string;
31
31
  };
32
32
  };
33
- export type SignerLimits = readonly [Option<Map<string, Option<Array<SignerKey>>>>];
34
33
  export type SignerExpiration = readonly [Option<u32>];
34
+ export type SignerLimits = readonly [Option<Map<string, Option<Array<SignerKey>>>>];
35
+ export type SignerStorage = {
36
+ tag: "Persistent";
37
+ values: void;
38
+ } | {
39
+ tag: "Temporary";
40
+ values: void;
41
+ };
42
+ export type Signer = {
43
+ tag: "Policy";
44
+ values: readonly [string, SignerExpiration, SignerLimits, SignerStorage];
45
+ } | {
46
+ tag: "Ed25519";
47
+ values: readonly [Buffer, SignerExpiration, SignerLimits, SignerStorage];
48
+ } | {
49
+ tag: "Secp256r1";
50
+ values: readonly [Buffer, Buffer, SignerExpiration, SignerLimits, SignerStorage];
51
+ };
35
52
  export type SignerKey = {
36
53
  tag: "Policy";
37
54
  values: readonly [string];
@@ -52,23 +69,6 @@ export type SignerVal = {
52
69
  tag: "Secp256r1";
53
70
  values: readonly [Buffer, SignerExpiration, SignerLimits];
54
71
  };
55
- export type SignerStorage = {
56
- tag: "Persistent";
57
- values: void;
58
- } | {
59
- tag: "Temporary";
60
- values: void;
61
- };
62
- export type Signer = {
63
- tag: "Policy";
64
- values: readonly [string, SignerExpiration, SignerLimits, SignerStorage];
65
- } | {
66
- tag: "Ed25519";
67
- values: readonly [Buffer, SignerExpiration, SignerLimits, SignerStorage];
68
- } | {
69
- tag: "Secp256r1";
70
- values: readonly [Buffer, Buffer, SignerExpiration, SignerLimits, SignerStorage];
71
- };
72
72
  export interface Secp256r1Signature {
73
73
  authenticator_data: Buffer;
74
74
  client_data_json: Buffer;
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.4",
2
+ "version": "0.3.5",
3
3
  "name": "sac-sdk",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
package/src/kit.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import { Client as PasskeyClient, type Signature, type SignerKey as SDKSignerKey, type SignerLimits as SDKSignerLimits } from 'passkey-kit-sdk'
2
- import { StrKey, hash, xdr, Keypair, Address } from '@stellar/stellar-sdk/minimal'
2
+ import { StrKey, hash, xdr, Keypair, Address, TransactionBuilder, Operation } from '@stellar/stellar-sdk/minimal'
3
3
  import type { AuthenticatorAttestationResponseJSON, AuthenticatorSelectionCriteria } from "@simplewebauthn/types"
4
4
  import { startRegistration, startAuthentication } from "@simplewebauthn/browser"
5
5
  import { Buffer } from 'buffer'
6
6
  import base64url from 'base64url'
7
7
  import type { SignerKey, SignerLimits, SignerStore } from './types'
8
8
  import { PasskeyBase } from './base'
9
- import { AssembledTransaction, basicNodeSigner, DEFAULT_TIMEOUT, type Tx } from '@stellar/stellar-sdk/minimal/contract'
9
+ import { AssembledTransaction, basicNodeSigner, DEFAULT_TIMEOUT, type AssembledTransactionOptions, type Tx } from '@stellar/stellar-sdk/minimal/contract'
10
10
  import type { Server } from '@stellar/stellar-sdk/minimal/rpc'
11
11
 
12
12
  export class PasskeyKit extends PasskeyBase {
@@ -396,10 +396,20 @@ export class PasskeyKit extends PasskeyBase {
396
396
  expiration?: number
397
397
  }
398
398
  ) {
399
- if (typeof txn === 'string') {
400
- txn = AssembledTransaction.fromXDR(this.wallet!.options, txn, this.wallet!.spec)
401
- } else if (!(txn instanceof AssembledTransaction)) {
402
- txn = AssembledTransaction.fromXDR(this.wallet!.options, txn.toXDR(), this.wallet!.spec)
399
+ if (!(txn instanceof AssembledTransaction)) {
400
+ let tx = typeof txn === 'string' ? txn : txn.toXDR()
401
+
402
+ try {
403
+ txn = AssembledTransaction.fromXDR(this.wallet!.options, tx, this.wallet!.spec)
404
+ } catch {
405
+ const built = TransactionBuilder.fromXDR(tx, this.networkPassphrase);
406
+ const operation = built.operations[0] as Operation.InvokeHostFunction;
407
+
408
+ txn = await AssembledTransaction.buildWithOp<T>(
409
+ Operation.invokeHostFunction({ func: operation.func }),
410
+ this.wallet!.options as AssembledTransactionOptions<T>
411
+ );
412
+ }
403
413
  }
404
414
 
405
415
  await txn.signAuthEntries({