This commit is contained in:
Hendrik Eeckhaut
2026-01-05 20:31:51 +01:00
parent e12eca63de
commit a1e48391e8
6 changed files with 947 additions and 1826 deletions

2592
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -33,6 +33,11 @@
"eslint-plugin-prettier": "^5.5.4", "eslint-plugin-prettier": "^5.5.4",
"prettier": "^3.6.2", "prettier": "^3.6.2",
"typescript": "^5.0.0", "typescript": "^5.0.0",
"vitest": "^1.0.0" "vitest": "^4.0.16"
},
"dependencies": {
"happy-dom": "20.0.11",
"vite": "7.3.0",
"webpack-dev-server": "5.2.2"
} }
} }

View File

@@ -11,14 +11,16 @@
"type-check": "tsc --noEmit" "type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"happy-dom": "20.0.11",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0" "react-dom": "^18.2.0",
"webpack-dev-server": "5.2.2"
}, },
"devDependencies": { "devDependencies": {
"@types/react": "^18.2.0", "@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0", "@types/react-dom": "^18.2.0",
"@vitejs/plugin-react": "^4.2.1", "@vitejs/plugin-react": "^4.2.1",
"typescript": "^5.3.3", "typescript": "^5.3.3",
"vite": "^5.0.0" "vite": "^7.3.0"
} }
} }

View File

@@ -20,13 +20,13 @@
"serve:test": "python3 -m http.server 8081 --directory ./tests/integration" "serve:test": "python3 -m http.server 8081 --directory ./tests/integration"
}, },
"dependencies": { "dependencies": {
"@tlsn/common": "*",
"@tlsn/plugin-sdk": "*",
"@codemirror/lang-javascript": "^6.2.4", "@codemirror/lang-javascript": "^6.2.4",
"@codemirror/state": "^6.5.2", "@codemirror/state": "^6.5.2",
"@codemirror/theme-one-dark": "^6.1.3", "@codemirror/theme-one-dark": "^6.1.3",
"@codemirror/view": "^6.38.6", "@codemirror/view": "^6.38.6",
"@fortawesome/fontawesome-free": "^6.4.2", "@fortawesome/fontawesome-free": "^6.4.2",
"@tlsn/common": "*",
"@tlsn/plugin-sdk": "*",
"@uiw/react-codemirror": "^4.25.2", "@uiw/react-codemirror": "^4.25.2",
"assert": "^2.1.0", "assert": "^2.1.0",
"buffer": "^6.0.3", "buffer": "^6.0.3",
@@ -84,7 +84,7 @@
"eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-hooks": "^4.6.0",
"file-loader": "^6.2.0", "file-loader": "^6.2.0",
"fs-extra": "^11.1.0", "fs-extra": "^11.1.0",
"happy-dom": "^19.0.1", "happy-dom": "^20.0.11",
"html-loader": "^4.2.0", "html-loader": "^4.2.0",
"html-webpack-plugin": "^5.5.0", "html-webpack-plugin": "^5.5.0",
"null-loader": "^4.0.1", "null-loader": "^4.0.1",
@@ -107,8 +107,8 @@
"webextension-polyfill": "^0.10.0", "webextension-polyfill": "^0.10.0",
"webpack": "^5.75.0", "webpack": "^5.75.0",
"webpack-cli": "^4.10.0", "webpack-cli": "^4.10.0",
"webpack-dev-server": "^4.11.1", "webpack-dev-server": "^5.2.2",
"webpack-ext-reloader": "^1.1.12", "webpack-ext-reloader": "^1.1.12",
"zip-webpack-plugin": "^4.0.1" "zip-webpack-plugin": "^4.0.1"
} }
} }

View File

@@ -42,6 +42,7 @@
], ],
"devDependencies": { "devDependencies": {
"@types/node": "^20.19.18", "@types/node": "^20.19.18",
"@types/uuid": "^10.0.0",
"@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0", "@typescript-eslint/parser": "^5.62.0",
"@vitest/browser": "^3.2.4", "@vitest/browser": "^3.2.4",
@@ -51,7 +52,7 @@
"eslint": "^8.57.1", "eslint": "^8.57.1",
"eslint-config-prettier": "^9.1.2", "eslint-config-prettier": "^9.1.2",
"eslint-plugin-prettier": "^5.5.4", "eslint-plugin-prettier": "^5.5.4",
"happy-dom": "^19.0.2", "happy-dom": "^20.0.11",
"path-browserify": "^1.0.1", "path-browserify": "^1.0.1",
"playwright": "^1.55.1", "playwright": "^1.55.1",
"prettier": "^3.6.2", "prettier": "^3.6.2",
@@ -67,6 +68,7 @@
"@jitl/quickjs-ng-wasmfile-release-sync": "^0.31.0", "@jitl/quickjs-ng-wasmfile-release-sync": "^0.31.0",
"@sebastianwessel/quickjs": "^3.0.0", "@sebastianwessel/quickjs": "^3.0.0",
"@tlsn/common": "*", "@tlsn/common": "*",
"quickjs-emscripten": "^0.31.0" "quickjs-emscripten": "^0.31.0",
"uuid": "^13.0.0"
} }
} }

