signet-protocol 1.0.0 → 1.2.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.
- package/README.md +19 -2
- package/dist/badge.d.ts +3 -1
- package/dist/badge.d.ts.map +1 -1
- package/dist/badge.js +8 -0
- package/dist/badge.js.map +1 -1
- package/dist/cold-call.d.ts +2 -2
- package/dist/cold-call.d.ts.map +1 -1
- package/dist/cold-call.js +15 -12
- package/dist/cold-call.js.map +1 -1
- package/dist/constants.d.ts +16 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +17 -3
- package/dist/constants.js.map +1 -1
- package/dist/credentials.d.ts +4 -0
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +41 -4
- package/dist/credentials.js.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/migration.d.ts +39 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +95 -0
- package/dist/migration.js.map +1 -0
- package/dist/presentation.d.ts +50 -0
- package/dist/presentation.d.ts.map +1 -0
- package/dist/presentation.js +126 -0
- package/dist/presentation.js.map +1 -0
- package/dist/qr-router.d.ts +64 -0
- package/dist/qr-router.d.ts.map +1 -0
- package/dist/qr-router.js +274 -0
- package/dist/qr-router.js.map +1 -0
- package/dist/relay-events.d.ts +43 -0
- package/dist/relay-events.d.ts.map +1 -0
- package/dist/relay-events.js +64 -0
- package/dist/relay-events.js.map +1 -0
- package/dist/signet-me.d.ts +30 -0
- package/dist/signet-me.d.ts.map +1 -0
- package/dist/signet-me.js +55 -0
- package/dist/signet-me.js.map +1 -0
- package/dist/signing-backend.d.ts +25 -0
- package/dist/signing-backend.d.ts.map +1 -0
- package/dist/signing-backend.js +10 -0
- package/dist/signing-backend.js.map +1 -0
- package/dist/trust-score.d.ts.map +1 -1
- package/dist/trust-score.js +30 -24
- package/dist/trust-score.js.map +1 -1
- package/dist/url-auth.d.ts +29 -0
- package/dist/url-auth.d.ts.map +1 -0
- package/dist/url-auth.js +109 -0
- package/dist/url-auth.js.map +1 -0
- package/dist/venue-entry.d.ts +23 -0
- package/dist/venue-entry.d.ts.map +1 -0
- package/dist/venue-entry.js +39 -0
- package/dist/venue-entry.js.map +1 -0
- package/package.json +1 -1
- package/src/badge.ts +11 -1
- package/src/cold-call.ts +16 -12
- package/src/constants.ts +18 -3
- package/src/credentials.ts +44 -4
- package/src/index.ts +63 -0
- package/src/migration.ts +110 -0
- package/src/presentation.ts +165 -0
- package/src/qr-router.ts +280 -0
- package/src/relay-events.ts +98 -0
- package/src/signet-me.ts +104 -0
- package/src/signing-backend.ts +29 -0
- package/src/trust-score.ts +30 -24
- package/src/url-auth.ts +115 -0
- package/src/venue-entry.ts +49 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export type { CryptoAlgorithm, SignetTier, VerificationType, VerificationScope, VerificationMethod, VouchMethod, EnforcementLevel, ChallengeReason, BondAction, RevocationScope, EntityType, EntityMode, UnsignedEvent, NostrEvent, CredentialParams, VouchParams, PolicyParams, PolicyCheckResult, VerifierParams, ChallengeParams, RevocationParams, TrustSignal, TrustScoreBreakdown, MerkleProof, SelectiveDisclosure, ParsedCredential, ParsedVouch, ParsedPolicy, ParsedVerifier, ParsedChallenge, ParsedRevocation, ParsedDelegation, ParsedIdentityBridge, TwoCredentialResult, CredentialChain, GuardianDelegationParams, GuardianDelegationScope, SimpleEntityType, BitcoinAddressType, BondProof, BondStatus, BondVerificationResult, BIP322Verifier, } from './types.js';
|
|
2
2
|
export { ENTITY_DISPLAY_LABELS } from './types.js';
|
|
3
|
-
export { ATTESTATION_KIND, APP_DATA_KIND, ATTESTATION_TYPES, SIGNET_KINDS, SIGNET_LABEL, DEFAULT_VOUCH_THRESHOLD, DEFAULT_VOUCHER_MIN_TIER, DEFAULT_CREDENTIAL_EXPIRY_SECONDS, DEFAULT_REVOCATION_THRESHOLD, VERIFIER_ACTIVATION, TRUST_WEIGHTS, MAX_TRUST_SCORE, SIGNAL_PRIORITY, MIN_BRIDGE_RING_SIZE, ENTITY_TYPES, DELEGATION_CONSTRAINTS, ENTITY_LABELS, DEFAULT_CRYPTO_ALGORITHM, BOND_DOMAIN_SEPARATOR, DEFAULT_BOND_MAX_AGE_SECS, VALID_BOND_ADDRESS_TYPES, } from './constants.js';
|
|
3
|
+
export { ATTESTATION_KIND, APP_DATA_KIND, ATTESTATION_TYPES, SIGNET_KINDS, SIGNET_LABEL, DEFAULT_VOUCH_THRESHOLD, DEFAULT_VOUCHER_MIN_TIER, DEFAULT_CREDENTIAL_EXPIRY_SECONDS, DEFAULT_REVOCATION_THRESHOLD, VERIFIER_ACTIVATION, TRUST_WEIGHTS, TRUST_CAPS, MAX_TRUST_SCORE, SIGNAL_PRIORITY, MIN_BRIDGE_RING_SIZE, ENTITY_TYPES, DELEGATION_CONSTRAINTS, ENTITY_LABELS, DEFAULT_CRYPTO_ALGORITHM, BOND_DOMAIN_SEPARATOR, DEFAULT_BOND_MAX_AGE_SECS, VALID_BOND_ADDRESS_TYPES, } from './constants.js';
|
|
4
4
|
export { generateKeyPair, getPublicKey, signEvent, verifyEvent, getEventId, hash, hashString, } from './crypto.js';
|
|
5
|
-
export { buildCredentialEvent, createSelfDeclaredCredential, createPeerVouchedCredential, createProfessionalCredential, createChildSafetyCredential, verifyCredential, isCredentialExpired, parseCredential, createRingProtectedCredential, createRingProtectedChildCredential, verifyRingProtectedContent, renewCredential, needsRenewal, createTwoCredentialCeremony, supersedeCredential, resolveCredentialChain, isSuperseded, computeNullifier, checkNullifierDuplicate, buildNullifierChainTag, computeNullifierFamily, buildNullifierFamilyTags, checkNullifierFamilyDuplicate, createGuardianDelegation, } from './credentials.js';
|
|
5
|
+
export { buildCredentialEvent, createSelfDeclaredCredential, createPeerVouchedCredential, createProfessionalCredential, createChildSafetyCredential, verifyCredential, isCredentialExpired, parseCredential, createRingProtectedCredential, createRingProtectedChildCredential, verifyRingProtectedContent, renewCredential, needsRenewal, createTwoCredentialCeremony, computeAge, supersedeCredential, resolveCredentialChain, isSuperseded, computeNullifier, checkNullifierDuplicate, buildNullifierChainTag, computeNullifierFamily, buildNullifierFamilyTags, checkNullifierFamilyDuplicate, createGuardianDelegation, } from './credentials.js';
|
|
6
6
|
export type { RingProtectedContent, DocumentDescriptor, NullifierFamily } from './credentials.js';
|
|
7
7
|
export { buildVouchEvent, createVouch, parseVouch, countQualifyingVouches, hasEnoughVouches, getVouchers, } from './vouches.js';
|
|
8
8
|
export { buildPolicyEvent, createPolicy, parsePolicy, checkPolicyCompliance, PolicyChecker, } from './policies.js';
|
|
@@ -52,4 +52,12 @@ export { SIGNET_EPOCH_SECONDS, SIGNET_WORD_COUNT, SIGNET_TOLERANCE, MAX_WORD_COU
|
|
|
52
52
|
export type { SignetWordsConfig } from './signet-words.js';
|
|
53
53
|
export { fetchInstitutionKeys, generateSessionCode, deriveColdCallWords, initiateColdCallVerification, completeColdCallVerification, type ColdCallSession, } from './cold-call.js';
|
|
54
54
|
export type { InstitutionKeys, InstitutionPubkey } from './types.js';
|
|
55
|
+
export { parseVerifyRequest, buildVerifyResponse, credentialSatisfiesRequest, VALID_AGE_RANGES, type VerifyRequest, type VerifyResponse, } from './presentation.js';
|
|
56
|
+
export { routeQR, QR_MAX_PAYLOAD_SIZE, type QRAction, type AuthRequest, type LoginRequest, } from './qr-router.js';
|
|
57
|
+
export { parseUrlAuthParams, buildAuthCallbackUrl, buildAuthDeniedUrl, getUrlAuthSiteName, } from './url-auth.js';
|
|
58
|
+
export { buildVerifyEventTemplate, buildRejectionEventTemplate, buildAuthResponseEventTemplate, type AuthResponse, } from './relay-events.js';
|
|
59
|
+
export { getSignetMeDisplay, verifySignetMe, SIGNET_ME_ROTATION_SECONDS, SIGNET_ME_TOLERANCE, type SignetMeDisplay, } from './signet-me.js';
|
|
60
|
+
export { buildVenueEntryEventTemplate, VENUE_ENTRY_KIND, } from './venue-entry.js';
|
|
61
|
+
export type { SigningBackend, SigningMode } from './signing-backend.js';
|
|
62
|
+
export { createMigrationEvent, parseMigrationEvent, followMigrationChain, } from './migration.js';
|
|
55
63
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Entity display labels (value export from types)
|
|
4
4
|
export { ENTITY_DISPLAY_LABELS } from './types.js';
|
|
5
5
|
// Constants
|
|
6
|
-
export { ATTESTATION_KIND, APP_DATA_KIND, ATTESTATION_TYPES, SIGNET_KINDS, SIGNET_LABEL, DEFAULT_VOUCH_THRESHOLD, DEFAULT_VOUCHER_MIN_TIER, DEFAULT_CREDENTIAL_EXPIRY_SECONDS, DEFAULT_REVOCATION_THRESHOLD, VERIFIER_ACTIVATION, TRUST_WEIGHTS, MAX_TRUST_SCORE, SIGNAL_PRIORITY, MIN_BRIDGE_RING_SIZE, ENTITY_TYPES, DELEGATION_CONSTRAINTS, ENTITY_LABELS, DEFAULT_CRYPTO_ALGORITHM,
|
|
6
|
+
export { ATTESTATION_KIND, APP_DATA_KIND, ATTESTATION_TYPES, SIGNET_KINDS, SIGNET_LABEL, DEFAULT_VOUCH_THRESHOLD, DEFAULT_VOUCHER_MIN_TIER, DEFAULT_CREDENTIAL_EXPIRY_SECONDS, DEFAULT_REVOCATION_THRESHOLD, VERIFIER_ACTIVATION, TRUST_WEIGHTS, TRUST_CAPS, MAX_TRUST_SCORE, SIGNAL_PRIORITY, MIN_BRIDGE_RING_SIZE, ENTITY_TYPES, DELEGATION_CONSTRAINTS, ENTITY_LABELS, DEFAULT_CRYPTO_ALGORITHM,
|
|
7
7
|
// Bond constants
|
|
8
8
|
BOND_DOMAIN_SEPARATOR, DEFAULT_BOND_MAX_AGE_SECS, VALID_BOND_ADDRESS_TYPES, } from './constants.js';
|
|
9
9
|
// Crypto
|
|
@@ -16,6 +16,8 @@ createRingProtectedCredential, createRingProtectedChildCredential, verifyRingPro
|
|
|
16
16
|
renewCredential, needsRenewal,
|
|
17
17
|
// Two-credential ceremony
|
|
18
18
|
createTwoCredentialCeremony,
|
|
19
|
+
// Age computation
|
|
20
|
+
computeAge,
|
|
19
21
|
// Credential chains
|
|
20
22
|
supersedeCredential, resolveCredentialChain, isSuperseded,
|
|
21
23
|
// Nullifier utilities
|
|
@@ -83,4 +85,18 @@ export { computeBadge, getTrustLevel, meetsMinimumTier, filterEventsForPubkey, b
|
|
|
83
85
|
export { SIGNET_EPOCH_SECONDS, SIGNET_WORD_COUNT, SIGNET_TOLERANCE, MAX_WORD_COUNT, SIGNET_WORDLIST, getEpoch, deriveWords, getSignetWords, verifySignetWords, formatSignetWords, getSignetDisplay, } from './signet-words.js';
|
|
84
86
|
// Cold-Call Verification (institutional caller verification via .well-known/signet.json + ephemeral ECDH)
|
|
85
87
|
export { fetchInstitutionKeys, generateSessionCode, deriveColdCallWords, initiateColdCallVerification, completeColdCallVerification, } from './cold-call.js';
|
|
88
|
+
// Presentation Protocol (verification requests/responses)
|
|
89
|
+
export { parseVerifyRequest, buildVerifyResponse, credentialSatisfiesRequest, VALID_AGE_RANGES, } from './presentation.js';
|
|
90
|
+
// QR Router (QR code type detection and routing)
|
|
91
|
+
export { routeQR, QR_MAX_PAYLOAD_SIZE, } from './qr-router.js';
|
|
92
|
+
// URL Auth (Sign in with Signet redirect flow)
|
|
93
|
+
export { parseUrlAuthParams, buildAuthCallbackUrl, buildAuthDeniedUrl, getUrlAuthSiteName, } from './url-auth.js';
|
|
94
|
+
// Relay Event Builders (unsigned kind 29999 event templates)
|
|
95
|
+
export { buildVerifyEventTemplate, buildRejectionEventTemplate, buildAuthResponseEventTemplate, } from './relay-events.js';
|
|
96
|
+
// Signet Me (directional verification words)
|
|
97
|
+
export { getSignetMeDisplay, verifySignetMe, SIGNET_ME_ROTATION_SECONDS, SIGNET_ME_TOLERANCE, } from './signet-me.js';
|
|
98
|
+
// Venue Entry (kind 21235 event builder)
|
|
99
|
+
export { buildVenueEntryEventTemplate, VENUE_ENTRY_KIND, } from './venue-entry.js';
|
|
100
|
+
// Migration (kind 31000, type: migration — see spec/protocol.md §21.4.3)
|
|
101
|
+
export { createMigrationEvent, parseMigrationEvent, followMigrationChain, } from './migration.js';
|
|
86
102
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { NostrEvent } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create and sign a migration event (kind 31000, type: migration).
|
|
4
|
+
*
|
|
5
|
+
* The event is signed by the old private key, proving the old identity
|
|
6
|
+
* authorised the migration to the new pubkey.
|
|
7
|
+
*
|
|
8
|
+
* @param oldPrivateKey - Private key of the old (migrating-away) identity
|
|
9
|
+
* @param newPubkey - x-only hex pubkey of the new (receiving) identity
|
|
10
|
+
* @returns Signed kind 31000 migration event
|
|
11
|
+
*/
|
|
12
|
+
export declare function createMigrationEvent(oldPrivateKey: string, newPubkey: string): Promise<NostrEvent>;
|
|
13
|
+
/**
|
|
14
|
+
* Parse a migration event, returning the old and new pubkeys.
|
|
15
|
+
*
|
|
16
|
+
* @param event - The event to parse
|
|
17
|
+
* @returns `{ oldPubkey, newPubkey }` or `null` if the event is not a valid migration event
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseMigrationEvent(event: NostrEvent): {
|
|
20
|
+
oldPubkey: string;
|
|
21
|
+
newPubkey: string;
|
|
22
|
+
} | null;
|
|
23
|
+
/**
|
|
24
|
+
* Follow a chain of migration events to find the current active pubkey.
|
|
25
|
+
*
|
|
26
|
+
* Given a starting pubkey and a set of events, this function follows migration
|
|
27
|
+
* events to their conclusion. If pubkey A migrated to B, and B migrated to C,
|
|
28
|
+
* the function returns C.
|
|
29
|
+
*
|
|
30
|
+
* Cycle detection is enforced via a visited set. If a cycle is detected or the
|
|
31
|
+
* chain exceeds MAX_CHAIN_DEPTH hops, the last successfully reached pubkey is
|
|
32
|
+
* returned rather than throwing.
|
|
33
|
+
*
|
|
34
|
+
* @param pubkey - Starting pubkey to follow
|
|
35
|
+
* @param events - Pool of events to search for migration records
|
|
36
|
+
* @returns The current (final) active pubkey after following all migrations
|
|
37
|
+
*/
|
|
38
|
+
export declare function followMigrationChain(pubkey: string, events: NostrEvent[]): string;
|
|
39
|
+
//# sourceMappingURL=migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ7C;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CAiBrB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,GAChB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAWjD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAwBjF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// Migration Event (kind 31000, type: migration)
|
|
2
|
+
// Allows an identity to publish a signed record linking an old pubkey to a new pubkey.
|
|
3
|
+
// The event is signed by the OLD private key, proving the old identity authorised the migration.
|
|
4
|
+
// See spec/protocol.md §21.4.3 for the full migration lifecycle.
|
|
5
|
+
import { createAttestation } from 'nostr-attestations';
|
|
6
|
+
import { ATTESTATION_KIND } from './constants.js';
|
|
7
|
+
import { signEvent, getPublicKey } from './crypto.js';
|
|
8
|
+
import { getTagValue } from './validation.js';
|
|
9
|
+
/** Maximum number of hops followed when resolving a migration chain (matches credential chain depth) */
|
|
10
|
+
const MAX_CHAIN_DEPTH = 100;
|
|
11
|
+
/** The attestation type identifier for migration events */
|
|
12
|
+
const MIGRATION_TYPE = 'migration';
|
|
13
|
+
/**
|
|
14
|
+
* Create and sign a migration event (kind 31000, type: migration).
|
|
15
|
+
*
|
|
16
|
+
* The event is signed by the old private key, proving the old identity
|
|
17
|
+
* authorised the migration to the new pubkey.
|
|
18
|
+
*
|
|
19
|
+
* @param oldPrivateKey - Private key of the old (migrating-away) identity
|
|
20
|
+
* @param newPubkey - x-only hex pubkey of the new (receiving) identity
|
|
21
|
+
* @returns Signed kind 31000 migration event
|
|
22
|
+
*/
|
|
23
|
+
export async function createMigrationEvent(oldPrivateKey, newPubkey) {
|
|
24
|
+
const oldPubkey = getPublicKey(oldPrivateKey);
|
|
25
|
+
const template = createAttestation({
|
|
26
|
+
type: MIGRATION_TYPE,
|
|
27
|
+
identifier: oldPubkey,
|
|
28
|
+
subject: newPubkey,
|
|
29
|
+
content: '',
|
|
30
|
+
});
|
|
31
|
+
const unsigned = {
|
|
32
|
+
...template,
|
|
33
|
+
pubkey: oldPubkey,
|
|
34
|
+
created_at: Math.floor(Date.now() / 1000),
|
|
35
|
+
};
|
|
36
|
+
return signEvent(unsigned, oldPrivateKey);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Parse a migration event, returning the old and new pubkeys.
|
|
40
|
+
*
|
|
41
|
+
* @param event - The event to parse
|
|
42
|
+
* @returns `{ oldPubkey, newPubkey }` or `null` if the event is not a valid migration event
|
|
43
|
+
*/
|
|
44
|
+
export function parseMigrationEvent(event) {
|
|
45
|
+
if (event.kind !== ATTESTATION_KIND)
|
|
46
|
+
return null;
|
|
47
|
+
if (getTagValue(event, 'type') !== MIGRATION_TYPE)
|
|
48
|
+
return null;
|
|
49
|
+
const newPubkey = getTagValue(event, 'p');
|
|
50
|
+
if (!newPubkey)
|
|
51
|
+
return null;
|
|
52
|
+
// The signer of the migration event is the old identity
|
|
53
|
+
const oldPubkey = event.pubkey;
|
|
54
|
+
return { oldPubkey, newPubkey };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Follow a chain of migration events to find the current active pubkey.
|
|
58
|
+
*
|
|
59
|
+
* Given a starting pubkey and a set of events, this function follows migration
|
|
60
|
+
* events to their conclusion. If pubkey A migrated to B, and B migrated to C,
|
|
61
|
+
* the function returns C.
|
|
62
|
+
*
|
|
63
|
+
* Cycle detection is enforced via a visited set. If a cycle is detected or the
|
|
64
|
+
* chain exceeds MAX_CHAIN_DEPTH hops, the last successfully reached pubkey is
|
|
65
|
+
* returned rather than throwing.
|
|
66
|
+
*
|
|
67
|
+
* @param pubkey - Starting pubkey to follow
|
|
68
|
+
* @param events - Pool of events to search for migration records
|
|
69
|
+
* @returns The current (final) active pubkey after following all migrations
|
|
70
|
+
*/
|
|
71
|
+
export function followMigrationChain(pubkey, events) {
|
|
72
|
+
// Build a map from old pubkey → new pubkey using valid migration events
|
|
73
|
+
const migrations = new Map();
|
|
74
|
+
for (const event of events) {
|
|
75
|
+
const parsed = parseMigrationEvent(event);
|
|
76
|
+
if (parsed) {
|
|
77
|
+
// Only record the first migration found for each old pubkey
|
|
78
|
+
if (!migrations.has(parsed.oldPubkey)) {
|
|
79
|
+
migrations.set(parsed.oldPubkey, parsed.newPubkey);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const visited = new Set();
|
|
84
|
+
let current = pubkey;
|
|
85
|
+
while (migrations.has(current)) {
|
|
86
|
+
if (visited.has(current))
|
|
87
|
+
break; // cycle detected
|
|
88
|
+
if (visited.size >= MAX_CHAIN_DEPTH)
|
|
89
|
+
break; // depth limit reached
|
|
90
|
+
visited.add(current);
|
|
91
|
+
current = migrations.get(current);
|
|
92
|
+
}
|
|
93
|
+
return current;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,uFAAuF;AACvF,iGAAiG;AACjG,iEAAiE;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,wGAAwG;AACxG,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,2DAA2D;AAC3D,MAAM,cAAc,GAAG,WAAW,CAAC;AAEnC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,aAAqB,EACrB,SAAiB;IAEjB,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,iBAAiB,CAAC;QACjC,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG;QACf,GAAG,QAAQ;QACX,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KAC1C,CAAC;IAEF,OAAO,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAiB;IAEjB,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IAE/D,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,wDAAwD;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;IAE/B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,MAAoB;IACvE,wEAAwE;IACxE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,MAAM,EAAE,CAAC;YACX,4DAA4D;YAC5D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,OAAO,GAAG,MAAM,CAAC;IAErB,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,MAAM,CAAU,iBAAiB;QAC3D,IAAI,OAAO,CAAC,IAAI,IAAI,eAAe;YAAE,MAAM,CAAC,sBAAsB;QAClE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;IACrC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signet Credential Presentation Protocol
|
|
3
|
+
*
|
|
4
|
+
* Types and validation for age verification requests/responses.
|
|
5
|
+
* This module defines the wire protocol — transport (BroadcastChannel,
|
|
6
|
+
* relay publish) is handled by the consuming application.
|
|
7
|
+
*/
|
|
8
|
+
/** Valid age range values for verification requests. */
|
|
9
|
+
export declare const VALID_AGE_RANGES: readonly ["0-3", "4-7", "8-12", "13-17", "18+"];
|
|
10
|
+
export interface VerifyRequest {
|
|
11
|
+
type: 'signet-verify-request';
|
|
12
|
+
requestId: string;
|
|
13
|
+
requiredAgeRange: string;
|
|
14
|
+
callbackUrl?: string;
|
|
15
|
+
relayUrl?: string;
|
|
16
|
+
origin?: string;
|
|
17
|
+
/** Session pubkey (hex) for NIP-17 gift-wrap encryption. If absent, response is cleartext. */
|
|
18
|
+
sessionPubkey?: string;
|
|
19
|
+
timestamp: number;
|
|
20
|
+
}
|
|
21
|
+
export interface VerifyResponse {
|
|
22
|
+
type: 'signet-verify-response';
|
|
23
|
+
requestId: string;
|
|
24
|
+
credential: {
|
|
25
|
+
id: string;
|
|
26
|
+
kind: number;
|
|
27
|
+
pubkey: string;
|
|
28
|
+
tags: string[][];
|
|
29
|
+
content: string;
|
|
30
|
+
sig: string;
|
|
31
|
+
created_at: number;
|
|
32
|
+
};
|
|
33
|
+
subjectPubkey: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Parse a verification request from a QR code payload or JSON string.
|
|
37
|
+
* Returns null for invalid or expired requests.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseVerifyRequest(data: string): VerifyRequest | null;
|
|
40
|
+
/**
|
|
41
|
+
* Build a verification response.
|
|
42
|
+
*/
|
|
43
|
+
export declare function buildVerifyResponse(requestId: string, credential: VerifyResponse['credential'], subjectPubkey: string): VerifyResponse;
|
|
44
|
+
/**
|
|
45
|
+
* Check if a credential's tags satisfy a verification request's age range.
|
|
46
|
+
* If the credential has a ZK age proof (zk-age tag), verifies the proof.
|
|
47
|
+
* Legacy credentials without proofs are accepted during migration.
|
|
48
|
+
*/
|
|
49
|
+
export declare function credentialSatisfiesRequest(credentialTags: string[][], requiredAgeRange: string, credentialContent?: string, subjectPubkey?: string): boolean;
|
|
50
|
+
//# sourceMappingURL=presentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../src/presentation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,iDAAkD,CAAC;AAEhF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8FAA8F;IAC9F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,wBAAwB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAoErE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,EACxC,aAAa,EAAE,MAAM,GACpB,cAAc,CAOhB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,MAAM,EAAE,EAAE,EAC1B,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAwBT"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signet Credential Presentation Protocol
|
|
3
|
+
*
|
|
4
|
+
* Types and validation for age verification requests/responses.
|
|
5
|
+
* This module defines the wire protocol — transport (BroadcastChannel,
|
|
6
|
+
* relay publish) is handled by the consuming application.
|
|
7
|
+
*/
|
|
8
|
+
import { verifyAgeRangeProof } from './range-proof.js';
|
|
9
|
+
/** Valid age range values for verification requests. */
|
|
10
|
+
export const VALID_AGE_RANGES = ['0-3', '4-7', '8-12', '13-17', '18+'];
|
|
11
|
+
/**
|
|
12
|
+
* Parse a verification request from a QR code payload or JSON string.
|
|
13
|
+
* Returns null for invalid or expired requests.
|
|
14
|
+
*/
|
|
15
|
+
export function parseVerifyRequest(data) {
|
|
16
|
+
try {
|
|
17
|
+
let parsed;
|
|
18
|
+
try {
|
|
19
|
+
parsed = JSON.parse(data);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// Try base64 decode (from signet:verify: prefix)
|
|
23
|
+
const base64 = data.startsWith('signet:verify:') ? data.slice(14) : data;
|
|
24
|
+
parsed = JSON.parse(atob(base64));
|
|
25
|
+
}
|
|
26
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
27
|
+
return null;
|
|
28
|
+
const obj = parsed;
|
|
29
|
+
if (obj.type !== 'signet-verify-request')
|
|
30
|
+
return null;
|
|
31
|
+
if (typeof obj.requestId !== 'string')
|
|
32
|
+
return null;
|
|
33
|
+
if (typeof obj.requiredAgeRange !== 'string')
|
|
34
|
+
return null;
|
|
35
|
+
const requestId = obj.requestId;
|
|
36
|
+
const requiredAgeRange = obj.requiredAgeRange;
|
|
37
|
+
if (typeof obj.timestamp !== 'number')
|
|
38
|
+
return null;
|
|
39
|
+
const timestamp = obj.timestamp;
|
|
40
|
+
// Validate timestamp is within 5 minutes of now
|
|
41
|
+
if (Math.abs(Date.now() / 1000 - timestamp) > 300)
|
|
42
|
+
return null;
|
|
43
|
+
// Validate requestId is a 32-char hex string
|
|
44
|
+
if (!/^[0-9a-f]{32}$/i.test(requestId))
|
|
45
|
+
return null;
|
|
46
|
+
// Validate requiredAgeRange is in the allowed set
|
|
47
|
+
if (!VALID_AGE_RANGES.includes(requiredAgeRange))
|
|
48
|
+
return null;
|
|
49
|
+
// Cap and validate URL fields
|
|
50
|
+
const callbackUrl = typeof obj.callbackUrl === 'string' ? obj.callbackUrl.slice(0, 1024) : undefined;
|
|
51
|
+
const relayUrl = typeof obj.relayUrl === 'string' ? obj.relayUrl.slice(0, 1024) : undefined;
|
|
52
|
+
// Validate callbackUrl scheme: must be https:// or http://localhost
|
|
53
|
+
if (callbackUrl !== undefined && !/^https:\/\//i.test(callbackUrl) && !/^http:\/\/(localhost|127\.0\.0\.1)([:\/]|$)/i.test(callbackUrl)) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
// Validate relayUrl: wss:// or ws://localhost
|
|
57
|
+
if (relayUrl !== undefined && !/^wss:\/\//i.test(relayUrl) && !/^ws:\/\/(localhost|127\.0\.0\.1)([:\/]|$)/i.test(relayUrl))
|
|
58
|
+
return null;
|
|
59
|
+
const origin = typeof obj.origin === 'string' ? obj.origin.slice(0, 1024) : undefined;
|
|
60
|
+
// Validate origin scheme if present
|
|
61
|
+
if (origin !== undefined) {
|
|
62
|
+
if (!/^https:\/\//i.test(origin) && !/^http:\/\/(localhost|127\.0\.0\.1)([:\/]|$)/i.test(origin))
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
// Extract session pubkey for NIP-17 gift wrapping (optional, 64-char hex)
|
|
66
|
+
const sessionPubkey = typeof obj.sessionPubkey === 'string' && /^[0-9a-f]{64}$/i.test(obj.sessionPubkey)
|
|
67
|
+
? obj.sessionPubkey
|
|
68
|
+
: undefined;
|
|
69
|
+
return {
|
|
70
|
+
type: 'signet-verify-request',
|
|
71
|
+
requestId,
|
|
72
|
+
requiredAgeRange,
|
|
73
|
+
callbackUrl,
|
|
74
|
+
relayUrl,
|
|
75
|
+
origin,
|
|
76
|
+
sessionPubkey,
|
|
77
|
+
timestamp,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Build a verification response.
|
|
86
|
+
*/
|
|
87
|
+
export function buildVerifyResponse(requestId, credential, subjectPubkey) {
|
|
88
|
+
return {
|
|
89
|
+
type: 'signet-verify-response',
|
|
90
|
+
requestId,
|
|
91
|
+
credential,
|
|
92
|
+
subjectPubkey,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if a credential's tags satisfy a verification request's age range.
|
|
97
|
+
* If the credential has a ZK age proof (zk-age tag), verifies the proof.
|
|
98
|
+
* Legacy credentials without proofs are accepted during migration.
|
|
99
|
+
*/
|
|
100
|
+
export function credentialSatisfiesRequest(credentialTags, requiredAgeRange, credentialContent, subjectPubkey) {
|
|
101
|
+
const ageRange = credentialTags.find(t => t[0] === 'age-range')?.[1];
|
|
102
|
+
if (!ageRange)
|
|
103
|
+
return false;
|
|
104
|
+
// Age range must match
|
|
105
|
+
if (requiredAgeRange === '18+' && ageRange !== '18+')
|
|
106
|
+
return false;
|
|
107
|
+
if (requiredAgeRange !== '18+' && ageRange !== requiredAgeRange)
|
|
108
|
+
return false;
|
|
109
|
+
// If ZK proof is present, verify it
|
|
110
|
+
const hasZkAge = credentialTags.some(t => t[0] === 'zk-age' && t[1] === '1');
|
|
111
|
+
if (hasZkAge && credentialContent && subjectPubkey) {
|
|
112
|
+
try {
|
|
113
|
+
const content = JSON.parse(credentialContent);
|
|
114
|
+
if (content.rangeProof) {
|
|
115
|
+
if (!verifyAgeRangeProof(content.rangeProof, ageRange, subjectPubkey)) {
|
|
116
|
+
return false; // Proof invalid — reject even if tag matches
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return false; // Malformed content — reject
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation.js","sourceRoot":"","sources":["../src/presentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal QR Router — detects QR type and returns the appropriate action.
|
|
3
|
+
*
|
|
4
|
+
* Supported QR types:
|
|
5
|
+
* 1. signet-verify-request — age/credential verification
|
|
6
|
+
* 2. signet-auth-request — NIP-46 style login (prove pubkey ownership)
|
|
7
|
+
* 3. signet-login-request — combined auth + verification
|
|
8
|
+
* 4. nostr+connect:// — standard NIP-46 connection string
|
|
9
|
+
* 5. npub1... / nprofile1... — Nostr public key (add as contact)
|
|
10
|
+
* 6. Unknown — not recognised
|
|
11
|
+
*/
|
|
12
|
+
import type { VerifyRequest } from './presentation.js';
|
|
13
|
+
export type QRAction = {
|
|
14
|
+
type: 'verify';
|
|
15
|
+
request: VerifyRequest;
|
|
16
|
+
} | {
|
|
17
|
+
type: 'auth';
|
|
18
|
+
request: AuthRequest;
|
|
19
|
+
} | {
|
|
20
|
+
type: 'login';
|
|
21
|
+
request: LoginRequest;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'nostr-connect';
|
|
24
|
+
uri: string;
|
|
25
|
+
pubkey: string;
|
|
26
|
+
relay?: string;
|
|
27
|
+
} | {
|
|
28
|
+
type: 'contact';
|
|
29
|
+
npub: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'unknown';
|
|
32
|
+
raw: string;
|
|
33
|
+
};
|
|
34
|
+
export interface AuthRequest {
|
|
35
|
+
type: 'signet-auth-request';
|
|
36
|
+
requestId: string;
|
|
37
|
+
challenge: string;
|
|
38
|
+
origin: string;
|
|
39
|
+
relay?: string;
|
|
40
|
+
callbackUrl?: string;
|
|
41
|
+
/** Session pubkey (hex) for NIP-17 gift-wrap encryption. If absent, response is cleartext. */
|
|
42
|
+
sessionPubkey?: string;
|
|
43
|
+
timestamp: number;
|
|
44
|
+
}
|
|
45
|
+
export interface LoginRequest {
|
|
46
|
+
type: 'signet-login-request';
|
|
47
|
+
requestId: string;
|
|
48
|
+
challenge: string;
|
|
49
|
+
requiredAgeRange?: string;
|
|
50
|
+
origin: string;
|
|
51
|
+
relay?: string;
|
|
52
|
+
callbackUrl?: string;
|
|
53
|
+
/** Session pubkey (hex) for NIP-17 gift-wrap encryption. If absent, response is cleartext. */
|
|
54
|
+
sessionPubkey?: string;
|
|
55
|
+
timestamp: number;
|
|
56
|
+
}
|
|
57
|
+
/** Maximum QR payload size in bytes. */
|
|
58
|
+
export declare const QR_MAX_PAYLOAD_SIZE = 8192;
|
|
59
|
+
/**
|
|
60
|
+
* Route a raw QR code string to the appropriate action.
|
|
61
|
+
* All parsing is defensive — unknown or malformed input returns { type: 'unknown' }.
|
|
62
|
+
*/
|
|
63
|
+
export declare function routeQR(data: string): QRAction;
|
|
64
|
+
//# sourceMappingURL=qr-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qr-router.d.ts","sourceRoot":"","sources":["../src/qr-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wCAAwC;AACxC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAsFxC;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CA4I9C"}
|