@provablehq/sdk 0.9.14 → 0.9.15-experimental

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.
@@ -3,7 +3,6 @@ import { webcrypto } from 'node:crypto';
3
3
  import * as $fs from 'node:fs';
4
4
  import $mime from 'mime/lite';
5
5
  import $xmlhttprequest from 'xmlhttprequest-ssl';
6
- import $request from 'sync-request';
7
6
  import * as $worker from 'node:worker_threads';
8
7
  import * as $os from 'node:os';
9
8
 
@@ -53,54 +52,8 @@ globalThis.fetch = async function (resource, options) {
53
52
  // @ts-ignore
54
53
  if (globalThis.XMLHttpRequest == null) {
55
54
  globalThis.XMLHttpRequest = class extends $xmlhttprequest.XMLHttpRequest {
56
- // We have to override the methods inside of the `constructor`
57
- // because `xmlhttprequest-ssl` doesn't use a regular class,
58
- // instead it defines all of the methods inside of the constructor.
59
- constructor(...args) {
60
- super(...args);
61
- const open = this.open;
62
- const send = this.send;
63
- let _async = true;
64
- let _url = null;
65
- let _mime = "text/xml";
66
- function reset() {
67
- _async = true;
68
- _url = null;
69
- _mime = "text/xml";
70
- }
71
- this.open = function (method, url, async, user, password) {
72
- // Special behavior for synchronous requests
73
- if (method === "GET" && !async && !user && !password) {
74
- _async = false;
75
- _url = url;
76
- // Default to the normal polyfill for async requests
77
- }
78
- else {
79
- reset();
80
- return open.call(this, method, url, async, user, password);
81
- }
82
- };
83
- this.send = function (data) {
84
- if (_async) {
85
- return send.call(this, data);
86
- // Use `sync-request` for synchronous requests.
87
- }
88
- else {
89
- const response = $request("GET", _url, {
90
- headers: {
91
- "Content-Type": _mime,
92
- }
93
- });
94
- const buffer = response.body.buffer;
95
- const responseText = new TextDecoder("iso-8859-5", { fatal: true }).decode(buffer);
96
- this.status = 200;
97
- this.response = this.responseText = responseText;
98
- reset();
99
- }
100
- };
101
- this.overrideMimeType = function (mime) {
102
- _mime = mime;
103
- };
55
+ constructor(opts) {
56
+ super({ syncPolicy: "enabled", ...opts });
104
57
  }
105
58
  };
106
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"node-polyfill.js","sources":["../../src/polyfill/crypto.ts","../../src/polyfill/fetch.ts","../../src/polyfill/xmlhttprequest.ts","../../src/polyfill/worker.ts","../../src/node-polyfill.ts"],"sourcesContent":["import { webcrypto } from \"node:crypto\";\n\nif ((globalThis as any).crypto == null) {\n (globalThis as any).crypto = webcrypto;\n}\n","import * as $fs from \"node:fs\";\nimport $mime from \"mime/lite\";\n\n\nconst oldFetch = globalThis.fetch;\n\n\nlet supports: Promise<boolean> | null = null;\n\nasync function checkFetch() {\n try {\n await oldFetch(new URL(\"file:\"));\n return true;\n\n } catch (e) {\n return false;\n }\n}\n\nasync function supportsFetch(): Promise<boolean> {\n if (supports === null) {\n supports = checkFetch();\n }\n\n return await supports;\n}\n\n\n// We always polyfill fetch because Node's fetch doesn't support file URLs.\n(globalThis.fetch as any) = async function (resource: URL | RequestInfo, options: RequestInit | undefined): Promise<Response> {\n const request = new Request(resource, options);\n\n const url = new URL(request.url);\n\n if (!(await supportsFetch()) && url.protocol === \"file:\") {\n const readStream = $fs.createReadStream(url);\n\n const headers: HeadersInit = {};\n\n const type = $mime.getType(url.pathname);\n\n if (type) {\n headers[\"Content-Type\"] = type;\n }\n\n return new Response(readStream as any, {\n status: 200,\n statusText: \"OK\",\n headers,\n });\n\n } else {\n return await oldFetch(request);\n }\n};\n","// @ts-ignore\nimport $xmlhttprequest from \"xmlhttprequest-ssl\";\nimport $request from \"sync-request\";\n\nif (globalThis.XMLHttpRequest == null) {\n globalThis.XMLHttpRequest = class extends $xmlhttprequest.XMLHttpRequest {\n // We have to override the methods inside of the `constructor`\n // because `xmlhttprequest-ssl` doesn't use a regular class,\n // instead it defines all of the methods inside of the constructor.\n constructor(...args: Array<any>) {\n super(...args);\n\n const open = (this as any).open;\n const send = (this as any).send;\n\n let _async: boolean = true;\n let _url: null | string = null;\n let _mime: string = \"text/xml\";\n\n function reset() {\n _async = true;\n _url = null;\n _mime = \"text/xml\";\n }\n\n (this as any).open = function (method: string, url: string, async: boolean, user?: string, password?: string) {\n // Special behavior for synchronous requests\n if (method === \"GET\" && !async && !user && !password) {\n _async = false;\n _url = url;\n\n // Default to the normal polyfill for async requests\n } else {\n reset();\n return open.call(this, method, url, async, user, password);\n }\n };\n\n (this as any).send = function (data: any) {\n if (_async) {\n return send.call(this, data);\n\n // Use `sync-request` for synchronous requests.\n } else {\n const response = $request(\"GET\", _url!, {\n headers: {\n \"Content-Type\": _mime,\n }\n });\n\n const buffer = (response.body as Buffer).buffer as any;\n\n const responseText = new TextDecoder(\"iso-8859-5\", { fatal: true }).decode(buffer);\n\n (this as any).status = 200;\n (this as any).response = (this as any).responseText = responseText;\n\n reset();\n }\n };\n\n (this as any).overrideMimeType = function (mime: string) {\n _mime = mime;\n };\n }\n } as any;\n}\n","import * as $worker from \"node:worker_threads\";\nimport * as $os from \"node:os\";\n\n// This is technically not a part of the Worker polyfill,\n// but Workers are used for multi-threading, so this is often\n// needed when writing Worker code.\nif (globalThis.navigator == null) {\n globalThis.navigator = {\n hardwareConcurrency: $os.cpus().length,\n } as Navigator;\n}\n\nif (globalThis.Worker == null) {\n globalThis.Worker = class Worker extends EventTarget {\n private _worker: import(\"node:worker_threads\").Worker;\n\n constructor(url: string | URL, options?: WorkerOptions | undefined) {\n super();\n\n if (url instanceof URL) {\n if (url.protocol !== \"file:\") {\n throw new Error(\"Worker only supports file: URLs\");\n }\n\n url = url.href;\n\n } else {\n throw new Error(\"Filepaths are unreliable, use `new URL(\\\"...\\\", import.meta.url)` instead.\");\n }\n\n if (!options || options.type !== \"module\") {\n throw new Error(\"Workers must use \\`type: \\\"module\\\"\\`\");\n }\n\n const code = `\n import(\"node:worker_threads\")\n .then(({ workerData }) => {\n return import(workerData.polyfill)\n .then(() => import(workerData.url))\n })\n .catch((e) => {\n // TODO maybe it should send a message to the parent?\n console.error(e.stack);\n });\n `;\n\n this._worker = new $worker.Worker(code, {\n eval: true,\n workerData: {\n url,\n polyfill: new URL(\"node-polyfill.js\", import.meta.url).href,\n },\n });\n\n this._worker.on(\"message\", (data) => {\n this.dispatchEvent(new MessageEvent(\"message\", { data }));\n });\n\n this._worker.on(\"messageerror\", (error) => {\n throw new Error(\"UNIMPLEMENTED\");\n });\n\n this._worker.on(\"error\", (error) => {\n // TODO attach the error to the event somehow\n const event = new Event(\"error\");\n this.dispatchEvent(event);\n });\n }\n\n set onmessage(f: () => void) {\n throw new Error(\"UNIMPLEMENTED\");\n }\n\n set onmessageerror(f: () => void) {\n throw new Error(\"UNIMPLEMENTED\");\n }\n\n set onerror(f: () => void) {\n throw new Error(\"UNIMPLEMENTED\");\n }\n\n postMessage(message: any, transfer: Array<Transferable>): void;\n postMessage(message: any, options?: StructuredSerializeOptions | undefined): void;\n postMessage(value: any, transfer: any) {\n this._worker.postMessage(value, transfer);\n }\n\n terminate() {\n this._worker.terminate();\n }\n\n // This is Node-specific, it allows the process to exit\n // even if the Worker is still running.\n unref() {\n this._worker.unref();\n }\n };\n}\n\n\nif (!$worker.isMainThread) {\n const globals = globalThis as unknown as DedicatedWorkerGlobalScope;\n\n // This is used to create the onmessage, onmessageerror, and onerror setters\n const makeSetter = (prop: string, event: string) => {\n let oldvalue: () => void;\n\n Object.defineProperty(globals, prop, {\n get() {\n return oldvalue;\n },\n set(value) {\n if (oldvalue) {\n globals.removeEventListener(event, oldvalue);\n }\n\n oldvalue = value;\n\n if (oldvalue) {\n globals.addEventListener(event, oldvalue);\n }\n },\n });\n };\n\n // This makes sure that `f` is only run once\n const memoize = (f: () => void) => {\n let run = false;\n\n return () => {\n if (!run) {\n run = true;\n f();\n }\n };\n };\n\n\n // We only start listening for messages / errors when the worker calls addEventListener\n const startOnMessage = memoize(() => {\n $worker.parentPort!.on(\"message\", (data) => {\n workerEvents.dispatchEvent(new MessageEvent(\"message\", { data }));\n });\n });\n\n const startOnMessageError = memoize(() => {\n throw new Error(\"UNIMPLEMENTED\");\n });\n\n const startOnError = memoize(() => {\n $worker.parentPort!.on(\"error\", (data) => {\n workerEvents.dispatchEvent(new Event(\"error\"));\n });\n });\n\n\n // Node workers don't have top-level events, so we have to make our own\n const workerEvents = new EventTarget();\n\n globals.close = () => {\n process.exit();\n };\n\n globals.addEventListener = (type: string, callback: EventListenerOrEventListenerObject | null, options?: boolean | EventListenerOptions | undefined) => {\n workerEvents.addEventListener(type, callback, options);\n\n if (type === \"message\") {\n startOnMessage();\n } else if (type === \"messageerror\") {\n startOnMessageError();\n } else if (type === \"error\") {\n startOnError();\n }\n };\n\n globals.removeEventListener = (type: string, callback: EventListenerOrEventListenerObject | null, options?: boolean | EventListenerOptions | undefined) => {\n workerEvents.removeEventListener(type, callback, options);\n };\n\n function postMessage(message: any, transfer: Transferable[]): void;\n function postMessage(message: any, options?: StructuredSerializeOptions | undefined): void;\n function postMessage(value: any, transfer: any) {\n $worker.parentPort!.postMessage(value, transfer);\n }\n\n globals.postMessage = postMessage;\n\n makeSetter(\"onmessage\", \"message\");\n makeSetter(\"onmessageerror\", \"messageerror\");\n makeSetter(\"onerror\", \"error\");\n}\n","import \"./polyfill/shared.js\";\nimport \"./polyfill/crypto.js\";\nimport \"./polyfill/fetch.js\";\nimport \"./polyfill/xmlhttprequest.js\";\nimport \"./polyfill/worker.js\";\n\nif (!globalThis.self) {\n (globalThis as any).self = globalThis;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-polyfill.js","sources":["../../src/polyfill/crypto.ts","../../src/polyfill/fetch.ts","../../src/polyfill/xmlhttprequest.ts","../../src/polyfill/worker.ts","../../src/node-polyfill.ts"],"sourcesContent":["import { webcrypto } from \"node:crypto\";\n\nif ((globalThis as any).crypto == null) {\n (globalThis as any).crypto = webcrypto;\n}\n","import * as $fs from \"node:fs\";\nimport $mime from \"mime/lite\";\n\n\nconst oldFetch = globalThis.fetch;\n\n\nlet supports: Promise<boolean> | null = null;\n\nasync function checkFetch() {\n try {\n await oldFetch(new URL(\"file:\"));\n return true;\n\n } catch (e) {\n return false;\n }\n}\n\nasync function supportsFetch(): Promise<boolean> {\n if (supports === null) {\n supports = checkFetch();\n }\n\n return await supports;\n}\n\n\n// We always polyfill fetch because Node's fetch doesn't support file URLs.\n(globalThis.fetch as any) = async function (resource: URL | RequestInfo, options: RequestInit | undefined): Promise<Response> {\n const request = new Request(resource, options);\n\n const url = new URL(request.url);\n\n if (!(await supportsFetch()) && url.protocol === \"file:\") {\n const readStream = $fs.createReadStream(url);\n\n const headers: HeadersInit = {};\n\n const type = $mime.getType(url.pathname);\n\n if (type) {\n headers[\"Content-Type\"] = type;\n }\n\n return new Response(readStream as any, {\n status: 200,\n statusText: \"OK\",\n headers,\n });\n\n } else {\n return await oldFetch(request);\n }\n};\n","// @ts-ignore\nimport $xmlhttprequest from \"xmlhttprequest-ssl\";\n\nif (globalThis.XMLHttpRequest == null) {\n (globalThis as any).XMLHttpRequest = class extends $xmlhttprequest.XMLHttpRequest {\n constructor(opts?: any) {\n super({ syncPolicy: \"enabled\", ...opts });\n }\n };\n}","import * as $worker from \"node:worker_threads\";\nimport * as $os from \"node:os\";\n\n// This is technically not a part of the Worker polyfill,\n// but Workers are used for multi-threading, so this is often\n// needed when writing Worker code.\nif (globalThis.navigator == null) {\n globalThis.navigator = {\n hardwareConcurrency: $os.cpus().length,\n } as Navigator;\n}\n\nif (globalThis.Worker == null) {\n globalThis.Worker = class Worker extends EventTarget {\n private _worker: import(\"node:worker_threads\").Worker;\n\n constructor(url: string | URL, options?: WorkerOptions | undefined) {\n super();\n\n if (url instanceof URL) {\n if (url.protocol !== \"file:\") {\n throw new Error(\"Worker only supports file: URLs\");\n }\n\n url = url.href;\n\n } else {\n throw new Error(\"Filepaths are unreliable, use `new URL(\\\"...\\\", import.meta.url)` instead.\");\n }\n\n if (!options || options.type !== \"module\") {\n throw new Error(\"Workers must use \\`type: \\\"module\\\"\\`\");\n }\n\n const code = `\n import(\"node:worker_threads\")\n .then(({ workerData }) => {\n return import(workerData.polyfill)\n .then(() => import(workerData.url))\n })\n .catch((e) => {\n // TODO maybe it should send a message to the parent?\n console.error(e.stack);\n });\n `;\n\n this._worker = new $worker.Worker(code, {\n eval: true,\n workerData: {\n url,\n polyfill: new URL(\"node-polyfill.js\", import.meta.url).href,\n },\n });\n\n this._worker.on(\"message\", (data) => {\n this.dispatchEvent(new MessageEvent(\"message\", { data }));\n });\n\n this._worker.on(\"messageerror\", (error) => {\n throw new Error(\"UNIMPLEMENTED\");\n });\n\n this._worker.on(\"error\", (error) => {\n // TODO attach the error to the event somehow\n const event = new Event(\"error\");\n this.dispatchEvent(event);\n });\n }\n\n set onmessage(f: () => void) {\n throw new Error(\"UNIMPLEMENTED\");\n }\n\n set onmessageerror(f: () => void) {\n throw new Error(\"UNIMPLEMENTED\");\n }\n\n set onerror(f: () => void) {\n throw new Error(\"UNIMPLEMENTED\");\n }\n\n postMessage(message: any, transfer: Array<Transferable>): void;\n postMessage(message: any, options?: StructuredSerializeOptions | undefined): void;\n postMessage(value: any, transfer: any) {\n this._worker.postMessage(value, transfer);\n }\n\n terminate() {\n this._worker.terminate();\n }\n\n // This is Node-specific, it allows the process to exit\n // even if the Worker is still running.\n unref() {\n this._worker.unref();\n }\n };\n}\n\n\nif (!$worker.isMainThread) {\n const globals = globalThis as unknown as DedicatedWorkerGlobalScope;\n\n // This is used to create the onmessage, onmessageerror, and onerror setters\n const makeSetter = (prop: string, event: string) => {\n let oldvalue: () => void;\n\n Object.defineProperty(globals, prop, {\n get() {\n return oldvalue;\n },\n set(value) {\n if (oldvalue) {\n globals.removeEventListener(event, oldvalue);\n }\n\n oldvalue = value;\n\n if (oldvalue) {\n globals.addEventListener(event, oldvalue);\n }\n },\n });\n };\n\n // This makes sure that `f` is only run once\n const memoize = (f: () => void) => {\n let run = false;\n\n return () => {\n if (!run) {\n run = true;\n f();\n }\n };\n };\n\n\n // We only start listening for messages / errors when the worker calls addEventListener\n const startOnMessage = memoize(() => {\n $worker.parentPort!.on(\"message\", (data) => {\n workerEvents.dispatchEvent(new MessageEvent(\"message\", { data }));\n });\n });\n\n const startOnMessageError = memoize(() => {\n throw new Error(\"UNIMPLEMENTED\");\n });\n\n const startOnError = memoize(() => {\n $worker.parentPort!.on(\"error\", (data) => {\n workerEvents.dispatchEvent(new Event(\"error\"));\n });\n });\n\n\n // Node workers don't have top-level events, so we have to make our own\n const workerEvents = new EventTarget();\n\n globals.close = () => {\n process.exit();\n };\n\n globals.addEventListener = (type: string, callback: EventListenerOrEventListenerObject | null, options?: boolean | EventListenerOptions | undefined) => {\n workerEvents.addEventListener(type, callback, options);\n\n if (type === \"message\") {\n startOnMessage();\n } else if (type === \"messageerror\") {\n startOnMessageError();\n } else if (type === \"error\") {\n startOnError();\n }\n };\n\n globals.removeEventListener = (type: string, callback: EventListenerOrEventListenerObject | null, options?: boolean | EventListenerOptions | undefined) => {\n workerEvents.removeEventListener(type, callback, options);\n };\n\n function postMessage(message: any, transfer: Transferable[]): void;\n function postMessage(message: any, options?: StructuredSerializeOptions | undefined): void;\n function postMessage(value: any, transfer: any) {\n $worker.parentPort!.postMessage(value, transfer);\n }\n\n globals.postMessage = postMessage;\n\n makeSetter(\"onmessage\", \"message\");\n makeSetter(\"onmessageerror\", \"messageerror\");\n makeSetter(\"onerror\", \"error\");\n}\n","import \"./polyfill/shared.js\";\nimport \"./polyfill/crypto.js\";\nimport \"./polyfill/fetch.js\";\nimport \"./polyfill/xmlhttprequest.js\";\nimport \"./polyfill/worker.js\";\n\nif (!globalThis.self) {\n (globalThis as any).self = globalThis;\n}\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@ import 'node:crypto';
6
6
  import 'node:fs';
7
7
  import 'mime/lite';
8
8
  import 'xmlhttprequest-ssl';
9
- import 'sync-request';
10
9
  import 'node:worker_threads';
11
10
  import 'node:os';
12
11
  import '@scure/base';
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
1
+ {"version":3,"file":"node.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@provablehq/sdk",
3
- "version": "0.9.14",
3
+ "version": "0.9.15-experimental",
4
4
  "description": "A Software Development Kit (SDK) for Zero-Knowledge Transactions",
5
5
  "collaborators": [
6
6
  "The Provable Team"
@@ -51,13 +51,12 @@
51
51
  },
52
52
  "homepage": "https://github.com/ProvableHQ/sdk#readme",
53
53
  "dependencies": {
54
- "@provablehq/wasm": "^0.9.14",
54
+ "@provablehq/wasm": "^0.9.15-experimental",
55
55
  "@scure/base": "^2.0.0",
56
56
  "comlink": "^4.4.2",
57
57
  "core-js": "^3.40.0",
58
58
  "mime": "^4.0.6",
59
- "sync-request": "^6.1.0",
60
- "xmlhttprequest-ssl": "^3.1.0"
59
+ "xmlhttprequest-ssl": "^4.0.0"
61
60
  },
62
61
  "devDependencies": {
63
62
  "@rollup/plugin-replace": "^6.0.2",