View File

@@ -1,97 +1,97 @@
/** /**
* Global type declarations for TLSNotary plugin runtime environment * Global type declarations for TLSNotary plugin runtime environment
* *
* These functions are injected at runtime by the plugin sandbox. * These functions are injected at runtime by the plugin sandbox.
* Import this file in your plugin to get TypeScript support: * Import this file in your plugin to get TypeScript support:
* *
* /// <reference types="@tlsn/plugin-sdk/globals" /> * /// <reference types="@tlsn/plugin-sdk/globals" />
*/ */
import type { import type {
InterceptedRequest, InterceptedRequest,
InterceptedRequestHeader, InterceptedRequestHeader,
Handler, Handler,
DomOptions, DomOptions,
DomJson, DomJson,
} from './types'; } from './types';
declare global { declare global {
/** /**
* Create a div element * Create a div element
*/ */
function div(options?: DomOptions, children?: (DomJson | string)[]): DomJson; function div(options?: DomOptions, children?: (DomJson | string)[]): DomJson;
function div(children?: (DomJson | string)[]): DomJson; function div(children?: (DomJson | string)[]): DomJson;
/** /**
* Create a button element * Create a button element
*/ */
function button(options?: DomOptions, children?: (DomJson | string)[]): DomJson; function button(options?: DomOptions, children?: (DomJson | string)[]): DomJson;
function button(children?: (DomJson | string)[]): DomJson; function button(children?: (DomJson | string)[]): DomJson;
/** /**
* Get or initialize state value (React-like useState) * Get or initialize state value (React-like useState)
*/ */
function useState<T>(key: string, initialValue: T): T; function useState<T>(key: string, initialValue: T): T;
/** /**
* Update state value * Update state value
*/ */
function setState<T>(key: string, value: T): void; function setState<T>(key: string, value: T): void;
/** /**
* Run side effect when dependencies change (React-like useEffect) * Run side effect when dependencies change (React-like useEffect)
*/ */
function useEffect(effect: () => void, deps: any[]): void; function useEffect(effect: () => void, deps: any[]): void;
/** /**
* Subscribe to intercepted HTTP headers * Subscribe to intercepted HTTP headers
*/ */
function useHeaders( function useHeaders(
filter: (headers: InterceptedRequestHeader[]) => InterceptedRequestHeader[], filter: (headers: InterceptedRequestHeader[]) => InterceptedRequestHeader[],
): [InterceptedRequestHeader | undefined]; ): [InterceptedRequestHeader | undefined];
/** /**
* Subscribe to intercepted HTTP requests * Subscribe to intercepted HTTP requests
*/ */
function useRequests( function useRequests(
filter: (requests: InterceptedRequest[]) => InterceptedRequest[], filter: (requests: InterceptedRequest[]) => InterceptedRequest[],
): [InterceptedRequest | undefined]; ): [InterceptedRequest | undefined];
/** /**
* Open a new browser window for user interaction * Open a new browser window for user interaction
*/ */
function openWindow( function openWindow(
url: string, url: string,
options?: { options?: {
width?: number; width?: number;
height?: number; height?: number;
showOverlay?: boolean; showOverlay?: boolean;
}, },
): Promise<void>; ): Promise<void>;
/** /**
* Generate a TLS proof for an HTTP request * Generate a TLS proof for an HTTP request
*/ */
function prove( function prove(
requestOptions: { requestOptions: {
url: string; url: string;
method: string; method: string;
headers: Record<string, string>; headers: Record<string, string>;
body?: string; body?: string;
}, },
proverOptions: { proverOptions: {
verifierUrl: string; verifierUrl: string;
proxyUrl: string; proxyUrl: string;
maxRecvData?: number; maxRecvData?: number;
maxSentData?: number; maxSentData?: number;
handlers: Handler[]; handlers: Handler[];
}, },
): Promise<any>; ): Promise<any>;
/** /**
* Complete plugin execution and return result * Complete plugin execution and return result
*/ */
function done(result?: any): void; function done(result?: any): void;
} }
export { }; export {};