@vlayer/sdk 0.1.0-nightly-20241010-e69694a → 0.1.0-nightly-20241014-8787a55

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@vlayer/sdk",
3
3
  "type": "module",
4
4
  "module": "src/index.ts",
5
- "version": "0.1.0-nightly-20241010-e69694a",
5
+ "version": "0.1.0-nightly-20241014-8787a55",
6
6
  "types": "src/index.ts",
7
7
  "scripts": {
8
8
  "build": "npm run gen:types",
@@ -1,4 +1,4 @@
1
1
  export * from "./ethereum";
2
- export * from "./webProof";
2
+ export * from "@vlayer/web-proof-commons/lib/types/webProof";
3
3
  export * from "./vlayer";
4
4
  export * from "./webProofProvider";
@@ -1,8 +1,8 @@
1
- import { WebProof } from "types/webProof.ts";
2
1
  import { AbiFunction, Hex, Abi, ContractFunctionName } from "viem";
3
2
  import type { ContractFunctionArgsWithout } from "./viem";
4
3
  import {
5
4
  Branded,
5
+ WebProof,
6
6
  WebProofStepExpectUrl,
7
7
  WebProofStepStartPage,
8
8
  } from "@vlayer/web-proof-commons";
@@ -9,10 +9,9 @@ import {
9
9
  type ExtensionMessage,
10
10
  ExtensionMessageType,
11
11
  type MessageToExtension,
12
+ WebProof,
12
13
  } from "@vlayer/web-proof-commons";
13
14
 
14
- import { WebProof } from "../../lib/types/webProof";
15
-
16
15
  // NOTE @types/chrome and webextension-polyfill work only in the extension context
17
16
  // and looks that there is no community driven package providing typings for chrome.runtime
18
17
  // or polyfill logic for the browser APIs available in the browser context
@@ -1,175 +0,0 @@
1
- # Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
2
-
3
- # Logs
4
-
5
- logs
6
- _.log
7
- npm-debug.log_
8
- yarn-debug.log*
9
- yarn-error.log*
10
- lerna-debug.log*
11
- .pnpm-debug.log*
12
-
13
- # Caches
14
-
15
- .cache
16
-
17
- # Diagnostic reports (https://nodejs.org/api/report.html)
18
-
19
- report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
20
-
21
- # Runtime data
22
-
23
- pids
24
- _.pid
25
- _.seed
26
- *.pid.lock
27
-
28
- # Directory for instrumented libs generated by jscoverage/JSCover
29
-
30
- lib-cov
31
-
32
- # Coverage directory used by tools like istanbul
33
-
34
- coverage
35
- *.lcov
36
-
37
- # nyc test coverage
38
-
39
- .nyc_output
40
-
41
- # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
42
-
43
- .grunt
44
-
45
- # Bower dependency directory (https://bower.io/)
46
-
47
- bower_components
48
-
49
- # node-waf configuration
50
-
51
- .lock-wscript
52
-
53
- # Compiled binary addons (https://nodejs.org/api/addons.html)
54
-
55
- build/Release
56
-
57
- # Dependency directories
58
-
59
- node_modules/
60
- jspm_packages/
61
-
62
- # Snowpack dependency directory (https://snowpack.dev/)
63
-
64
- web_modules/
65
-
66
- # TypeScript cache
67
-
68
- *.tsbuildinfo
69
-
70
- # Optional npm cache directory
71
-
72
- .npm
73
-
74
- # Optional eslint cache
75
-
76
- .eslintcache
77
-
78
- # Optional stylelint cache
79
-
80
- .stylelintcache
81
-
82
- # Microbundle cache
83
-
84
- .rpt2_cache/
85
- .rts2_cache_cjs/
86
- .rts2_cache_es/
87
- .rts2_cache_umd/
88
-
89
- # Optional REPL history
90
-
91
- .node_repl_history
92
-
93
- # Output of 'npm pack'
94
-
95
- *.tgz
96
-
97
- # Yarn Integrity file
98
-
99
- .yarn-integrity
100
-
101
- # dotenv environment variable files
102
-
103
- .env
104
- .env.development.local
105
- .env.test.local
106
- .env.production.local
107
- .env.local
108
-
109
- # parcel-bundler cache (https://parceljs.org/)
110
-
111
- .parcel-cache
112
-
113
- # Next.js build output
114
-
115
- .next
116
- out
117
-
118
- # Nuxt.js build / generate output
119
-
120
- .nuxt
121
- dist
122
-
123
- # Gatsby files
124
-
125
- # Comment in the public line in if your project uses Gatsby and not Next.js
126
-
127
- # https://nextjs.org/blog/next-9-1#public-directory-support
128
-
129
- # public
130
-
131
- # vuepress build output
132
-
133
- .vuepress/dist
134
-
135
- # vuepress v2.x temp and cache directory
136
-
137
- .temp
138
-
139
- # Docusaurus cache and generated files
140
-
141
- .docusaurus
142
-
143
- # Serverless directories
144
-
145
- .serverless/
146
-
147
- # FuseBox cache
148
-
149
- .fusebox/
150
-
151
- # DynamoDB Local files
152
-
153
- .dynamodb/
154
-
155
- # TernJS port file
156
-
157
- .tern-port
158
-
159
- # Stores VSCode versions used for testing VSCode extensions
160
-
161
- .vscode-test
162
-
163
- # yarn v2
164
-
165
- .yarn/cache
166
- .yarn/unplugged
167
- .yarn/build-state.yml
168
- .yarn/install-state.gz
169
- .pnp.*
170
-
171
- # IntelliJ based IDEs
172
- .idea
173
-
174
- # Finder (MacOS) folder config
175
- .DS_Store
@@ -1,4 +0,0 @@
1
- # @vlayer/web-proof-commons
2
-
3
- `web-proof-commons` is a TypeScript package that provides common type definitions and utilities shared between the
4
- `browser-extension` and `@vlayer/sdk` projects.
@@ -1 +0,0 @@
1
- export * from "./lib";
@@ -1,2 +0,0 @@
1
- export * from "./message";
2
- export * from "./utils";
@@ -1,71 +0,0 @@
1
- import type { Branded } from "./utils.ts";
2
-
3
- export const EXTENSION_STEP = {
4
- expectUrl: "expectUrl",
5
- startPage: "startPage",
6
- notarize: "notarize",
7
- } as const;
8
-
9
- export type ExtensionStep =
10
- (typeof EXTENSION_STEP)[keyof typeof EXTENSION_STEP];
11
-
12
- export const enum ExtensionAction {
13
- RequestWebProof,
14
- }
15
-
16
- export type MessageToExtension = {
17
- action: ExtensionAction;
18
- payload: WebProverSessionConfig;
19
- };
20
-
21
- export const enum ExtensionMessageType {
22
- ProofDone = "ProofDone",
23
- ProofError = "ProofError",
24
- RedirectBack = "RedirectBack",
25
- }
26
-
27
- export type ExtensionMessage =
28
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
- | { type: ExtensionMessageType.ProofDone; proof: any } // Change to WebProof
30
- | { type: ExtensionMessageType.ProofError; error: string }
31
- | { type: ExtensionMessageType.RedirectBack };
32
-
33
- export type WebProverSessionConfig = {
34
- notaryUrl: string;
35
- wsProxyUrl: string;
36
- logoUrl: string;
37
- steps: WebProofStep[];
38
- };
39
-
40
- export type WebProofStep =
41
- | WebProofStepNotarize
42
- | WebProofStepExpectUrl
43
- | WebProofStepStartPage;
44
-
45
- export type WebProofStepNotarize = Branded<
46
- {
47
- url: string;
48
- method: string;
49
- label: string;
50
- step: typeof EXTENSION_STEP.notarize;
51
- },
52
- "notarize"
53
- >;
54
-
55
- export type WebProofStepExpectUrl = Branded<
56
- {
57
- url: string;
58
- label: string;
59
- step: typeof EXTENSION_STEP.expectUrl;
60
- },
61
- "expectUrl"
62
- >;
63
-
64
- export type WebProofStepStartPage = Branded<
65
- {
66
- url: string;
67
- label: string;
68
- step: typeof EXTENSION_STEP.startPage;
69
- },
70
- "startPage"
71
- >;
@@ -1,12 +0,0 @@
1
- declare const __brand: unique symbol;
2
- type Brand<B> = { [__brand]: B };
3
- export type Branded<T, B> = T & Brand<B>;
4
-
5
- export function isDefined<T>(
6
- value: T | undefined,
7
- message: string = "Value is undefined",
8
- ): asserts value is T {
9
- if (value === undefined) {
10
- throw new Error(message);
11
- }
12
- }
@@ -1,17 +0,0 @@
1
- {
2
- "name": "@vlayer/web-proof-commons",
3
- "private": true,
4
- "version": "1.0.0",
5
- "module": "index.ts",
6
- "type": "module",
7
- "scripts": {
8
- "lint": "eslint lib",
9
- "lint:fix": "eslint --fix lib"
10
- },
11
- "devDependencies": {
12
- "@types/bun": "latest"
13
- },
14
- "peerDependencies": {
15
- "typescript": "^5.0.0"
16
- }
17
- }
@@ -1,27 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- // Enable latest features
4
- "lib": ["ESNext", "DOM"],
5
- "target": "ESNext",
6
- "module": "ESNext",
7
- "moduleDetection": "force",
8
- "jsx": "react-jsx",
9
- "allowJs": true,
10
-
11
- // Bundler mode
12
- "moduleResolution": "bundler",
13
- "allowImportingTsExtensions": true,
14
- "verbatimModuleSyntax": true,
15
- "noEmit": true,
16
-
17
- // Best practices
18
- "strict": true,
19
- "skipLibCheck": true,
20
- "noFallthroughCasesInSwitch": true,
21
-
22
- // Some stricter flags (disabled by default)
23
- "noUnusedLocals": false,
24
- "noUnusedParameters": false,
25
- "noPropertyAccessFromIndexSignature": false
26
- }
27
- }
@@ -1,111 +0,0 @@
1
- // NOTE : this is copied from tlsn-js 5.4
2
- // for some reason newest versions doesn't export this type (clarification is in progress)
3
- // probably it should be reexported from tlsn-js
4
-
5
- export interface WebProof {
6
- session: Session;
7
- substrings: Substrings;
8
- notaryUrl: string;
9
- }
10
-
11
- export interface Session {
12
- header: Header;
13
- signature: Signature;
14
- session_info: SessionInfo;
15
- }
16
-
17
- export interface SessionInfo {
18
- server_name: ServerName;
19
- handshake_decommitment: HandshakeDecommitment;
20
- }
21
-
22
- export interface HandshakeDecommitment {
23
- nonce: number[];
24
- data: Data;
25
- }
26
-
27
- export interface Data {
28
- server_cert_details: ServerCERTDetails;
29
- server_kx_details: ServerKxDetails;
30
- client_random: number[];
31
- server_random: number[];
32
- }
33
-
34
- export interface ServerCERTDetails {
35
- cert_chain: Array<number[]>;
36
- ocsp_response: number[];
37
- scts: null;
38
- }
39
-
40
- export interface ServerKxDetails {
41
- kx_params: number[];
42
- kx_sig: KxSig;
43
- }
44
-
45
- export interface KxSig {
46
- scheme: string;
47
- sig: number[];
48
- }
49
-
50
- export interface Header {
51
- encoder_seed: number[];
52
- merkle_root: number[];
53
- sent_len: number;
54
- recv_len: number;
55
- handshake_summary: HandshakeSummary;
56
- }
57
-
58
- export interface HandshakeSummary {
59
- time: number;
60
- server_public_key: ServerPublicKey;
61
- handshake_commitment: number[];
62
- }
63
-
64
- export interface ServerPublicKey {
65
- group: string;
66
- key: number[];
67
- }
68
-
69
- export interface ServerName {
70
- Dns: string;
71
- }
72
-
73
- export interface Signature {
74
- P256: string;
75
- }
76
-
77
- export interface Substrings {
78
- openings: { [key: string]: Opening[] };
79
- inclusion_proof: InclusionProof;
80
- }
81
-
82
- export interface InclusionProof {
83
- proof: unknown[];
84
- total_leaves: number;
85
- }
86
-
87
- export interface Opening {
88
- kind?: string;
89
- ranges?: Range[];
90
- direction?: string;
91
- Blake3?: Blake3;
92
- }
93
-
94
- export interface Blake3 {
95
- data: number[];
96
- nonce: number[];
97
- }
98
-
99
- export interface Range {
100
- start: number;
101
- end: number;
102
- }
103
- export const assertWebProof = function (candidate: {
104
- notaryUrl?: string;
105
- }): asserts candidate is WebProof {
106
- //for now only thing we check is notary url
107
- //TODO: implement later once we known the conteact with tlsn-js
108
- if (!candidate.notaryUrl) {
109
- throw new Error("Missing required parameter");
110
- }
111
- };