@trust402/sdk 0.1.9 → 0.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/LICENSE +80 -0
- package/dist/trust402.d.ts +61 -35
- package/dist/trust402.d.ts.map +1 -1
- package/dist/trust402.js +86 -140
- package/dist/trust402.js.map +1 -1
- package/dist/trust402.test.js +151 -269
- package/dist/trust402.test.js.map +1 -1
- package/package.json +11 -11
package/LICENSE
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
Business Source License 1.1
|
|
2
|
+
|
|
3
|
+
License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
|
|
4
|
+
"Business Source License" is a trademark of MariaDB Corporation Ab.
|
|
5
|
+
|
|
6
|
+
Parameters
|
|
7
|
+
|
|
8
|
+
Licensor: FRAME00 Inc.
|
|
9
|
+
Additional Use Grant: You may use the Licensed Work for non-production
|
|
10
|
+
purposes, including but not limited to evaluation,
|
|
11
|
+
testing, research, and learning, including in
|
|
12
|
+
hackathons, academic settings, and personal projects,
|
|
13
|
+
provided that such use does not constitute a
|
|
14
|
+
competing commercial service.
|
|
15
|
+
Licensed Work: lemmaoracle/lemma
|
|
16
|
+
(the software in this repository, excluding packages
|
|
17
|
+
that contain their own LICENSE file)
|
|
18
|
+
Change Date: 2030-05-01
|
|
19
|
+
|
|
20
|
+
Change License: Apache License, Version 2.0
|
|
21
|
+
|
|
22
|
+
Notice:
|
|
23
|
+
|
|
24
|
+
The Licensed Work is provided under the Business Source License 1.1
|
|
25
|
+
(BSL 1.1). You may not use the Licensed Work except in compliance with
|
|
26
|
+
the BSL 1.1.
|
|
27
|
+
|
|
28
|
+
You may produce and distribute the Licensed Work, in whole or in part,
|
|
29
|
+
in Source or Object form, subject to the following conditions:
|
|
30
|
+
|
|
31
|
+
1. You must give any other recipients of the Licensed Work a copy of
|
|
32
|
+
this License; and
|
|
33
|
+
|
|
34
|
+
2. You must cause any modified files to carry prominent notices stating
|
|
35
|
+
that You changed the files; and
|
|
36
|
+
|
|
37
|
+
3. You must retain, in the Source form of any Licensed Work that You
|
|
38
|
+
distribute, all copyright, patent, trademark, and attribution
|
|
39
|
+
notices from the Source form of the Licensed Work, excluding those
|
|
40
|
+
notices that do not pertain to any part of the Licensed Work; and
|
|
41
|
+
|
|
42
|
+
4. You may not use the Licensed Work to create a competing commercial
|
|
43
|
+
service. A "competing commercial service" is a product or service
|
|
44
|
+
that provides substantially the same functionality as the Licensed
|
|
45
|
+
Work to third parties for commercial gain.
|
|
46
|
+
|
|
47
|
+
5. After the Change Date, the Licensed Work will be licensed under the
|
|
48
|
+
Change License indicated above, and You may exercise the rights
|
|
49
|
+
granted under the Change License without restriction.
|
|
50
|
+
|
|
51
|
+
THE LICENSED WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
52
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
53
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
54
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
55
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
56
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
57
|
+
LICENSED WORK OR THE USE OR OTHER DEALINGS IN THE LICENSED WORK.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
This repository contains multiple packages under the `packages/` directory.
|
|
62
|
+
Each package may have its own LICENSE file. If a package contains its own
|
|
63
|
+
LICENSE file, that license takes precedence over this root LICENSE for the
|
|
64
|
+
contents of that package directory.
|
|
65
|
+
|
|
66
|
+
Package-specific licenses:
|
|
67
|
+
|
|
68
|
+
BUSL-1.1 (this license, with the same Change Date and Change License):
|
|
69
|
+
- packages/contracts
|
|
70
|
+
- packages/relay
|
|
71
|
+
- packages/passthrough
|
|
72
|
+
|
|
73
|
+
Apache-2.0:
|
|
74
|
+
- packages/sdk
|
|
75
|
+
- packages/spec
|
|
76
|
+
- packages/mcp
|
|
77
|
+
- packages/parser
|
|
78
|
+
- packages/x402
|
|
79
|
+
|
|
80
|
+
(packages/web is private and not distributed; all rights reserved.)
|
package/dist/trust402.d.ts
CHANGED
|
@@ -1,53 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Trust402 SDK — proof orchestration for publishing content listings.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* `publish()` is circuit-agnostic: the caller provides `circuitId`,
|
|
5
|
+
* `witness`, and `commitment`, and publish() handles proof generation,
|
|
6
|
+
* document registration, proof submission, and listingRoot computation.
|
|
7
|
+
*
|
|
8
|
+
* Witness builders for known circuits (blog-article-v1.2,
|
|
9
|
+
* content-commitment-v1.2) are exported as convenience utilities.
|
|
6
10
|
*/
|
|
7
11
|
import type { LemmaClient } from "@lemmaoracle/spec";
|
|
8
|
-
/** Payload for blog-article content type. */
|
|
9
|
-
export type BlogArticlePayload = Readonly<{
|
|
10
|
-
author: string;
|
|
11
|
-
body: string;
|
|
12
|
-
published: number;
|
|
13
|
-
words: number;
|
|
14
|
-
lang: string;
|
|
15
|
-
}>;
|
|
16
|
-
/** Supported content input variants. */
|
|
17
|
-
export type ContentInput = Readonly<{
|
|
18
|
-
type: "file";
|
|
19
|
-
name: string;
|
|
20
|
-
bytes: Uint8Array;
|
|
21
|
-
mimeType: string;
|
|
22
|
-
}> | Readonly<{
|
|
23
|
-
type: "blog-article";
|
|
24
|
-
payload: BlogArticlePayload;
|
|
25
|
-
}> | Readonly<{
|
|
26
|
-
type: "generic";
|
|
27
|
-
mimeType: string;
|
|
28
|
-
payload: Uint8Array;
|
|
29
|
-
}>;
|
|
30
12
|
/** Price in USDC smallest unit (6 decimals). */
|
|
31
13
|
export type PriceInput = Readonly<{
|
|
32
14
|
amount: number;
|
|
33
15
|
currency: "USDC";
|
|
34
16
|
}>;
|
|
35
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Publish input — circuit-agnostic.
|
|
19
|
+
*
|
|
20
|
+
* The caller is responsible for building the witness according to
|
|
21
|
+
* the circuit's expected inputs. Witness builders for known circuits
|
|
22
|
+
* are exported as convenience utilities (see below).
|
|
23
|
+
*/
|
|
36
24
|
export type Trust402PublishInput = Readonly<{
|
|
37
|
-
|
|
25
|
+
/** Circuit ID registered with the Lemma API. */
|
|
26
|
+
circuitId: string;
|
|
27
|
+
/** Witness fields passed to prover.prove(). */
|
|
28
|
+
witness: Readonly<Record<string, string>>;
|
|
29
|
+
/** Commitment — the public output that ties the witness to content. */
|
|
30
|
+
commitment: string;
|
|
31
|
+
/** Price in USDC smallest unit (6 decimals). */
|
|
38
32
|
price: PriceInput;
|
|
33
|
+
/** Seller DID. */
|
|
39
34
|
did: string;
|
|
35
|
+
/** Optional content CID (e.g. "sha256:..."). */
|
|
36
|
+
cid?: string;
|
|
37
|
+
/** Optional metadata. */
|
|
40
38
|
metadata?: Readonly<{
|
|
41
39
|
title?: string;
|
|
42
40
|
version?: string;
|
|
43
41
|
description?: string;
|
|
44
42
|
}>;
|
|
45
|
-
/**
|
|
46
|
-
* Pre-computed commitment (0x-hex). When set, per-schema proof generation
|
|
47
|
-
* is skipped. Use when the caller has already computed a commitment via an
|
|
48
|
-
* unsupported content type or external circuit.
|
|
49
|
-
*/
|
|
50
|
-
commitment?: string;
|
|
51
43
|
}>;
|
|
52
44
|
/** Full listing returned after successful publish. */
|
|
53
45
|
export type Trust402Listing = Readonly<{
|
|
@@ -69,12 +61,46 @@ export type Trust402Listing = Readonly<{
|
|
|
69
61
|
}>;
|
|
70
62
|
createdAt: number;
|
|
71
63
|
}>;
|
|
64
|
+
/** Payload for blog-article content type. */
|
|
65
|
+
export type BlogArticlePayload = Readonly<{
|
|
66
|
+
author: string;
|
|
67
|
+
body: string;
|
|
68
|
+
published: number;
|
|
69
|
+
words: number;
|
|
70
|
+
lang: string;
|
|
71
|
+
}>;
|
|
72
|
+
/** Result of a witness builder — the witness record plus the commitment. */
|
|
73
|
+
export type WitnessResult = Readonly<{
|
|
74
|
+
witness: Readonly<Record<string, string>>;
|
|
75
|
+
commitment: string;
|
|
76
|
+
}>;
|
|
77
|
+
/**
|
|
78
|
+
* Build witness for blog-article-v1.2 circuit.
|
|
79
|
+
*
|
|
80
|
+
* Witness fields:
|
|
81
|
+
* authorHash, published, integrityHash, words, langCode, commitment
|
|
82
|
+
* where commitment = poseidon5([authorHash, published, integrityHash, words, langCode])
|
|
83
|
+
*/
|
|
84
|
+
export declare const buildBlogArticleWitness: (payload: BlogArticlePayload) => WitnessResult;
|
|
85
|
+
/**
|
|
86
|
+
* Build witness for content-commitment-v1.2 circuit.
|
|
87
|
+
*
|
|
88
|
+
* Uses the canonical normalizer: bytes → fieldElements → poseidon2
|
|
89
|
+
* reduction → poseidon1.
|
|
90
|
+
*/
|
|
91
|
+
export declare const buildContentCommitmentWitness: (bytes: Uint8Array) => WitnessResult;
|
|
92
|
+
/** Compute a sha256-based CID from raw bytes. */
|
|
93
|
+
export declare const computeCid: (bytes: Uint8Array) => string;
|
|
72
94
|
/**
|
|
73
95
|
* Publish a Trust402 listing.
|
|
74
96
|
*
|
|
75
|
-
* Generates a per-schema proof
|
|
76
|
-
*
|
|
77
|
-
* identifier (Poseidon5 of schemaId,
|
|
97
|
+
* Generates a per-schema proof via prover.prove(), registers the
|
|
98
|
+
* document, submits the proof, and returns a full listing with a
|
|
99
|
+
* deterministic listingRoot identifier (Poseidon5 of schemaId,
|
|
100
|
+
* commitment, price, did, salt).
|
|
101
|
+
*
|
|
102
|
+
* Circuit-agnostic: the caller chooses the circuitId and builds the
|
|
103
|
+
* witness. Use the exported witness builders for known circuits.
|
|
78
104
|
*/
|
|
79
105
|
export declare const publish: (client: LemmaClient, input: Trust402PublishInput) => Promise<Trust402Listing>;
|
|
80
106
|
/**
|
package/dist/trust402.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust402.d.ts","sourceRoot":"","sources":["../src/trust402.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"trust402.d.ts","sourceRoot":"","sources":["../src/trust402.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiFrD,gDAAgD;AAChD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,KAAK,EAAE,UAAU,CAAC;IAClB,kBAAkB;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjF,CAAC,CAAC;AAEH,sDAAsD;AACtD,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;KAC/B,GAAG,IAAI,CAAC;IACT,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChF,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAMH,6CAA6C;AAC7C,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAYH;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,kBAAkB,KAC1B,aAoBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,GACxC,OAAO,UAAU,KAChB,aAeF,CAAC;AAMF,iDAAiD;AACjD,eAAO,MAAM,UAAU,GAAI,OAAO,UAAU,KAAG,MACjB,CAAC;AAM/B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,GAClB,QAAQ,WAAW,EACnB,OAAO,oBAAoB,KAC1B,OAAO,CAAC,eAAe,CAoEzB,CAAC;AAoBF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,KAAG,MA0BH,CAAC"}
|
package/dist/trust402.js
CHANGED
|
@@ -3,8 +3,7 @@ import { poseidon1, poseidon2, poseidon5 } from "poseidon-lite";
|
|
|
3
3
|
import { sha256 } from "@noble/hashes/sha256";
|
|
4
4
|
import { randomBytes } from "@noble/hashes/utils";
|
|
5
5
|
/* ------------------------------------------------------------------ */
|
|
6
|
-
/*
|
|
7
|
-
/* Inlined to avoid cross-package rootDir issues and circular deps. */
|
|
6
|
+
/* Normalizer helpers (for content-commitment witness builder) */
|
|
8
7
|
/* ------------------------------------------------------------------ */
|
|
9
8
|
/** Chunk size in bytes: 31 bytes = 248 bits < 254-bit field prime. */
|
|
10
9
|
const CHUNK_SIZE = 31;
|
|
@@ -49,116 +48,86 @@ const reduceElements = (elements, poseidon2Fn) => {
|
|
|
49
48
|
return acc;
|
|
50
49
|
};
|
|
51
50
|
/* ------------------------------------------------------------------ */
|
|
52
|
-
/*
|
|
51
|
+
/* Hex / hash helpers */
|
|
53
52
|
/* ------------------------------------------------------------------ */
|
|
54
53
|
const bytesToHex = (bytes) => Array.from(bytes)
|
|
55
54
|
.map((b) => b.toString(16).padStart(2, "0"))
|
|
56
55
|
.join("");
|
|
57
56
|
const sha256Hex = (data) => bytesToHex(sha256(data));
|
|
58
57
|
const randomHex = (length = 32) => bytesToHex(randomBytes(length));
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
default: { circuitId: "content-commitment-v1.2", needsCID: true },
|
|
62
|
-
};
|
|
63
|
-
/* ------------------------------------------------------------------ */
|
|
64
|
-
/* Language code map (ISO 639-1 → numeric code) */
|
|
65
|
-
/* ------------------------------------------------------------------ */
|
|
58
|
+
const bigintToHex = (n) => `0x${n.toString(16)}`;
|
|
59
|
+
/** ISO 639-1 → numeric code map. */
|
|
66
60
|
const LANG_MAP = Object.freeze({
|
|
67
|
-
en: 1n,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
es: 5n,
|
|
72
|
-
fr: 6n,
|
|
73
|
-
de: 7n,
|
|
74
|
-
pt: 8n,
|
|
75
|
-
ru: 9n,
|
|
76
|
-
ar: 10n,
|
|
77
|
-
hi: 11n,
|
|
78
|
-
it: 12n,
|
|
79
|
-
nl: 13n,
|
|
80
|
-
tr: 14n,
|
|
81
|
-
vi: 15n,
|
|
82
|
-
th: 16n,
|
|
83
|
-
id: 17n,
|
|
84
|
-
pl: 18n,
|
|
85
|
-
uk: 19n,
|
|
86
|
-
sv: 20n,
|
|
61
|
+
en: 1n, ja: 2n, zh: 3n, ko: 4n, es: 5n, fr: 6n,
|
|
62
|
+
de: 7n, pt: 8n, ru: 9n, ar: 10n, hi: 11n, it: 12n,
|
|
63
|
+
nl: 13n, tr: 14n, vi: 15n, th: 16n, id: 17n, pl: 18n,
|
|
64
|
+
uk: 19n, sv: 20n,
|
|
87
65
|
});
|
|
88
66
|
const langToCode = (lang) => LANG_MAP[lang.toLowerCase()] ?? 0n;
|
|
89
|
-
/* ------------------------------------------------------------------ */
|
|
90
|
-
/* Step 0: selectCircuit */
|
|
91
|
-
/* ------------------------------------------------------------------ */
|
|
92
|
-
/** Select the per-schema circuit and CID requirement for a content input. */
|
|
93
|
-
const selectCircuit = (content) => content.type === "blog-article"
|
|
94
|
-
? CONTENT_REGISTRY["blog-article"]
|
|
95
|
-
: CONTENT_REGISTRY.default;
|
|
96
|
-
/* ------------------------------------------------------------------ */
|
|
97
|
-
/* Witness Builders (internal, not exported) */
|
|
98
|
-
/* ------------------------------------------------------------------ */
|
|
99
67
|
/**
|
|
100
|
-
* Build witness for blog-article-v1 circuit.
|
|
68
|
+
* Build witness for blog-article-v1.2 circuit.
|
|
101
69
|
*
|
|
102
70
|
* Witness fields:
|
|
103
71
|
* authorHash, published, integrityHash, words, langCode, commitment
|
|
104
72
|
* where commitment = poseidon5([authorHash, published, integrityHash, words, langCode])
|
|
105
73
|
*/
|
|
106
|
-
const buildBlogArticleWitness = (payload) => {
|
|
74
|
+
export const buildBlogArticleWitness = (payload) => {
|
|
107
75
|
const authorHash = toScalar(payload.author);
|
|
108
76
|
const published = BigInt(payload.published);
|
|
109
77
|
const integrityHash = toScalar(payload.body);
|
|
110
78
|
const words = BigInt(payload.words);
|
|
111
79
|
const langCode = langToCode(payload.lang);
|
|
112
80
|
const commitment = poseidon5([authorHash, published, integrityHash, words, langCode]);
|
|
81
|
+
const commitmentHex = bigintToHex(commitment);
|
|
113
82
|
return Object.freeze({
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
83
|
+
witness: Object.freeze({
|
|
84
|
+
authorHash: bigintToHex(authorHash),
|
|
85
|
+
published: published.toString(),
|
|
86
|
+
integrityHash: bigintToHex(integrityHash),
|
|
87
|
+
words: words.toString(),
|
|
88
|
+
langCode: langCode.toString(),
|
|
89
|
+
commitment: commitmentHex,
|
|
90
|
+
}),
|
|
91
|
+
commitment: commitmentHex,
|
|
120
92
|
});
|
|
121
93
|
};
|
|
122
94
|
/**
|
|
123
|
-
* Build witness for content-commitment-v1 circuit.
|
|
95
|
+
* Build witness for content-commitment-v1.2 circuit.
|
|
124
96
|
*
|
|
125
|
-
* Uses the canonical normalizer: bytes → fieldElements → poseidon2
|
|
97
|
+
* Uses the canonical normalizer: bytes → fieldElements → poseidon2
|
|
98
|
+
* reduction → poseidon1.
|
|
126
99
|
*/
|
|
127
|
-
const buildContentCommitmentWitness = (bytes) => {
|
|
100
|
+
export const buildContentCommitmentWitness = (bytes) => {
|
|
128
101
|
const elements = bytesToFieldElements(bytes);
|
|
129
102
|
const fileHash = reduceElements(elements, (inputs) => poseidon2(inputs));
|
|
130
103
|
const commitment = poseidon1([fileHash]);
|
|
104
|
+
const commitmentHex = bigintToHex(commitment);
|
|
131
105
|
return Object.freeze({
|
|
132
|
-
|
|
133
|
-
|
|
106
|
+
witness: Object.freeze({
|
|
107
|
+
fileHash: bigintToHex(fileHash),
|
|
108
|
+
commitment: commitmentHex,
|
|
109
|
+
}),
|
|
110
|
+
commitment: commitmentHex,
|
|
134
111
|
});
|
|
135
112
|
};
|
|
136
|
-
/** Build the per-schema witness based on content type. */
|
|
137
|
-
const buildPerSchemaWitness = (content) => content.type === "blog-article"
|
|
138
|
-
? {
|
|
139
|
-
circuitId: "blog-article-v1.2",
|
|
140
|
-
witness: buildBlogArticleWitness(content.payload),
|
|
141
|
-
}
|
|
142
|
-
: (() => {
|
|
143
|
-
const bytes = content.type === "file" ? content.bytes : content.payload;
|
|
144
|
-
return {
|
|
145
|
-
circuitId: "content-commitment-v1.2",
|
|
146
|
-
witness: buildContentCommitmentWitness(bytes),
|
|
147
|
-
};
|
|
148
|
-
})();
|
|
149
113
|
/* ------------------------------------------------------------------ */
|
|
150
|
-
/*
|
|
114
|
+
/* CID helper */
|
|
151
115
|
/* ------------------------------------------------------------------ */
|
|
152
|
-
|
|
116
|
+
/** Compute a sha256-based CID from raw bytes. */
|
|
117
|
+
export const computeCid = (bytes) => `sha256:${sha256Hex(bytes)}`;
|
|
153
118
|
/* ------------------------------------------------------------------ */
|
|
154
119
|
/* Main publish function */
|
|
155
120
|
/* ------------------------------------------------------------------ */
|
|
156
121
|
/**
|
|
157
122
|
* Publish a Trust402 listing.
|
|
158
123
|
*
|
|
159
|
-
* Generates a per-schema proof
|
|
160
|
-
*
|
|
161
|
-
* identifier (Poseidon5 of schemaId,
|
|
124
|
+
* Generates a per-schema proof via prover.prove(), registers the
|
|
125
|
+
* document, submits the proof, and returns a full listing with a
|
|
126
|
+
* deterministic listingRoot identifier (Poseidon5 of schemaId,
|
|
127
|
+
* commitment, price, did, salt).
|
|
128
|
+
*
|
|
129
|
+
* Circuit-agnostic: the caller chooses the circuitId and builds the
|
|
130
|
+
* witness. Use the exported witness builders for known circuits.
|
|
162
131
|
*/
|
|
163
132
|
export const publish = async (client, input) => {
|
|
164
133
|
const [{ prover }, { proofs, documents }] = await Promise.all([
|
|
@@ -168,89 +137,66 @@ export const publish = async (client, input) => {
|
|
|
168
137
|
const { prove } = prover;
|
|
169
138
|
const { submit } = proofs;
|
|
170
139
|
const { register: registerDocument } = documents;
|
|
171
|
-
// ──
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
// Register the document before submitting the proof.
|
|
201
|
-
await registerDocument(client, {
|
|
202
|
-
docHash: commitment,
|
|
203
|
-
schema: circuitId,
|
|
204
|
-
cid: cid ?? "",
|
|
205
|
-
issuerId: input.did,
|
|
206
|
-
subjectId: input.did,
|
|
207
|
-
commitments: {
|
|
208
|
-
scheme: "poseidon",
|
|
209
|
-
root: commitment,
|
|
210
|
-
leaves: [commitment],
|
|
211
|
-
randomness: "0x0",
|
|
212
|
-
},
|
|
213
|
-
revocation: { root: "" },
|
|
214
|
-
});
|
|
215
|
-
// Register per-schema proof
|
|
216
|
-
await submit(client, {
|
|
217
|
-
docHash: commitment,
|
|
218
|
-
circuitId,
|
|
219
|
-
proof: proof.proof,
|
|
220
|
-
inputs: [commitment],
|
|
221
|
-
});
|
|
222
|
-
perSchemaProof = {
|
|
223
|
-
circuitId,
|
|
224
|
-
proof: proof.proof,
|
|
225
|
-
inputs: [commitment],
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
// ── Listing root (deterministic identifier, no ZK proof) ──
|
|
229
|
-
// Previously wrapped in a listing-binding ZK proof which was removed
|
|
230
|
-
// as redundant (crossCheckPassed already binds listing to proof).
|
|
231
|
-
// The listingRoot formula is preserved for backward compat.
|
|
232
|
-
const schemaId = toScalar(mapping.circuitId);
|
|
140
|
+
// ── 1. Generate per-schema proof ──
|
|
141
|
+
const proof = await prove(client, {
|
|
142
|
+
circuitId: input.circuitId,
|
|
143
|
+
witness: input.witness,
|
|
144
|
+
});
|
|
145
|
+
// ── 2. Register document ──
|
|
146
|
+
await registerDocument(client, {
|
|
147
|
+
docHash: input.commitment,
|
|
148
|
+
schema: input.circuitId,
|
|
149
|
+
cid: input.cid ?? "",
|
|
150
|
+
issuerId: input.did,
|
|
151
|
+
subjectId: input.did,
|
|
152
|
+
commitments: {
|
|
153
|
+
scheme: "poseidon",
|
|
154
|
+
root: input.commitment,
|
|
155
|
+
leaves: [input.commitment],
|
|
156
|
+
randomness: "0x0",
|
|
157
|
+
},
|
|
158
|
+
revocation: { root: "" },
|
|
159
|
+
});
|
|
160
|
+
// ── 3. Submit proof ──
|
|
161
|
+
await submit(client, {
|
|
162
|
+
docHash: input.commitment,
|
|
163
|
+
circuitId: input.circuitId,
|
|
164
|
+
proof: proof.proof,
|
|
165
|
+
inputs: [input.commitment],
|
|
166
|
+
});
|
|
167
|
+
// ── 4. Compute listingRoot (deterministic identifier, no ZK proof) ──
|
|
168
|
+
const schemaIdScalar = toScalar(input.circuitId);
|
|
233
169
|
const priceUsdc = toScalar(input.price.amount);
|
|
234
170
|
const didScalar = toScalar(input.did);
|
|
235
171
|
const salt = toScalar(randomHex(32));
|
|
236
|
-
const listingRoot = poseidon5([
|
|
172
|
+
const listingRoot = poseidon5([
|
|
173
|
+
schemaIdScalar,
|
|
174
|
+
BigInt(input.commitment),
|
|
175
|
+
priceUsdc,
|
|
176
|
+
didScalar,
|
|
177
|
+
salt,
|
|
178
|
+
]);
|
|
237
179
|
const listingRootHex = bigintToHex(listingRoot);
|
|
238
180
|
return Object.freeze({
|
|
239
181
|
listingRoot: listingRootHex,
|
|
240
|
-
schemaId:
|
|
241
|
-
commitment,
|
|
182
|
+
schemaId: input.circuitId,
|
|
183
|
+
commitment: input.commitment,
|
|
242
184
|
did: input.did,
|
|
243
185
|
price: input.price,
|
|
244
|
-
cid,
|
|
245
|
-
perSchemaProof
|
|
186
|
+
cid: input.cid,
|
|
187
|
+
perSchemaProof: {
|
|
188
|
+
circuitId: input.circuitId,
|
|
189
|
+
proof: proof.proof,
|
|
190
|
+
inputs: [input.commitment],
|
|
191
|
+
},
|
|
246
192
|
metadata: input.metadata,
|
|
247
193
|
createdAt: Date.now(),
|
|
248
194
|
});
|
|
249
195
|
};
|
|
250
196
|
/* ------------------------------------------------------------------ */
|
|
251
|
-
/* Content type detection utility
|
|
197
|
+
/* Content type detection utility (UI helper) */
|
|
252
198
|
/* ------------------------------------------------------------------ */
|
|
253
|
-
/** MIME type → content type detection (for File
|
|
199
|
+
/** MIME type → content type detection (for browser File objects). */
|
|
254
200
|
const MIME_TO_CONTENT_TYPE = Object.freeze({
|
|
255
201
|
"image/": "image",
|
|
256
202
|
"video/": "video",
|
package/dist/trust402.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust402.js","sourceRoot":"","sources":["../src/trust402.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trust402.js","sourceRoot":"","sources":["../src/trust402.ts"],"names":[],"mappings":"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"}
|
package/dist/trust402.test.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
-
import { publish, detectContentType } from "./trust402.js";
|
|
2
|
+
import { publish, detectContentType, buildBlogArticleWitness, buildContentCommitmentWitness, computeCid, } from "./trust402.js";
|
|
3
3
|
import { create, toScalar } from "@lemmaoracle/sdk";
|
|
4
4
|
import { poseidon5 } from "poseidon-lite";
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
@@ -46,16 +46,82 @@ describe("detectContentType", () => {
|
|
|
46
46
|
});
|
|
47
47
|
});
|
|
48
48
|
// ---------------------------------------------------------------------------
|
|
49
|
-
// Witness builders
|
|
49
|
+
// Witness builders
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
describe("buildBlogArticleWitness", () => {
|
|
52
|
+
const payload = Object.freeze({
|
|
53
|
+
author: "did:ethr:0xabc123",
|
|
54
|
+
body: "Zero-knowledge proofs enable privacy-preserving verification.",
|
|
55
|
+
published: 1714069800,
|
|
56
|
+
words: 8,
|
|
57
|
+
lang: "en",
|
|
58
|
+
});
|
|
59
|
+
it("returns witness with commitment field", () => {
|
|
60
|
+
const result = buildBlogArticleWitness(payload);
|
|
61
|
+
expect(result.witness).toHaveProperty("authorHash");
|
|
62
|
+
expect(result.witness).toHaveProperty("published");
|
|
63
|
+
expect(result.witness).toHaveProperty("integrityHash");
|
|
64
|
+
expect(result.witness).toHaveProperty("words");
|
|
65
|
+
expect(result.witness).toHaveProperty("langCode");
|
|
66
|
+
expect(result.witness).toHaveProperty("commitment");
|
|
67
|
+
expect(result.commitment).toBe(result.witness.commitment);
|
|
68
|
+
});
|
|
69
|
+
it("computes commitment as Poseidon5 of witness fields", () => {
|
|
70
|
+
const result = buildBlogArticleWitness(payload);
|
|
71
|
+
const authorHash = toScalar(payload.author);
|
|
72
|
+
const published = BigInt(payload.published);
|
|
73
|
+
const integrityHash = toScalar(payload.body);
|
|
74
|
+
const words = BigInt(payload.words);
|
|
75
|
+
const langCode = 1n; // "en"
|
|
76
|
+
const expected = `0x${poseidon5([authorHash, published, integrityHash, words, langCode]).toString(16)}`;
|
|
77
|
+
expect(result.commitment).toBe(expected);
|
|
78
|
+
});
|
|
79
|
+
it("is deterministic for same input", () => {
|
|
80
|
+
expect(buildBlogArticleWitness(payload).commitment).toBe(buildBlogArticleWitness(payload).commitment);
|
|
81
|
+
});
|
|
82
|
+
it("produces different commitments for different payloads", () => {
|
|
83
|
+
const different = buildBlogArticleWitness({ ...payload, body: "Different." });
|
|
84
|
+
expect(different.commitment).not.toBe(buildBlogArticleWitness(payload).commitment);
|
|
85
|
+
});
|
|
86
|
+
it("maps unknown language to 0", () => {
|
|
87
|
+
const result = buildBlogArticleWitness({ ...payload, lang: "xx" });
|
|
88
|
+
expect(result.witness.langCode).toBe("0");
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe("buildContentCommitmentWitness", () => {
|
|
92
|
+
const bytes = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f]); // "Hello"
|
|
93
|
+
it("returns witness with fileHash and commitment", () => {
|
|
94
|
+
const result = buildContentCommitmentWitness(bytes);
|
|
95
|
+
expect(result.witness).toHaveProperty("fileHash");
|
|
96
|
+
expect(result.witness).toHaveProperty("commitment");
|
|
97
|
+
expect(result.commitment).toBe(result.witness.commitment);
|
|
98
|
+
});
|
|
99
|
+
it("is deterministic for same input", () => {
|
|
100
|
+
expect(buildContentCommitmentWitness(bytes).commitment).toBe(buildContentCommitmentWitness(bytes).commitment);
|
|
101
|
+
});
|
|
102
|
+
it("produces different commitments for different content", () => {
|
|
103
|
+
const different = new Uint8Array([0x57, 0x6f, 0x72, 0x6c, 0x64]); // "World"
|
|
104
|
+
expect(buildContentCommitmentWitness(bytes).commitment).not.toBe(buildContentCommitmentWitness(different).commitment);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe("computeCid", () => {
|
|
108
|
+
it("returns sha256-prefixed hex CID", () => {
|
|
109
|
+
const cid = computeCid(new Uint8Array([1, 2, 3]));
|
|
110
|
+
expect(cid).toMatch(/^sha256:[0-9a-f]{64}$/);
|
|
111
|
+
});
|
|
112
|
+
it("is deterministic", () => {
|
|
113
|
+
expect(computeCid(new Uint8Array([1]))).toBe(computeCid(new Uint8Array([1])));
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
// publish
|
|
50
118
|
// ---------------------------------------------------------------------------
|
|
51
119
|
describe("trust402.publish", () => {
|
|
52
120
|
beforeEach(() => {
|
|
53
121
|
vi.clearAllMocks();
|
|
54
122
|
});
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
* (triggering fallback SHA-256 proving path). */
|
|
58
|
-
const setupNoArtifactMocks = () => {
|
|
123
|
+
/** Mock client that returns circuit metadata with no artifacts. */
|
|
124
|
+
const setupMocks = () => {
|
|
59
125
|
const mockFetch = vi.fn().mockImplementation((url) => {
|
|
60
126
|
if (url.includes("/v1/circuits/")) {
|
|
61
127
|
return Promise.resolve({
|
|
@@ -90,313 +156,129 @@ describe("trust402.publish", () => {
|
|
|
90
156
|
c.fetcher = mockFetch;
|
|
91
157
|
return c;
|
|
92
158
|
};
|
|
93
|
-
// ── Blog
|
|
94
|
-
describe("blog-article
|
|
95
|
-
const
|
|
159
|
+
// ── Blog article via witness builder ───────────────────────────────
|
|
160
|
+
describe("blog-article circuit", () => {
|
|
161
|
+
const payload = Object.freeze({
|
|
96
162
|
author: "did:ethr:0xabc123",
|
|
97
163
|
body: "Zero-knowledge proofs enable privacy-preserving verification on decentralized networks.",
|
|
98
164
|
published: 1714069800,
|
|
99
165
|
words: 13,
|
|
100
166
|
lang: "en",
|
|
101
167
|
});
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
168
|
+
const makeInput = () => {
|
|
169
|
+
const { witness, commitment } = buildBlogArticleWitness(payload);
|
|
170
|
+
return Object.freeze({
|
|
171
|
+
circuitId: "blog-article-v1.2",
|
|
172
|
+
witness,
|
|
173
|
+
commitment,
|
|
174
|
+
price: Object.freeze({ amount: 42000000, currency: "USDC" }),
|
|
175
|
+
did: "did:ethr:0xabc123",
|
|
176
|
+
metadata: Object.freeze({ title: "My Blog Post", version: "1.0.0" }),
|
|
177
|
+
});
|
|
178
|
+
};
|
|
111
179
|
it("publishes a blog-article listing successfully", async () => {
|
|
112
|
-
const client =
|
|
113
|
-
const listing = await publish(client,
|
|
114
|
-
// Shape
|
|
180
|
+
const client = setupMocks();
|
|
181
|
+
const listing = await publish(client, makeInput());
|
|
115
182
|
expect(listing).toHaveProperty("listingRoot");
|
|
116
183
|
expect(listing).toHaveProperty("commitment");
|
|
117
184
|
expect(listing).toHaveProperty("perSchemaProof");
|
|
118
|
-
expect(listing).toHaveProperty("did");
|
|
119
|
-
expect(listing.did).toBe(blogInput.did);
|
|
120
185
|
expect(listing.schemaId).toBe("blog-article-v1.2");
|
|
121
|
-
expect(listing.
|
|
122
|
-
expect(listing.cid).toBeUndefined(); // blog-article doesn't need CID
|
|
123
|
-
// perSchemaProof
|
|
186
|
+
expect(listing.did).toBe("did:ethr:0xabc123");
|
|
124
187
|
expect(listing.perSchemaProof.circuitId).toBe("blog-article-v1.2");
|
|
125
188
|
expect(listing.perSchemaProof.inputs.length).toBeGreaterThan(0);
|
|
126
|
-
|
|
127
|
-
expect(listing.
|
|
128
|
-
// createdAt is a recent timestamp
|
|
129
|
-
expect(listing.createdAt).toBeGreaterThan(0);
|
|
130
|
-
expect(listing.createdAt).toBeLessThanOrEqual(Date.now());
|
|
189
|
+
expect(listing.metadata).toEqual({ title: "My Blog Post", version: "1.0.0" });
|
|
190
|
+
expect(listing.cid).toBeUndefined();
|
|
131
191
|
});
|
|
132
|
-
it("computes
|
|
133
|
-
const client =
|
|
134
|
-
const listing1 = await publish(client,
|
|
135
|
-
const listing2 = await publish(client,
|
|
136
|
-
// Same input → same commitment
|
|
192
|
+
it("computes deterministic commitment from same witness", async () => {
|
|
193
|
+
const client = setupMocks();
|
|
194
|
+
const listing1 = await publish(client, makeInput());
|
|
195
|
+
const listing2 = await publish(client, makeInput());
|
|
137
196
|
expect(listing1.commitment).toBe(listing2.commitment);
|
|
138
197
|
});
|
|
139
|
-
it("produces different commitments for different payloads", async () => {
|
|
140
|
-
const client = setupNoArtifactMocks();
|
|
141
|
-
const listing1 = await publish(client, blogInput);
|
|
142
|
-
const differentPayload = Object.freeze({
|
|
143
|
-
...blogPayload,
|
|
144
|
-
body: "A completely different article body.",
|
|
145
|
-
});
|
|
146
|
-
const differentInput = Object.freeze({
|
|
147
|
-
...blogInput,
|
|
148
|
-
content: Object.freeze({
|
|
149
|
-
type: "blog-article",
|
|
150
|
-
payload: differentPayload,
|
|
151
|
-
}),
|
|
152
|
-
});
|
|
153
|
-
const listing2 = await publish(client, differentInput);
|
|
154
|
-
expect(listing1.commitment).not.toBe(listing2.commitment);
|
|
155
|
-
});
|
|
156
|
-
it("verifies the commitment matches Poseidon5 of witness fields", async () => {
|
|
157
|
-
const client = setupNoArtifactMocks();
|
|
158
|
-
const listing = await publish(client, blogInput);
|
|
159
|
-
// Recompute commitment from payload
|
|
160
|
-
const authorHash = toScalar(blogPayload.author);
|
|
161
|
-
const published = BigInt(blogPayload.published);
|
|
162
|
-
const integrityHash = toScalar(blogPayload.body);
|
|
163
|
-
const words = BigInt(blogPayload.words);
|
|
164
|
-
const langMap = { en: 1n };
|
|
165
|
-
const langCode = langMap[blogPayload.lang] ?? 0n;
|
|
166
|
-
const expectedCommitment = `0x${poseidon5([authorHash, published, integrityHash, words, langCode]).toString(16)}`;
|
|
167
|
-
expect(listing.commitment).toBe(expectedCommitment);
|
|
168
|
-
});
|
|
169
198
|
it("generates unique listingRoots per call (random salt)", async () => {
|
|
170
|
-
const client =
|
|
171
|
-
const listing1 = await publish(client,
|
|
172
|
-
const listing2 = await publish(client,
|
|
173
|
-
// Same input → different listingRoots (random salt per call)
|
|
199
|
+
const client = setupMocks();
|
|
200
|
+
const listing1 = await publish(client, makeInput());
|
|
201
|
+
const listing2 = await publish(client, makeInput());
|
|
174
202
|
expect(listing1.commitment).toBe(listing2.commitment);
|
|
175
203
|
expect(listing1.listingRoot).not.toBe(listing2.listingRoot);
|
|
176
204
|
});
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
payload: fileBytes,
|
|
188
|
-
}),
|
|
189
|
-
price: Object.freeze({ amount: 10000000, currency: "USDC" }),
|
|
190
|
-
did: "did:ethr:0xdef456",
|
|
205
|
+
it("verifies commitment matches Poseidon5 of witness fields", async () => {
|
|
206
|
+
const client = setupMocks();
|
|
207
|
+
const listing = await publish(client, makeInput());
|
|
208
|
+
const authorHash = toScalar(payload.author);
|
|
209
|
+
const published = BigInt(payload.published);
|
|
210
|
+
const integrityHash = toScalar(payload.body);
|
|
211
|
+
const words = BigInt(payload.words);
|
|
212
|
+
const langCode = 1n;
|
|
213
|
+
const expected = `0x${poseidon5([authorHash, published, integrityHash, words, langCode]).toString(16)}`;
|
|
214
|
+
expect(listing.commitment).toBe(expected);
|
|
191
215
|
});
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
216
|
+
});
|
|
217
|
+
// ── Content commitment via witness builder ──────────────────────────
|
|
218
|
+
describe("content-commitment circuit", () => {
|
|
219
|
+
const bytes = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f]);
|
|
220
|
+
const makeInput = () => {
|
|
221
|
+
const { witness, commitment } = buildContentCommitmentWitness(bytes);
|
|
222
|
+
return Object.freeze({
|
|
223
|
+
circuitId: "content-commitment-v1.2",
|
|
224
|
+
witness,
|
|
225
|
+
commitment,
|
|
226
|
+
cid: computeCid(bytes),
|
|
227
|
+
price: Object.freeze({ amount: 10000000, currency: "USDC" }),
|
|
228
|
+
did: "did:ethr:0xdef456",
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
it("publishes a content-commitment listing with CID", async () => {
|
|
232
|
+
const client = setupMocks();
|
|
233
|
+
const listing = await publish(client, makeInput());
|
|
195
234
|
expect(listing.schemaId).toBe("content-commitment-v1.2");
|
|
196
235
|
expect(listing.perSchemaProof.circuitId).toBe("content-commitment-v1.2");
|
|
197
|
-
// CID should be present for content-commitment
|
|
198
|
-
expect(listing.cid).toBeDefined();
|
|
199
236
|
expect(listing.cid).toMatch(/^sha256:[0-9a-f]{64}$/);
|
|
200
237
|
});
|
|
201
|
-
it("computes deterministic CID", async () => {
|
|
202
|
-
const client =
|
|
203
|
-
const listing1 = await publish(client,
|
|
204
|
-
const listing2 = await publish(client,
|
|
238
|
+
it("computes deterministic CID and commitment", async () => {
|
|
239
|
+
const client = setupMocks();
|
|
240
|
+
const listing1 = await publish(client, makeInput());
|
|
241
|
+
const listing2 = await publish(client, makeInput());
|
|
205
242
|
expect(listing1.cid).toBe(listing2.cid);
|
|
206
243
|
expect(listing1.commitment).toBe(listing2.commitment);
|
|
207
244
|
});
|
|
208
|
-
it("produces different CIDs for different content", async () => {
|
|
209
|
-
const client = setupNoArtifactMocks();
|
|
210
|
-
const listing1 = await publish(client, genericInput);
|
|
211
|
-
const differentInput = Object.freeze({
|
|
212
|
-
...genericInput,
|
|
213
|
-
content: Object.freeze({
|
|
214
|
-
type: "generic",
|
|
215
|
-
mimeType: "text/plain",
|
|
216
|
-
payload: new Uint8Array([0x57, 0x6f, 0x72, 0x6c, 0x64]), // "World"
|
|
217
|
-
}),
|
|
218
|
-
});
|
|
219
|
-
const listing2 = await publish(client, differentInput);
|
|
220
|
-
expect(listing1.cid).not.toBe(listing2.cid);
|
|
221
|
-
expect(listing1.commitment).not.toBe(listing2.commitment);
|
|
222
|
-
});
|
|
223
|
-
it("verifies commitment matches Poseidon1 of fileHash", async () => {
|
|
224
|
-
const client = setupNoArtifactMocks();
|
|
225
|
-
const listing = await publish(client, genericInput);
|
|
226
|
-
// Recompute via inlined normalizer logic
|
|
227
|
-
const { poseidon1, poseidon2 } = await import("poseidon-lite");
|
|
228
|
-
const BN254_PRIME = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617");
|
|
229
|
-
const CHUNK_SIZE = 31;
|
|
230
|
-
const bytesToFieldElements = (data) => {
|
|
231
|
-
const len = data.length;
|
|
232
|
-
const padLen = CHUNK_SIZE - (len % CHUNK_SIZE);
|
|
233
|
-
const paddedLen = len + padLen;
|
|
234
|
-
const padded = new Uint8Array(paddedLen);
|
|
235
|
-
padded.set(data);
|
|
236
|
-
for (let i = len; i < paddedLen; i++)
|
|
237
|
-
padded[i] = padLen;
|
|
238
|
-
const numChunks = paddedLen / CHUNK_SIZE;
|
|
239
|
-
const elements = new Array(numChunks);
|
|
240
|
-
for (let i = 0; i < numChunks; i++) {
|
|
241
|
-
const offset = i * CHUNK_SIZE;
|
|
242
|
-
let val = 0n;
|
|
243
|
-
for (let j = 0; j < CHUNK_SIZE; j++) {
|
|
244
|
-
val = (val << 8n) | BigInt(padded[offset + j] ?? 0);
|
|
245
|
-
}
|
|
246
|
-
elements[i] = val;
|
|
247
|
-
}
|
|
248
|
-
return elements;
|
|
249
|
-
};
|
|
250
|
-
const reduceElements = (elements, fn) => {
|
|
251
|
-
if (elements.length === 0)
|
|
252
|
-
return 0n;
|
|
253
|
-
let acc = elements[0] ?? 0n;
|
|
254
|
-
for (let i = 1; i < elements.length; i++) {
|
|
255
|
-
acc = fn([acc, elements[i] ?? 0n]);
|
|
256
|
-
}
|
|
257
|
-
return acc;
|
|
258
|
-
};
|
|
259
|
-
const elements = bytesToFieldElements(fileBytes);
|
|
260
|
-
const fileHash = reduceElements(elements, (inputs) => poseidon2(inputs));
|
|
261
|
-
const expectedCommitment = `0x${poseidon1([fileHash]).toString(16)}`;
|
|
262
|
-
expect(listing.commitment).toBe(expectedCommitment);
|
|
263
|
-
});
|
|
264
245
|
});
|
|
265
|
-
// ──
|
|
266
|
-
describe("
|
|
267
|
-
it("
|
|
268
|
-
const client =
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
mimeType: "application/octet-stream",
|
|
246
|
+
// ── Custom circuit (any circuitId) ──────────────────────────────────
|
|
247
|
+
describe("custom circuit", () => {
|
|
248
|
+
it("accepts arbitrary circuitId and witness", async () => {
|
|
249
|
+
const client = setupMocks();
|
|
250
|
+
const input = Object.freeze({
|
|
251
|
+
circuitId: "blog-article-v1",
|
|
252
|
+
witness: Object.freeze({
|
|
253
|
+
foo: "0x1",
|
|
254
|
+
bar: "42",
|
|
255
|
+
commitment: "0xabc",
|
|
276
256
|
}),
|
|
277
|
-
|
|
278
|
-
|
|
257
|
+
commitment: "0xabc",
|
|
258
|
+
price: Object.freeze({ amount: 5000, currency: "USDC" }),
|
|
259
|
+
did: "did:pkh:eip155:8453:0xdead",
|
|
279
260
|
});
|
|
280
|
-
const listing = await publish(client,
|
|
281
|
-
expect(listing.schemaId).toBe("
|
|
282
|
-
expect(listing.
|
|
283
|
-
expect(listing.
|
|
261
|
+
const listing = await publish(client, input);
|
|
262
|
+
expect(listing.schemaId).toBe("blog-article-v1");
|
|
263
|
+
expect(listing.commitment).toBe("0xabc");
|
|
264
|
+
expect(listing.perSchemaProof.circuitId).toBe("blog-article-v1");
|
|
284
265
|
});
|
|
285
266
|
});
|
|
286
267
|
// ── Error handling ──────────────────────────────────────────────────
|
|
287
268
|
describe("error handling", () => {
|
|
288
|
-
it("throws when
|
|
269
|
+
it("throws when prover.prove fails", async () => {
|
|
289
270
|
const mockFetch = vi.fn().mockRejectedValue(new Error("Network error"));
|
|
290
271
|
const client = create({ apiBase: "http://localhost:8787" });
|
|
291
272
|
client.fetcher = mockFetch;
|
|
292
273
|
const input = Object.freeze({
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
payload: new Uint8Array([1]),
|
|
297
|
-
}),
|
|
274
|
+
circuitId: "content-commitment-v1.2",
|
|
275
|
+
witness: Object.freeze({ fileHash: "0x1", commitment: "0x2" }),
|
|
276
|
+
commitment: "0x2",
|
|
298
277
|
price: Object.freeze({ amount: 100, currency: "USDC" }),
|
|
299
278
|
did: "did:ethr:0xerr",
|
|
300
279
|
});
|
|
301
280
|
await expect(publish(client, input)).rejects.toThrow();
|
|
302
281
|
});
|
|
303
282
|
});
|
|
304
|
-
// ── Commitment override ─────────────────────────────────────────────
|
|
305
|
-
describe("external commitment", () => {
|
|
306
|
-
it("skips per-schema proof when commitment is provided", async () => {
|
|
307
|
-
const client = setupNoArtifactMocks();
|
|
308
|
-
const input = Object.freeze({
|
|
309
|
-
content: Object.freeze({
|
|
310
|
-
type: "generic",
|
|
311
|
-
mimeType: "application/octet-stream",
|
|
312
|
-
payload: new Uint8Array([1, 2, 3]),
|
|
313
|
-
}),
|
|
314
|
-
price: Object.freeze({ amount: 500, currency: "USDC" }),
|
|
315
|
-
did: "did:ethr:0xext",
|
|
316
|
-
commitment: "0xdeadbeef00000000000000000000000000000000000000000000000000000000",
|
|
317
|
-
});
|
|
318
|
-
const listing = await publish(client, input);
|
|
319
|
-
expect(listing.schemaId).toBe("external");
|
|
320
|
-
expect(listing.commitment).toBe("0xdeadbeef00000000000000000000000000000000000000000000000000000000");
|
|
321
|
-
expect(listing.perSchemaProof).toBeNull();
|
|
322
|
-
expect(listing.listingRoot).toBeDefined();
|
|
323
|
-
});
|
|
324
|
-
it("still computes CID when commitment is external", async () => {
|
|
325
|
-
const client = setupNoArtifactMocks();
|
|
326
|
-
const bytes = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f]);
|
|
327
|
-
const input = Object.freeze({
|
|
328
|
-
content: Object.freeze({
|
|
329
|
-
type: "generic",
|
|
330
|
-
mimeType: "text/plain",
|
|
331
|
-
payload: bytes,
|
|
332
|
-
}),
|
|
333
|
-
price: Object.freeze({ amount: 100, currency: "USDC" }),
|
|
334
|
-
did: "did:ethr:0xextcid",
|
|
335
|
-
commitment: "0xdeadbeef00000000000000000000000000000000000000000000000000000000",
|
|
336
|
-
});
|
|
337
|
-
const listing = await publish(client, input);
|
|
338
|
-
expect(listing.cid).toBeDefined();
|
|
339
|
-
expect(listing.cid).toMatch(/^sha256:[0-9a-f]{64}$/);
|
|
340
|
-
});
|
|
341
|
-
it("does NOT call circuits or proofs endpoints for per-schema", async () => {
|
|
342
|
-
const calls = [];
|
|
343
|
-
const mockFetch = vi.fn().mockImplementation((url) => {
|
|
344
|
-
calls.push(url);
|
|
345
|
-
if (url.includes("/v1/circuits/")) {
|
|
346
|
-
return Promise.resolve({
|
|
347
|
-
ok: true,
|
|
348
|
-
json: () => Promise.resolve({ circuitId: url.split("/v1/circuits/")[1], schema: "test" }),
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
if (url.includes("/v1/proofs")) {
|
|
352
|
-
return Promise.resolve({
|
|
353
|
-
ok: true,
|
|
354
|
-
json: () => Promise.resolve({ status: "received", verificationId: "v" }),
|
|
355
|
-
});
|
|
356
|
-
}
|
|
357
|
-
if (url.includes("/v1/documents")) {
|
|
358
|
-
return Promise.resolve({
|
|
359
|
-
ok: true,
|
|
360
|
-
json: () => Promise.resolve({ status: "registered", docHash: "mock" }),
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
return Promise.resolve({ ok: false });
|
|
364
|
-
});
|
|
365
|
-
const client = create({ apiBase: "http://localhost:8787" });
|
|
366
|
-
client.fetcher = mockFetch;
|
|
367
|
-
const input = Object.freeze({
|
|
368
|
-
content: Object.freeze({
|
|
369
|
-
type: "generic",
|
|
370
|
-
mimeType: "text/plain",
|
|
371
|
-
payload: new Uint8Array([1]),
|
|
372
|
-
}),
|
|
373
|
-
price: Object.freeze({ amount: 100, currency: "USDC" }),
|
|
374
|
-
did: "did:ethr:0xnocall",
|
|
375
|
-
commitment: "0xdeadbeef00000000000000000000000000000000000000000000000000000000",
|
|
376
|
-
});
|
|
377
|
-
await publish(client, input);
|
|
378
|
-
// Should not hit circuits/proofs endpoints (no proofs issued for external commitment)
|
|
379
|
-
const proofCalls = calls.filter((u) => u.includes("/v1/proofs"));
|
|
380
|
-
expect(proofCalls.length).toBe(0);
|
|
381
|
-
});
|
|
382
|
-
it("commitment override works with file type too", async () => {
|
|
383
|
-
const client = setupNoArtifactMocks();
|
|
384
|
-
const input = Object.freeze({
|
|
385
|
-
content: Object.freeze({
|
|
386
|
-
type: "file",
|
|
387
|
-
name: "secret.bin",
|
|
388
|
-
bytes: new Uint8Array([7, 8, 9]),
|
|
389
|
-
mimeType: "application/octet-stream",
|
|
390
|
-
}),
|
|
391
|
-
price: Object.freeze({ amount: 1000, currency: "USDC" }),
|
|
392
|
-
did: "did:ethr:0xfileext",
|
|
393
|
-
commitment: "0xcafebabe00000000000000000000000000000000000000000000000000000000",
|
|
394
|
-
});
|
|
395
|
-
const listing = await publish(client, input);
|
|
396
|
-
expect(listing.schemaId).toBe("external");
|
|
397
|
-
expect(listing.perSchemaProof).toBeNull();
|
|
398
|
-
expect(listing.cid).toBeDefined();
|
|
399
|
-
});
|
|
400
|
-
});
|
|
401
283
|
});
|
|
402
284
|
//# sourceMappingURL=trust402.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust402.test.js","sourceRoot":"","sources":["../src/trust402.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAK3D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CACtE,OAAO,CACR,CAAC;QACF,MAAM,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CACrE,OAAO,CACR,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CACpE,OAAO,CACR,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CACJ,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAC1D,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CACJ,iBAAiB,CAAC;YAChB,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,aAAa;SACpB,CAAC,CACH,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CACJ,iBAAiB,CAAC;YAChB,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,WAAW;SAClB,CAAC,CACH,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CACJ,iBAAiB,CAAC;YAChB,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,UAAU;SACjB,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,MAAM,CACJ,iBAAiB,CAAC;YAChB,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,WAAW;SAClB,CAAC,CACH,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CACJ,iBAAiB,CAAC;YAChB,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,UAAU;SACjB,CAAC,CACH,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,wEAAwE;IAExE;sDACkD;IAClD,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,GAAW,EAAE,EAAE;YAC3D,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAClC,OAAO,OAAO,CAAC,OAAO,CAAC;oBACrB,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,GAAG,EAAE,CACT,OAAO,CAAC,OAAO,CAAC;wBACd,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;wBACxC,MAAM,EAAE,aAAa;qBACtB,CAAC;iBACL,CAAC,CAAC;YACL,CAAC;YACD,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/B,OAAO,OAAO,CAAC,OAAO,CAAC;oBACrB,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,GAAG,EAAE,CACT,OAAO,CAAC,OAAO,CAAC;wBACd,MAAM,EAAE,UAAU;wBAClB,cAAc,EAAE,WAAW;qBAC5B,CAAC;iBACL,CAAC,CAAC;YACL,CAAC;YACD,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAClC,OAAO,OAAO,CAAC,OAAO,CAAC;oBACrB,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,GAAG,EAAE,CACT,OAAO,CAAC,OAAO,CAAC;wBACd,MAAM,EAAE,YAAY;wBACpB,OAAO,EAAE,eAAe;qBACzB,CAAC;iBACL,CAAC,CAAC;YACL,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACtD,CAA6B,CAAC,OAAO,GAAG,SAAS,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,uEAAuE;IAEvE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,MAAM,WAAW,GAAuB,MAAM,CAAC,MAAM,CAAC;YACpD,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,yFAAyF;YAC/F,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,MAAM,SAAS,GAAyB,MAAM,CAAC,MAAM,CAAC;YACpD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;gBACrB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,WAAW;aACZ,CAAC;YACX,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC;YACrE,GAAG,EAAE,mBAAmB;YACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;SACrE,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAEjD,QAAQ;YACR,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,gCAAgC;YAErE,iBAAiB;YACjB,MAAM,CAAC,OAAO,CAAC,cAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACpE,MAAM,CAAC,OAAO,CAAC,cAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAEjE,qBAAqB;YACrB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAErD,kCAAkC;YAClC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAElD,+BAA+B;YAC/B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAElD,MAAM,gBAAgB,GAAuB,MAAM,CAAC,MAAM,CAAC;gBACzD,GAAG,WAAW;gBACd,IAAI,EAAE,sCAAsC;aAC7C,CAAC,CAAC;YACH,MAAM,cAAc,GAAyB,MAAM,CAAC,MAAM,CAAC;gBACzD,GAAG,SAAS;gBACZ,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;oBACrB,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,gBAAgB;iBACjB,CAAC;aACZ,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACvD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAEjD,oCAAoC;YACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,OAAO,GAA2B,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAEjD,MAAM,kBAAkB,GAAG,KAAK,SAAS,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAElH,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAElD,6DAA6D;YAC7D,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uEAAuE;IAEvE,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC;YAC/B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU;SACzC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAyB,MAAM,CAAC,MAAM,CAAC;YACvD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;gBACrB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,SAAS;aACV,CAAC;YACX,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC;YACrE,GAAG,EAAE,mBAAmB;SACzB,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAEpD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACzD,MAAM,CAAC,OAAO,CAAC,cAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAE1E,+CAA+C;YAC/C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAErD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAErD,MAAM,cAAc,GAAyB,MAAM,CAAC,MAAM,CAAC;gBACzD,GAAG,YAAY;gBACf,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;oBACrB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU;iBAC3D,CAAC;aACZ,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACvD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAEpD,yCAAyC;YACzC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAE/D,MAAM,WAAW,GAAG,MAAM,CACxB,+EAA+E,CAChF,CAAC;YACF,MAAM,UAAU,GAAG,EAAE,CAAC;YAEtB,MAAM,oBAAoB,GAAG,CAAC,IAAgB,EAAY,EAAE;gBAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;gBACxB,MAAM,MAAM,GAAG,UAAU,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC;gBAC/C,MAAM,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC;gBAC/B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;gBACzC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE;oBAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBACzD,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;gBACzC,MAAM,QAAQ,GAAa,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;gBAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnC,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC;oBAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;oBACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;wBACpC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBACtD,CAAC;oBACD,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBACpB,CAAC;gBACD,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;YAEF,MAAM,cAAc,GAAG,CACrB,QAA2B,EAC3B,EAAwC,EAChC,EAAE;gBACV,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,EAAE,CAAC;gBACrC,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrC,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC,CAAC;YAEF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAwB,EAAE,EAAE,CACrE,SAAS,CAAC,MAAM,CAAC,CAClB,CAAC;YACF,MAAM,kBAAkB,GAAG,KAAK,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAErE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uEAAuE;IAEvE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,SAAS,GAAyB,MAAM,CAAC,MAAM,CAAC;gBACpD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;oBACrB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,SAAS;oBAChB,QAAQ,EAAE,0BAA0B;iBAC5B,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC;gBACpE,GAAG,EAAE,oBAAoB;aAC1B,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAEjD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACzD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uEAAuE;IAEvE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC;YAC3D,MAAkC,CAAC,OAAO,GAAG,SAAS,CAAC;YAExD,MAAM,KAAK,GAAyB,MAAM,CAAC,MAAM,CAAC;gBAChD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;oBACrB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpB,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC;gBAChE,GAAG,EAAE,gBAAgB;aACtB,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uEAAuE;IAEvE,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,KAAK,GAAyB,MAAM,CAAC,MAAM,CAAC;gBAChD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;oBACrB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,0BAA0B;oBACpC,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC1B,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC;gBAChE,GAAG,EAAE,gBAAgB;gBACrB,UAAU,EAAE,oEAAoE;aACjF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAE7C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAC7B,oEAAoE,CACrE,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAyB,MAAM,CAAC,MAAM,CAAC;gBAChD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;oBACrB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,KAAK;iBACN,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC;gBAChE,GAAG,EAAE,mBAAmB;gBACxB,UAAU,EAAE,oEAAoE;aACjF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAE7C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,GAAW,EAAE,EAAE;gBAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBAClC,OAAO,OAAO,CAAC,OAAO,CAAC;wBACrB,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;qBAC1F,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC/B,OAAO,OAAO,CAAC,OAAO,CAAC;wBACrB,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;qBACzE,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBAClC,OAAO,OAAO,CAAC,OAAO,CAAC;wBACrB,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;qBACvE,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC;YAC3D,MAAkC,CAAC,OAAO,GAAG,SAAS,CAAC;YAExD,MAAM,KAAK,GAAyB,MAAM,CAAC,MAAM,CAAC;gBAChD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;oBACrB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpB,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC;gBAChE,GAAG,EAAE,mBAAmB;gBACxB,UAAU,EAAE,oEAAoE;aACjF,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAE7B,sFAAsF;YACtF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAEtC,MAAM,KAAK,GAAyB,MAAM,CAAC,MAAM,CAAC;gBAChD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;oBACrB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChC,QAAQ,EAAE,0BAA0B;iBAC5B,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC;gBACjE,GAAG,EAAE,oBAAoB;gBACzB,UAAU,EAAE,oEAAoE;aACjF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAE7C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"trust402.test.js","sourceRoot":"","sources":["../src/trust402.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trust402/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,17 +24,11 @@
|
|
|
24
24
|
"publishConfig": {
|
|
25
25
|
"access": "public"
|
|
26
26
|
},
|
|
27
|
-
"scripts": {
|
|
28
|
-
"build": "tsc -p tsconfig.json",
|
|
29
|
-
"type-check": "tsc -p tsconfig.json --noEmit",
|
|
30
|
-
"lint": "eslint 'src/**/*.ts'",
|
|
31
|
-
"test": "vitest run"
|
|
32
|
-
},
|
|
33
27
|
"dependencies": {
|
|
34
|
-
"@lemmaoracle/sdk": "workspace:*",
|
|
35
|
-
"@lemmaoracle/spec": "workspace:*",
|
|
36
28
|
"@noble/hashes": "^1.7.0",
|
|
37
|
-
"poseidon-lite": "^0.2.0"
|
|
29
|
+
"poseidon-lite": "^0.2.0",
|
|
30
|
+
"@lemmaoracle/sdk": "0.0.36",
|
|
31
|
+
"@lemmaoracle/spec": "0.0.35"
|
|
38
32
|
},
|
|
39
33
|
"devDependencies": {
|
|
40
34
|
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
|
@@ -44,5 +38,11 @@
|
|
|
44
38
|
"eslint-plugin-functional": "^9.0.4",
|
|
45
39
|
"typescript": "^5.5.0",
|
|
46
40
|
"vitest": "^2.1.0"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "tsc -p tsconfig.json",
|
|
44
|
+
"type-check": "tsc -p tsconfig.json --noEmit",
|
|
45
|
+
"lint": "eslint 'src/**/*.ts'",
|
|
46
|
+
"test": "vitest run"
|
|
47
47
|
}
|
|
48
|
-
}
|
|
48
|
+
}
|