From 754ba22b4216733593c88708569e432eb2e81065 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 13:09:02 +0200 Subject: [PATCH 001/126] removed plugins from core --- packages/js/core/src/index.ts | 1 - .../js/core/src/plugin/PluginWrapPackage.ts | 20 --- packages/js/core/src/plugin/PluginWrapper.ts | 125 ------------------ packages/js/core/src/plugin/index.ts | 2 - packages/js/core/src/types/Client.ts | 4 - packages/js/core/src/types/Plugin.ts | 83 ------------ .../js/core/src/types/PluginRegistration.ts | 26 ---- packages/js/core/src/types/index.ts | 2 - 8 files changed, 263 deletions(-) delete mode 100644 packages/js/core/src/plugin/PluginWrapPackage.ts delete mode 100644 packages/js/core/src/plugin/PluginWrapper.ts delete mode 100644 packages/js/core/src/plugin/index.ts delete mode 100644 packages/js/core/src/types/Plugin.ts delete mode 100644 packages/js/core/src/types/PluginRegistration.ts diff --git a/packages/js/core/src/index.ts b/packages/js/core/src/index.ts index a53b68cd72..ed786d83db 100644 --- a/packages/js/core/src/index.ts +++ b/packages/js/core/src/index.ts @@ -3,4 +3,3 @@ export * from "./algorithms"; export * from "./interfaces"; export * from "./uri-resolution"; export * from "./utils"; -export * from "./plugin"; diff --git a/packages/js/core/src/plugin/PluginWrapPackage.ts b/packages/js/core/src/plugin/PluginWrapPackage.ts deleted file mode 100644 index 8928129e72..0000000000 --- a/packages/js/core/src/plugin/PluginWrapPackage.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { IWrapPackage, PluginPackage, Uri, Wrapper } from "../types"; -import { PluginWrapper } from "./PluginWrapper"; - -import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; - -// TODO: this is a temporary solution until we refactor the plugin package to be an IWrapPackage -export class PluginWrapPackage implements IWrapPackage { - constructor( - public uri: Uri, - private readonly pluginPackage: PluginPackage - ) {} - - async getManifest(): Promise { - return this.pluginPackage.manifest; - } - - async createWrapper(): Promise { - return new PluginWrapper(this.pluginPackage); - } -} diff --git a/packages/js/core/src/plugin/PluginWrapper.ts b/packages/js/core/src/plugin/PluginWrapper.ts deleted file mode 100644 index 13df1587ce..0000000000 --- a/packages/js/core/src/plugin/PluginWrapper.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { - Wrapper, - Client, - InvokeOptions, - InvocableResult, - PluginModule, - PluginPackage, - Uri, - GetFileOptions, - GetManifestOptions, - isBuffer, -} from "../."; - -import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; -import { msgpackDecode } from "@polywrap/msgpack-js"; -import { Tracer, TracingLevel } from "@polywrap/tracing-js"; - -export class PluginWrapper implements Wrapper { - private _instance: PluginModule | undefined; - - constructor(private _plugin: PluginPackage) { - Tracer.startSpan("PluginWrapper: constructor"); - Tracer.setAttribute("args", { - plugin: this._plugin, - }); - Tracer.endSpan(); - } - - public async getFile( - _: GetFileOptions, - _client: Client - ): Promise { - throw Error("client.getFile(...) is not implemented for Plugins."); - } - - @Tracer.traceMethod("PluginWrapper: getManifest") - public async getManifest( - _: GetManifestOptions, - _client: Client - ): Promise { - return this._plugin.manifest; - } - - @Tracer.traceMethod("PluginWrapper: invoke", TracingLevel.High) - public async invoke( - options: InvokeOptions, - client: Client - ): Promise> { - Tracer.setAttribute( - "label", - `Plugin Wrapper invoked: ${options.uri.uri}, with method ${options.method}`, - TracingLevel.High - ); - try { - const { method } = options; - const args = options.args || {}; - const module = this._getInstance(); - - if (!module) { - throw new Error(`PluginWrapper: module "${module}" not found.`); - } - - if (!module.getMethod(method)) { - throw new Error(`PluginWrapper: method "${method}" not found.`); - } - - // Set the module's environment - await module.setEnv(options.env || {}); - - let jsArgs: Record; - - // If the args are a msgpack buffer, deserialize it - if (isBuffer(args)) { - const result = msgpackDecode(args); - - Tracer.addEvent("msgpack-decoded", result); - - if (typeof result !== "object") { - throw new Error( - `PluginWrapper: decoded MsgPack args did not result in an object.\nResult: ${result}` - ); - } - - jsArgs = result as Record; - } else { - jsArgs = args as Record; - } - - // Invoke the function - try { - const result = await module._wrap_invoke(method, jsArgs, client); - - if (result !== undefined) { - const data = result as unknown; - - Tracer.addEvent("Result", data); - - return { - data: data, - encoded: false, - }; - } else { - return {}; - } - } catch (e) { - throw Error( - `PluginWrapper: invocation exception encountered.\n` + - `uri: ${options.uri}\nmodule: ${module}\n` + - `method: ${method}\n` + - `args: ${JSON.stringify(jsArgs, null, 2)}\n` + - `exception: ${e.message}` - ); - } - } catch (error) { - return { - error, - }; - } - } - - private _getInstance(): PluginModule { - this._instance ||= this._plugin.factory(); - return this._instance; - } -} diff --git a/packages/js/core/src/plugin/index.ts b/packages/js/core/src/plugin/index.ts deleted file mode 100644 index eba1a8d2a9..0000000000 --- a/packages/js/core/src/plugin/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./PluginWrapPackage"; -export * from "./PluginWrapper"; diff --git a/packages/js/core/src/types/Client.ts b/packages/js/core/src/types/Client.ts index 6126b3e8a9..217f9159ac 100644 --- a/packages/js/core/src/types/Client.ts +++ b/packages/js/core/src/types/Client.ts @@ -4,7 +4,6 @@ import { SubscriptionHandler, UriRedirect, Uri, - PluginRegistration, InterfaceImplementations, Env, } from "./"; @@ -15,7 +14,6 @@ import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; export interface ClientConfig { redirects: UriRedirect[]; - plugins: PluginRegistration[]; interfaces: InterfaceImplementations[]; envs: Env[]; resolver: IUriResolver; @@ -55,8 +53,6 @@ export interface Client UriResolverHandler { getRedirects(options?: GetRedirectsOptions): readonly UriRedirect[]; - getPlugins(options?: GetPluginsOptions): readonly PluginRegistration[]; - getInterfaces( options?: GetInterfacesOptions ): readonly InterfaceImplementations[]; diff --git a/packages/js/core/src/types/Plugin.ts b/packages/js/core/src/types/Plugin.ts deleted file mode 100644 index 1251ffcd1d..0000000000 --- a/packages/js/core/src/types/Plugin.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -import { Client, MaybeAsync, executeMaybeAsyncFunction } from "."; - -import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; - -/** - * Invocable plugin method. - * - * @param args Arguments for the method, structured as - * a map, removing the chance of incorrectly ordering arguments. - * @param client The client instance requesting this invocation. - * This client will be used for any sub-invokes that occur. - */ -export type PluginMethod< - TArgs extends Record = Record, - TResult = unknown -> = (args: TArgs, client: Client) => MaybeAsync; - -export abstract class PluginModule< - TConfig, - TEnv extends Record = Record -> { - private _env: TEnv; - private _config: TConfig; - - constructor(config: TConfig) { - this._config = config; - } - - public get env(): TEnv { - return this._env; - } - - public get config(): TConfig { - return this._config; - } - - public setEnv(env: TEnv): void { - this._env = env; - } - - public async _wrap_invoke< - TArgs extends Record = Record, - TResult = unknown - >(method: string, args: TArgs, client: Client): Promise { - const fn = this.getMethod(method); - - if (!fn) { - throw Error(`Plugin missing method "${method}"`); - } - - if (typeof fn !== "function") { - throw Error(`Plugin method "${method}" must be of type 'function'`); - } - - return await executeMaybeAsyncFunction( - fn.bind(this, args, client) - ); - } - - public getMethod< - TArgs extends Record = Record, - TResult = unknown - >(method: string): PluginMethod | undefined { - const fn: - | PluginMethod - | undefined = ((this as unknown) as Record< - string, - PluginMethod - >)[method]; - - return fn; - } -} - -export type PluginPackage = { - factory: () => PluginModule; - manifest: WrapManifest; -}; - -export type PluginFactory = ( - config: TConfig -) => PluginPackage; diff --git a/packages/js/core/src/types/PluginRegistration.ts b/packages/js/core/src/types/PluginRegistration.ts deleted file mode 100644 index 130206aba4..0000000000 --- a/packages/js/core/src/types/PluginRegistration.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { PluginPackage, Uri } from "."; -import { toUri } from "../utils"; - -import { Tracer } from "@polywrap/tracing-js"; - -export interface PluginRegistration { - uri: TUri; - plugin: PluginPackage; -} - -export const sanitizePluginRegistrations = Tracer.traceFunc( - "core: sanitizePluginRegistrations", - (input: PluginRegistration[]): PluginRegistration[] => { - const output: PluginRegistration[] = []; - for (const definition of input) { - const uri = toUri(definition.uri); - - output.push({ - uri, - plugin: definition.plugin, - }); - } - - return output; - } -); diff --git a/packages/js/core/src/types/index.ts b/packages/js/core/src/types/index.ts index 07ab7bdb9f..5543c61e5c 100644 --- a/packages/js/core/src/types/index.ts +++ b/packages/js/core/src/types/index.ts @@ -2,14 +2,12 @@ export * from "./Wrapper"; export * from "./Client"; export * from "./Invoke"; export * from "./MaybeAsync"; -export * from "./Plugin"; export * from "./Query"; export * from "./Subscription"; export * from "./Uri"; export * from "./UriRedirect"; export * from "./Env"; export * from "./InterfaceImplementations"; -export * from "./PluginRegistration"; export * from "./UriResolver"; export * from "./IWrapPackage"; export * from "./IUriWrapper"; From 030f532e7f134a73912aec3405ae91872690a257 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 13:12:03 +0200 Subject: [PATCH 002/126] created plugin-js package --- packages/js/plugin-js/README.md | 5 +++ packages/js/plugin-js/jest.config.js | 12 +++++++ packages/js/plugin-js/package.json | 40 +++++++++++++++++++++++ packages/js/plugin-js/tsconfig.build.json | 9 +++++ packages/js/plugin-js/tsconfig.json | 10 ++++++ 5 files changed, 76 insertions(+) create mode 100644 packages/js/plugin-js/README.md create mode 100644 packages/js/plugin-js/jest.config.js create mode 100644 packages/js/plugin-js/package.json create mode 100644 packages/js/plugin-js/tsconfig.build.json create mode 100644 packages/js/plugin-js/tsconfig.json diff --git a/packages/js/plugin-js/README.md b/packages/js/plugin-js/README.md new file mode 100644 index 0000000000..238e9df99b --- /dev/null +++ b/packages/js/plugin-js/README.md @@ -0,0 +1,5 @@ +# @polywrap/plugin-js + +## Description + +Helpers to improve plugin wrapper development experience. diff --git a/packages/js/plugin-js/jest.config.js b/packages/js/plugin-js/jest.config.js new file mode 100644 index 0000000000..b156259895 --- /dev/null +++ b/packages/js/plugin-js/jest.config.js @@ -0,0 +1,12 @@ +module.exports = { + collectCoverage: true, + preset: 'ts-jest', + testEnvironment: 'node', + testMatch: ["**/?(*.)+(spec|test).[jt]s?(x)"], + modulePathIgnorePatterns: ['./src/__tests__/apis'], + globals: { + 'ts-jest': { + diagnostics: false + } + } +}; diff --git a/packages/js/plugin-js/package.json b/packages/js/plugin-js/package.json new file mode 100644 index 0000000000..5d3ea65068 --- /dev/null +++ b/packages/js/plugin-js/package.json @@ -0,0 +1,40 @@ +{ + "name": "@polywrap/plugin-js", + "description": "Polywrap plugin core package for plugin wrappers", + "version": "0.7.0", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/polywrap/monorepo.git" + }, + "main": "build/index.js", + "files": [ + "build" + ], + "scripts": { + "build": "rimraf ./build && tsc --project tsconfig.build.json", + "lint": "eslint --color -c ../../../.eslintrc.js src/", + "test": "jest --passWithNoTests --runInBand --verbose", + "test:ci": "jest --passWithNoTests --runInBand --verbose", + "test:watch": "jest --watch --passWithNoTests --verbose" + }, + "dependencies": { + "@polywrap/result": "0.7.0", + "@polywrap/core-js": "0.7.0", + "@polywrap/msgpack-js": "0.7.0", + "@polywrap/tracing-js": "0.7.0", + "@polywrap/wrap-manifest-types-js": "0.7.0" + }, + "devDependencies": { + "@polywrap/os-js": "0.7.0", + "@types/jest": "26.0.8", + "jest": "26.6.3", + "rimraf": "3.0.2", + "ts-jest": "26.5.4", + "ts-node": "8.10.2", + "typescript": "4.0.7" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/js/plugin-js/tsconfig.build.json b/packages/js/plugin-js/tsconfig.build.json new file mode 100644 index 0000000000..77aadfdd2f --- /dev/null +++ b/packages/js/plugin-js/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "include": [ + "./src/**/*.ts" + ], + "exclude": [ + "./src/**/__tests__" + ] +} diff --git a/packages/js/plugin-js/tsconfig.json b/packages/js/plugin-js/tsconfig.json new file mode 100644 index 0000000000..5d37204c00 --- /dev/null +++ b/packages/js/plugin-js/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../../tsconfig", + "compilerOptions": { + "outDir": "build" + }, + "include": [ + "./src/**/*.ts" + ], + "exclude": [] +} From e59f97421c77859dcbc31d97fb571ebe683d885b Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 13:12:36 +0200 Subject: [PATCH 003/126] implemented plugin helper types in plugin-js package --- packages/js/plugin-js/src/PluginFactory.ts | 5 + packages/js/plugin-js/src/PluginMethod.ts | 15 +++ packages/js/plugin-js/src/PluginModule.ts | 61 +++++++++++ packages/js/plugin-js/src/PluginPackage.ts | 19 ++++ packages/js/plugin-js/src/PluginWrapper.ts | 115 +++++++++++++++++++++ 5 files changed, 215 insertions(+) create mode 100644 packages/js/plugin-js/src/PluginFactory.ts create mode 100644 packages/js/plugin-js/src/PluginMethod.ts create mode 100644 packages/js/plugin-js/src/PluginModule.ts create mode 100644 packages/js/plugin-js/src/PluginPackage.ts create mode 100644 packages/js/plugin-js/src/PluginWrapper.ts diff --git a/packages/js/plugin-js/src/PluginFactory.ts b/packages/js/plugin-js/src/PluginFactory.ts new file mode 100644 index 0000000000..0dbc5d0f07 --- /dev/null +++ b/packages/js/plugin-js/src/PluginFactory.ts @@ -0,0 +1,5 @@ +import { PluginPackage } from "./PluginPackage"; + +export type PluginFactory = ( + config: TConfig +) => PluginPackage; diff --git a/packages/js/plugin-js/src/PluginMethod.ts b/packages/js/plugin-js/src/PluginMethod.ts new file mode 100644 index 0000000000..8138d06599 --- /dev/null +++ b/packages/js/plugin-js/src/PluginMethod.ts @@ -0,0 +1,15 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import { Client, MaybeAsync } from "@polywrap/core-js"; + +/** + * Invocable plugin method. + * + * @param args Arguments for the method, structured as + * a map, removing the chance of incorrectly ordering arguments. + * @param client The client instance requesting this invocation. + * This client will be used for any sub-invokes that occur. + */ +export type PluginMethod< + TArgs extends Record = Record, + TResult = unknown +> = (args: TArgs, client: Client) => MaybeAsync; diff --git a/packages/js/plugin-js/src/PluginModule.ts b/packages/js/plugin-js/src/PluginModule.ts new file mode 100644 index 0000000000..13e44337ff --- /dev/null +++ b/packages/js/plugin-js/src/PluginModule.ts @@ -0,0 +1,61 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import { Client, executeMaybeAsyncFunction } from "@polywrap/core-js"; + +import { PluginMethod } from "./PluginMethod"; + +export abstract class PluginModule< + TConfig, + TEnv extends Record = Record +> { + private _env: TEnv; + private _config: TConfig; + + constructor(config: TConfig) { + this._config = config; + } + + public get env(): TEnv { + return this._env; + } + + public get config(): TConfig { + return this._config; + } + + public setEnv(env: TEnv): void { + this._env = env; + } + + public async _wrap_invoke< + TArgs extends Record = Record, + TResult = unknown + >(method: string, args: TArgs, client: Client): Promise { + const fn = this.getMethod(method); + + if (!fn) { + throw Error(`Plugin missing method "${method}"`); + } + + if (typeof fn !== "function") { + throw Error(`Plugin method "${method}" must be of type 'function'`); + } + + return await executeMaybeAsyncFunction( + fn.bind(this, args, client) + ); + } + + public getMethod< + TArgs extends Record = Record, + TResult = unknown + >(method: string): PluginMethod | undefined { + const fn: + | PluginMethod + | undefined = ((this as unknown) as Record< + string, + PluginMethod + >)[method]; + + return fn; + } +} diff --git a/packages/js/plugin-js/src/PluginPackage.ts b/packages/js/plugin-js/src/PluginPackage.ts new file mode 100644 index 0000000000..54be3864da --- /dev/null +++ b/packages/js/plugin-js/src/PluginPackage.ts @@ -0,0 +1,19 @@ +import { IWrapPackage, Wrapper } from "@polywrap/core-js"; +import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; +import { PluginModule } from "./PluginModule"; +import { PluginWrapper } from "./PluginWrapper"; + +export class PluginPackage implements IWrapPackage { + constructor( + private manifest: WrapManifest, + private pluginModule: PluginModule + ) {} + + async getManifest(): Promise { + return this.manifest; + } + + async createWrapper(): Promise { + return new PluginWrapper(this.manifest, this.pluginModule); + } +} diff --git a/packages/js/plugin-js/src/PluginWrapper.ts b/packages/js/plugin-js/src/PluginWrapper.ts new file mode 100644 index 0000000000..f55294d1cf --- /dev/null +++ b/packages/js/plugin-js/src/PluginWrapper.ts @@ -0,0 +1,115 @@ +import { + Wrapper, + Client, + InvokeOptions, + InvocableResult, + Uri, + GetFileOptions, + GetManifestOptions, + isBuffer, +} from "@polywrap/core-js"; + +import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; +import { msgpackDecode } from "@polywrap/msgpack-js"; +import { Tracer, TracingLevel } from "@polywrap/tracing-js"; +import { PluginModule } from "./PluginModule"; + +export class PluginWrapper implements Wrapper { + constructor( + private manifest: WrapManifest, + private module: PluginModule + ) { + Tracer.startSpan("PluginWrapper: constructor"); + Tracer.setAttribute("args", { + plugin: this.module, + }); + Tracer.endSpan(); + } + + public async getFile( + _: GetFileOptions, + _client: Client + ): Promise { + throw Error("client.getFile(...) is not implemented for Plugins."); + } + + @Tracer.traceMethod("PluginWrapper: getManifest") + public async getManifest( + _: GetManifestOptions, + _client: Client + ): Promise { + return this.manifest; + } + + @Tracer.traceMethod("PluginWrapper: invoke", TracingLevel.High) + public async invoke( + options: InvokeOptions, + client: Client + ): Promise> { + Tracer.setAttribute( + "label", + `Plugin Wrapper invoked: ${options.uri.uri}, with method ${options.method}`, + TracingLevel.High + ); + try { + const { method } = options; + const args = options.args || {}; + + if (!this.module.getMethod(method)) { + throw new Error(`PluginWrapper: method "${method}" not found.`); + } + + // Set the module's environment + await this.module.setEnv(options.env || {}); + + let jsArgs: Record; + + // If the args are a msgpack buffer, deserialize it + if (isBuffer(args)) { + const result = msgpackDecode(args); + + Tracer.addEvent("msgpack-decoded", result); + + if (typeof result !== "object") { + throw new Error( + `PluginWrapper: decoded MsgPack args did not result in an object.\nResult: ${result}` + ); + } + + jsArgs = result as Record; + } else { + jsArgs = args as Record; + } + + // Invoke the function + try { + const result = await this.module._wrap_invoke(method, jsArgs, client); + + if (result !== undefined) { + const data = result as unknown; + + Tracer.addEvent("Result", data); + + return { + data: data, + encoded: false, + }; + } else { + return {}; + } + } catch (e) { + throw Error( + `PluginWrapper: invocation exception encountered.\n` + + `uri: ${options.uri}\nmodule: ${module}\n` + + `method: ${method}\n` + + `args: ${JSON.stringify(jsArgs, null, 2)}\n` + + `exception: ${e.message}` + ); + } + } catch (error) { + return { + error, + }; + } + } +} From 98cbaa1ab3274a3883fda7116129845b18b01713 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 13:13:30 +0200 Subject: [PATCH 004/126] removed plugins from uri-resolvers-js --- packages/js/uri-resolvers/src/index.ts | 1 - .../src/legacy/LegacyPluginsResolver.ts | 13 ------- .../src/plugins/PluginResolver.ts | 39 ------------------- .../src/plugins/PluginsResolver.ts | 13 ------- .../js/uri-resolvers/src/plugins/index.ts | 2 - 5 files changed, 68 deletions(-) delete mode 100644 packages/js/uri-resolvers/src/legacy/LegacyPluginsResolver.ts delete mode 100644 packages/js/uri-resolvers/src/plugins/PluginResolver.ts delete mode 100644 packages/js/uri-resolvers/src/plugins/PluginsResolver.ts delete mode 100644 packages/js/uri-resolvers/src/plugins/index.ts diff --git a/packages/js/uri-resolvers/src/index.ts b/packages/js/uri-resolvers/src/index.ts index 1fe5c9fe93..78580ffe1c 100644 --- a/packages/js/uri-resolvers/src/index.ts +++ b/packages/js/uri-resolvers/src/index.ts @@ -1,7 +1,6 @@ export * from "./aggregator"; export * from "./cache"; export * from "./legacy"; -export * from "./plugins"; export * from "./redirects"; export * from "./packages"; export * from "./helpers"; diff --git a/packages/js/uri-resolvers/src/legacy/LegacyPluginsResolver.ts b/packages/js/uri-resolvers/src/legacy/LegacyPluginsResolver.ts deleted file mode 100644 index 9a5c52affb..0000000000 --- a/packages/js/uri-resolvers/src/legacy/LegacyPluginsResolver.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { UriResolverAggregator, PluginResolver } from ".."; - -import { Uri, Client } from "@polywrap/core-js"; - -export class LegacyPluginsResolver extends UriResolverAggregator { - constructor() { - super( - async (_: Uri, client: Client) => - client.getPlugins({}).map((x) => new PluginResolver(x)), - "LegacyPluginsResolver" - ); - } -} diff --git a/packages/js/uri-resolvers/src/plugins/PluginResolver.ts b/packages/js/uri-resolvers/src/plugins/PluginResolver.ts deleted file mode 100644 index 0cadbd3357..0000000000 --- a/packages/js/uri-resolvers/src/plugins/PluginResolver.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { ResolverWithHistory } from "../helpers"; - -import { - Uri, - PluginRegistration, - toUri, - PluginWrapPackage, - UriResolutionResult, - UriPackageOrWrapper, -} from "@polywrap/core-js"; -import { Result } from "@polywrap/result"; - -export class PluginResolver extends ResolverWithHistory { - pluginUri: Uri; - - constructor( - private readonly pluginRegistration: PluginRegistration - ) { - super(); - this.pluginUri = toUri(pluginRegistration.uri); - } - - protected getStepDescription = (): string => `Plugin (${this.pluginUri.uri})`; - - protected async _tryResolveUri( - uri: Uri - ): Promise> { - if (uri.uri !== this.pluginUri.uri) { - return UriResolutionResult.ok(uri); - } - - const wrapPackage = new PluginWrapPackage( - uri, - this.pluginRegistration.plugin - ); - - return UriResolutionResult.ok(uri, wrapPackage); - } -} diff --git a/packages/js/uri-resolvers/src/plugins/PluginsResolver.ts b/packages/js/uri-resolvers/src/plugins/PluginsResolver.ts deleted file mode 100644 index c06d378a09..0000000000 --- a/packages/js/uri-resolvers/src/plugins/PluginsResolver.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { PluginResolver } from "./PluginResolver"; -import { UriResolverAggregator } from "../aggregator"; - -import { PluginRegistration, Uri } from "@polywrap/core-js"; - -export class PluginsResolver extends UriResolverAggregator { - constructor(pluginRegistrations: PluginRegistration[]) { - super( - pluginRegistrations.map((x) => new PluginResolver(x)), - "PluginsResolver" - ); - } -} diff --git a/packages/js/uri-resolvers/src/plugins/index.ts b/packages/js/uri-resolvers/src/plugins/index.ts deleted file mode 100644 index 728744cc30..0000000000 --- a/packages/js/uri-resolvers/src/plugins/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./PluginResolver"; -export * from "./PluginsResolver"; From c388ebd5490f1537c4fc760887438cac2c3cf28b Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 13:14:11 +0200 Subject: [PATCH 005/126] implemented wrapper and package resolvers --- .../src/helpers/PackageRegistration.ts | 6 +++++ .../src/helpers/UriResolverLike.ts | 8 +++++-- .../src/helpers/WrapperRegistration.ts | 6 +++++ packages/js/uri-resolvers/src/legacy/index.ts | 2 -- .../src/packages/PackageResolver.ts | 2 +- .../src/utils/buildUriResolver.ts | 22 +++++++++++++++++ .../src/wrappers/WrapperResolver.ts | 24 +++++++++++++++++++ .../js/uri-resolvers/src/wrappers/index.ts | 1 + 8 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 packages/js/uri-resolvers/src/helpers/PackageRegistration.ts create mode 100644 packages/js/uri-resolvers/src/helpers/WrapperRegistration.ts create mode 100644 packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts create mode 100644 packages/js/uri-resolvers/src/wrappers/index.ts diff --git a/packages/js/uri-resolvers/src/helpers/PackageRegistration.ts b/packages/js/uri-resolvers/src/helpers/PackageRegistration.ts new file mode 100644 index 0000000000..ddcdd742d4 --- /dev/null +++ b/packages/js/uri-resolvers/src/helpers/PackageRegistration.ts @@ -0,0 +1,6 @@ +import { IWrapPackage, Uri } from "@polywrap/core-js"; + +export type PackageRegistration = { + uri: string | Uri; + package: IWrapPackage; +}; diff --git a/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts b/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts index 4009a14991..fd150b1507 100644 --- a/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts +++ b/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts @@ -2,13 +2,17 @@ import { IUriResolver, UriRedirect, Uri, - PluginRegistration, IUriPackage, + IUriWrapper, } from "@polywrap/core-js"; +import { PackageRegistration } from "./PackageRegistration"; +import { WrapperRegistration } from "./WrapperRegistration"; export type UriResolverLike = | IUriResolver | UriRedirect | UriResolverLike[] | IUriPackage - | PluginRegistration; + | IUriWrapper + | PackageRegistration + | WrapperRegistration; diff --git a/packages/js/uri-resolvers/src/helpers/WrapperRegistration.ts b/packages/js/uri-resolvers/src/helpers/WrapperRegistration.ts new file mode 100644 index 0000000000..bb42c5b563 --- /dev/null +++ b/packages/js/uri-resolvers/src/helpers/WrapperRegistration.ts @@ -0,0 +1,6 @@ +import { Uri, Wrapper } from "@polywrap/core-js"; + +export type WrapperRegistration = { + uri: string | Uri; + wrapper: Wrapper; +}; diff --git a/packages/js/uri-resolvers/src/legacy/index.ts b/packages/js/uri-resolvers/src/legacy/index.ts index 671bc6f94a..c2822150ff 100644 --- a/packages/js/uri-resolvers/src/legacy/index.ts +++ b/packages/js/uri-resolvers/src/legacy/index.ts @@ -1,3 +1 @@ -export * from "./LegacyPluginsResolver"; export * from "./LegacyRedirectsResolver"; -export * from "../cache/PackageToWrapperCacheResolver"; diff --git a/packages/js/uri-resolvers/src/packages/PackageResolver.ts b/packages/js/uri-resolvers/src/packages/PackageResolver.ts index cb76741255..fc0bd24aea 100644 --- a/packages/js/uri-resolvers/src/packages/PackageResolver.ts +++ b/packages/js/uri-resolvers/src/packages/PackageResolver.ts @@ -11,7 +11,7 @@ export class PackageResolver implements IUriResolver { constructor(private uri: Uri, private wrapPackage: IWrapPackage) {} public get name(): string { - return `PackageResolver (${this.uri.uri})`; + return `Package (${this.uri.uri})`; } async tryResolveUri(uri: Uri): Promise> { diff --git a/packages/js/uri-resolvers/src/utils/buildUriResolver.ts b/packages/js/uri-resolvers/src/utils/buildUriResolver.ts index c5d41ca3cb..7cc5ce047a 100644 --- a/packages/js/uri-resolvers/src/utils/buildUriResolver.ts +++ b/packages/js/uri-resolvers/src/utils/buildUriResolver.ts @@ -1,6 +1,7 @@ import { UriResolverAggregator } from "../aggregator"; import { UriResolverLike } from "../helpers"; import { PackageResolver } from "../packages"; +import { WrapperResolver } from "../wrappers"; import { Result } from "@polywrap/result"; import { @@ -9,7 +10,10 @@ import { Client, IWrapPackage, IUriPackage, + toUri, } from "@polywrap/core-js"; +import { PackageRegistration } from "../helpers/PackageRegistration"; +import { WrapperRegistration } from "../helpers/WrapperRegistration"; export const buildUriResolver = ( resolvable: UriResolverLike, @@ -38,6 +42,24 @@ export const buildUriResolver = ( ) as unknown) as IUriResolver; } else if ((resolvable as IUriResolver).tryResolveUri !== undefined) { return resolvable as IUriResolver; + } else if ( + (resolvable as PackageRegistration).uri !== undefined && + (resolvable as PackageRegistration).package !== undefined + ) { + const uriPackage = resolvable as PackageRegistration; + return (new PackageResolver( + toUri(uriPackage.uri), + uriPackage.package + ) as unknown) as IUriResolver; + } else if ( + (resolvable as WrapperRegistration).uri !== undefined && + (resolvable as WrapperRegistration).wrapper !== undefined + ) { + const uriWrapper = resolvable as WrapperRegistration; + return (new WrapperResolver( + toUri(uriWrapper.uri), + uriWrapper.wrapper + ) as unknown) as IUriResolver; } else { throw new Error("Unknown resolvable type"); } diff --git a/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts b/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts new file mode 100644 index 0000000000..624c15f342 --- /dev/null +++ b/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts @@ -0,0 +1,24 @@ +import { + Uri, + IUriResolver, + UriPackageOrWrapper, + UriResolutionResult, + Wrapper, +} from "@polywrap/core-js"; +import { Result } from "@polywrap/result"; + +export class WrapperResolver implements IUriResolver { + constructor(private uri: Uri, private wrapper: Wrapper) {} + + public get name(): string { + return `Wrapper (${this.uri.uri})`; + } + + async tryResolveUri(uri: Uri): Promise> { + if (uri.uri !== this.uri.uri) { + return UriResolutionResult.ok(uri); + } + + return UriResolutionResult.ok(uri, this.wrapper); + } +} diff --git a/packages/js/uri-resolvers/src/wrappers/index.ts b/packages/js/uri-resolvers/src/wrappers/index.ts new file mode 100644 index 0000000000..e2b4876d3b --- /dev/null +++ b/packages/js/uri-resolvers/src/wrappers/index.ts @@ -0,0 +1 @@ +export * from "./WrapperResolver"; From 0c3d0b52dfe1a4fe31b33c9f40bc127ce8c4e682 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 13:18:10 +0200 Subject: [PATCH 006/126] exported package and wrapper registrations --- packages/js/uri-resolvers/src/helpers/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/js/uri-resolvers/src/helpers/index.ts b/packages/js/uri-resolvers/src/helpers/index.ts index c27983d614..89500646b8 100644 --- a/packages/js/uri-resolvers/src/helpers/index.ts +++ b/packages/js/uri-resolvers/src/helpers/index.ts @@ -1,5 +1,7 @@ export * from "./InfiniteLoopError"; +export * from "./PackageRegistration"; export * from "./RecursiveResolver"; export * from "./ResolverWithHistory"; export * from "./ResolverWithLoopGuard"; export * from "./UriResolverLike"; +export * from "./WrapperRegistration"; From ff90a6b1742dfeb4f9ee467b810cf4f5783190df Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 13:18:24 +0200 Subject: [PATCH 007/126] exported all plugin helpers --- packages/js/plugin-js/src/index.ts | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/js/plugin-js/src/index.ts diff --git a/packages/js/plugin-js/src/index.ts b/packages/js/plugin-js/src/index.ts new file mode 100644 index 0000000000..efa3750dd0 --- /dev/null +++ b/packages/js/plugin-js/src/index.ts @@ -0,0 +1,5 @@ +export * from "./PluginFactory"; +export * from "./PluginMethod"; +export * from "./PluginModule"; +export * from "./PluginPackage"; +export * from "./PluginWrapper"; From fb3aa35821fbc01147858b1f1e2136f69e1cd52f Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 13:29:37 +0200 Subject: [PATCH 008/126] removed plugins from config builder --- package.json | 4 +- packages/js/client-config-builder/README.md | 5 - .../src/ClientConfigBuilder.ts | 46 ------ .../__tests__/client-config-builder.spec.ts | 131 +----------------- .../src/bundles/default-client-config.ts | 106 +++++++------- yarn.lock | 18 +-- 6 files changed, 68 insertions(+), 242 deletions(-) diff --git a/package.json b/package.json index 735b03424e..595ca8a98d 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,9 @@ "dependencies:install": "cd dependencies && yarn", "preinstall": "yarn dependencies:install", "build": "yarn build:core && yarn build:interfaces && yarn build:plugins && yarn build:resolver:plugins && yarn build:config && yarn build:client && yarn build:test-env && yarn build:cli", - "build:core": "lerna run build --no-private --ignore @polywrap/*-plugin-js --ignore @polywrap/client-config-builder-js --ignore polywrap --ignore @polywrap/client-js --ignore @polywrap/react --ignore @polywrap/test-env-js --ignore @polywrap/*-interface", + "build:core": "lerna run build --no-private --ignore @polywrap/*plugin-js --ignore @polywrap/client-config-builder-js --ignore polywrap --ignore @polywrap/client-js --ignore @polywrap/react --ignore @polywrap/test-env-js --ignore @polywrap/*-interface", "build:interfaces": "lerna run build --scope @polywrap/*-interface", - "build:plugins": "lerna run build --scope @polywrap/*-plugin-js --ignore @polywrap/*-resolver-plugin-js", + "build:plugins": "lerna run build --scope @polywrap/*plugin-js --ignore @polywrap/*-resolver-plugin-js", "build:resolver:plugins": "lerna run build --scope @polywrap/*-resolver-plugin-js", "build:config": "lerna run build --scope @polywrap/client-config-builder-js", "build:client": "lerna run build --scope @polywrap/client-js --scope @polywrap/react", diff --git a/packages/js/client-config-builder/README.md b/packages/js/client-config-builder/README.md index d00feaa3cd..fd90b620e0 100644 --- a/packages/js/client-config-builder/README.md +++ b/packages/js/client-config-builder/README.md @@ -12,7 +12,6 @@ const config = new ClientConfigBuilder() .add({ envs: [/*...*/], interfaces: [/*...*/], - plugins: [/*...*/], redirects: [/*...*/], uriResolvers: [/*...*/], }) @@ -25,10 +24,6 @@ const builder = new ClientConfigBuilder(); builder.addDefaults(); -builder.add({ - plugins: [/*...*/] -}); - builder.add({ envs: [/*...*/] }); diff --git a/packages/js/client-config-builder/src/ClientConfigBuilder.ts b/packages/js/client-config-builder/src/ClientConfigBuilder.ts index 207c10cc6f..416487860e 100644 --- a/packages/js/client-config-builder/src/ClientConfigBuilder.ts +++ b/packages/js/client-config-builder/src/ClientConfigBuilder.ts @@ -4,11 +4,9 @@ import { toUri } from "./utils/toUri"; import { ClientConfig, Uri, - PluginPackage, IUriResolver, Env, InterfaceImplementations, - PluginRegistration, UriRedirect, } from "@polywrap/core-js"; import { IWrapperCache } from "@polywrap/uri-resolvers-js"; @@ -16,13 +14,11 @@ import { IWrapperCache } from "@polywrap/uri-resolvers-js"; export class ClientConfigBuilder { private _config: { redirects: UriRedirect[]; - plugins: PluginRegistration[]; interfaces: InterfaceImplementations[]; envs: Env[]; resolver?: IUriResolver; } = { redirects: [], - plugins: [], interfaces: [], envs: [], }; @@ -43,12 +39,6 @@ export class ClientConfigBuilder { } } - if (config.plugins) { - for (const plugin of config.plugins) { - this.addPlugin(plugin.uri, plugin.plugin); - } - } - if (config.redirects) { for (const redirect of config.redirects) { this.addUriRedirect(redirect.from, redirect.to); @@ -66,42 +56,6 @@ export class ClientConfigBuilder { return this.add(getDefaultClientConfig(wrapperCache)); } - addPlugin( - uri: Uri | string, - plugin: PluginPackage - ): ClientConfigBuilder { - const pluginUri = toUri(uri); - - const existingRegistration = this._config.plugins.find((x) => - Uri.equals(x.uri, pluginUri) - ); - - if (existingRegistration) { - existingRegistration.plugin = plugin; - } else { - this._config.plugins.push({ - uri: pluginUri, - plugin: plugin, - }); - } - - return this; - } - - removePlugin(uri: Uri | string): ClientConfigBuilder { - const pluginUri = toUri(uri); - - const idx = this._config.plugins.findIndex((x) => - Uri.equals(x.uri, pluginUri) - ); - - if (idx > -1) { - this._config.plugins.splice(idx, 1); - } - - return this; - } - addEnv(uri: Uri | string, env: Record): ClientConfigBuilder { const envUri = toUri(uri); diff --git a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts index d181a3347e..e002f5a83a 100644 --- a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts +++ b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts @@ -3,8 +3,6 @@ import { Client, Env, InterfaceImplementations, - PluginModule, - PluginRegistration, Uri, UriRedirect, IUriResolver, @@ -13,7 +11,11 @@ import { import { Result } from "@polywrap/result"; import { toUri } from "../utils/toUri"; import { getDefaultClientConfig } from "../bundles"; -import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; +import { + RecursiveResolver, + PackageRegistration, +} from "@polywrap/uri-resolvers-js"; +import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; class NamedUriResolver implements IUriResolver { private _name: string; @@ -49,33 +51,6 @@ describe("Client config builder", () => { }, ]; - const testPlugins: PluginRegistration[] = [ - { - uri: "wrap://ens/test1.polywrap.eth", - plugin: { - factory: () => ({} as PluginModule<{}>), - manifest: { - name: "test", - abi: {}, - type: "plugin", - version: "0.1", - }, - }, - }, - { - uri: "wrap://ens/test2.polywrap.eth", - plugin: { - factory: () => ({} as PluginModule<{}>), - manifest: { - name: "test", - abi: {}, - type: "plugin", - version: "0.1", - }, - }, - }, - ]; - const testUriRedirects: UriRedirect[] = [ { from: "wrap://ens/test-one.polywrap.eth", @@ -105,7 +80,6 @@ describe("Client config builder", () => { .add({ envs: testEnvs, interfaces: testInterfaces, - plugins: testPlugins, redirects: testUriRedirects, resolver: testUriResolver, }) @@ -124,12 +98,6 @@ describe("Client config builder", () => { implementations: x.implementations.map(toUri), })) ); - expect(clientConfig.plugins).toStrictEqual( - testPlugins.map((x) => ({ - uri: toUri(x.uri), - plugin: x.plugin, - })) - ); expect(clientConfig.redirects).toStrictEqual( testUriRedirects.map((x) => ({ from: toUri(x.from), @@ -144,14 +112,12 @@ describe("Client config builder", () => { .add({ envs: [testEnvs[0]], interfaces: [testInterfaces[0]], - plugins: [testPlugins[0]], redirects: [testUriRedirects[0]], resolver: testUriResolver, }) .add({ envs: [testEnvs[1]], interfaces: [testInterfaces[1]], - plugins: [testPlugins[1]], redirects: [testUriRedirects[1]], }) .build(); @@ -169,12 +135,6 @@ describe("Client config builder", () => { implementations: x.implementations.map(toUri), })) ); - expect(clientConfig.plugins).toStrictEqual( - testPlugins.map((x) => ({ - uri: toUri(x.uri), - plugin: x.plugin, - })) - ); expect(clientConfig.redirects).toStrictEqual( testUriRedirects.map((x) => ({ from: toUri(x.from), @@ -192,91 +152,10 @@ describe("Client config builder", () => { expect(clientConfig).toBeTruthy(); expect(clientConfig.envs).toStrictEqual(expectedConfig.envs); expect(clientConfig.interfaces).toStrictEqual(expectedConfig.interfaces); - expect(clientConfig.plugins).toHaveLength(expectedConfig.plugins.length); - for (let i = 0; i < clientConfig.plugins.length; i++) { - expect(clientConfig.plugins[i].uri).toEqual( - expectedConfig.plugins[i].uri - ); - expect(clientConfig.plugins[i].plugin.manifest).toEqual( - expectedConfig.plugins[i].plugin.manifest - ); - } expect(clientConfig.redirects).toStrictEqual(expectedConfig.redirects); expect(clientConfig.resolver instanceof RecursiveResolver).toBe(true); }); - it("should successfully add a plugin", () => { - const pluginUri = "wrap://ens/some-plugin.polywrap.eth"; - const pluginPackage = testPlugins[0].plugin; - - const config = new ClientConfigBuilder() - .addPlugin(pluginUri, pluginPackage) - .buildPartial(); - - if (!config.plugins || config.plugins.length !== 1) { - fail("Expected 1 plugin"); - } - - expect(config.plugins[0].uri).toStrictEqual(toUri(pluginUri)); - expect(config.plugins[0].plugin).toStrictEqual(pluginPackage); - }); - - it("should successfully add multiple plugins", () => { - const config = new ClientConfigBuilder() - .addPlugin(testPlugins[0].uri, testPlugins[0].plugin) - .addPlugin(testPlugins[1].uri, testPlugins[1].plugin) - .buildPartial(); - - if (!config.plugins || config.plugins.length !== 2) { - fail("Expected 2 plugins"); - } - - expect(config.plugins).toContainEqual({ - uri: toUri(testPlugins[0].uri), - plugin: testPlugins[0].plugin, - }); - expect(config.plugins).toContainEqual({ - uri: toUri(testPlugins[1].uri), - plugin: testPlugins[1].plugin, - }); - }); - - it("should succesfully overwrite a plugin", () => { - const pluginUri = "wrap://ens/some-plugin.polywrap.eth"; - const pluginPackage1 = testPlugins[0].plugin; - const pluginPackage2 = testPlugins[1].plugin; - - const config = new ClientConfigBuilder() - .addPlugin(pluginUri, pluginPackage1) - .addPlugin(pluginUri, pluginPackage2) - .buildPartial(); - - if (!config.plugins || config.plugins.length !== 1) { - fail("Expected 1 plugin"); - } - - expect(config.plugins[0].uri).toStrictEqual(toUri(pluginUri)); - expect(config.plugins[0].plugin).not.toStrictEqual(pluginPackage1); - expect(config.plugins[0].plugin).toStrictEqual(pluginPackage2); - }); - - it("should remove a plugin", () => { - const config = new ClientConfigBuilder() - .addPlugin(testPlugins[0].uri, testPlugins[0].plugin) - .addPlugin(testPlugins[1].uri, testPlugins[1].plugin) - .removePlugin(testPlugins[0].uri) - .buildPartial(); - - if (!config.plugins || config.plugins.length !== 1) { - fail("Expected 1 plugin"); - } - - const remainingPlugin = config.plugins[0]; - - expect(remainingPlugin.uri).toStrictEqual(toUri(testPlugins[1].uri)); - expect(remainingPlugin.plugin).toStrictEqual(testPlugins[1].plugin); - }); - it("should successfully add an env", () => { const envUri = "wrap://ens/some-plugin.polywrap.eth"; const env = { diff --git a/packages/js/client-config-builder/src/bundles/default-client-config.ts b/packages/js/client-config-builder/src/bundles/default-client-config.ts index 76c9839ef3..86aa641ff8 100644 --- a/packages/js/client-config-builder/src/bundles/default-client-config.ts +++ b/packages/js/client-config-builder/src/bundles/default-client-config.ts @@ -7,7 +7,6 @@ import { Connections, } from "@polywrap/ethereum-plugin-js"; import { - LegacyPluginsResolver, LegacyRedirectsResolver, IWrapperCache, WrapperCache, @@ -47,58 +46,6 @@ export const getDefaultClientConfig = ( to: new Uri(defaultWrappers.graphNode), }, ], - plugins: [ - // IPFS is required for downloading Polywrap packages - { - uri: new Uri("wrap://ens/ipfs.polywrap.eth"), - plugin: ipfsPlugin({ - provider: defaultIpfsProviders[0], - fallbackProviders: defaultIpfsProviders.slice(1), - }), - }, - // ENS is required for resolving domain to IPFS hashes - { - uri: new Uri("wrap://ens/ens-resolver.polywrap.eth"), - plugin: ensResolverPlugin({}), - }, - { - uri: new Uri("wrap://ens/ethereum.polywrap.eth"), - plugin: ethereumPlugin({ - connections: new Connections({ - networks: { - mainnet: new Connection({ - provider: - "https://mainnet.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", - }), - goerli: new Connection({ - provider: - "https://goerli.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", - }), - }, - }), - }), - }, - { - uri: new Uri("wrap://ens/http.polywrap.eth"), - plugin: httpPlugin({}), - }, - { - uri: new Uri("wrap://ens/js-logger.polywrap.eth"), - plugin: loggerPlugin({}), - }, - { - uri: new Uri("wrap://ens/fs.polywrap.eth"), - plugin: fileSystemPlugin({}), - }, - { - uri: new Uri("wrap://ens/fs-resolver.polywrap.eth"), - plugin: fileSystemResolverPlugin({}), - }, - { - uri: new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), - plugin: ipfsResolverPlugin({}), - }, - ], interfaces: [ { interface: new Uri("wrap://ens/uri-resolver.core.polywrap.eth"), @@ -116,7 +63,58 @@ export const getDefaultClientConfig = ( resolver: new RecursiveResolver( new PackageToWrapperCacheResolver(wrapperCache ?? new WrapperCache(), [ new LegacyRedirectsResolver(), - new LegacyPluginsResolver(), + [ + // IPFS is required for downloading Polywrap packages + { + uri: new Uri("wrap://ens/ipfs.polywrap.eth"), + package: ipfsPlugin({ + provider: defaultIpfsProviders[0], + fallbackProviders: defaultIpfsProviders.slice(1), + }), + }, + // ENS is required for resolving domain to IPFS hashes + { + uri: new Uri("wrap://ens/ens-resolver.polywrap.eth"), + package: ensResolverPlugin({}), + }, + { + uri: new Uri("wrap://ens/ethereum.polywrap.eth"), + package: ethereumPlugin({ + connections: new Connections({ + networks: { + mainnet: new Connection({ + provider: + "https://mainnet.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", + }), + goerli: new Connection({ + provider: + "https://goerli.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", + }), + }, + }), + }), + }, + { + uri: new Uri("wrap://ens/http.polywrap.eth"), + package: httpPlugin({}), + }, + { + uri: new Uri("wrap://ens/js-logger.polywrap.eth"), + package: loggerPlugin({}), + }, + { + uri: new Uri("wrap://ens/fs.polywrap.eth"), + package: fileSystemPlugin({}), + }, + { + uri: new Uri("wrap://ens/fs-resolver.polywrap.eth"), + package: fileSystemResolverPlugin({}), + }, + { + uri: new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), + package: ipfsResolverPlugin({}), + }, + ], new ExtendableUriResolver(), ]) ), diff --git a/yarn.lock b/yarn.lock index 6f76f74409..3baf5bbac6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5380,14 +5380,14 @@ browserslist@4.10.0: pkg-up "^3.1.0" browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.3, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: - version "4.21.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" - integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: - caniuse-lite "^1.0.30001370" - electron-to-chromium "^1.4.202" + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" node-releases "^2.0.6" - update-browserslist-db "^1.0.5" + update-browserslist-db "^1.0.9" bs-logger@0.x: version "0.2.6" @@ -5646,7 +5646,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001370: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: version "1.0.30001400" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001400.tgz#3038bee70d8b875604cd8833cb0e5e254ee0281a" integrity sha512-Mv659Hn65Z4LgZdJ7ge5JTVbE3rqbJaaXgW5LEI9/tOaXclfIZ8DW7D7FCWWWmWiiPS7AC48S8kf3DApSxQdgA== @@ -7313,7 +7313,7 @@ electron-fetch@^1.7.2: dependencies: encoding "^0.1.13" -electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.202: +electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: version "1.4.251" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.251.tgz#8b62448f3c591f0d32488df09454dda72dec96d5" integrity sha512-k4o4cFrWPv4SoJGGAydd07GmlRVzmeDIJ6MaEChTUjk4Dmomn189tCicSzil2oyvbPoGgg2suwPDNWq4gWRhoQ== @@ -17552,7 +17552,7 @@ upath@^2.0.1: resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== -update-browserslist-db@^1.0.5: +update-browserslist-db@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== From a8ecae9105d8949de54185bb7aca0e90ba178f6e Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 14:30:23 +0200 Subject: [PATCH 009/126] remove plugins completely from core --- packages/js/core/src/__tests__/Plugin.spec.ts | 21 --------------- .../src/__tests__/PluginRegistrations.spec.ts | 26 ------------------- packages/js/core/src/types/Client.ts | 2 -- packages/js/core/src/types/Wrapper.ts | 2 -- 4 files changed, 51 deletions(-) delete mode 100644 packages/js/core/src/__tests__/Plugin.spec.ts delete mode 100644 packages/js/core/src/__tests__/PluginRegistrations.spec.ts diff --git a/packages/js/core/src/__tests__/Plugin.spec.ts b/packages/js/core/src/__tests__/Plugin.spec.ts deleted file mode 100644 index 119767b3f6..0000000000 --- a/packages/js/core/src/__tests__/Plugin.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { - Client, - PluginModule -} from ".."; - -class TestPluginModule extends PluginModule<{}> { - testMethod(args: { value: number }, _client: Client): number { - return 5 + args.value; - } -} - -describe("Plugin", () => { - const plugin = new TestPluginModule({}); - - it("sanity", async () => { - expect(plugin).toBeTruthy(); - expect ( - await plugin._wrap_invoke("testMethod", { value: 5 }, {} as Client) - ).toBe(10); - }); -}); diff --git a/packages/js/core/src/__tests__/PluginRegistrations.spec.ts b/packages/js/core/src/__tests__/PluginRegistrations.spec.ts deleted file mode 100644 index 18ee20c5eb..0000000000 --- a/packages/js/core/src/__tests__/PluginRegistrations.spec.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Uri } from "../"; -import { PluginPackage, sanitizePluginRegistrations } from "../types"; - -describe("sanitizePluginRegistrations", () => { - it("Returns empty array if empty array passed", () => { - const plugins = sanitizePluginRegistrations([]); - - expect(plugins).toEqual([]); - }); - - it("Returns plugins from plugins definitions", () => { - const plugins = sanitizePluginRegistrations([ - { - uri: "wrap://polywrap/wrapper", - plugin: {} as PluginPackage<{}>, - } - ]); - - expect(plugins).toEqual([ - { - uri: new Uri("wrap://polywrap/wrapper"), - plugin: {} as PluginPackage<{}> - } - ]); - }); -}); diff --git a/packages/js/core/src/types/Client.ts b/packages/js/core/src/types/Client.ts index 217f9159ac..4bf370c79d 100644 --- a/packages/js/core/src/types/Client.ts +++ b/packages/js/core/src/types/Client.ts @@ -25,8 +25,6 @@ export interface Contextualized { export type GetRedirectsOptions = Contextualized; -export type GetPluginsOptions = Contextualized; - export type GetInterfacesOptions = Contextualized; export type GetEnvsOptions = Contextualized; diff --git a/packages/js/core/src/types/Wrapper.ts b/packages/js/core/src/types/Wrapper.ts index e11bf2397c..56dc482afa 100644 --- a/packages/js/core/src/types/Wrapper.ts +++ b/packages/js/core/src/types/Wrapper.ts @@ -32,7 +32,6 @@ export interface Wrapper extends Invocable { /** * Get a file from the Wrapper package. - * Not implemented for plugin wrappers. * * @param options Configuration options for file retrieval * @param client The client instance requesting the file. @@ -44,7 +43,6 @@ export interface Wrapper extends Invocable { /** * Get a manifest from the Wrapper package. - * Not implemented for plugin wrappers. * * @param client The client instance requesting the manifest. */ From 65c5756dece33ef639be5f7fc888abf23a5f3a07 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 14:31:17 +0200 Subject: [PATCH 010/126] updated plugin bindings to include PluginModule from plugin-js --- .../typescript/plugin/templates/module-ts.mustache | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache b/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache index 2b5ca88c84..9c65a304bc 100644 --- a/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache +++ b/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache @@ -3,11 +3,8 @@ import * as Types from "./types"; -import { - Client, - PluginModule, - MaybeAsync -} from "@polywrap/core-js"; +import { Client, MaybeAsync } from "@polywrap/core-js"; +import { PluginModule } from "@polywrap/plugin-js"; {{#moduleType}} {{#methods}} From ee66381e3a213d71b71b72b90aa2bde542f02b97 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 14:37:23 +0200 Subject: [PATCH 011/126] updated plugins to work with plugin-js package --- packages/js/plugins/ethereum/package.json | 1 + packages/js/plugins/ethereum/src/index.ts | 9 ++------- packages/js/plugins/file-system/package.json | 3 ++- packages/js/plugins/file-system/src/index.ts | 10 +++------- packages/js/plugins/http/package.json | 1 + packages/js/plugins/http/src/index.ts | 10 +++------- packages/js/plugins/ipfs/package.json | 1 + packages/js/plugins/ipfs/src/index.ts | 10 +++------- packages/js/plugins/logger/package.json | 3 ++- packages/js/plugins/logger/src/index.ts | 9 ++------- .../js/plugins/uri-resolvers/ens-resolver/package.json | 1 + .../js/plugins/uri-resolvers/ens-resolver/src/index.ts | 9 ++------- .../uri-resolvers/file-system-resolver/package.json | 3 ++- .../uri-resolvers/file-system-resolver/src/index.ts | 10 +++------- .../plugins/uri-resolvers/ipfs-resolver/package.json | 1 + .../plugins/uri-resolvers/ipfs-resolver/src/index.ts | 10 +++------- packages/js/plugins/ws/package.json | 3 ++- packages/js/plugins/ws/src/index.ts | 10 +++------- 18 files changed, 37 insertions(+), 67 deletions(-) diff --git a/packages/js/plugins/ethereum/package.json b/packages/js/plugins/ethereum/package.json index 74996dd47c..8cd2781137 100644 --- a/packages/js/plugins/ethereum/package.json +++ b/packages/js/plugins/ethereum/package.json @@ -23,6 +23,7 @@ "@ethersproject/address": "5.0.7", "@ethersproject/providers": "5.0.7", "@polywrap/core-js": "0.7.0", + "@polywrap/plugin-js": "0.7.0", "ethers": "5.0.7" }, "devDependencies": { diff --git a/packages/js/plugins/ethereum/src/index.ts b/packages/js/plugins/ethereum/src/index.ts index 445cb64b75..d560906bac 100644 --- a/packages/js/plugins/ethereum/src/index.ts +++ b/packages/js/plugins/ethereum/src/index.ts @@ -45,7 +45,7 @@ import { Connections } from "./Connections"; import { ethers } from "ethers"; import { defaultAbiCoder } from "ethers/lib/utils"; -import { PluginFactory } from "@polywrap/core-js"; +import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; export * from "./Connection"; export * from "./Connections"; @@ -415,11 +415,6 @@ export class EthereumPlugin extends Module { export const ethereumPlugin: PluginFactory = ( config: EthereumPluginConfig -) => { - return { - factory: () => new EthereumPlugin(config), - manifest, - }; -}; +) => new PluginPackage(manifest, new EthereumPlugin(config)); export const plugin = ethereumPlugin; diff --git a/packages/js/plugins/file-system/package.json b/packages/js/plugins/file-system/package.json index bcf5c6ceec..f81d587b8e 100644 --- a/packages/js/plugins/file-system/package.json +++ b/packages/js/plugins/file-system/package.json @@ -20,7 +20,8 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/core-js": "0.7.0" + "@polywrap/core-js": "0.7.0", + "@polywrap/plugin-js": "0.7.0" }, "devDependencies": { "@polywrap/client-js": "0.7.0", diff --git a/packages/js/plugins/file-system/src/index.ts b/packages/js/plugins/file-system/src/index.ts index 5666f72fb9..8fa8afb5e2 100644 --- a/packages/js/plugins/file-system/src/index.ts +++ b/packages/js/plugins/file-system/src/index.ts @@ -13,7 +13,7 @@ import { import fileSystemEncodingToBufferEncoding from "./utils/fileSystemEncodingToBufferEncoding"; import fs from "fs"; -import { PluginFactory } from "@polywrap/core-js"; +import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; type NoConfig = Record; @@ -69,11 +69,7 @@ export class FileSystemPlugin extends Module { return true; } } -export const fileSystemPlugin: PluginFactory = () => { - return { - factory: () => new FileSystemPlugin({}), - manifest, - }; -}; +export const fileSystemPlugin: PluginFactory = () => + new PluginPackage(manifest, new FileSystemPlugin({})); export const plugin = fileSystemPlugin; diff --git a/packages/js/plugins/http/package.json b/packages/js/plugins/http/package.json index 0c51889674..cb82ccef00 100644 --- a/packages/js/plugins/http/package.json +++ b/packages/js/plugins/http/package.json @@ -21,6 +21,7 @@ }, "dependencies": { "@polywrap/core-js": "0.7.0", + "@polywrap/plugin-js": "0.7.0", "axios": "0.21.4" }, "devDependencies": { diff --git a/packages/js/plugins/http/src/index.ts b/packages/js/plugins/http/src/index.ts index ef692214fd..529844d69e 100644 --- a/packages/js/plugins/http/src/index.ts +++ b/packages/js/plugins/http/src/index.ts @@ -9,7 +9,7 @@ import { import { fromAxiosResponse, toAxiosRequestConfig } from "./util"; import axios from "axios"; -import { PluginFactory } from "@polywrap/core-js"; +import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; type NoConfig = Record; @@ -35,11 +35,7 @@ export class HttpPlugin extends Module { } } -export const httpPlugin: PluginFactory = () => { - return { - factory: () => new HttpPlugin({}), - manifest, - }; -}; +export const httpPlugin: PluginFactory = () => + new PluginPackage(manifest, new HttpPlugin({})); export const plugin = httpPlugin; diff --git a/packages/js/plugins/ipfs/package.json b/packages/js/plugins/ipfs/package.json index f62887a422..d50889a1e2 100644 --- a/packages/js/plugins/ipfs/package.json +++ b/packages/js/plugins/ipfs/package.json @@ -22,6 +22,7 @@ "dependencies": { "@dorgjelli-test/ipfs-http-client-lite": "0.3.1", "@polywrap/core-js": "0.7.0", + "@polywrap/plugin-js": "0.7.0", "abort-controller": "3.0.0", "is-ipfs": "1.0.3", "multiformats": "9.7.0" diff --git a/packages/js/plugins/ipfs/src/index.ts b/packages/js/plugins/ipfs/src/index.ts index d0db1d7530..4199159447 100644 --- a/packages/js/plugins/ipfs/src/index.ts +++ b/packages/js/plugins/ipfs/src/index.ts @@ -11,7 +11,8 @@ import { import { IpfsClient } from "./utils/IpfsClient"; import { execSimple, execFallbacks } from "./utils/exec"; -import { Client, PluginFactory } from "@polywrap/core-js"; +import { Client } from "@polywrap/core-js"; +import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports, @typescript-eslint/naming-convention const createIpfsClient = require("@dorgjelli-test/ipfs-http-client-lite"); @@ -139,11 +140,6 @@ export class IpfsPlugin extends Module { export const ipfsPlugin: PluginFactory = ( config: IpfsPluginConfig -) => { - return { - factory: () => new IpfsPlugin(config), - manifest, - }; -}; +) => new PluginPackage(manifest, new IpfsPlugin(config)); export const plugin = ipfsPlugin; diff --git a/packages/js/plugins/logger/package.json b/packages/js/plugins/logger/package.json index f410a424bf..3af9bee073 100644 --- a/packages/js/plugins/logger/package.json +++ b/packages/js/plugins/logger/package.json @@ -20,7 +20,8 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/core-js": "0.7.0" + "@polywrap/core-js": "0.7.0", + "@polywrap/plugin-js": "0.7.0" }, "devDependencies": { "@polywrap/client-js": "0.7.0", diff --git a/packages/js/plugins/logger/src/index.ts b/packages/js/plugins/logger/src/index.ts index b40ea2dac4..ff75cca749 100644 --- a/packages/js/plugins/logger/src/index.ts +++ b/packages/js/plugins/logger/src/index.ts @@ -6,7 +6,7 @@ import { manifest, } from "./wrap"; -import { PluginFactory } from "@polywrap/core-js"; +import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; export type LogFunc = (level: Logger_LogLevel, message: string) => boolean; @@ -47,11 +47,6 @@ export class LoggerPlugin extends Module { export const loggerPlugin: PluginFactory = ( config: LoggerPluginConfig -) => { - return { - factory: () => new LoggerPlugin(config), - manifest, - }; -}; +) => new PluginPackage(manifest, new LoggerPlugin(config)); export const plugin = loggerPlugin; diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/package.json b/packages/js/plugins/uri-resolvers/ens-resolver/package.json index cd9b725574..bfbc4fab21 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ens-resolver/package.json @@ -23,6 +23,7 @@ "@ethersproject/address": "5.0.7", "@ethersproject/basex": "5.0.7", "@polywrap/core-js": "0.7.0", + "@polywrap/plugin-js": "0.7.0", "ethers": "5.0.7" }, "devDependencies": { diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts index 17dcc81de5..826363da2d 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts @@ -12,7 +12,7 @@ import { import { ethers } from "ethers"; import { Base58 } from "@ethersproject/basex"; import { getAddress } from "@ethersproject/address"; -import { PluginFactory } from "@polywrap/core-js"; +import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; export type Address = string; @@ -201,11 +201,6 @@ export class EnsResolverPlugin extends Module { export const ensResolverPlugin: PluginFactory = ( config: EnsResolverPluginConfig -) => { - return { - factory: () => new EnsResolverPlugin(config), - manifest, - }; -}; +) => new PluginPackage(manifest, new EnsResolverPlugin(config)); export const plugin = ensResolverPlugin; diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/package.json b/packages/js/plugins/uri-resolvers/file-system-resolver/package.json index 20f78b3538..71e2a96f55 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/package.json @@ -20,7 +20,8 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/core-js": "0.7.0" + "@polywrap/core-js": "0.7.0", + "@polywrap/plugin-js": "0.7.0" }, "devDependencies": { "@types/jest": "26.0.8", diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts index 9638d5dbe9..988ac9dbc9 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts @@ -9,7 +9,7 @@ import { manifest, } from "./wrap"; -import { PluginFactory } from "@polywrap/core-js"; +import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; import path from "path"; type NoConfig = Record; @@ -65,9 +65,5 @@ export class FileSystemResolverPlugin extends Module { } } -export const fileSystemResolverPlugin: PluginFactory = () => { - return { - factory: () => new FileSystemResolverPlugin({}), - manifest, - }; -}; +export const fileSystemResolverPlugin: PluginFactory = () => + new PluginPackage(manifest, new FileSystemResolverPlugin({})); \ No newline at end of file diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json index 9eb0fc3306..d619706720 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json @@ -22,6 +22,7 @@ "dependencies": { "@dorgjelli-test/ipfs-http-client-lite": "0.3.1", "@polywrap/core-js": "0.7.0", + "@polywrap/plugin-js": "0.7.0", "abort-controller": "3.0.0", "is-ipfs": "1.0.3" }, diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts index 0a1d7a2ec1..9c352480b6 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts @@ -9,7 +9,7 @@ import { UriResolver_MaybeUriOrManifest, } from "./wrap"; -import { PluginFactory } from "@polywrap/core-js"; +import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports const isIPFS = require("is-ipfs"); @@ -103,11 +103,7 @@ export class IpfsResolverPlugin extends Module { } } -export const ipfsResolverPlugin: PluginFactory = () => { - return { - factory: () => new IpfsResolverPlugin({}), - manifest, - }; -}; +export const ipfsResolverPlugin: PluginFactory = () => + new PluginPackage(manifest, new IpfsResolverPlugin({})); export const plugin = ipfsResolverPlugin; diff --git a/packages/js/plugins/ws/package.json b/packages/js/plugins/ws/package.json index b951d38356..f05dce11b1 100644 --- a/packages/js/plugins/ws/package.json +++ b/packages/js/plugins/ws/package.json @@ -20,7 +20,8 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/core-js": "0.7.0" + "@polywrap/core-js": "0.7.0", + "@polywrap/plugin-js": "0.7.0" }, "devDependencies": { "@polywrap/client-js": "0.7.0", diff --git a/packages/js/plugins/ws/src/index.ts b/packages/js/plugins/ws/src/index.ts index 8f1a930018..fb88b6e3a8 100644 --- a/packages/js/plugins/ws/src/index.ts +++ b/packages/js/plugins/ws/src/index.ts @@ -14,7 +14,7 @@ import { manifest, } from "./wrap"; -import { PluginFactory } from "@polywrap/core-js"; +import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; type NoConfig = Record; @@ -153,11 +153,7 @@ export class WsPlugin extends Module { } } -export const wsPlugin: PluginFactory = () => { - return { - factory: () => new WsPlugin({}), - manifest, - }; -}; +export const wsPlugin: PluginFactory = () => + new PluginPackage(manifest, new WsPlugin({})); export const plugin = wsPlugin; From ca00a6342c47f8d7b656484de99a6a0f02a6502e Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 19:15:52 +0200 Subject: [PATCH 012/126] updated test env to work with new plugin pattern --- packages/js/test-env/package.json | 1 + packages/js/test-env/src/index.ts | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/js/test-env/package.json b/packages/js/test-env/package.json index 2bcfbd7bfe..58db0061e2 100644 --- a/packages/js/test-env/package.json +++ b/packages/js/test-env/package.json @@ -21,6 +21,7 @@ "@polywrap/core-js": "0.7.0", "@polywrap/ethereum-plugin-js": "0.7.0", "@polywrap/polywrap-manifest-types-js": "0.7.0", + "@polywrap/uri-resolvers-js": "0.7.0", "axios": "0.21.2", "js-yaml": "4.1.0", "spawn-command": "0.0.2-1" diff --git a/packages/js/test-env/src/index.ts b/packages/js/test-env/src/index.ts index b4ba6325ae..13572a7b93 100644 --- a/packages/js/test-env/src/index.ts +++ b/packages/js/test-env/src/index.ts @@ -8,6 +8,7 @@ import fs from "fs"; import yaml from "js-yaml"; import { Uri } from "@polywrap/core-js"; import { PolywrapClient } from "@polywrap/client-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { ethereumPlugin, Connections, @@ -270,14 +271,14 @@ export async function buildAndDeployWrapper({ const connections = new Connections(testnetConnection); const client = new PolywrapClient({ - plugins: [ + resolver: buildUriResolver([ { uri: ethereumPluginUri, - plugin: ethereumPlugin({ + package: ethereumPlugin({ connections, }), }, - ], + ]), }); const { data: signerAddress } = await client.invoke({ From e176b7376652d547acb3946d27b633eb57ec4205 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 19:17:01 +0200 Subject: [PATCH 013/126] removed helper functions --- .../core/createPolywrapClient.spec.ts | 15 ---- .../client/src/__tests__/utils/getClient.ts | 10 --- .../utils/getClientWithEnsAndIpfs.ts | 28 ------ .../js/client/src/createPolywrapClient.ts | 87 ------------------- packages/js/react/src/provider.tsx | 15 ++-- 5 files changed, 9 insertions(+), 146 deletions(-) delete mode 100644 packages/js/client/src/__tests__/core/createPolywrapClient.spec.ts delete mode 100644 packages/js/client/src/__tests__/utils/getClient.ts delete mode 100644 packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts delete mode 100644 packages/js/client/src/createPolywrapClient.ts diff --git a/packages/js/client/src/__tests__/core/createPolywrapClient.spec.ts b/packages/js/client/src/__tests__/core/createPolywrapClient.spec.ts deleted file mode 100644 index f80dd06f30..0000000000 --- a/packages/js/client/src/__tests__/core/createPolywrapClient.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { createPolywrapClient, PluginConfigs } from "../../createPolywrapClient"; - -describe("createPolywrapClient", () => { - it("Should throw because the plugin requested it's not installed ", async () => { - const clientParams = { - nonExistantPlugin: { - provider: "none", - }, - } as PluginConfigs; - - await expect(createPolywrapClient(clientParams)).rejects.toThrow( - "Requested plugin \"nonExistantPlugin\" is not a supported createPolywrapClient plugin." - ); - }); -}); diff --git a/packages/js/client/src/__tests__/utils/getClient.ts b/packages/js/client/src/__tests__/utils/getClient.ts deleted file mode 100644 index 8b4082c717..0000000000 --- a/packages/js/client/src/__tests__/utils/getClient.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { createPolywrapClient, PolywrapClientConfig } from "../.."; -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; - -export const getClient = async (config?: Partial) => { - return createPolywrapClient({}, config); -}; - -export const getDefaultClientConfig = () => { - return new ClientConfigBuilder().addDefaults().build(); -}; \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts b/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts deleted file mode 100644 index bac1a7d00d..0000000000 --- a/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { createPolywrapClient, PolywrapClientConfig } from "../.."; -import { ensAddresses, providers } from "@polywrap/test-env-js"; -import { Connection, Connections } from "@polywrap/ethereum-plugin-js"; - -export const getClientWithEnsAndIpfs = async ( - config?: Partial -) => { - const connections: Connections = new Connections({ - networks: { - testnet: new Connection({ - provider: providers.ethereum, - }), - }, - defaultNetwork: "testnet", - }); - return createPolywrapClient( - { - ethereum: { connections }, - ipfs: { provider: providers.ipfs }, - ens: { - addresses: { - testnet: ensAddresses.ensAddress, - }, - }, - }, - config - ); -}; diff --git a/packages/js/client/src/createPolywrapClient.ts b/packages/js/client/src/createPolywrapClient.ts deleted file mode 100644 index a9ed4e504a..0000000000 --- a/packages/js/client/src/createPolywrapClient.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable prefer-const */ - -import { PolywrapClient, PolywrapClientConfig } from "./PolywrapClient"; -import { PluginConfigs, modules, uris } from "./pluginConfigs"; - -import { PluginRegistration } from "@polywrap/core-js"; -import { Tracer } from "@polywrap/tracing-js"; -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; - -export { PluginConfigs }; - -export const createPolywrapClient = Tracer.traceFunc( - "createPolywrapClient", - async ( - pluginConfigs: PluginConfigs, - config?: Partial - ): Promise => { - const plugins: PluginRegistration[] = []; - - for (const plugin of Object.keys(pluginConfigs)) { - let pluginModule: any; - - if (!modules[plugin]) { - throw Error( - `Requested plugin "${plugin}" is not a supported createPolywrapClient plugin.` - ); - } - - try { - pluginModule = await import(modules[plugin]); - } catch (err) { - throw Error( - `Failed to import plugin module. Please install the package "${modules[plugin]}".\n` + - `Error: ${err.message}` - ); - } - - const pluginFactory = pluginModule["plugin"]; - - if (!pluginFactory) { - throw Error( - `Plugin module "${modules[plugin]}" is missing the "plugin: PluginFactory" export.` - ); - } - - if (typeof pluginFactory !== "function") { - throw Error( - `The "plugin: PluginFactory" export must be a function. Found in module "${modules[plugin]}".` - ); - } - - const pluginPackage = pluginFactory( - (pluginConfigs as Record)[plugin] - ); - if ( - !pluginPackage || - typeof pluginPackage !== "object" || - !pluginPackage.factory || - !pluginPackage.manifest - ) { - throw Error( - `Plugin package is malformed. Expected object with keys "factory" and "manifest". Got: ${pluginPackage}` - ); - } - - plugins.push({ - uri: uris[plugin], - plugin: pluginPackage, - }); - } - - if (config) { - const builder = new ClientConfigBuilder().add(config); - - for (const plugin of plugins) { - builder.addPlugin(plugin.uri, plugin.plugin); - } - - const sanitizedConfig = builder.buildPartial(); - - return new PolywrapClient(sanitizedConfig); - } else { - return new PolywrapClient({ plugins }); - } - } -); diff --git a/packages/js/react/src/provider.tsx b/packages/js/react/src/provider.tsx index 3c23105eb8..7071bc991e 100644 --- a/packages/js/react/src/provider.tsx +++ b/packages/js/react/src/provider.tsx @@ -33,21 +33,24 @@ export function createPolywrapProvider( ClientContext: React.createContext({} as PolywrapClient) }; - return ({ envs, redirects, plugins, interfaces, tracerConfig, children }) => { - + return ({ envs, redirects, interfaces, tracerConfig, children }) => { const [clientCreated, setClientCreated] = React.useState(false); React.useEffect(() => { - // If the client has already been set for this provider if (PROVIDERS[name].client) { - throw Error( + throw Error( `Duplicate PolywrapProvider detected. Please use "createPolywrapProvider("provider-name")".` ); } // Instantiate the client - PROVIDERS[name].client = new PolywrapClient({ redirects, plugins, interfaces, envs, tracerConfig }); + PROVIDERS[name].client = new PolywrapClient({ + redirects, + interfaces, + envs, + tracerConfig, + }); setClientCreated(true); @@ -55,7 +58,7 @@ export function createPolywrapProvider( // this provider is unmounted return function cleanup() { PROVIDERS[name].client = undefined; - } + }; }); // Get the provider's context From 8261a874237779e6e621d1c4b2fc9006b63d3d52 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 19:23:26 +0200 Subject: [PATCH 014/126] adding a user defined resolver to default config --- .../src/ClientConfigBuilder.ts | 7 +- .../__tests__/client-config-builder.spec.ts | 7 +- .../src/bundles/default-client-config.ts | 125 ++++++++++-------- 3 files changed, 73 insertions(+), 66 deletions(-) diff --git a/packages/js/client-config-builder/src/ClientConfigBuilder.ts b/packages/js/client-config-builder/src/ClientConfigBuilder.ts index 416487860e..611dcbf33f 100644 --- a/packages/js/client-config-builder/src/ClientConfigBuilder.ts +++ b/packages/js/client-config-builder/src/ClientConfigBuilder.ts @@ -52,8 +52,11 @@ export class ClientConfigBuilder { return this; } - addDefaults(wrapperCache?: IWrapperCache): ClientConfigBuilder { - return this.add(getDefaultClientConfig(wrapperCache)); + addDefaults( + wrapperCache?: IWrapperCache, + resolver?: IUriResolver + ): ClientConfigBuilder { + return this.add(getDefaultClientConfig(wrapperCache, resolver)); } addEnv(uri: Uri | string, env: Record): ClientConfigBuilder { diff --git a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts index e002f5a83a..c68660a4e1 100644 --- a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts +++ b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts @@ -11,11 +11,7 @@ import { import { Result } from "@polywrap/result"; import { toUri } from "../utils/toUri"; import { getDefaultClientConfig } from "../bundles"; -import { - RecursiveResolver, - PackageRegistration, -} from "@polywrap/uri-resolvers-js"; -import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; +import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; class NamedUriResolver implements IUriResolver { private _name: string; @@ -70,7 +66,6 @@ describe("Client config builder", () => { expect(clientConfig).toStrictEqual({ envs: [], interfaces: [], - plugins: [], redirects: [], }); }); diff --git a/packages/js/client-config-builder/src/bundles/default-client-config.ts b/packages/js/client-config-builder/src/bundles/default-client-config.ts index 86aa641ff8..049547f3fa 100644 --- a/packages/js/client-config-builder/src/bundles/default-client-config.ts +++ b/packages/js/client-config-builder/src/bundles/default-client-config.ts @@ -1,4 +1,4 @@ -import { ClientConfig, Uri } from "@polywrap/core-js"; +import { ClientConfig, IUriResolver, Uri } from "@polywrap/core-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; import { @@ -12,6 +12,8 @@ import { WrapperCache, PackageToWrapperCacheResolver, RecursiveResolver, + UriResolverLike, + UriResolver, } from "@polywrap/uri-resolvers-js"; import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; @@ -21,8 +23,67 @@ import { loggerPlugin } from "@polywrap/logger-plugin-js"; import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; export const getDefaultClientConfig = ( - wrapperCache?: IWrapperCache + wrapperCache?: IWrapperCache, + resolver?: IUriResolver ): ClientConfig => { + const innerResolvers: UriResolverLike[] = resolver + ? [new LegacyRedirectsResolver(), resolver] + : []; + + innerResolvers.push( + // IPFS is required for downloading Polywrap packages + { + uri: new Uri("wrap://ens/ipfs.polywrap.eth"), + package: ipfsPlugin({ + provider: defaultIpfsProviders[0], + fallbackProviders: defaultIpfsProviders.slice(1), + }), + }, + // ENS is required for resolving domain to IPFS hashes + { + uri: new Uri("wrap://ens/ens-resolver.polywrap.eth"), + package: ensResolverPlugin({}), + }, + { + uri: new Uri("wrap://ens/ethereum.polywrap.eth"), + package: ethereumPlugin({ + connections: new Connections({ + networks: { + mainnet: new Connection({ + provider: + "https://mainnet.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", + }), + goerli: new Connection({ + provider: + "https://goerli.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", + }), + }, + }), + }), + }, + { + uri: new Uri("wrap://ens/http.polywrap.eth"), + package: httpPlugin({}), + }, + { + uri: new Uri("wrap://ens/js-logger.polywrap.eth"), + package: loggerPlugin({}), + }, + { + uri: new Uri("wrap://ens/fs.polywrap.eth"), + package: fileSystemPlugin({}), + }, + { + uri: new Uri("wrap://ens/fs-resolver.polywrap.eth"), + package: fileSystemResolverPlugin({}), + }, + { + uri: new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), + package: ipfsResolverPlugin({}), + }, + new ExtendableUriResolver() + ); + return { envs: [ { @@ -61,62 +122,10 @@ export const getDefaultClientConfig = ( }, ], resolver: new RecursiveResolver( - new PackageToWrapperCacheResolver(wrapperCache ?? new WrapperCache(), [ - new LegacyRedirectsResolver(), - [ - // IPFS is required for downloading Polywrap packages - { - uri: new Uri("wrap://ens/ipfs.polywrap.eth"), - package: ipfsPlugin({ - provider: defaultIpfsProviders[0], - fallbackProviders: defaultIpfsProviders.slice(1), - }), - }, - // ENS is required for resolving domain to IPFS hashes - { - uri: new Uri("wrap://ens/ens-resolver.polywrap.eth"), - package: ensResolverPlugin({}), - }, - { - uri: new Uri("wrap://ens/ethereum.polywrap.eth"), - package: ethereumPlugin({ - connections: new Connections({ - networks: { - mainnet: new Connection({ - provider: - "https://mainnet.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", - }), - goerli: new Connection({ - provider: - "https://goerli.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", - }), - }, - }), - }), - }, - { - uri: new Uri("wrap://ens/http.polywrap.eth"), - package: httpPlugin({}), - }, - { - uri: new Uri("wrap://ens/js-logger.polywrap.eth"), - package: loggerPlugin({}), - }, - { - uri: new Uri("wrap://ens/fs.polywrap.eth"), - package: fileSystemPlugin({}), - }, - { - uri: new Uri("wrap://ens/fs-resolver.polywrap.eth"), - package: fileSystemResolverPlugin({}), - }, - { - uri: new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), - package: ipfsResolverPlugin({}), - }, - ], - new ExtendableUriResolver(), - ]) + new PackageToWrapperCacheResolver( + wrapperCache ?? new WrapperCache(), + UriResolver.from(innerResolvers) + ) ), }; }; From b006858d540d508c2958ab23db59a53fd52cb3ff Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 19:29:23 +0200 Subject: [PATCH 015/126] fixed using wrong func --- .../src/bundles/default-client-config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/js/client-config-builder/src/bundles/default-client-config.ts b/packages/js/client-config-builder/src/bundles/default-client-config.ts index 049547f3fa..2d6669aae1 100644 --- a/packages/js/client-config-builder/src/bundles/default-client-config.ts +++ b/packages/js/client-config-builder/src/bundles/default-client-config.ts @@ -13,7 +13,7 @@ import { PackageToWrapperCacheResolver, RecursiveResolver, UriResolverLike, - UriResolver, + buildUriResolver, } from "@polywrap/uri-resolvers-js"; import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; @@ -124,7 +124,7 @@ export const getDefaultClientConfig = ( resolver: new RecursiveResolver( new PackageToWrapperCacheResolver( wrapperCache ?? new WrapperCache(), - UriResolver.from(innerResolvers) + buildUriResolver(innerResolvers) ) ), }; From 4bc9548e00a9cb894a4b05ef39717336dcb5e52f Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 19:31:57 +0200 Subject: [PATCH 016/126] removed plugins from client --- packages/js/client/package.json | 9 +----- packages/js/client/src/PolywrapClient.ts | 35 +----------------------- packages/js/client/src/index.ts | 1 - 3 files changed, 2 insertions(+), 43 deletions(-) diff --git a/packages/js/client/package.json b/packages/js/client/package.json index 4bdf8b975d..18c3b788b8 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -25,14 +25,6 @@ "@polywrap/client-config-builder-js": "0.7.0", "@polywrap/core-js": "0.7.0", "@polywrap/uri-resolvers-js": "0.7.0", - "@polywrap/ens-resolver-plugin-js": "0.7.0", - "@polywrap/ethereum-plugin-js": "0.7.0", - "@polywrap/fs-plugin-js": "0.7.0", - "@polywrap/fs-resolver-plugin-js": "0.7.0", - "@polywrap/http-plugin-js": "0.7.0", - "@polywrap/ipfs-plugin-js": "0.7.0", - "@polywrap/ipfs-resolver-plugin-js": "0.7.0", - "@polywrap/logger-plugin-js": "0.7.0", "@polywrap/msgpack-js": "0.7.0", "@polywrap/schema-parse": "0.7.0", "@polywrap/tracing-js": "0.7.0", @@ -46,6 +38,7 @@ "@polywrap/os-js": "0.7.0", "@polywrap/test-cases": "0.7.0", "@polywrap/test-env-js": "0.7.0", + "@polywrap/plugin-js": "0.7.0", "@types/jest": "26.0.8", "@types/js-yaml": "3.11.1", "@types/prettier": "2.6.0", diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index bd82ceb8b4..e1b5668b49 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -8,13 +8,11 @@ import { GetFileOptions, GetImplementationsOptions, GetInterfacesOptions, - GetPluginsOptions, GetRedirectsOptions, InterfaceImplementations, InvokeOptions, InvokeResult, InvokerOptions, - PluginRegistration, QueryOptions, QueryResult, SubscribeOptions, @@ -55,7 +53,6 @@ export interface PolywrapClientConfig export class PolywrapClient implements Client { private _config: PolywrapClientConfig = ({ redirects: [], - plugins: [], interfaces: [], envs: [], tracerConfig: {}, @@ -76,7 +73,7 @@ export class PolywrapClient implements Client { const builder = new ClientConfigBuilder(); if (!options?.noDefaults) { - builder.addDefaults(config?.wrapperCache); + builder.addDefaults(config?.wrapperCache, config?.resolver); } if (config) { @@ -96,8 +93,6 @@ export class PolywrapClient implements Client { }, }; - this._validateConfig(); - Tracer.setAttribute("config", this._config); } catch (error) { Tracer.recordException(error); @@ -123,13 +118,6 @@ export class PolywrapClient implements Client { return this._getConfig(options.contextId).redirects; } - @Tracer.traceMethod("PolywrapClient: getPlugins") - public getPlugins( - options: GetPluginsOptions = {} - ): readonly PluginRegistration[] { - return this._getConfig(options.contextId).plugins; - } - @Tracer.traceMethod("PolywrapClient: getInterfaces") public getInterfaces( options: GetInterfacesOptions = {} @@ -543,23 +531,6 @@ export class PolywrapClient implements Client { } } - @Tracer.traceMethod("PolywrapClient: validateConfig") - private _validateConfig(): void { - // Require plugins to use non-interface URIs - const pluginUris = this.getPlugins().map((x) => x.uri.uri); - const interfaceUris = this.getInterfaces().map((x) => x.interface.uri); - - const pluginsWithInterfaceUris = pluginUris.filter((plugin) => - interfaceUris.includes(plugin) - ); - - if (pluginsWithInterfaceUris.length) { - throw Error( - `Plugins can't use interfaces for their URI. Invalid plugins: ${pluginsWithInterfaceUris}` - ); - } - } - @Tracer.traceMethod("PolywrapClient: toUri") private _toUri(uri: Uri | string): Uri { if (typeof uri === "string") { @@ -601,7 +572,6 @@ export class PolywrapClient implements Client { .add({ envs: context.envs ?? parentConfig.envs, interfaces: context.interfaces ?? parentConfig.interfaces, - plugins: context.plugins ?? parentConfig.plugins, redirects: context.redirects ?? parentConfig.redirects, resolver: context.resolver ?? parentConfig.resolver, }) @@ -716,9 +686,6 @@ const contextualizeClient = ( getRedirects: (options: GetRedirectsOptions = {}) => { return client.getRedirects({ ...options, contextId }); }, - getPlugins: (options: GetPluginsOptions = {}) => { - return client.getPlugins({ ...options, contextId }); - }, getInterfaces: (options: GetInterfacesOptions = {}) => { return client.getInterfaces({ ...options, contextId }); }, diff --git a/packages/js/client/src/index.ts b/packages/js/client/src/index.ts index 8cdff18c54..af87db3bb2 100644 --- a/packages/js/client/src/index.ts +++ b/packages/js/client/src/index.ts @@ -1,3 +1,2 @@ export * from "./PolywrapClient"; -export * from "./createPolywrapClient"; export * from "@polywrap/core-js"; From f2e0c511b92151e4fb3850dec598c6c373c1d416 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 21:46:03 +0200 Subject: [PATCH 017/126] removed plugins from cli --- .../lib/defaults/deploy-modules/ens/index.ts | 7 +-- .../deploy-modules/local-dev-ens/index.ts | 27 +++++----- packages/cli/src/lib/helpers/client.ts | 15 +++--- .../src/lib/helpers/validate-client-config.ts | 53 ++----------------- .../cli/src/lib/test-env/client-config.ts | 16 +++--- 5 files changed, 39 insertions(+), 79 deletions(-) diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts index 9bfdfa350b..5bf8893b06 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts @@ -6,6 +6,7 @@ import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; import { Uri } from "@polywrap/core-js"; import { PolywrapClient } from "@polywrap/client-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import path from "path"; import { ethereumPlugin, @@ -62,14 +63,14 @@ class ENSPublisher implements Deployer { defaultNetwork: network, }); const client = new PolywrapClient({ - plugins: [ + resolver: buildUriResolver([ { uri: ethereumPluginUri, - plugin: ethereumPlugin({ + package: ethereumPlugin({ connections, }), }, - ], + ]), }); const { data: resolver } = await client.invoke({ diff --git a/packages/cli/src/lib/defaults/deploy-modules/local-dev-ens/index.ts b/packages/cli/src/lib/defaults/deploy-modules/local-dev-ens/index.ts index 6041b39b6f..8141ad7229 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/local-dev-ens/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/local-dev-ens/index.ts @@ -11,6 +11,7 @@ import { Connections, Connection, } from "@polywrap/ethereum-plugin-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; const contentHash = require("content-hash"); @@ -35,21 +36,19 @@ class LocalDevENSPublisher implements Deployer { const ethereumPluginUri = "wrap://ens/ethereum.polywrap.eth"; const client = new PolywrapClient({ - plugins: [ - { - uri: ethereumPluginUri, - plugin: ethereumPlugin({ - connections: new Connections({ - networks: { - testnet: new Connection({ - provider: `http://localhost:${config.ports.ethereum}`, - }), - }, - defaultNetwork: "testnet", - }), + resolver: buildUriResolver({ + uri: ethereumPluginUri, + package: ethereumPlugin({ + connections: new Connections({ + networks: { + testnet: new Connection({ + provider: `http://localhost:${config.ports.ethereum}`, + }), + }, + defaultNetwork: "testnet", }), - }, - ], + }), + }), }); const { data: signer } = await client.invoke({ diff --git a/packages/cli/src/lib/helpers/client.ts b/packages/cli/src/lib/helpers/client.ts index a8b6a4009e..f3aa49f87c 100644 --- a/packages/cli/src/lib/helpers/client.ts +++ b/packages/cli/src/lib/helpers/client.ts @@ -1,4 +1,3 @@ -import { PluginRegistration } from "@polywrap/core-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { ethereumPlugin, @@ -8,6 +7,10 @@ import { import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { PolywrapClient } from "@polywrap/client-js"; import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; +import { + PackageRegistration, + buildUriResolver, +} from "@polywrap/uri-resolvers-js"; interface SimpleClientConfig { ensAddress?: string; @@ -17,11 +20,11 @@ interface SimpleClientConfig { export function getSimpleClient(config: SimpleClientConfig): PolywrapClient { const { ensAddress, ethProvider, ipfsProvider } = config; - const plugins: PluginRegistration[] = []; + const plugins: PackageRegistration[] = []; if (ensAddress) { plugins.push({ uri: "wrap://ens/ens-resolver.polywrap.eth", - plugin: ensResolverPlugin({ + package: ensResolverPlugin({ addresses: { testnet: ensAddress, }, @@ -31,7 +34,7 @@ export function getSimpleClient(config: SimpleClientConfig): PolywrapClient { if (ethProvider) { plugins.push({ uri: "wrap://ens/ethereum.polywrap.eth", - plugin: ethereumPlugin({ + package: ethereumPlugin({ connections: new Connections({ networks: { testnet: new Connection({ @@ -45,11 +48,11 @@ export function getSimpleClient(config: SimpleClientConfig): PolywrapClient { if (ipfsProvider) { plugins.push({ uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({ + package: ipfsPlugin({ provider: ipfsProvider, fallbackProviders: defaultIpfsProviders, }), }); } - return new PolywrapClient({ plugins }); + return new PolywrapClient({ resolver: buildUriResolver(plugins) }); } diff --git a/packages/cli/src/lib/helpers/validate-client-config.ts b/packages/cli/src/lib/helpers/validate-client-config.ts index afca693909..d73e5786b7 100644 --- a/packages/cli/src/lib/helpers/validate-client-config.ts +++ b/packages/cli/src/lib/helpers/validate-client-config.ts @@ -3,16 +3,14 @@ import { intlMsg } from "../intl"; import { Env, InterfaceImplementations, - PluginPackage, - PluginRegistration, Uri, UriRedirect, PolywrapClientConfig, } from "@polywrap/client-js"; -export function validateRedirects< - TUri extends PluginPackage | Uri | string ->(redirects: UriRedirect[]): void { +export function validateRedirects( + redirects: UriRedirect[] +): void { if (!Array.isArray(redirects)) { throw new Error(intlMsg.commands_run_error_redirectsExportNotArray()); } @@ -43,50 +41,6 @@ export function validateRedirects< } } -export function validatePlugins( - plugins: PluginRegistration[] -): void { - if (!Array.isArray(plugins)) { - throw new Error(intlMsg.commands_run_error_pluginsExportNotArray()); - } - - // Ensure each plugin in the array is valid - for (let i = 0; i < plugins.length; ++i) { - const plugin = plugins[i]; - if (typeof plugin !== "object") { - throw new Error( - intlMsg.commands_run_error_pluginsItemNotObject({ - index: i.toString(), - }) - ); - } else if (typeof plugin.uri !== "string") { - throw new Error( - intlMsg.commands_run_error_pluginsItemUriNotString({ - index: i.toString(), - }) - ); - } else if (typeof plugin.plugin !== "object") { - throw new Error( - intlMsg.commands_run_error_pluginsItemPluginNotObject({ - index: i.toString(), - }) - ); - } else if (typeof plugin.plugin.factory !== "function") { - throw new Error( - intlMsg.commands_run_error_pluginsItemPluginFactoryNotFunction({ - index: i.toString(), - }) - ); - } else if (typeof plugin.plugin.manifest !== "object") { - throw new Error( - intlMsg.commands_run_error_pluginsItemPluginManifestNotObject({ - index: i.toString(), - }) - ); - } - } -} - export function validateInterfaces( interfaces: InterfaceImplementations[] ): void { @@ -173,7 +127,6 @@ export function validateClientConfig( if (!config || typeof config !== "object") { throw new Error(intlMsg.commands_run_error_clientConfigNotObject()); } - if (config.plugins) validatePlugins(config.plugins); if (config.envs) validateEnvs(config.envs); if (config.interfaces) validateInterfaces(config.interfaces); if (config.redirects) validateRedirects(config.redirects); diff --git a/packages/cli/src/lib/test-env/client-config.ts b/packages/cli/src/lib/test-env/client-config.ts index 651db94a2f..eefafb75b8 100644 --- a/packages/cli/src/lib/test-env/client-config.ts +++ b/packages/cli/src/lib/test-env/client-config.ts @@ -1,6 +1,6 @@ import { getTestEnvProviders } from "./providers"; -import { PluginRegistration, PolywrapClientConfig } from "@polywrap/client-js"; +import { PolywrapClientConfig } from "@polywrap/client-js"; import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { @@ -10,6 +10,10 @@ import { } from "@polywrap/ethereum-plugin-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { ensAddresses } from "@polywrap/test-env-js"; +import { + PackageRegistration, + buildUriResolver, +} from "@polywrap/uri-resolvers-js"; export async function getTestEnvClientConfig(): Promise< Partial @@ -26,10 +30,10 @@ export async function getTestEnvClientConfig(): Promise< // TODO: move this into its own package, since it's being used everywhere? // maybe have it exported from test-env. - const plugins: PluginRegistration[] = [ + const packages: PackageRegistration[] = [ { uri: "wrap://ens/ethereum.polywrap.eth", - plugin: ethereumPlugin({ + package: ethereumPlugin({ connections: new Connections({ networks: { testnet: new Connection({ @@ -41,14 +45,14 @@ export async function getTestEnvClientConfig(): Promise< }, { uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({ + package: ipfsPlugin({ provider: ipfsProvider, fallbackProviders: defaultIpfsProviders, }), }, { uri: "wrap://ens/ens-resolver.polywrap.eth", - plugin: ensResolverPlugin({ + package: ensResolverPlugin({ addresses: { testnet: ensAddress, }, @@ -57,6 +61,6 @@ export async function getTestEnvClientConfig(): Promise< ]; return { - plugins, + resolver: buildUriResolver(packages), }; } From e67bc1df0922ccdbb54e5a6f8331d3ac179981c8 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Thu, 15 Sep 2022 21:47:24 +0200 Subject: [PATCH 018/126] removed plugins from client and uri resolution tests --- package.json | 5 +- .../src/bundles/default-client-config.ts | 112 ++++++------- packages/js/client/src/PolywrapClient.ts | 15 +- ...olve a URI resolver extension wrapper.json | 17 +- .../histories/can resolve cache - 1.json | 15 +- .../histories/can resolve plugin.json | 7 +- ...cting by a URI resolver extension - 1.json | 15 +- .../histories/can resolve redirects.json | 2 +- ...te recursion when resolved at runtime.json | 15 +- ...after URI resolver extension redirect.json | 15 +- .../core/uri-resolution/histories/sanity.json | 64 +++----- .../uri-resolution/uri-resolution.spec.ts | 153 ++++++++++-------- .../__tests__/utils/mockPluginRegistration.ts | 13 ++ .../src/packages/PackageResolver.ts | 16 +- .../src/wrappers/WrapperResolver.ts | 16 +- 15 files changed, 233 insertions(+), 247 deletions(-) create mode 100644 packages/js/client/src/__tests__/utils/mockPluginRegistration.ts diff --git a/package.json b/package.json index 595ca8a98d..6bd773fc63 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "clean": "npx rimraf ./**/node_modules ./**/yarn.lock ./**/build ./**/coverage ./**/.polywrap", "dependencies:install": "cd dependencies && yarn", "preinstall": "yarn dependencies:install", - "build": "yarn build:core && yarn build:interfaces && yarn build:plugins && yarn build:resolver:plugins && yarn build:config && yarn build:client && yarn build:test-env && yarn build:cli", + "build": "yarn build:core && yarn link:schema && yarn build:interfaces && yarn build:plugins && yarn build:resolver:plugins && yarn build:config && yarn build:client && yarn build:test-env && yarn build:cli", "build:core": "lerna run build --no-private --ignore @polywrap/*plugin-js --ignore @polywrap/client-config-builder-js --ignore polywrap --ignore @polywrap/client-js --ignore @polywrap/react --ignore @polywrap/test-env-js --ignore @polywrap/*-interface", "build:interfaces": "lerna run build --scope @polywrap/*-interface", "build:plugins": "lerna run build --scope @polywrap/*plugin-js --ignore @polywrap/*-resolver-plugin-js", @@ -38,9 +38,10 @@ "link:manifests": "yarn link:manifests:polywrap && yarn link:manifests:wrap", "link:manifests:polywrap": "cd packages/js/manifests/polywrap && (yarn unlink || true) && yarn link && cd ../../../../dependencies && yarn link @polywrap/polywrap-manifest-types-js && cd ../", "link:manifests:wrap": "cd packages/js/manifests/wrap && (yarn unlink || true) && yarn link && cd ../../../../dependencies && yarn link @polywrap/wrap-manifest-types-js && cd ../", - "link:schema": "yarn link:schema:parse && yarn link:schema:compose", + "link:schema": "yarn link:schema:parse && yarn link:schema:compose && yarn link:schema:bind", "link:schema:parse": "cd packages/schema/parse && (yarn unlink || true) && yarn link && cd ../../../dependencies && yarn link @polywrap/schema-parse && cd ../", "link:schema:compose": "cd packages/schema/compose && (yarn unlink || true) && yarn link && cd ../../../dependencies && yarn link @polywrap/schema-compose && cd ../", + "link:schema:bind": "cd packages/schema/bind && (yarn unlink || true) && yarn link && cd ../../../dependencies && yarn link @polywrap/schema-bind && cd ../", "lint": "lerna run lint", "lint:fix": "lerna run lint -- --fix", "lint:ci": "yarn lint", diff --git a/packages/js/client-config-builder/src/bundles/default-client-config.ts b/packages/js/client-config-builder/src/bundles/default-client-config.ts index 2d6669aae1..6d85ae8360 100644 --- a/packages/js/client-config-builder/src/bundles/default-client-config.ts +++ b/packages/js/client-config-builder/src/bundles/default-client-config.ts @@ -28,61 +28,10 @@ export const getDefaultClientConfig = ( ): ClientConfig => { const innerResolvers: UriResolverLike[] = resolver ? [new LegacyRedirectsResolver(), resolver] - : []; + : [new LegacyRedirectsResolver()]; - innerResolvers.push( - // IPFS is required for downloading Polywrap packages - { - uri: new Uri("wrap://ens/ipfs.polywrap.eth"), - package: ipfsPlugin({ - provider: defaultIpfsProviders[0], - fallbackProviders: defaultIpfsProviders.slice(1), - }), - }, - // ENS is required for resolving domain to IPFS hashes - { - uri: new Uri("wrap://ens/ens-resolver.polywrap.eth"), - package: ensResolverPlugin({}), - }, - { - uri: new Uri("wrap://ens/ethereum.polywrap.eth"), - package: ethereumPlugin({ - connections: new Connections({ - networks: { - mainnet: new Connection({ - provider: - "https://mainnet.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", - }), - goerli: new Connection({ - provider: - "https://goerli.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", - }), - }, - }), - }), - }, - { - uri: new Uri("wrap://ens/http.polywrap.eth"), - package: httpPlugin({}), - }, - { - uri: new Uri("wrap://ens/js-logger.polywrap.eth"), - package: loggerPlugin({}), - }, - { - uri: new Uri("wrap://ens/fs.polywrap.eth"), - package: fileSystemPlugin({}), - }, - { - uri: new Uri("wrap://ens/fs-resolver.polywrap.eth"), - package: fileSystemResolverPlugin({}), - }, - { - uri: new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), - package: ipfsResolverPlugin({}), - }, - new ExtendableUriResolver() - ); + innerResolvers.push(...getDefaultPlugins()); + innerResolvers.push(new ExtendableUriResolver()); return { envs: [ @@ -140,3 +89,58 @@ export const defaultWrappers = { uts46: "wrap://ens/goerli/uts46-lite.wrappers.eth", graphNode: "wrap://ens/goerli/graph-node.wrappers.eth", }; + +export const getDefaultPlugins = (): UriResolverLike[] => { + return [ + // IPFS is required for downloading Polywrap packages + { + uri: new Uri("wrap://ens/ipfs.polywrap.eth"), + package: ipfsPlugin({ + provider: defaultIpfsProviders[0], + fallbackProviders: defaultIpfsProviders.slice(1), + }), + }, + // ENS is required for resolving domain to IPFS hashes + { + uri: new Uri("wrap://ens/ens-resolver.polywrap.eth"), + package: ensResolverPlugin({}), + }, + { + uri: new Uri("wrap://ens/ethereum.polywrap.eth"), + package: ethereumPlugin({ + connections: new Connections({ + networks: { + mainnet: new Connection({ + provider: + "https://mainnet.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", + }), + goerli: new Connection({ + provider: + "https://goerli.infura.io/v3/b00b2c2cc09c487685e9fb061256d6a6", + }), + }, + }), + }), + }, + { + uri: new Uri("wrap://ens/http.polywrap.eth"), + package: httpPlugin({}), + }, + { + uri: new Uri("wrap://ens/js-logger.polywrap.eth"), + package: loggerPlugin({}), + }, + { + uri: new Uri("wrap://ens/fs.polywrap.eth"), + package: fileSystemPlugin({}), + }, + { + uri: new Uri("wrap://ens/fs-resolver.polywrap.eth"), + package: fileSystemResolverPlugin({}), + }, + { + uri: new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), + package: ipfsResolverPlugin({}), + }, + ]; +}; diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index e1b5668b49..2c73b1bc0c 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -74,10 +74,17 @@ export class PolywrapClient implements Client { if (!options?.noDefaults) { builder.addDefaults(config?.wrapperCache, config?.resolver); - } - - if (config) { - builder.add(config); + if (config) { + // Add everything except for the resolver because we already added it above + builder.add({ + ...config, + resolver: undefined, + }); + } + } else { + if (config) { + builder.add(config); + } } const sanitizedConfig = builder.build(); diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve a URI resolver extension wrapper.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve a URI resolver extension wrapper.json index 9bced0c03f..42f68aebd4 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve a URI resolver extension wrapper.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve a URI resolver extension wrapper.json @@ -9,30 +9,21 @@ [ "wrap://ens/ipfs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ipfs-resolver.polywrap.eth)", [ - "wrap://ens/ipfs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ipfs-resolver.polywrap.eth)", - [ - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" - ] + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/ens-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ens-resolver.polywrap.eth)", [ "wrap://ens/ens-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ens-resolver.polywrap.eth)", [ - "wrap://ens/ens-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ens-resolver.polywrap.eth)", - [ - "wrap://ens/ens-resolver.polywrap.eth => Plugin (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" - ] + "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/fs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/fs-resolver.polywrap.eth)", [ "wrap://ens/fs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/fs-resolver.polywrap.eth)", [ - "wrap://ens/fs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/fs-resolver.polywrap.eth)", - [ - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" - ] + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", @@ -65,4 +56,4 @@ ] ] ] -] \ No newline at end of file +] diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 1.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 1.json index e7186cecce..1a5ece44ae 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 1.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 1.json @@ -9,30 +9,21 @@ [ "wrap://ens/ipfs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ipfs-resolver.polywrap.eth)", [ - "wrap://ens/ipfs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ipfs-resolver.polywrap.eth)", - [ - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" - ] + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/ens-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ens-resolver.polywrap.eth)", [ "wrap://ens/ens-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ens-resolver.polywrap.eth)", [ - "wrap://ens/ens-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ens-resolver.polywrap.eth)", - [ - "wrap://ens/ens-resolver.polywrap.eth => Plugin (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" - ] + "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/fs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/fs-resolver.polywrap.eth)", [ "wrap://ens/fs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/fs-resolver.polywrap.eth)", [ - "wrap://ens/fs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/fs-resolver.polywrap.eth)", - [ - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" - ] + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://file/$root-wrapper-dir/simple/build => ResovlerExtension (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://file/$root-wrapper-dir/simple/build)" diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve plugin.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve plugin.json index 5d12f06e23..f4420eab36 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve plugin.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve plugin.json @@ -3,10 +3,7 @@ [ "wrap://ens/plugin.eth => UriResolverAggregator => package (wrap://ens/plugin.eth)", [ - "wrap://ens/plugin.eth => LegacyPluginsResolver => package (wrap://ens/plugin.eth)", - [ - "wrap://ens/plugin.eth => Plugin (wrap://ens/plugin.eth) => package (wrap://ens/plugin.eth)" - ] + "wrap://ens/plugin.eth => Package (wrap://ens/plugin.eth) => package (wrap://ens/plugin.eth)" ] ] -] \ No newline at end of file +] diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 1.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 1.json index 9bced0c03f..650ab896d1 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 1.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 1.json @@ -9,30 +9,21 @@ [ "wrap://ens/ipfs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ipfs-resolver.polywrap.eth)", [ - "wrap://ens/ipfs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ipfs-resolver.polywrap.eth)", - [ - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" - ] + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/ens-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ens-resolver.polywrap.eth)", [ "wrap://ens/ens-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ens-resolver.polywrap.eth)", [ - "wrap://ens/ens-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ens-resolver.polywrap.eth)", - [ - "wrap://ens/ens-resolver.polywrap.eth => Plugin (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" - ] + "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/fs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/fs-resolver.polywrap.eth)", [ "wrap://ens/fs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/fs-resolver.polywrap.eth)", [ - "wrap://ens/fs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/fs-resolver.polywrap.eth)", - [ - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" - ] + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve redirects.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve redirects.json index 8b3433f090..19147a3ad9 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve redirects.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve redirects.json @@ -19,4 +19,4 @@ ] ] ] -] \ No newline at end of file +] diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/custom wrapper resolver does not cause infinite recursion when resolved at runtime.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/custom wrapper resolver does not cause infinite recursion when resolved at runtime.json index 127d1f9da0..2ac4e31e3b 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/custom wrapper resolver does not cause infinite recursion when resolved at runtime.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/custom wrapper resolver does not cause infinite recursion when resolved at runtime.json @@ -9,30 +9,21 @@ [ "wrap://ens/ipfs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ipfs-resolver.polywrap.eth)", [ - "wrap://ens/ipfs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ipfs-resolver.polywrap.eth)", - [ - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" - ] + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/ens-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ens-resolver.polywrap.eth)", [ "wrap://ens/ens-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ens-resolver.polywrap.eth)", [ - "wrap://ens/ens-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ens-resolver.polywrap.eth)", - [ - "wrap://ens/ens-resolver.polywrap.eth => Plugin (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" - ] + "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/fs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/fs-resolver.polywrap.eth)", [ "wrap://ens/fs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/fs-resolver.polywrap.eth)", [ - "wrap://ens/fs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/fs-resolver.polywrap.eth)", - [ - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" - ] + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://ens/test.eth => ResovlerExtension (wrap://ens/undefined-resolver.eth) => error While resolving wrap://ens/test.eth with URI resolver extension wrap://ens/undefined-resolver.eth, the extension could not be fully resolved. Last tried URI is wrap://ens/undefined-resolver.eth" diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/restarts URI resolution after URI resolver extension redirect.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/restarts URI resolution after URI resolver extension redirect.json index 8b0e52ab6f..b8bc11e15e 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/restarts URI resolution after URI resolver extension redirect.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/restarts URI resolution after URI resolver extension redirect.json @@ -9,30 +9,21 @@ [ "wrap://ens/ipfs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ipfs-resolver.polywrap.eth)", [ - "wrap://ens/ipfs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ipfs-resolver.polywrap.eth)", - [ - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" - ] + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/ens-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ens-resolver.polywrap.eth)", [ "wrap://ens/ens-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ens-resolver.polywrap.eth)", [ - "wrap://ens/ens-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ens-resolver.polywrap.eth)", - [ - "wrap://ens/ens-resolver.polywrap.eth => Plugin (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" - ] + "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/fs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/fs-resolver.polywrap.eth)", [ "wrap://ens/fs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/fs-resolver.polywrap.eth)", [ - "wrap://ens/fs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/fs-resolver.polywrap.eth)", - [ - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" - ] + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/sanity.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/sanity.json index 0c02e0d6ec..a124b53c76 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/sanity.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/sanity.json @@ -9,17 +9,14 @@ "wrap://ens/uri.eth => Redirect (wrap://ens/uts46.polywrap.eth - wrap://ens/goerli/uts46-lite.wrappers.eth)", "wrap://ens/uri.eth => Redirect (wrap://ens/graph-node.polywrap.eth - wrap://ens/goerli/graph-node.wrappers.eth)" ], - "wrap://ens/uri.eth => LegacyPluginsResolver", - [ - "wrap://ens/uri.eth => Plugin (wrap://ens/ipfs.polywrap.eth)", - "wrap://ens/uri.eth => Plugin (wrap://ens/ens-resolver.polywrap.eth)", - "wrap://ens/uri.eth => Plugin (wrap://ens/ethereum.polywrap.eth)", - "wrap://ens/uri.eth => Plugin (wrap://ens/http.polywrap.eth)", - "wrap://ens/uri.eth => Plugin (wrap://ens/js-logger.polywrap.eth)", - "wrap://ens/uri.eth => Plugin (wrap://ens/fs.polywrap.eth)", - "wrap://ens/uri.eth => Plugin (wrap://ens/fs-resolver.polywrap.eth)", - "wrap://ens/uri.eth => Plugin (wrap://ens/ipfs-resolver.polywrap.eth)" - ], + "wrap://ens/uri.eth => Package (wrap://ens/ipfs.polywrap.eth)", + "wrap://ens/uri.eth => Package (wrap://ens/ens-resolver.polywrap.eth)", + "wrap://ens/uri.eth => Package (wrap://ens/ethereum.polywrap.eth)", + "wrap://ens/uri.eth => Package (wrap://ens/http.polywrap.eth)", + "wrap://ens/uri.eth => Package (wrap://ens/js-logger.polywrap.eth)", + "wrap://ens/uri.eth => Package (wrap://ens/fs.polywrap.eth)", + "wrap://ens/uri.eth => Package (wrap://ens/fs-resolver.polywrap.eth)", + "wrap://ens/uri.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth)", "wrap://ens/uri.eth => ExtendableUriResolver", [ "wrap://ens/ipfs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ipfs-resolver.polywrap.eth)", @@ -32,17 +29,14 @@ "wrap://ens/ipfs-resolver.polywrap.eth => Redirect (wrap://ens/uts46.polywrap.eth - wrap://ens/goerli/uts46-lite.wrappers.eth)", "wrap://ens/ipfs-resolver.polywrap.eth => Redirect (wrap://ens/graph-node.polywrap.eth - wrap://ens/goerli/graph-node.wrappers.eth)" ], - "wrap://ens/ipfs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ipfs-resolver.polywrap.eth)", - [ - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/ipfs.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/ens-resolver.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/ethereum.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/http.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/js-logger.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/fs.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/fs-resolver.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Plugin (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" - ] + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs.polywrap.eth)", + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth)", + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ethereum.polywrap.eth)", + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/http.polywrap.eth)", + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/js-logger.polywrap.eth)", + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/fs.polywrap.eth)", + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth)", + "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/uri.eth => ResovlerExtension (wrap://ens/ipfs-resolver.polywrap.eth)", @@ -56,11 +50,8 @@ "wrap://ens/ens-resolver.polywrap.eth => Redirect (wrap://ens/uts46.polywrap.eth - wrap://ens/goerli/uts46-lite.wrappers.eth)", "wrap://ens/ens-resolver.polywrap.eth => Redirect (wrap://ens/graph-node.polywrap.eth - wrap://ens/goerli/graph-node.wrappers.eth)" ], - "wrap://ens/ens-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/ens-resolver.polywrap.eth)", - [ - "wrap://ens/ens-resolver.polywrap.eth => Plugin (wrap://ens/ipfs.polywrap.eth)", - "wrap://ens/ens-resolver.polywrap.eth => Plugin (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" - ] + "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ipfs.polywrap.eth)", + "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/uri.eth => ResovlerExtension (wrap://ens/ens-resolver.polywrap.eth)", @@ -74,20 +65,17 @@ "wrap://ens/fs-resolver.polywrap.eth => Redirect (wrap://ens/uts46.polywrap.eth - wrap://ens/goerli/uts46-lite.wrappers.eth)", "wrap://ens/fs-resolver.polywrap.eth => Redirect (wrap://ens/graph-node.polywrap.eth - wrap://ens/goerli/graph-node.wrappers.eth)" ], - "wrap://ens/fs-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/fs-resolver.polywrap.eth)", - [ - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/ipfs.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/ens-resolver.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/ethereum.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/http.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/js-logger.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/fs.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Plugin (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" - ] + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/ipfs.polywrap.eth)", + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth)", + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/ethereum.polywrap.eth)", + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/http.polywrap.eth)", + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/js-logger.polywrap.eth)", + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs.polywrap.eth)", + "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://ens/uri.eth => ResovlerExtension (wrap://ens/fs-resolver.polywrap.eth)" ] ] ] -] \ No newline at end of file +] diff --git a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts index 604184ba3f..68a6cb3330 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts +++ b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts @@ -1,19 +1,22 @@ -import { Uri } from "../../../../"; import { buildWrapper } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { + Uri, coreInterfaceUris, IUriResolutionStep, - PluginModule, UriPackageOrWrapper, UriResolutionContext, UriResolutionResult, } from "@polywrap/core-js"; -import { buildCleanUriHistory, getUriResolutionPath } from "@polywrap/uri-resolvers-js"; -import { getClient } from "../../utils/getClient"; +import { + buildCleanUriHistory, + buildUriResolver, + getUriResolutionPath, +} from "@polywrap/uri-resolvers-js"; import fs from "fs"; -import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { Result } from "@polywrap/result"; +import { PolywrapClient } from "../../../PolywrapClient"; +import { mockPluginRegistration } from "../../utils/mockPluginRegistration"; jest.setTimeout(200000); @@ -39,7 +42,7 @@ const expectResultWithHistory = async ( if (historyFileName && uriHistory) { await expectHistory(uriHistory, historyFileName); } - + expect(receivedResult).toEqual(expectedResult); }; @@ -112,7 +115,7 @@ describe("URI resolution", () => { it("sanity", async () => { const uri = new Uri("ens/uri.eth"); - const client = await getClient(); + const client = new PolywrapClient(); const resolutionContext = new UriResolutionContext(); const result = await client.tryResolveUri({ uri, resolutionContext }); @@ -130,7 +133,7 @@ describe("URI resolution", () => { const toUri1 = new Uri("ens/to1.eth"); const toUri2 = new Uri("ens/to2.eth"); - const client = await getClient({ + const client = new PolywrapClient({ redirects: [ { from: fromUri.uri, @@ -144,7 +147,10 @@ describe("URI resolution", () => { }); const resolutionContext = new UriResolutionContext(); - const response = await client.tryResolveUri({ uri: fromUri, resolutionContext }); + const response = await client.tryResolveUri({ + uri: fromUri, + resolutionContext, + }); await expectResultWithHistory( response, @@ -153,47 +159,40 @@ describe("URI resolution", () => { "can resolve redirects" ); - expect([ + expect(resolutionContext.getResolutionPath().map((x) => x.uri)).toEqual([ "wrap://ens/from.eth", "wrap://ens/to1.eth", - "wrap://ens/to2.eth" - ]).toEqual(resolutionContext.getResolutionPath().map(x => x.uri)); + "wrap://ens/to2.eth", + ]); }); it("can resolve plugin", async () => { const pluginUri = new Uri("ens/plugin.eth"); - const client = await getClient({ - plugins: [ - { - uri: pluginUri.uri, - plugin: { - factory: () => { - return ({} as unknown) as PluginModule<{}>; - }, - manifest: { } as WrapManifest, - }, - }, - ], + const client = new PolywrapClient({ + resolver: buildUriResolver(mockPluginRegistration(pluginUri)), }); const resolutionContext = new UriResolutionContext(); - const result = await client.tryResolveUri({ uri: pluginUri, resolutionContext }); + const result = await client.tryResolveUri({ + uri: pluginUri, + resolutionContext, + }); await expectWrapperWithHistory( - result, - pluginUri, - getUriResolutionPath(resolutionContext.getHistory()), + result, + pluginUri, + getUriResolutionPath(resolutionContext.getHistory()), "can resolve plugin" ); - expect([ - "wrap://ens/plugin.eth" - ]).toEqual(resolutionContext.getResolutionPath().map(x => x.uri)); + expect(["wrap://ens/plugin.eth"]).toEqual( + resolutionContext.getResolutionPath().map((x) => x.uri) + ); }); it("can resolve a URI resolver extension wrapper", async () => { - const client = await getClient({ + const client = new PolywrapClient({ interfaces: [ { interface: coreInterfaceUris.uriResolver.uri, @@ -206,7 +205,10 @@ describe("URI resolution", () => { const redirectedUri = wrapperUri; const resolutionContext = new UriResolutionContext(); - const response = await client.tryResolveUri({ uri: sourceUri, resolutionContext }); + const response = await client.tryResolveUri({ + uri: sourceUri, + resolutionContext, + }); await expectWrapperWithHistory( response, @@ -215,17 +217,19 @@ describe("URI resolution", () => { "can resolve a URI resolver extension wrapper" ); - expect([ - sourceUri.uri, - redirectedUri.uri, - ]).toEqual(resolutionContext.getResolutionPath().map(x => x.uri)); + expect([sourceUri.uri, redirectedUri.uri]).toEqual( + resolutionContext.getResolutionPath().map((x) => x.uri) + ); }); it("can resolve cache", async () => { - const client = await getClient(); + const client = new PolywrapClient(); const resolutionContext1 = new UriResolutionContext(); - const result1 = await client.tryResolveUri({ uri: wrapperUri, resolutionContext: resolutionContext1 }); + const result1 = await client.tryResolveUri({ + uri: wrapperUri, + resolutionContext: resolutionContext1, + }); await expectWrapperWithHistory( result1, @@ -233,12 +237,15 @@ describe("URI resolution", () => { getUriResolutionPath(resolutionContext1.getHistory()), "can resolve cache - 1" ); - expect([ - wrapperUri.uri, - ]).toEqual(resolutionContext1.getResolutionPath().map(x => x.uri)); + expect([wrapperUri.uri]).toEqual( + resolutionContext1.getResolutionPath().map((x) => x.uri) + ); const resolutionContext2 = new UriResolutionContext(); - const result2 = await client.tryResolveUri({ uri: wrapperUri, resolutionContext: resolutionContext2 }); + const result2 = await client.tryResolveUri({ + uri: wrapperUri, + resolutionContext: resolutionContext2, + }); await expectWrapperWithHistory( result2, @@ -246,13 +253,13 @@ describe("URI resolution", () => { getUriResolutionPath(resolutionContext2.getHistory()), "can resolve cache - 2" ); - expect([ - wrapperUri.uri, - ]).toEqual(resolutionContext2.getResolutionPath().map(x => x.uri)); + expect([wrapperUri.uri]).toEqual( + resolutionContext2.getResolutionPath().map((x) => x.uri) + ); }); it("can resolve previously cached URI after redirecting by a URI resolver extension", async () => { - const client = await getClient({ + const client = new PolywrapClient({ interfaces: [ { interface: coreInterfaceUris.uriResolver.uri, @@ -269,7 +276,10 @@ describe("URI resolution", () => { const finalUri = wrapperUri; const resolutionContext1 = new UriResolutionContext(); - const result1 = await client.tryResolveUri({ uri: redirectedUri, resolutionContext: resolutionContext1 }); + const result1 = await client.tryResolveUri({ + uri: redirectedUri, + resolutionContext: resolutionContext1, + }); await expectWrapperWithHistory( result1, @@ -277,13 +287,15 @@ describe("URI resolution", () => { getUriResolutionPath(resolutionContext1.getHistory()), "can resolve previously cached URI after redirecting by a URI resolver extension - 1" ); - expect([ - redirectedUri.uri, - finalUri.uri - ]).toEqual(resolutionContext1.getResolutionPath().map(x => x.uri)); + expect([redirectedUri.uri, finalUri.uri]).toEqual( + resolutionContext1.getResolutionPath().map((x) => x.uri) + ); const resolutionContext2 = new UriResolutionContext(); - const result2 = await client.tryResolveUri({ uri: sourceUri, resolutionContext: resolutionContext2 }); + const result2 = await client.tryResolveUri({ + uri: sourceUri, + resolutionContext: resolutionContext2, + }); await expectWrapperWithHistory( result2, @@ -291,10 +303,9 @@ describe("URI resolution", () => { getUriResolutionPath(resolutionContext2.getHistory()), "can resolve previously cached URI after redirecting by a URI resolver extension - 2" ); - expect([ - sourceUri.uri, - redirectedUri.uri, - ]).toEqual(resolutionContext2.getResolutionPath().map(x => x.uri)); + expect([sourceUri.uri, redirectedUri.uri]).toEqual( + resolutionContext2.getResolutionPath().map((x) => x.uri) + ); }); it("restarts URI resolution after URI resolver extension redirect", async () => { @@ -302,7 +313,7 @@ describe("URI resolution", () => { const sourceUri = new Uri(`simple-redirect/${wrapperPath}/build`); const resolverRedirectUri = new Uri(`simple/${wrapperPath}/build`); const finalRedirectedUri = new Uri(`ens/redirect.eth`); - const client = await getClient({ + const client = new PolywrapClient({ redirects: [ { from: resolverRedirectUri.uri, @@ -319,9 +330,12 @@ describe("URI resolution", () => { }, ], }); - + const resolutionContext = new UriResolutionContext(); - const result = await client.tryResolveUri({ uri: sourceUri, resolutionContext }); + const result = await client.tryResolveUri({ + uri: sourceUri, + resolutionContext, + }); await expectResultWithHistory( result, UriResolutionResult.ok(finalRedirectedUri), @@ -332,14 +346,14 @@ describe("URI resolution", () => { sourceUri.uri, resolverRedirectUri.uri, finalRedirectedUri.uri, - ]).toEqual(resolutionContext.getResolutionPath().map(x => x.uri)); + ]).toEqual(resolutionContext.getResolutionPath().map((x) => x.uri)); }); it("can resolve uri with custom resolver", async () => { const ensUri = new Uri(`ens/test`); const redirectUri = new Uri(`ens/redirect.eth`); - const client = await getClient({ + const client = new PolywrapClient({ resolver: { tryResolveUri: async (uri: Uri) => { if (uri.uri === ensUri.uri) { @@ -360,7 +374,7 @@ describe("URI resolution", () => { const fromUri = new Uri(`ens/from.eth`); const redirectUri = new Uri(`ens/to.eth`); - const client = await getClient(); + const client = new PolywrapClient(); const result = await client.tryResolveUri({ uri: fromUri, @@ -381,7 +395,7 @@ describe("URI resolution", () => { }); it("custom wrapper resolver does not cause infinite recursion when resolved at runtime", async () => { - const client = await getClient({ + const client = new PolywrapClient({ interfaces: [ { interface: coreInterfaceUris.uriResolver.uri, @@ -391,7 +405,10 @@ describe("URI resolution", () => { }); const resolutionContext = new UriResolutionContext(); - const result = await client.tryResolveUri({ uri: "ens/test.eth", resolutionContext }); + const result = await client.tryResolveUri({ + uri: "ens/test.eth", + resolutionContext, + }); await expectResultWithHistory( result, @@ -402,8 +419,8 @@ describe("URI resolution", () => { "custom wrapper resolver does not cause infinite recursion when resolved at runtime" ); - expect([ - "wrap://ens/test.eth" - ]).toEqual(resolutionContext.getResolutionPath().map(x => x.uri)); + expect(["wrap://ens/test.eth"]).toEqual( + resolutionContext.getResolutionPath().map((x) => x.uri) + ); }); }); diff --git a/packages/js/client/src/__tests__/utils/mockPluginRegistration.ts b/packages/js/client/src/__tests__/utils/mockPluginRegistration.ts new file mode 100644 index 0000000000..5eb003fc0a --- /dev/null +++ b/packages/js/client/src/__tests__/utils/mockPluginRegistration.ts @@ -0,0 +1,13 @@ +import { toUri, Uri } from "@polywrap/core-js"; +import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; +import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; + +export const mockPluginRegistration = (uri: string | Uri) => { + return { + uri: toUri(uri), + package: new PluginPackage( + {} as WrapManifest, + ({} as unknown) as PluginModule<{}> + ), + }; +}; diff --git a/packages/js/uri-resolvers/src/packages/PackageResolver.ts b/packages/js/uri-resolvers/src/packages/PackageResolver.ts index fc0bd24aea..8816f13d12 100644 --- a/packages/js/uri-resolvers/src/packages/PackageResolver.ts +++ b/packages/js/uri-resolvers/src/packages/PackageResolver.ts @@ -1,20 +1,22 @@ import { Uri, - IUriResolver, IWrapPackage, UriPackageOrWrapper, UriResolutionResult, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; +import { ResolverWithHistory } from "../helpers"; -export class PackageResolver implements IUriResolver { - constructor(private uri: Uri, private wrapPackage: IWrapPackage) {} - - public get name(): string { - return `Package (${this.uri.uri})`; +export class PackageResolver extends ResolverWithHistory { + constructor(private uri: Uri, private wrapPackage: IWrapPackage) { + super(); } - async tryResolveUri(uri: Uri): Promise> { + protected getStepDescription = (): string => `Package (${this.uri.uri})`; + + protected async _tryResolveUri( + uri: Uri + ): Promise> { if (uri.uri !== this.uri.uri) { return UriResolutionResult.ok(uri); } diff --git a/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts b/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts index 624c15f342..dcba56497e 100644 --- a/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts +++ b/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts @@ -1,20 +1,22 @@ import { Uri, - IUriResolver, UriPackageOrWrapper, UriResolutionResult, Wrapper, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; +import { ResolverWithHistory } from "../helpers"; -export class WrapperResolver implements IUriResolver { - constructor(private uri: Uri, private wrapper: Wrapper) {} - - public get name(): string { - return `Wrapper (${this.uri.uri})`; +export class WrapperResolver extends ResolverWithHistory { + constructor(private uri: Uri, private wrapper: Wrapper) { + super(); } - async tryResolveUri(uri: Uri): Promise> { + protected getStepDescription = (): string => `Package (${this.uri.uri})`; + + protected async _tryResolveUri( + uri: Uri + ): Promise> { if (uri.uri !== this.uri.uri) { return UriResolutionResult.ok(uri); } From 2c2ef6de2ccd1a51aabde4831822d2ec94b3d66b Mon Sep 17 00:00:00 2001 From: nerfZael Date: Tue, 20 Sep 2022 17:00:26 +0200 Subject: [PATCH 019/126] wip updated tests to not use plugins in client config directly --- .../__tests__/core/interface-impls.spec.ts | 122 ++--------------- .../src/__tests__/core/plugin-wrapper.spec.ts | 126 +++--------------- .../client/src/__tests__/core/sanity.spec.ts | 17 --- .../src/__tests__/core/wasm-wrapper.spec.ts | 69 +++++----- .../js/client/src/__tests__/e2e/env.spec.ts | 18 ++- .../src/__tests__/e2e/memory-storage.ts | 9 +- .../client/src/__tests__/e2e/wasm-as.spec.ts | 44 +++--- .../utils/getClientWithEnsAndIpfs.ts | 34 +++++ 8 files changed, 126 insertions(+), 313 deletions(-) create mode 100644 packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts diff --git a/packages/js/client/src/__tests__/core/interface-impls.spec.ts b/packages/js/client/src/__tests__/core/interface-impls.spec.ts index 080728d408..f38a146638 100644 --- a/packages/js/client/src/__tests__/core/interface-impls.spec.ts +++ b/packages/js/client/src/__tests__/core/interface-impls.spec.ts @@ -1,7 +1,7 @@ -import { coreInterfaceUris, Uri, PluginModule, PolywrapClient } from "../.."; -import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; -import { getClient } from "../utils/getClient"; +import { coreInterfaceUris, Uri, PolywrapClient } from "../.."; import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { mockPluginRegistration } from "../utils/mockPluginRegistration"; jest.setTimeout(200000); @@ -51,7 +51,7 @@ describe("interface-impls", () => { const implementation3Uri = "wrap://ens/some-implementation3.eth"; const implementation4Uri = "wrap://ens/some-implementation4.eth"; - const client = await getClient({ + const client = new PolywrapClient({ redirects: [ { from: interface1Uri, @@ -66,15 +66,9 @@ describe("interface-impls", () => { to: implementation3Uri, }, ], - plugins: [ - { - uri: implementation4Uri, - plugin: { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest, - }, - }, - ], + resolver: buildUriResolver([ + mockPluginRegistration(implementation4Uri), + ]), interfaces: [ { interface: interface1Uri, @@ -116,84 +110,6 @@ describe("interface-impls", () => { expect(implementations3).toEqual([implementation3Uri, implementation4Uri]); }); - it("should not register plugins with an interface uri (without default plugins)", () => { - const interface1Uri = "wrap://ens/some-interface1.eth"; - const interface2Uri = "wrap://ens/some-interface2.eth"; - const interface3Uri = "wrap://ens/some-interface3.eth"; - - const implementationUri = "wrap://ens/some-implementation.eth"; - - expect(() => { - new PolywrapClient({ - plugins: [ - { - uri: interface1Uri, - plugin: { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest, - }, - }, - { - uri: interface2Uri, - plugin: { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest, - }, - }, - ], - interfaces: [ - { - interface: interface1Uri, - implementations: [implementationUri], - }, - { - interface: interface2Uri, - implementations: [implementationUri], - }, - { - interface: interface3Uri, - implementations: [implementationUri], - }, - ], - }); - }).toThrow( - `Plugins can't use interfaces for their URI. Invalid plugins: ${[ - interface1Uri, - interface2Uri, - ]}` - ); - }); - - it("should not register plugins with an interface uri (with default plugins)", async () => { - const interfaceUri = "wrap://ens/some-interface.eth"; - - const implementationUri = "wrap://ens/some-implementation.eth"; - - await expect(async () => { - await getClient({ - plugins: [ - { - uri: interfaceUri, - plugin: { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest, - }, - }, - ], - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri], - }, - ], - }); - }).rejects.toThrow( - `Plugins can't use interfaces for their URI. Invalid plugins: ${[ - interfaceUri, - ]}` - ); - }); - it("should merge user-defined interface implementations with each other", async () => { const interfaceUri = "wrap://ens/interface.eth"; const implementationUri1 = "wrap://ens/implementation1.eth"; @@ -269,15 +185,9 @@ describe("interface-impls", () => { const implementation2Uri = "wrap://ens/some-implementation2.eth"; const client = new PolywrapClient({ - plugins: [ - { - uri: implementation1Uri, - plugin: { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest, - }, - }, - ], + resolver: buildUriResolver([ + mockPluginRegistration(implementation1Uri), + ]), interfaces: [ { interface: interfaceUri, @@ -301,15 +211,9 @@ describe("interface-impls", () => { const implementation2Uri = "wrap://ens/some-implementation2.eth"; const client = new PolywrapClient({ - plugins: [ - { - uri: implementation1Uri, - plugin: { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest, - }, - }, - ], + resolver: buildUriResolver([ + mockPluginRegistration(implementation1Uri), + ]), interfaces: [ { interface: interfaceUri, diff --git a/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts b/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts index a9200e350b..b9ce30c407 100644 --- a/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts @@ -1,21 +1,10 @@ -import { PolywrapClient, PluginModule } from "../.."; -import { getClient } from "../utils/getClient"; +import { PolywrapClient } from "../.."; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; - +import { PluginPackage, PluginModule } from "@polywrap/plugin-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; jest.setTimeout(200000); -const defaultPlugins = [ - "wrap://ens/ipfs.polywrap.eth", - "wrap://ens/ens-resolver.polywrap.eth", - "wrap://ens/ethereum.polywrap.eth", - "wrap://ens/http.polywrap.eth", - "wrap://ens/js-logger.polywrap.eth", - "wrap://ens/fs.polywrap.eth", - "wrap://ens/fs-resolver.polywrap.eth", - "wrap://ens/ipfs-resolver.polywrap.eth", -]; - describe("plugin-wrapper", () => { const mockMapPlugin = () => { interface Config extends Record { @@ -38,44 +27,24 @@ describe("plugin-wrapper", () => { } } - return { - factory: () => new MockMapPlugin({ + return new PluginPackage( + {} as WrapManifest, + new MockMapPlugin({ map: new Map().set("a", 1).set("b", 2) - }), - manifest: {} as WrapManifest, - }; + }) + ); }; - test("plugin registration - with default plugins", () => { - const implementationUri = "wrap://ens/some-implementation.eth"; - - const client = new PolywrapClient({ - plugins: [ - { - uri: implementationUri, - plugin: { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest, - }, - }, - ], - }); - - const pluginUris = client.getPlugins().map((x) => x.uri.uri); - - expect(pluginUris).toEqual(defaultPlugins.concat([implementationUri])); - }); - it("plugin map types", async () => { const implementationUri = "wrap://ens/some-implementation.eth"; const mockPlugin = mockMapPlugin(); - const client = await getClient({ - plugins: [ - { - uri: implementationUri, - plugin: mockPlugin, + const client = new PolywrapClient({ + resolver: buildUriResolver([ + { + uri: implementationUri, + package: mockPlugin }, - ], + ]), }); const getResult = await client.invoke({ @@ -104,73 +73,8 @@ describe("plugin-wrapper", () => { ); }); - test("plugin registration - with plugin override", async () => { - const pluginUriToOverride = defaultPlugins[0]; - - const pluginPackage = { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest, - }; - - const client = new PolywrapClient({ - plugins: [ - { - uri: pluginUriToOverride, - plugin: pluginPackage, - }, - ], - }); - - const pluginUris = client.getPlugins().map((x) => x.uri.uri); - - expect(pluginUris).toEqual(defaultPlugins); - - const registeredPlugin = client - .getPlugins() - .find((x) => x.uri.uri === pluginUriToOverride); - - expect(registeredPlugin?.plugin).toEqual(pluginPackage); - }); - - test("plugin registration - with multiple plugin overrides", async () => { - const pluginUriToOverride = defaultPlugins[0]; - - const pluginPackage1 = { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest, - }; - - const pluginPackage2 = { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest, - }; - - const client = new PolywrapClient({ - plugins: [ - { - uri: pluginUriToOverride, - plugin: pluginPackage1, - }, - { - uri: pluginUriToOverride, - plugin: pluginPackage2, - }, - ], - }); - - const pluginUris = client.getPlugins().map((x) => x.uri.uri); - - expect(pluginUris).toEqual(defaultPlugins); - - const registeredPlugin = client - .getPlugins() - .find((x) => x.uri.uri === pluginUriToOverride); - - expect(registeredPlugin?.plugin).toEqual(pluginPackage2); - }); - test("get manifest should fetch wrap manifest from plugin", async () => { - const client = await getClient() + const client = new PolywrapClient() const manifest = await client.getManifest("ens/ipfs.polywrap.eth") expect(manifest.type).toEqual("plugin") expect(manifest.name).toEqual("Ipfs") diff --git a/packages/js/client/src/__tests__/core/sanity.spec.ts b/packages/js/client/src/__tests__/core/sanity.spec.ts index 3a2d88f09e..2caa914676 100644 --- a/packages/js/client/src/__tests__/core/sanity.spec.ts +++ b/packages/js/client/src/__tests__/core/sanity.spec.ts @@ -24,19 +24,6 @@ describe("sanity", () => { }, ]); - const expectedPlugins = [ - new Uri("wrap://ens/ipfs.polywrap.eth"), - new Uri("wrap://ens/ens-resolver.polywrap.eth"), - new Uri("wrap://ens/ethereum.polywrap.eth"), - new Uri("wrap://ens/http.polywrap.eth"), - new Uri("wrap://ens/js-logger.polywrap.eth"), - new Uri("wrap://ens/fs.polywrap.eth"), - new Uri("wrap://ens/fs-resolver.polywrap.eth"), - new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), - ]; - const actualPlugins = client.getPlugins().map(x => x.uri); - expect(expectedPlugins).toStrictEqual(actualPlugins); - expect(client.getInterfaces()).toStrictEqual([ { interface: coreInterfaceUris.uriResolver, @@ -55,15 +42,12 @@ describe("sanity", () => { test("client noDefaults flag works as expected", async () => { let client = new PolywrapClient(); - expect(client.getPlugins().length !== 0).toBeTruthy(); expect(client.getUriResolver()).toBeTruthy(); client = new PolywrapClient({}, {}); - expect(client.getPlugins().length !== 0).toBeTruthy(); expect(client.getUriResolver()).toBeTruthy(); client = new PolywrapClient({}, { noDefaults: false }); - expect(client.getPlugins().length !== 0).toBeTruthy(); expect(client.getUriResolver()).toBeTruthy(); client = new PolywrapClient( @@ -71,7 +55,6 @@ describe("sanity", () => { { noDefaults: true } ); - expect(client.getPlugins().length === 0).toBeTruthy(); expect(client.getUriResolver()).toBeTruthy(); let message = ""; diff --git a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts index d6a603cf83..1bc504cd71 100644 --- a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts @@ -2,10 +2,12 @@ import { buildWrapper } from "@polywrap/test-env-js"; import { msgpackDecode } from "@polywrap/msgpack-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import fs from "fs"; -import { Uri, PluginModule, Subscription } from "../.."; +import { Uri, Subscription, PolywrapClient, IWrapPackage } from "../.."; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; -import { getClient } from "../utils/getClient"; import { makeMemoryStoragePlugin } from "../e2e/memory-storage"; +import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { mockPluginRegistration } from "../utils/mockPluginRegistration"; jest.setTimeout(200000); @@ -23,21 +25,18 @@ describe("wasm-wrapper", () => { await buildWrapper(simpleMemoryWrapperPath); }); - const mockPlugin = () => { + const mockPlugin = (): IWrapPackage => { class MockPlugin extends PluginModule<{}> { simpleMethod(_: unknown): string { return "plugin response"; } } - return { - factory: () => new MockPlugin({}), - manifest: {} as WrapManifest, - }; + return new PluginPackage({} as WrapManifest, new MockPlugin({})); }; test("can invoke with string URI", async () => { - const client = await getClient(); + const client = new PolywrapClient(); const result = await client.invoke({ uri: simpleWrapperUri.uri, method: "simpleMethod", @@ -53,7 +52,7 @@ describe("wasm-wrapper", () => { }); test("can invoke with typed URI", async () => { - const client = await getClient(); + const client = new PolywrapClient(); const result = await client.invoke({ uri: simpleWrapperUri, method: "simpleMethod", @@ -69,7 +68,7 @@ describe("wasm-wrapper", () => { }); test("invoke with decode defaulted to true works as expected", async () => { - const client = await getClient(); + const client = new PolywrapClient(); const result = await client.invoke({ uri: simpleWrapperUri.uri, method: "simpleMethod", @@ -85,7 +84,7 @@ describe("wasm-wrapper", () => { }); test("invoke with decode set to false works as expected", async () => { - const client = await getClient(); + const client = new PolywrapClient(); const result = await client.invoke({ uri: simpleWrapperUri, method: "simpleMethod", @@ -102,19 +101,19 @@ describe("wasm-wrapper", () => { }); it("should invoke wrapper with custom redirects", async () => { - const client = await getClient({ + const client = new PolywrapClient({ redirects: [ { from: simpleWrapperUri.uri, to: "wrap://ens/mock.polywrap.eth", }, ], - plugins: [ + resolver: buildUriResolver([ { uri: "wrap://ens/mock.polywrap.eth", - plugin: mockPlugin(), + package: mockPlugin(), }, - ], + ]), }); const result = await client.invoke({ @@ -130,13 +129,13 @@ describe("wasm-wrapper", () => { }); it("should allow query time redirects", async () => { - const client = await getClient({ - plugins: [ + const client = new PolywrapClient({ + resolver: buildUriResolver([ { uri: "wrap://ens/mock.polywrap.eth", - plugin: mockPlugin(), + package: mockPlugin(), }, - ], + ]), }); const redirects = [ @@ -162,7 +161,7 @@ describe("wasm-wrapper", () => { }); test("get file from wrapper", async () => { - const client = await getClient(); + const client = new PolywrapClient(); const expectedManifest = new Uint8Array( await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.info`) @@ -190,16 +189,10 @@ describe("wasm-wrapper", () => { expect(receivedWasmModule).toEqual(expectedWasmModule); - const pluginClient = await getClient({ - plugins: [ - { - uri: "ens/mock-plugin.eth", - plugin: { - factory: () => ({} as PluginModule<{}>), - manifest: {} as WrapManifest - }, - }, - ], + const pluginClient = new PolywrapClient({ + resolver: buildUriResolver([ + mockPluginRegistration("ens/mock-plugin.eth") + ]), }); await expect(() => @@ -210,13 +203,13 @@ describe("wasm-wrapper", () => { }); test("subscribe", async () => { - const client = await getClient({ - plugins: [ + const client = new PolywrapClient({ + resolver: buildUriResolver([ { uri: memoryStoragePluginUri, - plugin: makeMemoryStoragePlugin({}), + package: makeMemoryStoragePlugin({}), }, - ], + ]), }); // test subscription @@ -259,13 +252,13 @@ describe("wasm-wrapper", () => { }); test("subscription early stop", async () => { - const client = await getClient({ - plugins: [ + const client = new PolywrapClient({ + resolver: buildUriResolver([ { uri: memoryStoragePluginUri, - plugin: makeMemoryStoragePlugin({}), + package: makeMemoryStoragePlugin({}), }, - ], + ]), }); // test subscription diff --git a/packages/js/client/src/__tests__/e2e/env.spec.ts b/packages/js/client/src/__tests__/e2e/env.spec.ts index dbb24a125a..b25800033b 100644 --- a/packages/js/client/src/__tests__/e2e/env.spec.ts +++ b/packages/js/client/src/__tests__/e2e/env.spec.ts @@ -1,6 +1,7 @@ -import { PluginModule } from "@polywrap/core-js"; +import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; -import { getClient } from "../utils/getClient"; +import { PolywrapClient } from "../../PolywrapClient"; jest.setTimeout(200000); @@ -16,23 +17,20 @@ describe("env", () => { } } - return { - factory: () => new MockEnvPlugin({}), - manifest: {} as WrapManifest, - }; + return new PluginPackage({} as WrapManifest, new MockEnvPlugin({})); }; describe("env client types", () => { test("plugin env types", async () => { const implementationUri = "wrap://ens/some-implementation.eth"; const envPlugin = mockEnvPlugin(); - const client = await getClient({ - plugins: [ + const client = new PolywrapClient({ + resolver: buildUriResolver([ { uri: implementationUri, - plugin: envPlugin, + package: envPlugin, }, - ], + ]), envs: [ { uri: implementationUri, diff --git a/packages/js/client/src/__tests__/e2e/memory-storage.ts b/packages/js/client/src/__tests__/e2e/memory-storage.ts index 11130cce3e..aa250766e2 100644 --- a/packages/js/client/src/__tests__/e2e/memory-storage.ts +++ b/packages/js/client/src/__tests__/e2e/memory-storage.ts @@ -1,4 +1,5 @@ -import { Client, PluginFactory, PluginModule } from "@polywrap/core-js"; +import { Client } from "@polywrap/core-js"; +import { PluginFactory, PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; type NoConfig = Record; @@ -23,9 +24,5 @@ export const makeMemoryStoragePlugin: PluginFactory = () => { } } - return { - factory: () => new MemoryStoragePlugin({}), - manifest: {} as WrapManifest, - }; + return new PluginPackage({} as WrapManifest, new MemoryStoragePlugin({})); }; - diff --git a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts index 76f46f740b..a71b146903 100644 --- a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts +++ b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts @@ -7,8 +7,8 @@ import { runCLI, } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { getClientWithEnsAndIpfs } from "../utils/getClientWithEnsAndIpfs"; -import { getClient } from "../utils/getClient"; +import { PolywrapClient } from "../../PolywrapClient"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; jest.setTimeout(200000); @@ -27,13 +27,13 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - const client = await getClient({ - plugins: [ + const client = new PolywrapClient({ + resolver: buildUriResolver([ { uri: "wrap://ens/memory-storage.polywrap.eth", - plugin: makeMemoryStoragePlugin({}), + package: makeMemoryStoragePlugin({}), }, - ], + ]), }); await TestCases.runAsyncifyTest(client, wrapperUri); @@ -45,7 +45,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBigIntTypeTest(await getClient(), wrapperUri); + await TestCases.runBigIntTypeTest(new PolywrapClient(), wrapperUri); }); it("bignumber-type", async () => { @@ -54,7 +54,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBigNumberTypeTest(await getClient(), wrapperUri); + await TestCases.runBigNumberTypeTest(new PolywrapClient(), wrapperUri); }); it("bytes-type", async () => { @@ -63,7 +63,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBytesTypeTest(await getClient(), wrapperUri); + await TestCases.runBytesTypeTest(new PolywrapClient(), wrapperUri); }); it("enum-types", async () => { @@ -72,7 +72,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runEnumTypesTest(await getClient(), wrapperUri); + await TestCases.runEnumTypesTest(new PolywrapClient(), wrapperUri); }); it("map-type", async () => { @@ -81,11 +81,11 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runMapTypeTest(await getClient(), wrapperUri); + await TestCases.runMapTypeTest(new PolywrapClient(), wrapperUri); }); it("reserved-words", async () => { - const client = await getClient(); + const client = new PolywrapClient(); const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/reserved-words`; const wrapperUri = `fs/${wrapperPath}/build`; @@ -120,7 +120,7 @@ describe("wasm-as test cases", () => { await buildWrapper(interfacePath); await buildWrapper(implementationPath); - const client = await getClient({ + const client = new PolywrapClient({ interfaces: [ { interface: interfaceUri, @@ -144,7 +144,7 @@ describe("wasm-as test cases", () => { await buildWrapper(implementationPath); - const client = await getClient({ + const client = new PolywrapClient({ interfaces: [ { interface: interfaceUri, @@ -174,7 +174,7 @@ describe("wasm-as test cases", () => { await buildWrapper(implementationPath); - const client = await getClient({ + const client = new PolywrapClient({ interfaces: [ { interface: interfaceUri, @@ -213,7 +213,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runInvalidTypesTest(await getClient(), wrapperUri); + await TestCases.runInvalidTypesTest(new PolywrapClient(), wrapperUri); }); it("JSON-type", async () => { @@ -222,7 +222,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runJsonTypeTest(await getClient(), wrapperUri); + await TestCases.runJsonTypeTest(new PolywrapClient(), wrapperUri); }); it("large-types", async () => { @@ -231,7 +231,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runLargeTypesTest(await getClient(), wrapperUri); + await TestCases.runLargeTypesTest(new PolywrapClient(), wrapperUri); }); it("number-types under and overflows", async () => { @@ -240,7 +240,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runNumberTypesTest(await getClient(), wrapperUri); + await TestCases.runNumberTypesTest(new PolywrapClient(), wrapperUri); }); it("object-types", async () => { @@ -249,7 +249,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runObjectTypesTest(await getClient(), wrapperUri); + await TestCases.runObjectTypesTest(new PolywrapClient(), wrapperUri); }); it("simple-storage", async () => { @@ -271,7 +271,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); await TestCases.runSimpleEnvTest( - await getClient({ + new PolywrapClient({ envs: [ { uri: wrapperUri, @@ -297,7 +297,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); await TestCases.runComplexEnvs( - await getClient({ + new PolywrapClient({ envs: [ { uri: wrapperUri, diff --git a/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts b/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts new file mode 100644 index 0000000000..80d3223b98 --- /dev/null +++ b/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts @@ -0,0 +1,34 @@ +import { PolywrapClient, PolywrapClientConfig } from "../.."; +import { ensAddresses, providers } from "@polywrap/test-env-js"; +import { Connection, Connections, ethereumPlugin } from "@polywrap/ethereum-plugin-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; + +export const getClientWithEnsAndIpfs = async ( + config?: Partial +) => { + const connections: Connections = new Connections({ + networks: { + testnet: new Connection({ + provider: providers.ethereum, + }), + }, + defaultNetwork: "testnet", + }); + return new PolywrapClient( + { + resolver: buildUriResolver([ + { uri: uris.ethereum, + package: ethereumPlugin({ connections }) + }, + ]) + ethereum: , + ipfs: { provider: providers.ipfs }, + ens: { + addresses: { + testnet: ensAddresses.ensAddress, + }, + }, + }, + config + ); +}; \ No newline at end of file From c6047fd6375b7ce25401290ab83074f77ac758e6 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 23 Sep 2022 12:44:53 +0200 Subject: [PATCH 020/126] updated getClientWithEnsAndIpfs to not use defaults --- packages/js/client/package.json | 7 ++ .../client/src/__tests__/e2e/wasm-as.spec.ts | 1 + .../utils/getClientWithEnsAndIpfs.ts | 86 +++++++++++++---- yarn.lock | 94 ++++++++++--------- 4 files changed, 126 insertions(+), 62 deletions(-) diff --git a/packages/js/client/package.json b/packages/js/client/package.json index 18c3b788b8..f3fdfd3c85 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -35,6 +35,13 @@ "uuid": "8.3.2" }, "devDependencies": { + "@polywrap/ethereum-plugin-js": "0.7.0", + "@polywrap/ipfs-plugin-js": "0.7.0", + "@polywrap/ens-resolver-plugin-js": "0.7.0", + "@polywrap/ipfs-resolver-plugin-js": "0.7.0", + "@polywrap/fs-plugin-js": "0.7.0", + "@polywrap/uri-resolver-extensions-js": "0.7.0", + "@polywrap/fs-resolver-plugin-js": "0.7.0", "@polywrap/os-js": "0.7.0", "@polywrap/test-cases": "0.7.0", "@polywrap/test-env-js": "0.7.0", diff --git a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts index a71b146903..4aabf77c74 100644 --- a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts +++ b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts @@ -9,6 +9,7 @@ import { import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { PolywrapClient } from "../../PolywrapClient"; import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { getClientWithEnsAndIpfs } from "../utils/getClientWithEnsAndIpfs"; jest.setTimeout(200000); diff --git a/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts b/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts index 80d3223b98..47690116dc 100644 --- a/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts +++ b/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts @@ -1,7 +1,22 @@ -import { PolywrapClient, PolywrapClientConfig } from "../.."; +import { coreInterfaceUris, PolywrapClient, PolywrapClientConfig } from "../.."; import { ensAddresses, providers } from "@polywrap/test-env-js"; -import { Connection, Connections, ethereumPlugin } from "@polywrap/ethereum-plugin-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { + Connection, + Connections, + ethereumPlugin, +} from "@polywrap/ethereum-plugin-js"; +import { + buildUriResolver, + RecursiveResolver, + PackageToWrapperCacheResolver, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; +import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; +import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; +import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; +import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; +import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; export const getClientWithEnsAndIpfs = async ( config?: Partial @@ -14,21 +29,52 @@ export const getClientWithEnsAndIpfs = async ( }, defaultNetwork: "testnet", }); - return new PolywrapClient( - { - resolver: buildUriResolver([ - { uri: uris.ethereum, - package: ethereumPlugin({ connections }) - }, - ]) - ethereum: , - ipfs: { provider: providers.ipfs }, - ens: { - addresses: { - testnet: ensAddresses.ensAddress, - }, - }, - }, - config - ); + return new PolywrapClient({ + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: [ + "wrap://ens/ipfs-resolver.polywrap.eth", + "wrap://ens/ens-resolver.polywrap.eth", + "wrap://ens/fs-resolver.polywrap.eth", + ] + } + ], + resolver: new RecursiveResolver( + new PackageToWrapperCacheResolver( + new WrapperCache(), + buildUriResolver([ + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ connections }), + }, + { + uri: "wrap://ens/ens-resolver.polywrap.eth", + package: ensResolverPlugin({ + addresses: { + testnet: ensAddresses.ensAddress, + }, + }), + }, + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({ provider: providers.ipfs }), + }, + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + package: ipfsResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + new ExtendableUriResolver() + ]) + ) + ), + }, { noDefaults: true }); }; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 3baf5bbac6..57002cd1cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3369,9 +3369,9 @@ integrity sha512-Hzl8soGpmyzja9w3kiFFcYJ7n5HNETpplY6cb67KR4QPlxp4FTTresO06qXHgHDhyIInmbLJXuwARjjpsKYGuQ== "@sinclair/typebox@^0.24.1": - version "0.24.41" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.41.tgz#45470b8bae32a28f1e0501066d0bacbd8b772804" - integrity sha512-TJCgQurls4FipFvHeC+gfAzb+GGstL0TDwYJKQVtTeSvJIznWzP7g3bAd5gEBlr8+bIxqnWS9VGVWREDhmE8jA== + version "0.24.42" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.42.tgz#a74b608d494a1f4cc079738e050142a678813f52" + integrity sha512-d+2AtrHGyWek2u2ITF0lHRIv6Tt7X0dEHW+0rP+5aDCEjC3fiN2RBjrLD0yU0at52BcZbRGxLbAtXiR0hFCjYw== "@sinonjs/commons@^1.7.0": version "1.8.3" @@ -5379,7 +5379,7 @@ browserslist@4.10.0: node-releases "^1.1.52" pkg-up "^3.1.0" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.3, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: version "4.21.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== @@ -5647,9 +5647,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: - version "1.0.30001400" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001400.tgz#3038bee70d8b875604cd8833cb0e5e254ee0281a" - integrity sha512-Mv659Hn65Z4LgZdJ7ge5JTVbE3rqbJaaXgW5LEI9/tOaXclfIZ8DW7D7FCWWWmWiiPS7AC48S8kf3DApSxQdgA== + version "1.0.30001409" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz#6135da9dcab34cd9761d9cdb12a68e6740c5e96e" + integrity sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ== capture-exit@^2.0.0: version "2.0.0" @@ -6367,16 +6367,16 @@ copyfiles@2.4.1: yargs "^16.1.0" core-js-compat@^3.25.1, core-js-compat@^3.6.2: - version "3.25.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.1.tgz#6f13a90de52f89bbe6267e5620a412c7f7ff7e42" - integrity sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw== + version "3.25.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138" + integrity sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ== dependencies: - browserslist "^4.21.3" + browserslist "^4.21.4" core-js-pure@^3.25.1: - version "3.25.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.1.tgz#79546518ae87cc362c991d9c2d211f45107991ee" - integrity sha512-7Fr74bliUDdeJCBMxkkIuQ4xfxn/SwrVg+HkJUAoNEXVqYLv55l6Af0dJ5Lq2YBUW9yKqSkLXaS5SYPK6MGa/A== + version "3.25.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.2.tgz#44a4fd873bdd4fecf6ca11512bcefedbe87e744a" + integrity sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA== core-js@^2.4.0: version "2.6.12" @@ -6384,9 +6384,9 @@ core-js@^2.4.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.5.0: - version "3.25.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.1.tgz#5818e09de0db8956e16bf10e2a7141e931b7c69c" - integrity sha512-sr0FY4lnO1hkQ4gLDr24K0DGnweGO1QwSj5BpfQjpSJPdqWalja4cTps29Y/PJVG/P7FYlPDkH3hO+Tr0CvDgQ== + version "3.25.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.2.tgz#2d3670c1455432b53fa780300a6fc1bd8304932c" + integrity sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A== core-util-is@1.0.2: version "1.0.2" @@ -6851,9 +6851,9 @@ decamelize@^1.1.0, decamelize@^1.2.0: integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decimal.js@^10.2.1: - version "10.4.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.0.tgz#97a7448873b01e92e5ff9117d89a7bca8e63e0fe" - integrity sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg== + version "10.4.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.1.tgz#be75eeac4a2281aace80c1a8753587c27ef053e7" + integrity sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw== decode-uri-component@^0.2.0: version "0.2.0" @@ -7314,9 +7314,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: - version "1.4.251" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.251.tgz#8b62448f3c591f0d32488df09454dda72dec96d5" - integrity sha512-k4o4cFrWPv4SoJGGAydd07GmlRVzmeDIJ6MaEChTUjk4Dmomn189tCicSzil2oyvbPoGgg2suwPDNWq4gWRhoQ== + version "1.4.258" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.258.tgz#44c5456f487be082f038282fbcfd7b06ae99720d" + integrity sha512-vutF4q0dTUXoAFI7Vbtdwen/BJVwPgj8GRg/SElOodfH7VTX+svUe62A5BG41QRQGk5HsZPB0M++KH1lAlOt0A== elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" @@ -7443,21 +7443,21 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0, es-abstract@^1.20.1: - version "1.20.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.2.tgz#8495a07bc56d342a3b8ea3ab01bd986700c2ccb3" - integrity sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ== + version "1.20.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.3.tgz#90b143ff7aedc8b3d189bcfac7f1e3e3f81e9da1" + integrity sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.1.2" + get-intrinsic "^1.1.3" get-symbol-description "^1.0.0" has "^1.0.3" has-property-descriptors "^1.0.0" has-symbols "^1.0.3" internal-slot "^1.0.3" - is-callable "^1.2.4" + is-callable "^1.2.6" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" @@ -7467,6 +7467,7 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19 object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" string.prototype.trimend "^1.0.5" string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" @@ -8265,9 +8266,9 @@ faye-websocket@~0.11.1: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" @@ -8708,7 +8709,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.2: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== @@ -9883,7 +9884,7 @@ is-buffer@^1.0.2, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.6.tgz#fd6170b0b8c7e2cc73de342ef8284a2202023c44" integrity sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q== @@ -12718,9 +12719,9 @@ multiformats@9.7.0: integrity sha512-uv/tcgwk0yN4DStopnBN4GTgvaAlYdy6KnZpuzEPFOYQd71DYFJjs0MN1ERElAflrZaYyGBWXyGxL5GgrxIx0Q== multiformats@^9.4.2: - version "9.8.1" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.8.1.tgz#0e5f2910cf0c34f55adf0602f920775f9622552a" - integrity sha512-Cu7NfUYtCV+WN7w59WsRRF138S+um4tTo11ScYsWbNgWyCEGOu8wID1e5eMJs91gFZ0I7afodkkdxCF8NGkqZQ== + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== multihashes@^0.4.15, multihashes@~0.4.15, multihashes@~0.4.19: version "0.4.21" @@ -15858,6 +15859,15 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -17386,9 +17396,9 @@ typescript@^4.0: integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== uglify-js@^3.1.4: - version "3.17.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.0.tgz#55bd6e9d19ce5eef0d5ad17cd1f587d85b180a85" - integrity sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg== + version "3.17.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.1.tgz#1258a2a488147a8266b3034499ce6959978ba7f4" + integrity sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q== uid-number@0.0.6: version "0.0.6" @@ -17792,9 +17802,9 @@ vscode-nls@^5.0.0: integrity sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng== vscode-uri@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.4.tgz#703c6dd7c0b727ee1c34a1287434138fb52d054f" - integrity sha512-aEmKD6H8Sg8gaQAUrnadG0BMeWXtiWhRsj1a94n2FYsMkDpgnK7BRVzZjOUYIvkv2B+bp5Bmt4ImZCpYbnJwkg== + version "3.0.6" + resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.6.tgz#5e6e2e1a4170543af30151b561a41f71db1d6f91" + integrity sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ== w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: version "1.0.2" From 850a80bf1745400e63c4f420b6a521532c0da018 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 23 Sep 2022 12:49:04 +0200 Subject: [PATCH 021/126] showing clean uri history on error --- packages/js/client/src/PolywrapClient.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index 2c73b1bc0c..bae8fe3d46 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -628,7 +628,7 @@ export class PolywrapClient implements Client { } else { throw Error( `Error resolving URI "${uri.uri}"\nResolution Stack: ${JSON.stringify( - resolutionContext.getHistory(), + buildCleanUriHistory(resolutionContext.getHistory()), null, 2 )}` @@ -642,7 +642,11 @@ export class PolywrapClient implements Client { throw Error( `Error resolving URI "${uri.uri}"\nURI not found ${ uriPackageOrWrapper.uri.uri - }\nResolution Stack: ${JSON.stringify(history, null, 2)}` + }\nResolution Stack: ${JSON.stringify( + buildCleanUriHistory(resolutionContext.getHistory()), + null, + 2 + )}` ); } From 85a82948b306744919ef3fe91a019d2631e4a8af Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 23 Sep 2022 12:49:27 +0200 Subject: [PATCH 022/126] fixed resolverLike still named resolvable --- .../src/utils/buildUriResolver.ts | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/js/uri-resolvers/src/utils/buildUriResolver.ts b/packages/js/uri-resolvers/src/utils/buildUriResolver.ts index 7cc5ce047a..f6943d6ba4 100644 --- a/packages/js/uri-resolvers/src/utils/buildUriResolver.ts +++ b/packages/js/uri-resolvers/src/utils/buildUriResolver.ts @@ -16,51 +16,51 @@ import { PackageRegistration } from "../helpers/PackageRegistration"; import { WrapperRegistration } from "../helpers/WrapperRegistration"; export const buildUriResolver = ( - resolvable: UriResolverLike, + resolverLike: UriResolverLike, resolverName?: string ): IUriResolver => { - if (Array.isArray(resolvable)) { + if (Array.isArray(resolverLike)) { return new UriResolverAggregator( - (resolvable as UriResolverLike[]).map((x) => + (resolverLike as UriResolverLike[]).map((x) => buildUriResolver(x, resolverName) ), resolverName ) as IUriResolver; - } else if (typeof resolvable === "function") { + } else if (typeof resolverLike === "function") { return new UriResolverAggregator( - resolvable as ( + resolverLike as ( uri: Uri, client: Client ) => Promise>, resolverName ) as IUriResolver; - } else if ((resolvable as Partial).createWrapper) { - const uriPackage = resolvable as IUriPackage; + } else if ((resolverLike as Partial).createWrapper) { + const uriPackage = resolverLike as IUriPackage; return (new PackageResolver( uriPackage.uri, uriPackage.package ) as unknown) as IUriResolver; - } else if ((resolvable as IUriResolver).tryResolveUri !== undefined) { - return resolvable as IUriResolver; + } else if ((resolverLike as IUriResolver).tryResolveUri !== undefined) { + return resolverLike as IUriResolver; } else if ( - (resolvable as PackageRegistration).uri !== undefined && - (resolvable as PackageRegistration).package !== undefined + (resolverLike as PackageRegistration).uri !== undefined && + (resolverLike as PackageRegistration).package !== undefined ) { - const uriPackage = resolvable as PackageRegistration; + const uriPackage = resolverLike as PackageRegistration; return (new PackageResolver( toUri(uriPackage.uri), uriPackage.package ) as unknown) as IUriResolver; } else if ( - (resolvable as WrapperRegistration).uri !== undefined && - (resolvable as WrapperRegistration).wrapper !== undefined + (resolverLike as WrapperRegistration).uri !== undefined && + (resolverLike as WrapperRegistration).wrapper !== undefined ) { - const uriWrapper = resolvable as WrapperRegistration; + const uriWrapper = resolverLike as WrapperRegistration; return (new WrapperResolver( toUri(uriWrapper.uri), uriWrapper.wrapper ) as unknown) as IUriResolver; } else { - throw new Error("Unknown resolvable type"); + throw new Error("Unknown resolver-like type"); } }; From 133f3baa0c03107a519c45a9c3e21fa585a33660 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 23 Sep 2022 12:49:39 +0200 Subject: [PATCH 023/126] changed wrong label --- packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts b/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts index dcba56497e..528a15e0a8 100644 --- a/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts +++ b/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts @@ -12,7 +12,7 @@ export class WrapperResolver extends ResolverWithHistory { super(); } - protected getStepDescription = (): string => `Package (${this.uri.uri})`; + protected getStepDescription = (): string => `Wrapper (${this.uri.uri})`; protected async _tryResolveUri( uri: Uri From e14fc179a5c277f27b5ca3bb3da77948ddd82033 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 23 Sep 2022 13:59:02 +0200 Subject: [PATCH 024/126] using no default client in client and ipfs plugin tests --- .../utils/getClientWithEnsAndIpfs.ts | 103 +++++++++--------- packages/js/plugins/ipfs/jest.config.js | 17 +-- packages/js/plugins/ipfs/package.json | 2 + .../js/plugins/ipfs/src/__tests__/e2e.spec.ts | 17 +-- .../ipfs/src/__tests__/utils/getClientIpfs.ts | 28 +++++ yarn.lock | 6 +- 6 files changed, 95 insertions(+), 78 deletions(-) create mode 100644 packages/js/plugins/ipfs/src/__tests__/utils/getClientIpfs.ts diff --git a/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts b/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts index 47690116dc..459b0f1ebe 100644 --- a/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts +++ b/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts @@ -18,9 +18,7 @@ import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; -export const getClientWithEnsAndIpfs = async ( - config?: Partial -) => { +export const getClientWithEnsAndIpfs = async () => { const connections: Connections = new Connections({ networks: { testnet: new Connection({ @@ -29,52 +27,55 @@ export const getClientWithEnsAndIpfs = async ( }, defaultNetwork: "testnet", }); - return new PolywrapClient({ - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: [ - "wrap://ens/ipfs-resolver.polywrap.eth", - "wrap://ens/ens-resolver.polywrap.eth", - "wrap://ens/fs-resolver.polywrap.eth", - ] - } - ], - resolver: new RecursiveResolver( - new PackageToWrapperCacheResolver( - new WrapperCache(), - buildUriResolver([ - { - uri: "wrap://ens/ethereum.polywrap.eth", - package: ethereumPlugin({ connections }), - }, - { - uri: "wrap://ens/ens-resolver.polywrap.eth", - package: ensResolverPlugin({ - addresses: { - testnet: ensAddresses.ensAddress, - }, - }), - }, - { - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({ provider: providers.ipfs }), - }, - { - uri: "wrap://ens/ipfs-resolver.polywrap.eth", - package: ipfsResolverPlugin({}), - }, - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - package: fileSystemResolverPlugin({}), - }, - new ExtendableUriResolver() - ]) - ) - ), - }, { noDefaults: true }); + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: [ + "wrap://ens/ipfs-resolver.polywrap.eth", + "wrap://ens/ens-resolver.polywrap.eth", + "wrap://ens/fs-resolver.polywrap.eth", + ], + }, + ], + resolver: new RecursiveResolver( + new PackageToWrapperCacheResolver( + new WrapperCache(), + buildUriResolver([ + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ connections }), + }, + { + uri: "wrap://ens/ens-resolver.polywrap.eth", + package: ensResolverPlugin({ + addresses: { + testnet: ensAddresses.ensAddress, + }, + }), + }, + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({ provider: providers.ipfs }), + }, + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + package: ipfsResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + new ExtendableUriResolver(), + ]) + ) + ), + }, + { noDefaults: true } + ); }; \ No newline at end of file diff --git a/packages/js/plugins/ipfs/jest.config.js b/packages/js/plugins/ipfs/jest.config.js index 38888109ca..00d4a54d26 100644 --- a/packages/js/plugins/ipfs/jest.config.js +++ b/packages/js/plugins/ipfs/jest.config.js @@ -1,13 +1,8 @@ module.exports = { - "roots": [ - "/src" - ], - "testMatch": [ - "**/__tests__/**/*.+(ts|tsx|js)", - "**/?(*.)+(spec|test).+(ts|tsx|js)" - ], - "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" + roots: ["/src"], + testMatch: ["**/?(*.)+(spec|test).[jt]s?(x)"], + transform: { + "^.+\\.(ts|tsx)$": "ts-jest", }, - testEnvironment: 'node' -} + testEnvironment: "node", +}; diff --git a/packages/js/plugins/ipfs/package.json b/packages/js/plugins/ipfs/package.json index d50889a1e2..6bf7684e3a 100644 --- a/packages/js/plugins/ipfs/package.json +++ b/packages/js/plugins/ipfs/package.json @@ -28,6 +28,8 @@ "multiformats": "9.7.0" }, "devDependencies": { + "@polywrap/client-js": "0.7.0", + "@polywrap/uri-resolvers-js": "0.7.0", "@polywrap/test-env-js": "0.7.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", diff --git a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts index f732bc6955..37ec980b03 100644 --- a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts @@ -1,20 +1,20 @@ -import { PolywrapClient } from "@polywrap/client-js"; import { initTestEnvironment, providers, stopTestEnvironment, } from "@polywrap/test-env-js"; -import { ipfsPlugin } from ".."; import { IpfsClient, IpfsFileInfo } from "../utils/IpfsClient"; import { Ipfs_Module } from "../wrap"; +import { Client } from "@polywrap/core-js"; +import { getClientIpfs } from "./utils/getClientIpfs"; const createIpfsClient = require("@dorgjelli-test/ipfs-http-client-lite"); jest.setTimeout(300000); describe("IPFS Plugin", () => { - let client: PolywrapClient; + let client: Client; let ipfs: IpfsClient; const sampleFileTextContents = "Hello World!"; @@ -25,16 +25,7 @@ describe("IPFS Plugin", () => { await initTestEnvironment(); ipfs = createIpfsClient(providers.ipfs); - client = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({ - provider: providers.ipfs, - }), - }, - ], - }); + client = getClientIpfs(); let ipfsAddResult = await ipfs.add(sampleFileBuffer); sampleFileIpfsInfo = ipfsAddResult[0]; diff --git a/packages/js/plugins/ipfs/src/__tests__/utils/getClientIpfs.ts b/packages/js/plugins/ipfs/src/__tests__/utils/getClientIpfs.ts new file mode 100644 index 0000000000..d468b1e16b --- /dev/null +++ b/packages/js/plugins/ipfs/src/__tests__/utils/getClientIpfs.ts @@ -0,0 +1,28 @@ +import { ipfsPlugin } from "../.."; +import { providers } from "@polywrap/test-env-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { + buildUriResolver, + RecursiveResolver, + PackageToWrapperCacheResolver, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; + +export const getClientIpfs = (): PolywrapClient => { + return new PolywrapClient( + { + resolver: new RecursiveResolver( + new PackageToWrapperCacheResolver( + new WrapperCache(), + buildUriResolver([ + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({ provider: providers.ipfs }), + }, + ]) + ) + ), + }, + { noDefaults: true } + ); +}; diff --git a/yarn.lock b/yarn.lock index 57002cd1cf..cae5124dfd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5647,9 +5647,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: - version "1.0.30001409" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz#6135da9dcab34cd9761d9cdb12a68e6740c5e96e" - integrity sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ== + version "1.0.30001410" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001410.tgz#b5a86366fbbf439d75dd3db1d21137a73e829f44" + integrity sha512-QoblBnuE+rG0lc3Ur9ltP5q47lbguipa/ncNMyyGuqPk44FxbScWAeEO+k5fSQ8WekdAK4mWqNs1rADDAiN5xQ== capture-exit@^2.0.0: version "2.0.0" From 6cacd1b7a92c049a70a6b21bad2bf1c6890db130 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 23 Sep 2022 13:59:33 +0200 Subject: [PATCH 025/126] fixed test case expected output to expect new plugin-js package --- .../cases/bind/sanity/output/plugin-ts/module.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts index be2a490077..cb81a0a55b 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts @@ -3,11 +3,8 @@ import * as Types from "./types"; -import { - Client, - PluginModule, - MaybeAsync -} from "@polywrap/core-js"; +import { Client, MaybeAsync } from "@polywrap/core-js"; +import { PluginModule } from "@polywrap/plugin-js"; export interface Args_moduleMethod { str: Types.String; From 8beaf8809f0a118a2957a9d3c89a75d8ba99e0d2 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 24 Sep 2022 14:24:37 +0200 Subject: [PATCH 026/126] using new getClientWithEnsAndIpfs in client tests along with mockPlugin helper --- .../js/client/src/__tests__/core/interface-impls.spec.ts | 2 +- .../__tests__/core/uri-resolution/uri-resolution.spec.ts | 4 ++-- .../js/client/src/__tests__/core/wasm-wrapper.spec.ts | 2 +- packages/js/client/src/__tests__/e2e/wasm-as.spec.ts | 7 ++----- packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts | 9 +++------ .../{utils => helpers}/getClientWithEnsAndIpfs.ts | 6 +++--- .../{utils => helpers}/mockPluginRegistration.ts | 0 yarn.lock | 6 +++--- 8 files changed, 15 insertions(+), 21 deletions(-) rename packages/js/client/src/__tests__/{utils => helpers}/getClientWithEnsAndIpfs.ts (94%) rename packages/js/client/src/__tests__/{utils => helpers}/mockPluginRegistration.ts (100%) diff --git a/packages/js/client/src/__tests__/core/interface-impls.spec.ts b/packages/js/client/src/__tests__/core/interface-impls.spec.ts index f38a146638..08fd4aed18 100644 --- a/packages/js/client/src/__tests__/core/interface-impls.spec.ts +++ b/packages/js/client/src/__tests__/core/interface-impls.spec.ts @@ -1,7 +1,7 @@ import { coreInterfaceUris, Uri, PolywrapClient } from "../.."; import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; import { buildUriResolver } from "@polywrap/uri-resolvers-js"; -import { mockPluginRegistration } from "../utils/mockPluginRegistration"; +import { mockPluginRegistration } from "../helpers/mockPluginRegistration"; jest.setTimeout(200000); diff --git a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts index 68a6cb3330..11f56d2305 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts +++ b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts @@ -6,17 +6,17 @@ import { IUriResolutionStep, UriPackageOrWrapper, UriResolutionContext, - UriResolutionResult, } from "@polywrap/core-js"; import { buildCleanUriHistory, buildUriResolver, getUriResolutionPath, + UriResolutionResult, } from "@polywrap/uri-resolvers-js"; import fs from "fs"; import { Result } from "@polywrap/result"; import { PolywrapClient } from "../../../PolywrapClient"; -import { mockPluginRegistration } from "../../utils/mockPluginRegistration"; +import { mockPluginRegistration } from "../../helpers/mockPluginRegistration"; jest.setTimeout(200000); diff --git a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts index 1bc504cd71..659ed408eb 100644 --- a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts @@ -7,7 +7,7 @@ import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { makeMemoryStoragePlugin } from "../e2e/memory-storage"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { buildUriResolver } from "@polywrap/uri-resolvers-js"; -import { mockPluginRegistration } from "../utils/mockPluginRegistration"; +import { mockPluginRegistration } from "../helpers/mockPluginRegistration"; jest.setTimeout(200000); diff --git a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts index 4aabf77c74..08c4e7b00f 100644 --- a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts +++ b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts @@ -9,7 +9,7 @@ import { import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { PolywrapClient } from "../../PolywrapClient"; import { buildUriResolver } from "@polywrap/uri-resolvers-js"; -import { getClientWithEnsAndIpfs } from "../utils/getClientWithEnsAndIpfs"; +import { getClientWithEnsAndIpfs } from "../helpers/getClientWithEnsAndIpfs"; jest.setTimeout(200000); @@ -259,10 +259,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runSimpleStorageTest( - await getClientWithEnsAndIpfs(), - wrapperUri - ); + await TestCases.runSimpleStorageTest(getClientWithEnsAndIpfs(), wrapperUri); }); it("simple env", async () => { diff --git a/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts b/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts index abe0b36567..476eaaea1e 100644 --- a/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts +++ b/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts @@ -6,8 +6,8 @@ import { stopTestEnvironment, } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { getClient } from "../utils/getClient"; -import { getClientWithEnsAndIpfs } from "../utils/getClientWithEnsAndIpfs"; +import { getClient } from "../helpers/getClient"; +import { getClientWithEnsAndIpfs } from "../helpers/getClientWithEnsAndIpfs"; import fse from "fs-extra"; import path from "path"; import { execSync } from "child_process"; @@ -190,10 +190,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runSimpleStorageTest( - await getClientWithEnsAndIpfs(), - wrapperUri - ); + await TestCases.runSimpleStorageTest(getClientWithEnsAndIpfs(), wrapperUri); }); it("simple env", async () => { diff --git a/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts b/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts similarity index 94% rename from packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts rename to packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts index 459b0f1ebe..89351a2208 100644 --- a/packages/js/client/src/__tests__/utils/getClientWithEnsAndIpfs.ts +++ b/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts @@ -1,4 +1,4 @@ -import { coreInterfaceUris, PolywrapClient, PolywrapClientConfig } from "../.."; +import { coreInterfaceUris, PolywrapClient } from "../.."; import { ensAddresses, providers } from "@polywrap/test-env-js"; import { Connection, @@ -18,7 +18,7 @@ import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; -export const getClientWithEnsAndIpfs = async () => { +export const getClientWithEnsAndIpfs = () => { const connections: Connections = new Connections({ networks: { testnet: new Connection({ @@ -78,4 +78,4 @@ export const getClientWithEnsAndIpfs = async () => { }, { noDefaults: true } ); -}; \ No newline at end of file +}; diff --git a/packages/js/client/src/__tests__/utils/mockPluginRegistration.ts b/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts similarity index 100% rename from packages/js/client/src/__tests__/utils/mockPluginRegistration.ts rename to packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts diff --git a/yarn.lock b/yarn.lock index cae5124dfd..f8cc7cd6d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3757,9 +3757,9 @@ integrity sha512-wH6Tu9mbiOt0n5EvdoWy0VGQaJMHfLIxY/6wS0xLC7CV1taM6gESEzcYy0ZlWvxxiiljYvfDIvz4hHbUUDRlhw== "@types/node@*": - version "18.7.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.18.tgz#633184f55c322e4fb08612307c274ee6d5ed3154" - integrity sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg== + version "18.7.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.19.tgz#ad83aa9b7af470fab7e0f562be87e97dc8ffe08e" + integrity sha512-Sq1itGUKUX1ap7GgZlrzdBydjbsJL/NSQt/4wkAxUJ7/OS5c2WkoN6WSpWc2Yc5wtKMZOUA0VCs/j2XJadN3HA== "@types/node@12.12.26": version "12.12.26" From 47f1c84a933623ab9dcccd718f904ac9fbcf71d1 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 24 Sep 2022 14:27:44 +0200 Subject: [PATCH 027/126] moved UriResolutionResult helper to uri-resolvers-js package and moved utils to helpers dir --- packages/js/core/src/uri-resolution/index.ts | 1 - .../src/ExtendableUriResolver.ts | 6 ++-- .../src/UriResolverWrapper.ts | 6 ++-- .../src/aggregator/UriResolverAggregator.ts | 3 +- .../aggregator/UriResolverAggregatorBase.ts | 2 +- .../cache/PackageToWrapperCacheResolver.ts | 8 +++-- .../src/helpers/InfiniteLoopError.ts | 3 +- .../src/helpers/ResolverWithLoopGuard.ts | 6 ++-- .../src/helpers}/UriResolutionResult.ts | 29 ++++++++++++++----- .../src/helpers/UriResolverLike.ts | 4 +-- .../{utils => helpers}/buildUriResolver.ts | 27 ++++++++++------- .../clean-uri-history/CleanResolutionStep.ts | 0 .../clean-uri-history/buildCleanUriHistory.ts | 0 .../clean-uri-history/index.ts | 0 .../getUriResolutionPath.ts | 0 .../js/uri-resolvers/src/helpers/index.ts | 8 +++-- .../src/packages/PackageResolver.ts | 3 +- .../src/redirects/RedirectResolver.ts | 9 ++---- packages/js/uri-resolvers/src/utils/index.ts | 3 -- .../src/wrappers/WrapperResolver.ts | 3 +- 20 files changed, 68 insertions(+), 53 deletions(-) rename packages/js/{core/src/uri-resolution => uri-resolvers/src/helpers}/UriResolutionResult.ts (69%) rename packages/js/uri-resolvers/src/{utils => helpers}/buildUriResolver.ts (79%) rename packages/js/uri-resolvers/src/{utils => helpers}/clean-uri-history/CleanResolutionStep.ts (100%) rename packages/js/uri-resolvers/src/{utils => helpers}/clean-uri-history/buildCleanUriHistory.ts (100%) rename packages/js/uri-resolvers/src/{utils => helpers}/clean-uri-history/index.ts (100%) rename packages/js/uri-resolvers/src/{utils => helpers}/getUriResolutionPath.ts (100%) delete mode 100644 packages/js/uri-resolvers/src/utils/index.ts diff --git a/packages/js/core/src/uri-resolution/index.ts b/packages/js/core/src/uri-resolution/index.ts index 712a6d2938..94cbea5324 100644 --- a/packages/js/core/src/uri-resolution/index.ts +++ b/packages/js/core/src/uri-resolution/index.ts @@ -1,6 +1,5 @@ export * from "./IUriResolutionStep"; export * from "./IUriResolver"; export * from "./UriPackageOrWrapper"; -export * from "./UriResolutionResult"; export * from "./IUriResolutionContext"; export * from "./UriResolutionContext"; diff --git a/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts b/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts index 5e3820418d..4453a9f048 100644 --- a/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts +++ b/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts @@ -8,10 +8,12 @@ import { coreInterfaceUris, IUriResolutionContext, UriPackageOrWrapper, - UriResolutionResult, } from "@polywrap/core-js"; import { Result, ResultOk } from "@polywrap/result"; -import { UriResolverAggregatorBase } from "@polywrap/uri-resolvers-js"; +import { + UriResolverAggregatorBase, + UriResolutionResult, +} from "@polywrap/uri-resolvers-js"; export class ExtendableUriResolver extends UriResolverAggregatorBase { private readonly resolverName: string; diff --git a/packages/js/uri-resolver-extensions/src/UriResolverWrapper.ts b/packages/js/uri-resolver-extensions/src/UriResolverWrapper.ts index bdfbe5e58e..47964be96f 100644 --- a/packages/js/uri-resolver-extensions/src/UriResolverWrapper.ts +++ b/packages/js/uri-resolver-extensions/src/UriResolverWrapper.ts @@ -6,13 +6,15 @@ import { Client, UriResolverInterface, IUriResolutionContext, - UriResolutionResult, UriPackageOrWrapper, getEnvFromUriHistory, } from "@polywrap/core-js"; import { Result, ResultOk, ResultErr } from "@polywrap/result"; import { WasmPackage } from "@polywrap/wasm-js"; -import { ResolverWithHistory } from "@polywrap/uri-resolvers-js"; +import { + ResolverWithHistory, + UriResolutionResult, +} from "@polywrap/uri-resolvers-js"; export class UriResolverWrapper extends ResolverWithHistory { constructor(public readonly implementationUri: Uri) { diff --git a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts index 387a55b1cd..53082292cc 100644 --- a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts +++ b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts @@ -1,6 +1,5 @@ import { UriResolverAggregatorBase } from "./UriResolverAggregatorBase"; -import { UriResolverLike } from "../helpers"; -import { buildUriResolver } from "../utils"; +import { buildUriResolver, UriResolverLike } from "../helpers"; import { Result, ResultOk } from "@polywrap/result"; import { IUriResolver, Uri, Client } from "@polywrap/core-js"; diff --git a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts index d836ade128..1530368330 100644 --- a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts +++ b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts @@ -3,10 +3,10 @@ import { Uri, Client, IUriResolutionContext, - UriResolutionResult, UriPackageOrWrapper, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; +import { UriResolutionResult } from "../helpers"; export abstract class UriResolverAggregatorBase< TResolutionError = undefined, diff --git a/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts b/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts index 0d4711801c..470e4872cd 100644 --- a/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts +++ b/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts @@ -1,6 +1,9 @@ import { IWrapperCache } from "./IWrapperCache"; -import { UriResolverLike } from "../helpers"; -import { buildUriResolver } from "../utils"; +import { + buildUriResolver, + UriResolutionResult, + UriResolverLike, +} from "../helpers"; import { IUriResolver, @@ -10,7 +13,6 @@ import { Wrapper, IUriResolutionContext, UriPackageOrWrapper, - UriResolutionResult, } from "@polywrap/core-js"; import { DeserializeManifestOptions } from "@polywrap/wrap-manifest-types-js"; import { Result } from "@polywrap/result"; diff --git a/packages/js/uri-resolvers/src/helpers/InfiniteLoopError.ts b/packages/js/uri-resolvers/src/helpers/InfiniteLoopError.ts index dc40802bc8..74756daf7f 100644 --- a/packages/js/uri-resolvers/src/helpers/InfiniteLoopError.ts +++ b/packages/js/uri-resolvers/src/helpers/InfiniteLoopError.ts @@ -1,6 +1,5 @@ -import { getUriResolutionPath } from "../utils"; - import { Uri, IUriResolutionStep } from "@polywrap/core-js"; +import { getUriResolutionPath } from "./getUriResolutionPath"; export class InfiniteLoopError extends Error { constructor( diff --git a/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts b/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts index 3f95a55430..fa9547781e 100644 --- a/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts +++ b/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts @@ -1,6 +1,4 @@ import { InfiniteLoopError } from "./InfiniteLoopError"; -import { UriResolverLike } from "../helpers"; -import { buildUriResolver } from "../utils"; import { Result } from "@polywrap/result"; import { @@ -9,8 +7,10 @@ import { Client, IUriResolutionContext, UriPackageOrWrapper, - UriResolutionResult, } from "@polywrap/core-js"; +import { UriResolverLike } from "./UriResolverLike"; +import { UriResolutionResult } from "./UriResolutionResult"; +import { buildUriResolver } from "./buildUriResolver"; export class ResolverWithLoopGuard implements IUriResolver { diff --git a/packages/js/core/src/uri-resolution/UriResolutionResult.ts b/packages/js/uri-resolvers/src/helpers/UriResolutionResult.ts similarity index 69% rename from packages/js/core/src/uri-resolution/UriResolutionResult.ts rename to packages/js/uri-resolvers/src/helpers/UriResolutionResult.ts index 51a3306eb3..30e00333aa 100644 --- a/packages/js/core/src/uri-resolution/UriResolutionResult.ts +++ b/packages/js/uri-resolvers/src/helpers/UriResolutionResult.ts @@ -1,6 +1,10 @@ -import { UriPackageOrWrapper, IUriResolutionStep } from "."; -import { Uri, IWrapPackage, Wrapper } from ".."; - +import { + UriPackageOrWrapper, + IUriResolutionStep, + Uri, + IWrapPackage, + Wrapper, +} from "@polywrap/core-js"; import { Result, ResultOk, ResultErr } from "@polywrap/result"; export class UriResolutionResult { @@ -17,16 +21,25 @@ export class UriResolutionResult { wrapper: Wrapper ): Result; static ok( - uri: Uri, + uriPackageOrWrapper: UriPackageOrWrapper + ): Result; + static ok( + uriPackageOrWrapper: Uri | UriPackageOrWrapper, packageOrWrapper?: IWrapPackage | Wrapper ): Result { if (!packageOrWrapper) { - return ResultOk({ - type: "uri", - uri, - } as UriPackageOrWrapper); + if ((uriPackageOrWrapper as UriPackageOrWrapper).type) { + return ResultOk(uriPackageOrWrapper as UriPackageOrWrapper); + } else { + return ResultOk({ + type: "uri", + uri: uriPackageOrWrapper as Uri, + } as UriPackageOrWrapper); + } } + const uri = uriPackageOrWrapper as Uri; + const wrapPackage = packageOrWrapper as Partial; if (wrapPackage.createWrapper) { diff --git a/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts b/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts index fd150b1507..2a10399056 100644 --- a/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts +++ b/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts @@ -11,8 +11,8 @@ import { WrapperRegistration } from "./WrapperRegistration"; export type UriResolverLike = | IUriResolver | UriRedirect - | UriResolverLike[] | IUriPackage | IUriWrapper | PackageRegistration - | WrapperRegistration; + | WrapperRegistration + | UriResolverLike[]; diff --git a/packages/js/uri-resolvers/src/utils/buildUriResolver.ts b/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts similarity index 79% rename from packages/js/uri-resolvers/src/utils/buildUriResolver.ts rename to packages/js/uri-resolvers/src/helpers/buildUriResolver.ts index f6943d6ba4..71190fcd69 100644 --- a/packages/js/uri-resolvers/src/utils/buildUriResolver.ts +++ b/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts @@ -1,5 +1,4 @@ import { UriResolverAggregator } from "../aggregator"; -import { UriResolverLike } from "../helpers"; import { PackageResolver } from "../packages"; import { WrapperResolver } from "../wrappers"; @@ -8,12 +7,15 @@ import { IUriResolver, Uri, Client, - IWrapPackage, - IUriPackage, toUri, + UriRedirect, } from "@polywrap/core-js"; -import { PackageRegistration } from "../helpers/PackageRegistration"; -import { WrapperRegistration } from "../helpers/WrapperRegistration"; +import { + PackageRegistration, + WrapperRegistration, + UriResolverLike, +} from "../helpers"; +import { RedirectResolver } from "../redirects"; export const buildUriResolver = ( resolverLike: UriResolverLike, @@ -34,14 +36,17 @@ export const buildUriResolver = ( ) => Promise>, resolverName ) as IUriResolver; - } else if ((resolverLike as Partial).createWrapper) { - const uriPackage = resolverLike as IUriPackage; - return (new PackageResolver( - uriPackage.uri, - uriPackage.package - ) as unknown) as IUriResolver; } else if ((resolverLike as IUriResolver).tryResolveUri !== undefined) { return resolverLike as IUriResolver; + } else if ( + (resolverLike as UriRedirect).from !== undefined && + (resolverLike as UriRedirect).to !== undefined + ) { + const uriRedirect = resolverLike as UriRedirect; + return (new RedirectResolver( + uriRedirect.from, + uriRedirect.to + ) as unknown) as IUriResolver; } else if ( (resolverLike as PackageRegistration).uri !== undefined && (resolverLike as PackageRegistration).package !== undefined diff --git a/packages/js/uri-resolvers/src/utils/clean-uri-history/CleanResolutionStep.ts b/packages/js/uri-resolvers/src/helpers/clean-uri-history/CleanResolutionStep.ts similarity index 100% rename from packages/js/uri-resolvers/src/utils/clean-uri-history/CleanResolutionStep.ts rename to packages/js/uri-resolvers/src/helpers/clean-uri-history/CleanResolutionStep.ts diff --git a/packages/js/uri-resolvers/src/utils/clean-uri-history/buildCleanUriHistory.ts b/packages/js/uri-resolvers/src/helpers/clean-uri-history/buildCleanUriHistory.ts similarity index 100% rename from packages/js/uri-resolvers/src/utils/clean-uri-history/buildCleanUriHistory.ts rename to packages/js/uri-resolvers/src/helpers/clean-uri-history/buildCleanUriHistory.ts diff --git a/packages/js/uri-resolvers/src/utils/clean-uri-history/index.ts b/packages/js/uri-resolvers/src/helpers/clean-uri-history/index.ts similarity index 100% rename from packages/js/uri-resolvers/src/utils/clean-uri-history/index.ts rename to packages/js/uri-resolvers/src/helpers/clean-uri-history/index.ts diff --git a/packages/js/uri-resolvers/src/utils/getUriResolutionPath.ts b/packages/js/uri-resolvers/src/helpers/getUriResolutionPath.ts similarity index 100% rename from packages/js/uri-resolvers/src/utils/getUriResolutionPath.ts rename to packages/js/uri-resolvers/src/helpers/getUriResolutionPath.ts diff --git a/packages/js/uri-resolvers/src/helpers/index.ts b/packages/js/uri-resolvers/src/helpers/index.ts index 89500646b8..143078138e 100644 --- a/packages/js/uri-resolvers/src/helpers/index.ts +++ b/packages/js/uri-resolvers/src/helpers/index.ts @@ -1,7 +1,11 @@ +export * from "./UriResolutionResult"; +export * from "./UriResolverLike"; +export * from "./ResolverWithHistory"; export * from "./InfiniteLoopError"; export * from "./PackageRegistration"; export * from "./RecursiveResolver"; -export * from "./ResolverWithHistory"; export * from "./ResolverWithLoopGuard"; -export * from "./UriResolverLike"; export * from "./WrapperRegistration"; +export * from "./buildUriResolver"; +export * from "./clean-uri-history"; +export * from "./getUriResolutionPath"; diff --git a/packages/js/uri-resolvers/src/packages/PackageResolver.ts b/packages/js/uri-resolvers/src/packages/PackageResolver.ts index 8816f13d12..be5125605a 100644 --- a/packages/js/uri-resolvers/src/packages/PackageResolver.ts +++ b/packages/js/uri-resolvers/src/packages/PackageResolver.ts @@ -2,10 +2,9 @@ import { Uri, IWrapPackage, UriPackageOrWrapper, - UriResolutionResult, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; -import { ResolverWithHistory } from "../helpers"; +import { ResolverWithHistory, UriResolutionResult } from "../helpers"; export class PackageResolver extends ResolverWithHistory { constructor(private uri: Uri, private wrapPackage: IWrapPackage) { diff --git a/packages/js/uri-resolvers/src/redirects/RedirectResolver.ts b/packages/js/uri-resolvers/src/redirects/RedirectResolver.ts index a7d5c28875..945a81d9d4 100644 --- a/packages/js/uri-resolvers/src/redirects/RedirectResolver.ts +++ b/packages/js/uri-resolvers/src/redirects/RedirectResolver.ts @@ -1,11 +1,6 @@ -import { ResolverWithHistory } from "../helpers"; +import { ResolverWithHistory, UriResolutionResult } from "../helpers"; -import { - Uri, - toUri, - UriResolutionResult, - UriPackageOrWrapper, -} from "@polywrap/core-js"; +import { Uri, toUri, UriPackageOrWrapper } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; export class RedirectResolver< diff --git a/packages/js/uri-resolvers/src/utils/index.ts b/packages/js/uri-resolvers/src/utils/index.ts deleted file mode 100644 index a0cd814822..0000000000 --- a/packages/js/uri-resolvers/src/utils/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./buildUriResolver"; -export * from "./getUriResolutionPath"; -export * from "./clean-uri-history"; diff --git a/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts b/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts index 528a15e0a8..97c5e9abee 100644 --- a/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts +++ b/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts @@ -1,11 +1,10 @@ import { Uri, UriPackageOrWrapper, - UriResolutionResult, Wrapper, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; -import { ResolverWithHistory } from "../helpers"; +import { ResolverWithHistory, UriResolutionResult } from "../helpers"; export class WrapperResolver extends ResolverWithHistory { constructor(private uri: Uri, private wrapper: Wrapper) { From a2e65ceffdedda34200f3fbc5e5e6a5391b3cedf Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 24 Sep 2022 14:28:19 +0200 Subject: [PATCH 028/126] argument of recursive resolver is now a resolver-like --- .../js/uri-resolvers/src/helpers/RecursiveResolver.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts b/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts index ccb1d75619..5b5a444c04 100644 --- a/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts +++ b/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts @@ -6,13 +6,19 @@ import { Client, IUriResolutionContext, UriPackageOrWrapper, - UriResolutionResult, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; +import { UriResolverLike } from "./UriResolverLike"; +import { UriResolutionResult } from "./UriResolutionResult"; +import { buildUriResolver } from "./buildUriResolver"; export class RecursiveResolver implements IUriResolver { - constructor(private resolver: IUriResolver) {} + private resolver: IUriResolver; + + constructor(resolver: UriResolverLike) { + this.resolver = buildUriResolver(resolver); + } async tryResolveUri( uri: Uri, From 45119e662d491c5b046d29acfe89c8f6d54072cb Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 24 Sep 2022 14:28:45 +0200 Subject: [PATCH 029/126] removed redirects resolver as it is nnot needed --- .../uri-resolvers/src/redirects/RedirectsResolver.ts | 11 ----------- packages/js/uri-resolvers/src/redirects/index.ts | 1 - 2 files changed, 12 deletions(-) delete mode 100644 packages/js/uri-resolvers/src/redirects/RedirectsResolver.ts diff --git a/packages/js/uri-resolvers/src/redirects/RedirectsResolver.ts b/packages/js/uri-resolvers/src/redirects/RedirectsResolver.ts deleted file mode 100644 index a2984e862b..0000000000 --- a/packages/js/uri-resolvers/src/redirects/RedirectsResolver.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { UriResolverAggregator } from "../aggregator"; - -import { Uri, UriRedirect } from "@polywrap/core-js"; - -export class RedirectsResolver< - TUri extends string | Uri = string -> extends UriResolverAggregator { - constructor(redirects: UriRedirect[], resolverName?: string) { - super(redirects, resolverName ?? "RedirectsResolver"); - } -} diff --git a/packages/js/uri-resolvers/src/redirects/index.ts b/packages/js/uri-resolvers/src/redirects/index.ts index 60ab4df414..f0cb134361 100644 --- a/packages/js/uri-resolvers/src/redirects/index.ts +++ b/packages/js/uri-resolvers/src/redirects/index.ts @@ -1,2 +1 @@ export * from "./RedirectResolver"; -export * from "./RedirectsResolver"; From 57a96479e7d8f4e3ebc59cc2fb5cbfa368ffa9a5 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 24 Sep 2022 14:29:20 +0200 Subject: [PATCH 030/126] implemented StaticResolver and StaticResolverLike --- packages/js/uri-resolvers/src/index.ts | 2 +- .../src/static/StaticResolver.ts | 85 +++++++++++++++++++ .../src/static/StaticResolverLike.ts | 10 +++ packages/js/uri-resolvers/src/static/index.ts | 2 + 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 packages/js/uri-resolvers/src/static/StaticResolver.ts create mode 100644 packages/js/uri-resolvers/src/static/StaticResolverLike.ts create mode 100644 packages/js/uri-resolvers/src/static/index.ts diff --git a/packages/js/uri-resolvers/src/index.ts b/packages/js/uri-resolvers/src/index.ts index 78580ffe1c..78d2434370 100644 --- a/packages/js/uri-resolvers/src/index.ts +++ b/packages/js/uri-resolvers/src/index.ts @@ -4,4 +4,4 @@ export * from "./legacy"; export * from "./redirects"; export * from "./packages"; export * from "./helpers"; -export * from "./utils"; +export * from "./static"; diff --git a/packages/js/uri-resolvers/src/static/StaticResolver.ts b/packages/js/uri-resolvers/src/static/StaticResolver.ts new file mode 100644 index 0000000000..53b3f5bda5 --- /dev/null +++ b/packages/js/uri-resolvers/src/static/StaticResolver.ts @@ -0,0 +1,85 @@ +import { + PackageRegistration, + UriResolutionResult, + UriResolverLike, + WrapperRegistration, +} from "../helpers"; + +import { + IUriResolver, + Uri, + UriPackageOrWrapper, + toUri, + UriRedirect, +} from "@polywrap/core-js"; +import { Result } from "@polywrap/result"; + +export class StaticResolver + implements IUriResolver { + constructor(public uriMap: Map) {} + + static from( + staticResolverLikes: UriResolverLike[], + resolverName?: string + ): StaticResolver { + const uriMap = new Map(); + for (const staticResolverLike of staticResolverLikes) { + if (Array.isArray(staticResolverLike)) { + const resolver = StaticResolver.from(staticResolverLike); + for (const [uri, uriPackageOrWrapper] of resolver.uriMap) { + uriMap.set(uri, uriPackageOrWrapper); + } + } else if ( + (staticResolverLike as UriRedirect).from !== undefined && + (staticResolverLike as UriRedirect).to !== undefined + ) { + const uriRedirect = staticResolverLike as UriRedirect; + const from = toUri(uriRedirect.from); + + uriMap.set(from.uri, { + type: "uri", + uri: toUri(uriRedirect.to), + }); + } else if ( + (staticResolverLike as PackageRegistration).uri !== undefined && + (staticResolverLike as PackageRegistration).package !== undefined + ) { + const uriPackage = staticResolverLike as PackageRegistration; + const uri = toUri(uriPackage.uri); + + uriMap.set(uri.uri, { + type: "package", + uri, + package: uriPackage.package, + }); + } else if ( + (staticResolverLike as WrapperRegistration).uri !== undefined && + (staticResolverLike as WrapperRegistration).wrapper !== undefined + ) { + const uriWrapper = staticResolverLike as WrapperRegistration; + const uri = toUri(uriWrapper.uri); + + uriMap.set(uri.uri, { + type: "wrapper", + uri, + wrapper: uriWrapper.wrapper, + }); + } else { + throw new Error("Unknown static-resolver-like type provided."); + } + } + + return new StaticResolver(uriMap); + } + + // TODO: add history + async tryResolveUri(uri: Uri): Promise> { + const result = this.uriMap.get(uri.uri); + + if (result) { + return UriResolutionResult.ok(result); + } else { + return UriResolutionResult.ok(uri); + } + } +} diff --git a/packages/js/uri-resolvers/src/static/StaticResolverLike.ts b/packages/js/uri-resolvers/src/static/StaticResolverLike.ts new file mode 100644 index 0000000000..aeb8b096fe --- /dev/null +++ b/packages/js/uri-resolvers/src/static/StaticResolverLike.ts @@ -0,0 +1,10 @@ +import { UriRedirect, Uri, IUriPackage, IUriWrapper } from "@polywrap/core-js"; +import { PackageRegistration, WrapperRegistration } from "../helpers"; + +export type StaticResolverLike = + | UriRedirect + | IUriPackage + | IUriWrapper + | PackageRegistration + | WrapperRegistration + | StaticResolverLike[]; diff --git a/packages/js/uri-resolvers/src/static/index.ts b/packages/js/uri-resolvers/src/static/index.ts new file mode 100644 index 0000000000..391b4bf950 --- /dev/null +++ b/packages/js/uri-resolvers/src/static/index.ts @@ -0,0 +1,2 @@ +export * from "./StaticResolver"; +export * from "./StaticResolverLike"; From 0cd86f42f7c12d7f648e393b29f4f20c9ee802ef Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 24 Sep 2022 14:30:12 +0200 Subject: [PATCH 031/126] improved plugin-js with helpers to create inline plugins --- packages/js/plugin-js/src/PluginPackage.ts | 32 +++++++++++++- .../src/utils/GetPluginMethodsFunc.ts | 5 +++ .../src/utils/PluginModuleWithMethods.ts | 44 +++++++++++++++++++ packages/js/plugin-js/src/utils/index.ts | 2 + 4 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 packages/js/plugin-js/src/utils/GetPluginMethodsFunc.ts create mode 100644 packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts create mode 100644 packages/js/plugin-js/src/utils/index.ts diff --git a/packages/js/plugin-js/src/PluginPackage.ts b/packages/js/plugin-js/src/PluginPackage.ts index 54be3864da..64fa6d50c2 100644 --- a/packages/js/plugin-js/src/PluginPackage.ts +++ b/packages/js/plugin-js/src/PluginPackage.ts @@ -2,13 +2,41 @@ import { IWrapPackage, Wrapper } from "@polywrap/core-js"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { PluginModule } from "./PluginModule"; import { PluginWrapper } from "./PluginWrapper"; +import { GetPluginMethodsFunc, PluginModuleWithMethods } from "./utils"; export class PluginPackage implements IWrapPackage { constructor( - private manifest: WrapManifest, - private pluginModule: PluginModule + private pluginModule: PluginModule, + private manifest: WrapManifest ) {} + static from( + pluginModule: PluginModule, + manifest?: WrapManifest + ): PluginPackage; + static from( + getPluginFuncs: GetPluginMethodsFunc, + manifest?: WrapManifest + ): PluginPackage; + static from( + pluginModuleOrGetPluginFuncs: PluginModule | GetPluginMethodsFunc, + manifest?: WrapManifest + ): PluginPackage { + if (typeof pluginModuleOrGetPluginFuncs === "function") { + const getPluginFuncs = pluginModuleOrGetPluginFuncs as GetPluginMethodsFunc; + + return new PluginPackage( + new PluginModuleWithMethods(getPluginFuncs), + manifest || ({} as WrapManifest) + ) as PluginPackage; + } else { + return new PluginPackage( + pluginModuleOrGetPluginFuncs as PluginModule, + manifest || ({} as WrapManifest) + ); + } + } + async getManifest(): Promise { return this.manifest; } diff --git a/packages/js/plugin-js/src/utils/GetPluginMethodsFunc.ts b/packages/js/plugin-js/src/utils/GetPluginMethodsFunc.ts new file mode 100644 index 0000000000..5633206d36 --- /dev/null +++ b/packages/js/plugin-js/src/utils/GetPluginMethodsFunc.ts @@ -0,0 +1,5 @@ +import { PluginModule, PluginMethod } from ".."; + +export type GetPluginMethodsFunc = ( + module: PluginModule +) => Record, unknown>>; diff --git a/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts b/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts new file mode 100644 index 0000000000..0946b2cc75 --- /dev/null +++ b/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts @@ -0,0 +1,44 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import { Client, executeMaybeAsyncFunction } from "@polywrap/core-js"; + +import { PluginMethod } from "../PluginMethod"; +import { PluginModule } from "../PluginModule"; +import { GetPluginMethodsFunc } from "./GetPluginMethodsFunc"; + +export class PluginModuleWithMethods< + TEnv extends Record = Record +> extends PluginModule { + constructor(private getPluginMethods: GetPluginMethodsFunc) { + super({} as never); + } + + async _wrap_invoke< + TArgs extends Record = Record, + TResult = unknown + >(method: string, args: TArgs, client: Client): Promise { + const fn = this.getMethod(method); + + if (!fn) { + throw Error(`Plugin missing method "${method}"`); + } + + if (typeof fn !== "function") { + throw Error(`Plugin method "${method}" must be of type 'function'`); + } + + return await executeMaybeAsyncFunction( + fn.bind(this, args, client) + ); + } + + getMethod< + TArgs extends Record = Record, + TResult = unknown + >(method: string): PluginMethod | undefined { + const fn: PluginMethod | undefined = this.getPluginMethods( + this + )[method] as PluginMethod; + + return fn; + } +} diff --git a/packages/js/plugin-js/src/utils/index.ts b/packages/js/plugin-js/src/utils/index.ts new file mode 100644 index 0000000000..6301d810d9 --- /dev/null +++ b/packages/js/plugin-js/src/utils/index.ts @@ -0,0 +1,2 @@ +export * from "./GetPluginMethodsFunc"; +export * from "./PluginModuleWithMethods"; From 8da40051172eabf4f6d966c4f02816c299986168 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sun, 25 Sep 2022 13:49:14 +0200 Subject: [PATCH 032/126] updated plugins to not use default config --- packages/js/plugins/ethereum/package.json | 4 +- .../ethereum/src/__tests__/e2e.spec.ts | 109 ++--- .../src/__tests__/helpers/getClient.ts | 46 ++ packages/js/plugins/ethereum/src/index.ts | 2 +- .../js/plugins/file-system/jest.config.js | 17 +- packages/js/plugins/file-system/package.json | 1 + .../file-system/src/__tests__/e2e.spec.ts | 15 +- packages/js/plugins/file-system/src/index.ts | 2 +- packages/js/plugins/http/jest.config.js | 29 +- packages/js/plugins/http/package.json | 1 + .../http/src/__tests__/e2e/e2e.spec.ts | 21 +- .../src/__tests__/e2e/integration.spec.ts | 11 +- .../http/src/__tests__/helpers/getClient.ts | 46 ++ packages/js/plugins/http/src/index.ts | 2 +- .../js/plugins/ipfs/src/__tests__/e2e.spec.ts | 4 +- .../getClientIpfs.ts => helpers/getClient.ts} | 2 +- packages/js/plugins/ipfs/src/index.ts | 2 +- packages/js/plugins/logger/src/index.ts | 3 +- .../uri-resolvers/ens-resolver/jest.config.js | 5 +- .../uri-resolvers/ens-resolver/package.json | 4 + .../ens-resolver/src/__tests__/e2e.spec.ts | 43 +- .../src/__tests__/helpers/getClient.ts | 73 ++++ .../uri-resolvers/ens-resolver/src/index.ts | 2 +- .../file-system-resolver/jest.config.js | 17 +- .../file-system-resolver/package.json | 2 + .../src/__tests__/e2e.spec.ts | 100 +---- .../src/__tests__/helpers/getClient.ts | 41 ++ .../file-system-resolver/src/index.ts | 2 +- .../ipfs-resolver/src/__tests__/e2e.spec.ts | 21 +- .../__tests__/helpers/getClientWithIpfs.ts | 44 ++ .../uri-resolvers/ipfs-resolver/src/index.ts | 2 +- packages/js/plugins/ws/jest.config.js | 29 +- packages/js/plugins/ws/package.json | 1 + .../plugins/ws/src/__tests__/e2e/e2e.spec.ts | 409 +++++++++--------- .../ws/src/__tests__/e2e/integration.spec.ts | 135 +++--- packages/js/plugins/ws/src/index.ts | 2 +- 36 files changed, 665 insertions(+), 584 deletions(-) create mode 100644 packages/js/plugins/ethereum/src/__tests__/helpers/getClient.ts create mode 100644 packages/js/plugins/http/src/__tests__/helpers/getClient.ts rename packages/js/plugins/ipfs/src/__tests__/{utils/getClientIpfs.ts => helpers/getClient.ts} (92%) create mode 100644 packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts create mode 100644 packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts create mode 100644 packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts diff --git a/packages/js/plugins/ethereum/package.json b/packages/js/plugins/ethereum/package.json index 8cd2781137..d35033df19 100644 --- a/packages/js/plugins/ethereum/package.json +++ b/packages/js/plugins/ethereum/package.json @@ -28,8 +28,8 @@ }, "devDependencies": { "@polywrap/client-js": "0.7.0", - "@polywrap/ens-resolver-plugin-js": "0.7.0", - "@polywrap/ipfs-plugin-js": "0.7.0", + "@polywrap/fs-resolver-plugin-js": "0.7.0", + "@polywrap/fs-plugin-js": "0.7.0", "@polywrap/test-env-js": "0.7.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", diff --git a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts index 1841fd48fb..7f6ff3b2a4 100644 --- a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts @@ -1,10 +1,6 @@ -import { ethereumPlugin } from ".."; import * as Schema from "../wrap"; import { PolywrapClient } from "@polywrap/client-js"; -import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; -import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; -import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { initTestEnvironment, stopTestEnvironment, @@ -18,6 +14,7 @@ import { ethers } from "ethers"; import { keccak256 } from "js-sha3"; import { Connections } from "../Connections"; import { Connection } from "../Connection"; +import { getClient } from "./helpers/getClient"; const { hash: namehash } = require("eth-ens-namehash"); const contracts = { @@ -62,29 +59,7 @@ describe("Ethereum Plugin", () => { defaultNetwork: "testnet", }); - client = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/ethereum.polywrap.eth", - plugin: ethereumPlugin({ connections }), - }, - { - uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({ - provider: providers.ipfs, - fallbackProviders: defaultIpfsProviders, - }), - }, - { - uri: "wrap://ens/ens-resolver.polywrap.eth", - plugin: ensResolverPlugin({ - addresses: { - testnet: ensAddress, - }, - }), - }, - ], - }); + client = getClient(connections); await buildWrapper(wrapperPath); }); @@ -590,9 +565,9 @@ describe("Ethereum Plugin", () => { method: "getNetwork", args: { connection: { - networkNameOrChainId: "mainnet" - } - } + networkNameOrChainId: "mainnet", + }, + }, }); expect(mainnetNetwork.data).toBeTruthy(); @@ -609,9 +584,9 @@ describe("Ethereum Plugin", () => { method: "getNetwork", args: { connection: { - node: "https://polygon-rpc.com" - } - } + node: "https://polygon-rpc.com", + }, + }, }); expect(polygonNetwork.data).toBeTruthy(); @@ -676,11 +651,13 @@ describe("Ethereum Plugin", () => { const { error } = await client.invoke({ uri, method: "requestAccounts", - }) + }); // eth_requestAccounts is not supported by Ganache // this RPC error indicates that the method call was attempted - expect(error?.message.indexOf("Method eth_requestAccounts not supported")).toBeGreaterThanOrEqual(0); + expect( + error?.message.indexOf("Method eth_requestAccounts not supported") + ).toBeGreaterThanOrEqual(0); // expect(error).toBeFalsy(); // expect(data).toBeTruthy(); @@ -695,16 +672,16 @@ describe("Ethereum Plugin", () => { uri, method: "callContractMethod", args: { - address: registrarAddress, - method: "function register(bytes32 label, address owner)", - args: [label, signer], + address: registrarAddress, + method: "function register(bytes32 label, address owner)", + args: [label, signer], txOverrides: { value: null, nonce: null, gasPrice: "50", - gasLimit: "200000" - } - } + gasLimit: "200000", + }, + }, }); expect(response.error).toBeUndefined(); @@ -717,16 +694,16 @@ describe("Ethereum Plugin", () => { uri, method: "callContractMethodAndWait", args: { - address: registrarAddress, - method: "function register(bytes32 label, address owner)", + address: registrarAddress, + method: "function register(bytes32 label, address owner)", args: [label, signer], txOverrides: { value: null, nonce: null, gasPrice: "50", - gasLimit: "200000" - } - } + gasLimit: "200000", + }, + }, }); expect(response.error).toBeUndefined(); @@ -738,8 +715,8 @@ describe("Ethereum Plugin", () => { uri, method: "sendTransaction", args: { - tx: { data: contracts.SimpleStorage.bytecode } - } + tx: { data: contracts.SimpleStorage.bytecode }, + }, }); expect(response.error).toBeUndefined(); @@ -752,15 +729,13 @@ describe("Ethereum Plugin", () => { uri, method: "sendTransactionAndWait", args: { - tx: { data: contracts.SimpleStorage.bytecode } - } + tx: { data: contracts.SimpleStorage.bytecode }, + }, }); expect(response.error).toBeUndefined(); expect(response.data).toBeDefined(); - expect( - response.data?.transactionHash - ).toBeDefined(); + expect(response.data?.transactionHash).toBeDefined(); }); it("deployContract", async () => { @@ -769,8 +744,8 @@ describe("Ethereum Plugin", () => { method: "deployContract", args: { abi: JSON.stringify(contracts.SimpleStorage.abi), - bytecode: contracts.SimpleStorage.bytecode - } + bytecode: contracts.SimpleStorage.bytecode, + }, }); expect(response.error).toBeUndefined(); @@ -783,8 +758,8 @@ describe("Ethereum Plugin", () => { uri, method: "signMessage", args: { - message: "Hello World" - } + message: "Hello World", + }, }); expect(response.error).toBeUndefined(); @@ -798,8 +773,9 @@ describe("Ethereum Plugin", () => { uri, method: "sendRPC", args: { - method: "eth_blockNumber", params: [] - } + method: "eth_blockNumber", + params: [], + }, }); expect(res.error).toBeUndefined(); @@ -814,8 +790,8 @@ describe("Ethereum Plugin", () => { method: "deployContract", args: { abi: JSON.stringify(contracts.StructArg.abi), - bytecode: contracts.StructArg.bytecode - } + bytecode: contracts.StructArg.bytecode, + }, }); expect(response1.error).toBeUndefined(); @@ -834,16 +810,15 @@ describe("Ethereum Plugin", () => { method: "callContractMethodAndWait", args: { address: address, - method: "function method(tuple(string str, uint256 unsigned256, uint256[] unsigned256Array) _arg) returns (string, uint256)", - args: [structArg] - } + method: + "function method(tuple(string str, uint256 unsigned256, uint256[] unsigned256Array) _arg) returns (string, uint256)", + args: [structArg], + }, }); expect(response2.error).toBeUndefined(); expect(response2.data).toBeDefined(); - expect( - response2.data?.transactionHash - ).toBeDefined(); + expect(response2.data?.transactionHash).toBeDefined(); }); }); }); diff --git a/packages/js/plugins/ethereum/src/__tests__/helpers/getClient.ts b/packages/js/plugins/ethereum/src/__tests__/helpers/getClient.ts new file mode 100644 index 0000000000..c5108a60d6 --- /dev/null +++ b/packages/js/plugins/ethereum/src/__tests__/helpers/getClient.ts @@ -0,0 +1,46 @@ +import { + buildUriResolver, + RecursiveResolver, + PackageToWrapperCacheResolver, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; +import { coreInterfaceUris } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; +import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; +import { ethereumPlugin, Connections } from "../.."; + +export const getClient = (connections: Connections) => { + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/fs-resolver.polywrap.eth"], + }, + ], + resolver: new RecursiveResolver( + new PackageToWrapperCacheResolver( + new WrapperCache(), + buildUriResolver([ + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ connections }), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + new ExtendableUriResolver(), + ]) + ) + ), + }, + { noDefaults: true } + ); +}; diff --git a/packages/js/plugins/ethereum/src/index.ts b/packages/js/plugins/ethereum/src/index.ts index d560906bac..fbdaf6e09c 100644 --- a/packages/js/plugins/ethereum/src/index.ts +++ b/packages/js/plugins/ethereum/src/index.ts @@ -415,6 +415,6 @@ export class EthereumPlugin extends Module { export const ethereumPlugin: PluginFactory = ( config: EthereumPluginConfig -) => new PluginPackage(manifest, new EthereumPlugin(config)); +) => new PluginPackage(new EthereumPlugin(config), manifest); export const plugin = ethereumPlugin; diff --git a/packages/js/plugins/file-system/jest.config.js b/packages/js/plugins/file-system/jest.config.js index 38888109ca..cb254a6963 100644 --- a/packages/js/plugins/file-system/jest.config.js +++ b/packages/js/plugins/file-system/jest.config.js @@ -1,13 +1,8 @@ module.exports = { - "roots": [ - "/src" - ], - "testMatch": [ - "**/__tests__/**/*.+(ts|tsx|js)", - "**/?(*.)+(spec|test).+(ts|tsx|js)" - ], - "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" + roots: ["/src"], + testMatch: ["**/?(*.)+(spec|test).+(ts|tsx|js)"], + transform: { + "^.+\\.(ts|tsx)$": "ts-jest", }, - testEnvironment: 'node' -} + testEnvironment: "node", +}; diff --git a/packages/js/plugins/file-system/package.json b/packages/js/plugins/file-system/package.json index f81d587b8e..d75bbdcfc1 100644 --- a/packages/js/plugins/file-system/package.json +++ b/packages/js/plugins/file-system/package.json @@ -28,6 +28,7 @@ "@polywrap/ens-resolver-plugin-js": "0.7.0", "@polywrap/ethereum-plugin-js": "0.7.0", "@polywrap/ipfs-plugin-js": "0.7.0", + "@polywrap/uri-resolvers-js": "0.7.0", "@polywrap/test-cases": "0.7.0", "@polywrap/test-env-js": "0.7.0", "@types/jest": "26.0.8", diff --git a/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts b/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts index d7547c07a7..b0df298bf3 100644 --- a/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts @@ -1,5 +1,6 @@ import { fileSystemPlugin } from "../index"; -import { PolywrapClient, PolywrapClientConfig } from "@polywrap/client-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { FileSystem_Module, FileSystem_EncodingEnum } from "../wrap"; import fs from "fs"; import path from "path"; @@ -25,16 +26,14 @@ describe("FileSystem plugin", () => { beforeAll(async () => { await cleanUpTempFiles(); - const config: Partial = { - plugins: [ + client = new PolywrapClient({ + resolver: buildUriResolver([ { uri: "wrap://ens/fs.polywrap.eth", - plugin: fileSystemPlugin({ }), + package: fileSystemPlugin({}), }, - ], - }; - - client = new PolywrapClient(config); + ]), + }); }); afterEach(async () => { diff --git a/packages/js/plugins/file-system/src/index.ts b/packages/js/plugins/file-system/src/index.ts index 8fa8afb5e2..fbb948f088 100644 --- a/packages/js/plugins/file-system/src/index.ts +++ b/packages/js/plugins/file-system/src/index.ts @@ -70,6 +70,6 @@ export class FileSystemPlugin extends Module { } } export const fileSystemPlugin: PluginFactory = () => - new PluginPackage(manifest, new FileSystemPlugin({})); + new PluginPackage(new FileSystemPlugin({}), manifest); export const plugin = fileSystemPlugin; diff --git a/packages/js/plugins/http/jest.config.js b/packages/js/plugins/http/jest.config.js index f0f063c0ce..9a342dfeda 100644 --- a/packages/js/plugins/http/jest.config.js +++ b/packages/js/plugins/http/jest.config.js @@ -1,22 +1,11 @@ module.exports = { - "roots": [ - "/src" - ], - "testMatch": [ - "**/__tests__/**/*.+(ts|tsx|js)", - "**/?(*.)+(spec|test).+(ts|tsx|js)" - ], - "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" + roots: ["/src"], + testMatch: ["**/?(*.)+(spec|test).+(ts|tsx|js)"], + transform: { + "^.+\\.(ts|tsx)$": "ts-jest", }, - modulePathIgnorePatterns: [ - "/src/__tests__/e2e/integration/" - ], - testPathIgnorePatterns: [ - "/src/__tests__/e2e/integration/" - ], - transformIgnorePatterns: [ - "/src/__tests__/e2e/integration/" - ], - testEnvironment: 'node' -} + modulePathIgnorePatterns: ["/src/__tests__/e2e/integration/"], + testPathIgnorePatterns: ["/src/__tests__/e2e/integration/"], + transformIgnorePatterns: ["/src/__tests__/e2e/integration/"], + testEnvironment: "node", +}; diff --git a/packages/js/plugins/http/package.json b/packages/js/plugins/http/package.json index cb82ccef00..1fe0352dea 100644 --- a/packages/js/plugins/http/package.json +++ b/packages/js/plugins/http/package.json @@ -26,6 +26,7 @@ }, "devDependencies": { "@polywrap/client-js": "0.7.0", + "@polywrap/uri-resolvers-js": "0.7.0", "@polywrap/ens-resolver-plugin-js": "0.7.0", "@polywrap/ipfs-plugin-js": "0.7.0", "@polywrap/test-env-js": "0.7.0", diff --git a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts index c15cafad28..0bd0b57cef 100644 --- a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts @@ -2,6 +2,8 @@ import { httpPlugin } from "../.."; import { Response } from "../../wrap"; import { PolywrapClient } from "@polywrap/client-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; + import nock from "nock"; jest.setTimeout(360000); @@ -15,14 +17,17 @@ describe("e2e tests for HttpPlugin", () => { let polywrapClient: PolywrapClient; beforeEach(() => { - polywrapClient = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/http.polywrap.eth", - plugin: httpPlugin({}), - }, - ], - }); + polywrapClient = new PolywrapClient( + { + resolver: buildUriResolver([ + { + uri: "wrap://ens/http.polywrap.eth", + package: httpPlugin({}), + }, + ]), + }, + { noDefaults: true } + ); }); describe("get method", () => { diff --git a/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts b/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts index 8ff69c568c..24df2e9099 100644 --- a/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts +++ b/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts @@ -1,9 +1,9 @@ -import { httpPlugin } from "../.."; import { Response } from "../../wrap"; import { PolywrapClient } from "@polywrap/client-js"; import { buildWrapper } from "@polywrap/test-env-js"; import nock from "nock"; +import { getClient } from "../helpers/getClient"; jest.setTimeout(360000); @@ -20,14 +20,7 @@ describe("e2e tests for HttpPlugin", () => { const uri = `fs/${wrapperPath}/build`; beforeAll(async () => { - client = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/http.polywrap.eth", - plugin: httpPlugin({}), - }, - ], - }); + client = getClient(); await buildWrapper(wrapperPath); }); diff --git a/packages/js/plugins/http/src/__tests__/helpers/getClient.ts b/packages/js/plugins/http/src/__tests__/helpers/getClient.ts new file mode 100644 index 0000000000..8d68ee66a6 --- /dev/null +++ b/packages/js/plugins/http/src/__tests__/helpers/getClient.ts @@ -0,0 +1,46 @@ +import { + buildUriResolver, + RecursiveResolver, + PackageToWrapperCacheResolver, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; +import { coreInterfaceUris } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; +import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; +import { httpPlugin } from "../.."; + +export const getClient = () => { + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/fs-resolver.polywrap.eth"], + }, + ], + resolver: new RecursiveResolver( + new PackageToWrapperCacheResolver( + new WrapperCache(), + buildUriResolver([ + { + uri: "wrap://ens/http.polywrap.eth", + package: httpPlugin({}), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + new ExtendableUriResolver(), + ]) + ) + ), + }, + { noDefaults: true } + ); +}; diff --git a/packages/js/plugins/http/src/index.ts b/packages/js/plugins/http/src/index.ts index 529844d69e..d84813f9a9 100644 --- a/packages/js/plugins/http/src/index.ts +++ b/packages/js/plugins/http/src/index.ts @@ -36,6 +36,6 @@ export class HttpPlugin extends Module { } export const httpPlugin: PluginFactory = () => - new PluginPackage(manifest, new HttpPlugin({})); + new PluginPackage(new HttpPlugin({}), manifest); export const plugin = httpPlugin; diff --git a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts index 37ec980b03..d904d9e152 100644 --- a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts @@ -7,7 +7,7 @@ import { import { IpfsClient, IpfsFileInfo } from "../utils/IpfsClient"; import { Ipfs_Module } from "../wrap"; import { Client } from "@polywrap/core-js"; -import { getClientIpfs } from "./utils/getClientIpfs"; +import { getClient } from "./helpers/getClient"; const createIpfsClient = require("@dorgjelli-test/ipfs-http-client-lite"); @@ -25,7 +25,7 @@ describe("IPFS Plugin", () => { await initTestEnvironment(); ipfs = createIpfsClient(providers.ipfs); - client = getClientIpfs(); + client = getClient(); let ipfsAddResult = await ipfs.add(sampleFileBuffer); sampleFileIpfsInfo = ipfsAddResult[0]; diff --git a/packages/js/plugins/ipfs/src/__tests__/utils/getClientIpfs.ts b/packages/js/plugins/ipfs/src/__tests__/helpers/getClient.ts similarity index 92% rename from packages/js/plugins/ipfs/src/__tests__/utils/getClientIpfs.ts rename to packages/js/plugins/ipfs/src/__tests__/helpers/getClient.ts index d468b1e16b..ffdad8bf25 100644 --- a/packages/js/plugins/ipfs/src/__tests__/utils/getClientIpfs.ts +++ b/packages/js/plugins/ipfs/src/__tests__/helpers/getClient.ts @@ -8,7 +8,7 @@ import { WrapperCache, } from "@polywrap/uri-resolvers-js"; -export const getClientIpfs = (): PolywrapClient => { +export const getClient = (): PolywrapClient => { return new PolywrapClient( { resolver: new RecursiveResolver( diff --git a/packages/js/plugins/ipfs/src/index.ts b/packages/js/plugins/ipfs/src/index.ts index 4199159447..be944d9417 100644 --- a/packages/js/plugins/ipfs/src/index.ts +++ b/packages/js/plugins/ipfs/src/index.ts @@ -140,6 +140,6 @@ export class IpfsPlugin extends Module { export const ipfsPlugin: PluginFactory = ( config: IpfsPluginConfig -) => new PluginPackage(manifest, new IpfsPlugin(config)); +) => new PluginPackage(new IpfsPlugin(config), manifest); export const plugin = ipfsPlugin; diff --git a/packages/js/plugins/logger/src/index.ts b/packages/js/plugins/logger/src/index.ts index ff75cca749..1787c47153 100644 --- a/packages/js/plugins/logger/src/index.ts +++ b/packages/js/plugins/logger/src/index.ts @@ -47,6 +47,5 @@ export class LoggerPlugin extends Module { export const loggerPlugin: PluginFactory = ( config: LoggerPluginConfig -) => new PluginPackage(manifest, new LoggerPlugin(config)); - +) => new PluginPackage(new LoggerPlugin(config), manifest); export const plugin = loggerPlugin; diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/jest.config.js b/packages/js/plugins/uri-resolvers/ens-resolver/jest.config.js index 2ea443aa23..00d4a54d26 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/jest.config.js +++ b/packages/js/plugins/uri-resolvers/ens-resolver/jest.config.js @@ -1,9 +1,6 @@ module.exports = { roots: ["/src"], - testMatch: [ - "**/__tests__/**/*.+(ts|tsx|js)", - "**/?(*.)+(spec|test).+(ts|tsx|js)", - ], + testMatch: ["**/?(*.)+(spec|test).[jt]s?(x)"], transform: { "^.+\\.(ts|tsx)$": "ts-jest", }, diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/package.json b/packages/js/plugins/uri-resolvers/ens-resolver/package.json index bfbc4fab21..cb2dbfe490 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ens-resolver/package.json @@ -27,6 +27,10 @@ "ethers": "5.0.7" }, "devDependencies": { + "@polywrap/client-js": "0.7.0", + "@polywrap/ethereum-plugin-js": "0.7.0", + "@polywrap/ipfs-plugin-js": "0.7.0", + "@polywrap/ipfs-resolver-plugin-js": "0.7.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts index 06807c4690..85ce85bf1f 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts @@ -1,17 +1,13 @@ import { PolywrapClient } from "@polywrap/client-js"; -import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { buildAndDeployWrapper, - ensAddresses, initTestEnvironment, providers, - stopTestEnvironment + stopTestEnvironment, } from "@polywrap/test-env-js"; -import { ensResolverPlugin } from ".."; -import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; -import { ethereumPlugin, Connections, Connection } from "@polywrap/ethereum-plugin-js"; +import { getClient } from "./helpers/getClient"; jest.setTimeout(300000); @@ -28,43 +24,12 @@ describe("ENS Resolver Plugin", () => { wrapperAbsPath: wrapperAbsPath, ipfsProvider: providers.ipfs, ethereumProvider: providers.ethereum, - ensName: "cool.wrapper.eth" + ensName: "cool.wrapper.eth", }); wrapperEnsDomain = ensDomain; - client = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({ - provider: providers.ipfs, - fallbackProviders: defaultIpfsProviders - }) - }, - { - uri: "wrap://ens/ethereum.polywrap.eth", - plugin: ethereumPlugin({ - connections: new Connections({ - networks: { - testnet: new Connection({ - provider: providers.ethereum - }), - }, - defaultNetwork: "testnet" - }) - }) - }, - { - uri: "wrap://ens/ens-resolver.polywrap.eth", - plugin: ensResolverPlugin({ - addresses: { - testnet: ensAddresses.ensAddress - } - }) - } - ] - }); + client = getClient(); }); afterAll(async () => { diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts new file mode 100644 index 0000000000..80989ae4e7 --- /dev/null +++ b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts @@ -0,0 +1,73 @@ +import { ensResolverPlugin } from "../.."; +import { ensAddresses, providers } from "@polywrap/test-env-js"; +import { + Connection, + Connections, + ethereumPlugin, +} from "@polywrap/ethereum-plugin-js"; +import { + buildUriResolver, + RecursiveResolver, + PackageToWrapperCacheResolver, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; +import { coreInterfaceUris } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; +import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; + +export const getClient = () => { + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: [ + "wrap://ens/ipfs-resolver.polywrap.eth", + "wrap://ens/ens-resolver.polywrap.eth", + "wrap://ens/fs-resolver.polywrap.eth", + ], + }, + ], + resolver: new RecursiveResolver( + new PackageToWrapperCacheResolver( + new WrapperCache(), + buildUriResolver([ + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + package: ipfsResolverPlugin({}), + }, + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({ provider: providers.ipfs }), + }, + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ + connections: new Connections({ + networks: { + testnet: new Connection({ + provider: providers.ethereum, + }), + }, + defaultNetwork: "testnet", + }), + }), + }, + { + uri: "wrap://ens/ens-resolver.polywrap.eth", + package: ensResolverPlugin({ + addresses: { + testnet: ensAddresses.ensAddress, + }, + }), + }, + new ExtendableUriResolver(), + ]) + ) + ), + }, + { noDefaults: true } + ); +}; diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts index 826363da2d..a20aeabbdb 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts @@ -201,6 +201,6 @@ export class EnsResolverPlugin extends Module { export const ensResolverPlugin: PluginFactory = ( config: EnsResolverPluginConfig -) => new PluginPackage(manifest, new EnsResolverPlugin(config)); +) => new PluginPackage(new EnsResolverPlugin(config), manifest); export const plugin = ensResolverPlugin; diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/jest.config.js b/packages/js/plugins/uri-resolvers/file-system-resolver/jest.config.js index 38888109ca..00d4a54d26 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/jest.config.js +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/jest.config.js @@ -1,13 +1,8 @@ module.exports = { - "roots": [ - "/src" - ], - "testMatch": [ - "**/__tests__/**/*.+(ts|tsx|js)", - "**/?(*.)+(spec|test).+(ts|tsx|js)" - ], - "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" + roots: ["/src"], + testMatch: ["**/?(*.)+(spec|test).[jt]s?(x)"], + transform: { + "^.+\\.(ts|tsx)$": "ts-jest", }, - testEnvironment: 'node' -} + testEnvironment: "node", +}; diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/package.json b/packages/js/plugins/uri-resolvers/file-system-resolver/package.json index 71e2a96f55..0c8fa2e4fd 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/package.json @@ -24,6 +24,8 @@ "@polywrap/plugin-js": "0.7.0" }, "devDependencies": { + "@polywrap/client-js": "0.7.0", + "@polywrap/fs-plugin-js": "0.7.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/e2e.spec.ts b/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/e2e.spec.ts index 9d9ed70fe4..20012093bb 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/e2e.spec.ts @@ -1,111 +1,57 @@ -import { fileSystemResolverPlugin } from "../index"; -import { - buildWrapper, - initTestEnvironment, - stopTestEnvironment, - providers, - ensAddresses, -} from "@polywrap/test-env-js"; -import { - PolywrapClient, - PolywrapClientConfig, -} from "@polywrap/client-js"; -import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; +import { buildWrapper, stopTestEnvironment } from "@polywrap/test-env-js"; +import { Uri } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; -import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; -import { ethereumPlugin, Connections, Connection } from "@polywrap/ethereum-plugin-js"; import fs from "fs"; -import path from "path"; +import { getClient } from "./helpers/getClient"; jest.setTimeout(360000); +const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; +const simpleWrapperUri = new Uri(`fs/${simpleWrapperPath}/build`); + describe("Filesystem plugin", () => { let client: PolywrapClient; beforeAll(async () => { - await initTestEnvironment(); + await buildWrapper(simpleWrapperPath); - const config: Partial = { - plugins: [ - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - plugin: fileSystemResolverPlugin({ }), - }, - { - uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({ - provider: providers.ipfs, - fallbackProviders: defaultIpfsProviders, - }), - }, - { - uri: "wrap://ens/ens-resolver.polywrap.eth", - plugin: ensResolverPlugin({ - addresses: { - testnet: ensAddresses.ensAddress, - }, - }), - }, - { - uri: "wrap://ens/ethereum.polywrap.eth", - plugin: ethereumPlugin({ - connections: new Connections({ - networks: { - testnet: new Connection({ - provider: providers.ethereum - }) - }, - defaultNetwork: "testnet" - }) - }), - }, - ], - }; - client = new PolywrapClient(config); + client = getClient(); }); afterAll(async () => { await stopTestEnvironment(); }); - it("invokes simple-storage wrapper on local drive", async () => { - const wrapperPath = path.resolve( - `${GetPathToTestWrappers()}/wasm-as/simple-storage` - ); - await buildWrapper(wrapperPath); - - const fsPath = `${wrapperPath}/build`; - const fsUri = `fs/${fsPath}`; - - // invoke wrapper from filesystem - const deploy = await client.invoke({ - uri: fsUri, - method: "deployContract", + it("invokes simple wrapper on local file system", async () => { + const result = await client.invoke({ + uri: simpleWrapperUri.uri, + method: "simpleMethod", args: { - connection: { - networkNameOrChainId: "testnet", - }, + arg: "test", }, }); - expect(deploy.error).toBeFalsy(); - expect(deploy.data).toBeTruthy(); - expect(deploy.data?.indexOf("0x")).toBeGreaterThan(-1); + expect(result.error).toBeFalsy(); + expect(result.data).toBeTruthy(); + expect(typeof result.data).toBe("string"); + expect(result.data).toEqual("test"); // get the manifest - const manifest = await client.getManifest(fsUri); + const manifest = await client.getManifest(simpleWrapperUri); expect(manifest).toBeTruthy(); expect(manifest.version).toBe("0.1"); expect(manifest.type).toEqual("wasm"); // get a file - const file = await client.getFile(fsUri, { + const file = await client.getFile(simpleWrapperUri, { path: "wrap.info", }); - const expectedFile = await fs.promises.readFile(`${fsPath}/wrap.info`); + const expectedFile = await fs.promises.readFile( + `${simpleWrapperPath}/build/wrap.info` + ); const expectedInfo = Uint8Array.from(expectedFile); expect(file).toStrictEqual(expectedInfo); diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts b/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts new file mode 100644 index 0000000000..43f24408b4 --- /dev/null +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts @@ -0,0 +1,41 @@ +import { + buildUriResolver, + RecursiveResolver, + PackageToWrapperCacheResolver, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; +import { coreInterfaceUris } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; +import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; +import { fileSystemResolverPlugin } from "../.."; + +export const getClient = () => { + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/fs-resolver.polywrap.eth"], + }, + ], + resolver: new RecursiveResolver( + new PackageToWrapperCacheResolver( + new WrapperCache(), + buildUriResolver([ + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + new ExtendableUriResolver(), + ]) + ) + ), + }, + { noDefaults: true } + ); +}; diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts index 988ac9dbc9..836cdfb955 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts @@ -66,4 +66,4 @@ export class FileSystemResolverPlugin extends Module { } export const fileSystemResolverPlugin: PluginFactory = () => - new PluginPackage(manifest, new FileSystemResolverPlugin({})); \ No newline at end of file + new PluginPackage(new FileSystemResolverPlugin({}), manifest); diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts index c99820f19e..7638eb6887 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts @@ -1,9 +1,7 @@ import { PolywrapClient } from "@polywrap/client-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { buildAndDeployWrapper, initTestEnvironment, providers, stopTestEnvironment } from "@polywrap/test-env-js"; - -import { ipfsResolverPlugin } from ".."; -import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; +import { getClientWithIpfs } from "./helpers/getClientWithIpfs"; jest.setTimeout(300000); @@ -19,25 +17,12 @@ describe("IPFS Plugin", () => { wrapperAbsPath: `${GetPathToTestWrappers()}/wasm-as/simple-storage`, ipfsProvider: providers.ipfs, ethereumProvider: providers.ethereum, - ensName: "cool.wrapper.eth" + ensName: "cool.wrapper.eth", }); wrapperIpfsCid = ipfsCid; - client = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({ - provider: providers.ipfs - }) - }, - { - uri: "wrap://ens/ipfs-uri-resolver.polywrap.eth", - plugin: ipfsResolverPlugin({}) - } - ] - }); + client = getClientWithIpfs(); }); afterAll(async () => { diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts new file mode 100644 index 0000000000..74f5cd06f8 --- /dev/null +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts @@ -0,0 +1,44 @@ +import { providers } from "@polywrap/test-env-js"; +import { + buildUriResolver, + RecursiveResolver, + PackageToWrapperCacheResolver, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; +import { coreInterfaceUris } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; +import { ipfsResolverPlugin } from "../.."; + +export const getClientWithIpfs = () => { + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/ipfs-resolver.polywrap.eth"], + }, + ], + resolver: new RecursiveResolver( + new PackageToWrapperCacheResolver( + new WrapperCache(), + buildUriResolver([ + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({ + provider: providers.ipfs, + }), + }, + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + package: ipfsResolverPlugin({}), + }, + new ExtendableUriResolver(), + ]) + ) + ), + }, + { noDefaults: true } + ); +}; diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts index 9c352480b6..7bbba90341 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts @@ -104,6 +104,6 @@ export class IpfsResolverPlugin extends Module { } export const ipfsResolverPlugin: PluginFactory = () => - new PluginPackage(manifest, new IpfsResolverPlugin({})); + new PluginPackage(new IpfsResolverPlugin({}), manifest); export const plugin = ipfsResolverPlugin; diff --git a/packages/js/plugins/ws/jest.config.js b/packages/js/plugins/ws/jest.config.js index f0f063c0ce..fa146e8f9d 100644 --- a/packages/js/plugins/ws/jest.config.js +++ b/packages/js/plugins/ws/jest.config.js @@ -1,22 +1,11 @@ module.exports = { - "roots": [ - "/src" - ], - "testMatch": [ - "**/__tests__/**/*.+(ts|tsx|js)", - "**/?(*.)+(spec|test).+(ts|tsx|js)" - ], - "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" + roots: ["/src"], + testMatch: ["**/?(*.)+(spec|test).[jt]s?(x)"], + transform: { + "^.+\\.(ts|tsx)$": "ts-jest", }, - modulePathIgnorePatterns: [ - "/src/__tests__/e2e/integration/" - ], - testPathIgnorePatterns: [ - "/src/__tests__/e2e/integration/" - ], - transformIgnorePatterns: [ - "/src/__tests__/e2e/integration/" - ], - testEnvironment: 'node' -} + modulePathIgnorePatterns: ["/src/__tests__/e2e/integration/"], + testPathIgnorePatterns: ["/src/__tests__/e2e/integration/"], + transformIgnorePatterns: ["/src/__tests__/e2e/integration/"], + testEnvironment: "node", +}; diff --git a/packages/js/plugins/ws/package.json b/packages/js/plugins/ws/package.json index f05dce11b1..e890e579eb 100644 --- a/packages/js/plugins/ws/package.json +++ b/packages/js/plugins/ws/package.json @@ -24,6 +24,7 @@ "@polywrap/plugin-js": "0.7.0" }, "devDependencies": { + "@polywrap/uri-resolvers-js": "0.7.0", "@polywrap/client-js": "0.7.0", "@polywrap/test-env-js": "0.7.0", "@types/jest": "26.0.8", diff --git a/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts index df8e969fd9..00023eb9de 100644 --- a/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts @@ -3,52 +3,52 @@ import { Message } from "../../wrap"; import WS from "jest-websocket-mock"; import { PolywrapClient } from "@polywrap/client-js" -import { Client, PluginModule } from "@polywrap/core-js"; -import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; +import { Client } from "@polywrap/core-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { PluginPackage } from "@polywrap/plugin-js"; describe("WebSocket plugin", () => { - - let polywrapClient: PolywrapClient - let server: WS - let t1: ReturnType - let t2: ReturnType - let t3: ReturnType + let polywrapClient: PolywrapClient; + let server: WS; + let t1: ReturnType; + let t2: ReturnType; + let t3: ReturnType; const setup = () => { polywrapClient = new PolywrapClient({ - plugins: [ + resolver: buildUriResolver([ { uri: "wrap://ens/ws.polywrap.eth", - plugin: wsPlugin({}), + package: wsPlugin({}), }, - ] + ]), }); server = new WS("ws://localhost:1234"); t1 = setTimeout(() => { - server.send("1") - }, 100) + server.send("1"); + }, 100); t2 = setTimeout(() => { - server.send("2") - }, 200) + server.send("2"); + }, 200); t3 = setTimeout(() => { - server.send("3") - }, 300) - } + server.send("3"); + }, 300); + }; const teardown = () => { WS.clean(); - clearTimeout(t1) - clearTimeout(t2) - clearTimeout(t3) - } + clearTimeout(t1); + clearTimeout(t2); + clearTimeout(t3); + }; describe("init", () => { beforeEach(() => { - setup() + setup(); }); afterEach(() => { - teardown() + teardown(); }); it("should open a websocket connection", async () => { @@ -56,11 +56,11 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); - await server.connected + await server.connected; }); it("should return after timeout if connection can't be opened", async () => { @@ -69,9 +69,9 @@ describe("WebSocket plugin", () => { method: "open", args: { url: "ws://localhost:1235", - timeout: 50 - } - }) + timeout: 50, + }, + }); }); it("should close a websocket connection", async () => { @@ -79,49 +79,48 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "close", args: { - id - } - }) + id, + }, + }); - await server.closed + await server.closed; }); }); describe("send", () => { beforeEach(() => { - setup() + setup(); }); afterEach(() => { - teardown() + teardown(); }); it("should send a message to the server", async () => { - const { data: id } = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "send", args: { id, - message: "test" - } - }) + message: "test", + }, + }); await expect(server).toReceiveMessage("test"); expect(server).toHaveReceivedMessages(["test"]); @@ -129,59 +128,44 @@ describe("WebSocket plugin", () => { }); describe("callback", () => { - - let msgs: string[] = [] + let msgs: string[] = []; beforeEach(() => { - setup() - polywrapClient = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/ws.polywrap.eth", - plugin: wsPlugin({}), - }, - ] - }); - class CallbackPlugin extends PluginModule<{}> { + setup(); + + const callbackPlugin = PluginPackage.from(() => ({ callback(args: { data: string }, _client: Client): void { - msgs.push(args.data) - return + msgs.push(args.data); } - } - let stubPlugin = { - factory: () => { - return new CallbackPlugin({}) - }, - manifest: { } as WrapManifest, - } + })); + polywrapClient = new PolywrapClient({ - plugins: [ + resolver: buildUriResolver([ { uri: "wrap://ens/ws.polywrap.eth", - plugin: wsPlugin({}), + package: wsPlugin({}), }, { uri: "wrap://ens/stub.polywrap.eth", - plugin: stubPlugin, - } - ] + package: callbackPlugin, + }, + ]), }); }); afterEach(() => { - teardown() - msgs = [] + teardown(); + msgs = []; }); it("should pass messages to a callback", async () => { - const { data: id } = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", @@ -190,12 +174,14 @@ describe("WebSocket plugin", () => { id, callback: { uri: "wrap://ens/stub.polywrap.eth", - method: "callback" - } - } - }) + method: "callback", + }, + }, + }); - await new Promise(async (resolve) => {setTimeout(() => resolve(), 250)}) + await new Promise(async (resolve) => { + setTimeout(() => resolve(), 250); + }); expect(msgs).toEqual(["1", "2"]); }); @@ -205,9 +191,9 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", @@ -216,27 +202,31 @@ describe("WebSocket plugin", () => { id, callback: { uri: "wrap://ens/stub.polywrap.eth", - method: "callback" - } - } - }) + method: "callback", + }, + }, + }); - await new Promise(async (resolve) => {setTimeout(async () => { - await polywrapClient.invoke({ - uri: "wrap://ens/ws.polywrap.eth", - method: "removeCallback", - args: { - id, - callback: { - uri: "wrap://ens/stub.polywrap.eth", - method: "callback" - } - } - }) - resolve() - }, 250)}) - - await new Promise(async (resolve) => {setTimeout(() => resolve(), 250)}) + await new Promise(async (resolve) => { + setTimeout(async () => { + await polywrapClient.invoke({ + uri: "wrap://ens/ws.polywrap.eth", + method: "removeCallback", + args: { + id, + callback: { + uri: "wrap://ens/stub.polywrap.eth", + method: "callback", + }, + }, + }); + resolve(); + }, 250); + }); + + await new Promise(async (resolve) => { + setTimeout(() => resolve(), 250); + }); expect(msgs).toEqual(["1", "2"]); }); @@ -244,42 +234,43 @@ describe("WebSocket plugin", () => { describe("cache", () => { beforeEach(() => { - setup() + setup(); }); afterEach(() => { - teardown() + teardown(); }); it("should receive a message", async () => { - const { data: id } = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id - } - }) + id, + }, + }); - await new Promise(async (resolve) => {setTimeout(() => resolve(), 250)}) + await new Promise(async (resolve) => { + setTimeout(() => resolve(), 250); + }); const response = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { - id - } - }) + id, + }, + }); - let data = response?.data?.map((msg) => msg.data) + let data = response?.data?.map((msg) => msg.data); expect(data).toEqual(["1", "2"]); }); @@ -288,40 +279,44 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id - } - }) + id, + }, + }); - await new Promise(async (resolve) => {setTimeout(async () => { - await polywrapClient.invoke({ - uri: "wrap://ens/ws.polywrap.eth", - method: "removeCache", - args: { - id - } - }) - resolve() - }, 200)}) + await new Promise(async (resolve) => { + setTimeout(async () => { + await polywrapClient.invoke({ + uri: "wrap://ens/ws.polywrap.eth", + method: "removeCache", + args: { + id, + }, + }); + resolve(); + }, 200); + }); - await new Promise(async (resolve) => {setTimeout(() => resolve(), 250)}) + await new Promise(async (resolve) => { + setTimeout(() => resolve(), 250); + }); const response = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { - id - } - }) + id, + }, + }); - let data = response?.data?.map((msg) => msg.data) + let data = response?.data?.map((msg) => msg.data); expect(data).toEqual(["1", "2"]); }); @@ -330,29 +325,28 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id - } - }) + id, + }, + }); const response = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { id, - timeout: 250 - } - }) - + timeout: 250, + }, + }); - let data = response?.data?.map((msg) => msg.data) + let data = response?.data?.map((msg) => msg.data); expect(data).toEqual(["1", "2"]); }); @@ -361,28 +355,28 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id - } - }) + id, + }, + }); const response = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { id, - min: 2 - } - }) + min: 2, + }, + }); - let data = response?.data?.map((msg) => msg.data) + let data = response?.data?.map((msg) => msg.data); expect(data).toEqual(["1", "2"]); }); @@ -391,17 +385,17 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id - } - }) + id, + }, + }); const response = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", @@ -409,11 +403,11 @@ describe("WebSocket plugin", () => { args: { id, timeout: 110, - min: 2 - } - }) + min: 2, + }, + }); - let data = response?.data?.map((msg) => msg.data) + let data = response?.data?.map((msg) => msg.data); expect(data).toEqual(["1"]); }); @@ -422,17 +416,17 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id - } - }) + id, + }, + }); const response = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", @@ -440,69 +434,74 @@ describe("WebSocket plugin", () => { args: { id, timeout: 300, - min: 1 - } - }) + min: 1, + }, + }); - let data = response?.data?.map((msg) => msg.data) + let data = response?.data?.map((msg) => msg.data); expect(data).toEqual(["1"]); }); it("should receive messages in batches", async () => { - const { data: id } = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "open", args: { - url: "ws://localhost:1234" - } - }) + url: "ws://localhost:1234", + }, + }); await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id - } - }) + id, + }, + }); - await new Promise(async (resolve) => {setTimeout(() => resolve(), 250)}) + await new Promise(async (resolve) => { + setTimeout(() => resolve(), 250); + }); const response1 = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { - id - } - }) + id, + }, + }); - await new Promise(async (resolve) => {setTimeout(() => resolve(), 100)}) + await new Promise(async (resolve) => { + setTimeout(() => resolve(), 100); + }); const response2 = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { - id - } - }) + id, + }, + }); - await new Promise(async (resolve) => {setTimeout(() => resolve(), 100)}) + await new Promise(async (resolve) => { + setTimeout(() => resolve(), 100); + }); const response3 = await polywrapClient.invoke({ uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { - id - } - }) + id, + }, + }); - let data1 = response1?.data?.map((msg) => msg.data) + let data1 = response1?.data?.map((msg) => msg.data); expect(data1).toEqual(["1", "2"]); - let data2 = response2?.data?.map((msg) => msg.data) + let data2 = response2?.data?.map((msg) => msg.data); expect(data2).toEqual(["3"]); - let data3 = response3?.data?.map((msg) => msg.data) + let data3 = response3?.data?.map((msg) => msg.data); expect(data3).toEqual([]); }); }); diff --git a/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts b/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts index 4578dddeda..3fe4d3b280 100644 --- a/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts +++ b/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts @@ -1,31 +1,30 @@ import { wsPlugin } from "../.."; -import { Client, PluginModule } from "@polywrap/core-js"; -import { PolywrapClient } from "@polywrap/client-js" +import { Client } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; import { buildWrapper } from "@polywrap/test-env-js"; -import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import WS from "jest-websocket-mock"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { PluginPackage } from "@polywrap/plugin-js"; -jest.setTimeout(360000) +jest.setTimeout(360000); describe("e2e tests for WsPlugin", () => { - describe("integration", () => { - let client: PolywrapClient; let server: WS; - const wrapperPath = `${__dirname}/integration` - const uri = `fs/${wrapperPath}/build` + const wrapperPath = `${__dirname}/integration`; + const uri = `fs/${wrapperPath}/build`; beforeAll(async () => { client = new PolywrapClient({ - plugins: [ + resolver: buildUriResolver([ { uri: "wrap://ens/ws.polywrap.eth", - plugin: wsPlugin({}), + package: wsPlugin({}), }, - ], + ]), }); await buildWrapper(wrapperPath); @@ -40,44 +39,39 @@ describe("e2e tests for WsPlugin", () => { }); it("send", async () => { - await client.invoke({ uri, method: "send", args: { url: "ws://localhost:1234", - message: "test" - } - }) + message: "test", + }, + }); await expect(server).toReceiveMessage("test"); expect(server).toHaveReceivedMessages(["test"]); }); it("callback to plugin", async () => { - let msgs: string[] = [] - class MemoryPlugin extends PluginModule<{}> { + let msgs: string[] = []; + + const memoryPlugin = PluginPackage.from(() => ({ callback(args: { data: string }, _client: Client): void { - msgs.push(args.data) - } - } - let memoryPlugin = { - factory: () => { - return new MemoryPlugin({}) + msgs.push(args.data); }, - manifest: { } as WrapManifest, - } + })); + client = new PolywrapClient({ - plugins: [ + resolver: buildUriResolver([ { uri: "wrap://ens/memory.polywrap.eth", - plugin: memoryPlugin + package: memoryPlugin, }, { uri: "wrap://ens/ws.polywrap.eth", - plugin: wsPlugin({}), + package: wsPlugin({}), }, - ], + ]), }); await client.invoke({ @@ -87,48 +81,46 @@ describe("e2e tests for WsPlugin", () => { url: "ws://localhost:1234", callback: { uri: "wrap://ens/memory.polywrap.eth", - method: "callback" - } - } + method: "callback", + }, + }, }); - server.send("1") - server.send("2") + server.send("1"); + server.send("2"); // wait for callbacks to be called - await new Promise(async (resolve) => {setTimeout(() => resolve(), 1)}) + await new Promise(async (resolve) => { + setTimeout(() => resolve(), 1); + }); - expect(msgs).toEqual(["1","2"]) + expect(msgs).toEqual(["1", "2"]); }); it("callback to wrapper", async () => { - let value: Record = {} - class MemoryPlugin extends PluginModule<{}> { - set(args: { key: string, value: string }, _client: Client): boolean { - value[args.key] = args.value - return true - } + let value: Record = {}; + + const memoryPlugin = PluginPackage.from(() => ({ + set(args: { key: string; value: string }, _client: Client): boolean { + value[args.key] = args.value; + return true; + }, get(args: { key: string }, _client: Client): string | null { - return value[args.key] ?? null - } - } - let memoryPlugin = { - factory: () => { - return new MemoryPlugin({}) + return value[args.key] ?? null; }, - manifest: { } as WrapManifest, - } + })); + client = new PolywrapClient({ - plugins: [ + resolver: buildUriResolver([ { uri: "wrap://ens/memory.polywrap.eth", - plugin: memoryPlugin + package: memoryPlugin, }, { uri: "wrap://ens/ws.polywrap.eth", - plugin: wsPlugin({}), + package: wsPlugin({}), }, - ], + ]), }); await client.invoke({ @@ -138,44 +130,43 @@ describe("e2e tests for WsPlugin", () => { url: "ws://localhost:1234", callback: { uri, - method: "callback" + method: "callback", }, - message: "test" - } + message: "test", + }, }); server.send("1"); - + await expect(server).toReceiveMessage("test"); expect(server).toHaveReceivedMessages(["test"]); }); it("cache", async () => { - let t1 = setTimeout(() => { - server.send("1") - }, 10) + server.send("1"); + }, 10); let t2 = setTimeout(() => { - server.send("2") - }, 20) + server.send("2"); + }, 20); let t3 = setTimeout(() => { - server.send("3") - }, 30) - + server.send("3"); + }, 30); + const response = await client.invoke({ uri, method: "get", args: { url: "ws://localhost:1234", - timeout: 20 - } + timeout: 20, + }, }); - expect(response.data).toEqual(["1","2"]) + expect(response.data).toEqual(["1", "2"]); - clearTimeout(t1) - clearTimeout(t2) - clearTimeout(t3) + clearTimeout(t1); + clearTimeout(t2); + clearTimeout(t3); }); }); }); diff --git a/packages/js/plugins/ws/src/index.ts b/packages/js/plugins/ws/src/index.ts index fb88b6e3a8..8576c010b8 100644 --- a/packages/js/plugins/ws/src/index.ts +++ b/packages/js/plugins/ws/src/index.ts @@ -154,6 +154,6 @@ export class WsPlugin extends Module { } export const wsPlugin: PluginFactory = () => - new PluginPackage(manifest, new WsPlugin({})); + new PluginPackage(new WsPlugin({}), manifest); export const plugin = wsPlugin; From ef1b50952aeb119f0a6ecd92605b952bb5e200cc Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 28 Sep 2022 17:49:53 +0200 Subject: [PATCH 033/126] updated packages to 0.8.0 --- .../infra-modules/http/server/package.json | 2 +- packages/js/client/package.json | 11 ++++------- packages/js/plugin-js/package.json | 14 +++++++------- packages/js/plugins/ethereum/package.json | 2 +- packages/js/plugins/http/package.json | 2 +- packages/js/plugins/ipfs/package.json | 2 +- .../uri-resolvers/ens-resolver/package.json | 10 +++++----- .../uri-resolvers/ipfs-resolver/package.json | 2 +- packages/js/test-env/package.json | 2 +- .../cases/cli/run/run-test-wrapper/package.json | 2 +- 10 files changed, 23 insertions(+), 26 deletions(-) diff --git a/packages/cli/src/lib/defaults/infra-modules/http/server/package.json b/packages/cli/src/lib/defaults/infra-modules/http/server/package.json index bd5e0a3ba6..0619e87241 100644 --- a/packages/cli/src/lib/defaults/infra-modules/http/server/package.json +++ b/packages/cli/src/lib/defaults/infra-modules/http/server/package.json @@ -12,7 +12,7 @@ }, "license": "MIT", "dependencies": { - "@polywrap/msgpack-js": "0.7.0", + "@polywrap/msgpack-js": "0.8.0", "@types/multer": "1.4.7", "dotenv": "8.6.0", "express": "4.18.1", diff --git a/packages/js/client/package.json b/packages/js/client/package.json index bb8f77782f..3a54d5d190 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -40,18 +40,15 @@ "@polywrap/test-env-js": "0.8.0", "@polywrap/ens-resolver-plugin-js": "0.8.0", "@polywrap/ethereum-plugin-js": "0.8.0", - "@polywrap/fs-plugin-js": "0.8.0", - "@polywrap/fs-resolver-plugin-js": "0.8.0", "@polywrap/http-plugin-js": "0.8.0", "@polywrap/http-resolver-plugin-js": "0.8.0", "@polywrap/ipfs-plugin-js": "0.8.0", "@polywrap/ipfs-resolver-plugin-js": "0.8.0", "@polywrap/logger-plugin-js": "0.8.0", - "@polywrap/ipfs-resolver-plugin-js": "0.7.0", - "@polywrap/fs-plugin-js": "0.7.0", - "@polywrap/uri-resolver-extensions-js": "0.7.0", - "@polywrap/fs-resolver-plugin-js": "0.7.0", - "@polywrap/plugin-js": "0.7.0", + "@polywrap/fs-plugin-js": "0.8.0", + "@polywrap/uri-resolver-extensions-js": "0.8.0", + "@polywrap/fs-resolver-plugin-js": "0.8.0", + "@polywrap/plugin-js": "0.8.0", "@types/jest": "26.0.8", "@types/js-yaml": "3.11.1", "@types/prettier": "2.6.0", diff --git a/packages/js/plugin-js/package.json b/packages/js/plugin-js/package.json index 5d3ea65068..83d8c5c61f 100644 --- a/packages/js/plugin-js/package.json +++ b/packages/js/plugin-js/package.json @@ -1,7 +1,7 @@ { "name": "@polywrap/plugin-js", "description": "Polywrap plugin core package for plugin wrappers", - "version": "0.7.0", + "version": "0.8.0", "license": "MIT", "repository": { "type": "git", @@ -19,14 +19,14 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/result": "0.7.0", - "@polywrap/core-js": "0.7.0", - "@polywrap/msgpack-js": "0.7.0", - "@polywrap/tracing-js": "0.7.0", - "@polywrap/wrap-manifest-types-js": "0.7.0" + "@polywrap/result": "0.8.0", + "@polywrap/core-js": "0.8.0", + "@polywrap/msgpack-js": "0.8.0", + "@polywrap/tracing-js": "0.8.0", + "@polywrap/wrap-manifest-types-js": "0.8.0" }, "devDependencies": { - "@polywrap/os-js": "0.7.0", + "@polywrap/os-js": "0.8.0", "@types/jest": "26.0.8", "jest": "26.6.3", "rimraf": "3.0.2", diff --git a/packages/js/plugins/ethereum/package.json b/packages/js/plugins/ethereum/package.json index a61323d53f..50f0f741ab 100644 --- a/packages/js/plugins/ethereum/package.json +++ b/packages/js/plugins/ethereum/package.json @@ -23,7 +23,7 @@ "@ethersproject/address": "5.0.7", "@ethersproject/providers": "5.0.7", "@polywrap/core-js": "0.8.0", - "@polywrap/plugin-js": "0.7.0", + "@polywrap/plugin-js": "0.8.0", "ethers": "5.0.7" }, "devDependencies": { diff --git a/packages/js/plugins/http/package.json b/packages/js/plugins/http/package.json index 05e5833bfc..b1c753ddaf 100644 --- a/packages/js/plugins/http/package.json +++ b/packages/js/plugins/http/package.json @@ -21,7 +21,7 @@ }, "dependencies": { "@polywrap/core-js": "0.8.0", - "@polywrap/plugin-js": "0.7.0", + "@polywrap/plugin-js": "0.8.0", "axios": "0.21.4" }, "devDependencies": { diff --git a/packages/js/plugins/ipfs/package.json b/packages/js/plugins/ipfs/package.json index b8490656cc..78bdacc483 100644 --- a/packages/js/plugins/ipfs/package.json +++ b/packages/js/plugins/ipfs/package.json @@ -22,7 +22,7 @@ "dependencies": { "@dorgjelli-test/ipfs-http-client-lite": "0.3.1", "@polywrap/core-js": "0.8.0", - "@polywrap/plugin-js": "0.7.0", + "@polywrap/plugin-js": "0.8.0", "abort-controller": "3.0.0", "is-ipfs": "1.0.3", "multiformats": "9.7.0" diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/package.json b/packages/js/plugins/uri-resolvers/ens-resolver/package.json index 4e8574bbb7..a9ba43789f 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ens-resolver/package.json @@ -23,14 +23,14 @@ "@ethersproject/address": "5.0.7", "@ethersproject/basex": "5.0.7", "@polywrap/core-js": "0.8.0", - "@polywrap/plugin-js": "0.7.0", + "@polywrap/plugin-js": "0.8.0", "ethers": "5.0.7" }, "devDependencies": { - "@polywrap/client-js": "0.7.0", - "@polywrap/ethereum-plugin-js": "0.7.0", - "@polywrap/ipfs-plugin-js": "0.7.0", - "@polywrap/ipfs-resolver-plugin-js": "0.7.0", + "@polywrap/client-js": "0.8.0", + "@polywrap/ethereum-plugin-js": "0.8.0", + "@polywrap/ipfs-plugin-js": "0.8.0", + "@polywrap/ipfs-resolver-plugin-js": "0.8.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json index be38106d84..7cb49092b4 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json @@ -22,7 +22,7 @@ "dependencies": { "@dorgjelli-test/ipfs-http-client-lite": "0.3.1", "@polywrap/core-js": "0.8.0", - "@polywrap/plugin-js": "0.7.0", + "@polywrap/plugin-js": "0.8.0", "abort-controller": "3.0.0", "is-ipfs": "1.0.3" }, diff --git a/packages/js/test-env/package.json b/packages/js/test-env/package.json index 2fce1b848a..35171ed4de 100644 --- a/packages/js/test-env/package.json +++ b/packages/js/test-env/package.json @@ -19,7 +19,7 @@ "dependencies": { "@polywrap/core-js": "0.8.0", "@polywrap/polywrap-manifest-types-js": "0.8.0", - "@polywrap/uri-resolvers-js": "0.7.0", + "@polywrap/uri-resolvers-js": "0.8.0", "axios": "0.21.2", "js-yaml": "4.1.0", "spawn-command": "0.0.2-1" diff --git a/packages/test-cases/cases/cli/run/run-test-wrapper/package.json b/packages/test-cases/cases/cli/run/run-test-wrapper/package.json index f75c8ffe0e..fa4c02dc87 100644 --- a/packages/test-cases/cases/cli/run/run-test-wrapper/package.json +++ b/packages/test-cases/cases/cli/run/run-test-wrapper/package.json @@ -7,7 +7,7 @@ "build": "polywrap build" }, "dependencies": { - "@polywrap/wasm-as": "0.7.0" + "@polywrap/wasm-as": "0.8.0" }, "devDependencies": { "assemblyscript": "0.19.5" From e9f488c5a458ad42be56fd2262529f3d823ddd61 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 28 Sep 2022 18:42:15 +0200 Subject: [PATCH 034/126] fixes after merge with remote --- package.json | 1 - .../src/bundles/default-client-config.ts | 11 +- packages/js/client/src/PolywrapClient.ts | 24 --- .../helpers/mockPluginRegistration.ts | 4 +- packages/js/core/src/types/Client.ts | 1 - packages/js/plugin-js/src/PluginPackage.ts | 9 +- packages/js/plugin-js/src/PluginWrapper.ts | 10 +- packages/js/plugins/file-system/package.json | 1 - packages/js/plugins/ipfs/src/index.ts | 5 +- packages/js/plugins/logger/package.json | 1 - .../file-system-resolver/package.json | 1 - .../uri-resolvers/http-resolver/package.json | 1 + .../uri-resolvers/http-resolver/src/index.ts | 11 +- .../src/helpers/buildUriResolver.ts | 12 +- .../src/redirects/RedirectResolver.ts | 2 +- .../src/static/StaticResolver.ts | 9 +- yarn.lock | 144 +++++++++--------- 17 files changed, 101 insertions(+), 146 deletions(-) diff --git a/package.json b/package.json index 1d5041cf7d..6bd773fc63 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "dependencies:install": "cd dependencies && yarn", "preinstall": "yarn dependencies:install", "build": "yarn build:core && yarn link:schema && yarn build:interfaces && yarn build:plugins && yarn build:resolver:plugins && yarn build:config && yarn build:client && yarn build:test-env && yarn build:cli", - "build": "yarn build:core && yarn link:schema && yarn build:interfaces && yarn build:plugins && yarn build:resolver:plugins && yarn build:config && yarn build:client && yarn build:test-env && yarn build:cli", "build:core": "lerna run build --no-private --ignore @polywrap/*plugin-js --ignore @polywrap/client-config-builder-js --ignore polywrap --ignore @polywrap/client-js --ignore @polywrap/react --ignore @polywrap/test-env-js --ignore @polywrap/*-interface", "build:interfaces": "lerna run build --scope @polywrap/*-interface", "build:plugins": "lerna run build --scope @polywrap/*plugin-js --ignore @polywrap/*-resolver-plugin-js", diff --git a/packages/js/client-config-builder/src/bundles/default-client-config.ts b/packages/js/client-config-builder/src/bundles/default-client-config.ts index bf1fad745d..8a96801365 100644 --- a/packages/js/client-config-builder/src/bundles/default-client-config.ts +++ b/packages/js/client-config-builder/src/bundles/default-client-config.ts @@ -103,7 +103,7 @@ export const getDefaultPlugins = (): UriResolverLike[] => { // IPFS is required for downloading Polywrap packages { uri: new Uri("wrap://ens/ipfs.polywrap.eth"), - plugin: ipfsPlugin({}), + package: ipfsPlugin({}), }, // ENS is required for resolving domain to IPFS hashes { @@ -132,10 +132,10 @@ export const getDefaultPlugins = (): UriResolverLike[] => { package: httpPlugin({}), }, { - uri: new Uri("wrap://ens/http-resolver.polywrap.eth"), - plugin: httpResolverPlugin({}), - }, - { + uri: new Uri("wrap://ens/http-resolver.polywrap.eth"), + package: httpResolverPlugin({}), + }, + { uri: new Uri("wrap://ens/js-logger.polywrap.eth"), package: loggerPlugin({}), }, @@ -151,6 +151,5 @@ export const getDefaultPlugins = (): UriResolverLike[] => { uri: new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), package: ipfsResolverPlugin({}), }, - new Uri("wrap://ens/http-resolver.polywrap.eth"), ]; }; diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index edc06c9a42..7c16e92234 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -25,7 +25,6 @@ import { UriPackageOrWrapper, UriResolutionContext, getEnvFromUriHistory, - PluginPackage, QueryResult, InvokeResult, } from "@polywrap/core-js"; @@ -122,12 +121,6 @@ export class PolywrapClient implements Client { return this._config.redirects; } - @Tracer.traceMethod("PolywrapClient: getPlugin") - public getPluginByUri( - uri: TUri - ): PluginPackage | undefined { - return this.getPlugins().find((x) => Uri.equals(x.uri, Uri.from(uri))) - ?.plugin; @Tracer.traceMethod("PolywrapClient: getInterfaces") public getInterfaces(): readonly InterfaceImplementations[] { return this._config.interfaces; @@ -532,21 +525,4 @@ export class PolywrapClient implements Client { return ResultOk(uriPackageOrWrapper.wrapper); } } - - @Tracer.traceMethod("PolywrapClient: validateConfig") - private _validateConfig(): void { - // Require plugins to use non-interface URIs - const pluginUris = this.getPlugins().map((x) => x.uri.uri); - const interfaceUris = this.getInterfaces().map((x) => x.interface.uri); - - const pluginsWithInterfaceUris = pluginUris.filter((plugin) => - interfaceUris.includes(plugin) - ); - - if (pluginsWithInterfaceUris.length) { - throw Error( - `Plugins can't use interfaces for their URI. Invalid plugins: ${pluginsWithInterfaceUris}` - ); - } - } } diff --git a/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts b/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts index 5eb003fc0a..2f8d7c7f4e 100644 --- a/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts +++ b/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts @@ -1,10 +1,10 @@ -import { toUri, Uri } from "@polywrap/core-js"; +import { Uri } from "@polywrap/core-js"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; export const mockPluginRegistration = (uri: string | Uri) => { return { - uri: toUri(uri), + uri: Uri.from(uri), package: new PluginPackage( {} as WrapManifest, ({} as unknown) as PluginModule<{}> diff --git a/packages/js/core/src/types/Client.ts b/packages/js/core/src/types/Client.ts index 9273b0db7f..3f7cfd8716 100644 --- a/packages/js/core/src/types/Client.ts +++ b/packages/js/core/src/types/Client.ts @@ -6,7 +6,6 @@ import { Uri, InterfaceImplementations, Env, - PluginPackage, } from "./"; import { IUriResolver } from "../uri-resolution"; import { UriResolverHandler } from "./UriResolver"; diff --git a/packages/js/plugin-js/src/PluginPackage.ts b/packages/js/plugin-js/src/PluginPackage.ts index 64fa6d50c2..2392f6a318 100644 --- a/packages/js/plugin-js/src/PluginPackage.ts +++ b/packages/js/plugin-js/src/PluginPackage.ts @@ -1,4 +1,5 @@ import { IWrapPackage, Wrapper } from "@polywrap/core-js"; +import { Result, ResultOk } from "@polywrap/result"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { PluginModule } from "./PluginModule"; import { PluginWrapper } from "./PluginWrapper"; @@ -37,11 +38,11 @@ export class PluginPackage implements IWrapPackage { } } - async getManifest(): Promise { - return this.manifest; + async getManifest(): Promise> { + return ResultOk(this.manifest); } - async createWrapper(): Promise { - return new PluginWrapper(this.manifest, this.pluginModule); + async createWrapper(): Promise> { + return ResultOk(new PluginWrapper(this.manifest, this.pluginModule)); } } diff --git a/packages/js/plugin-js/src/PluginWrapper.ts b/packages/js/plugin-js/src/PluginWrapper.ts index 5ad5c99e76..bbcae9d615 100644 --- a/packages/js/plugin-js/src/PluginWrapper.ts +++ b/packages/js/plugin-js/src/PluginWrapper.ts @@ -53,17 +53,13 @@ export class PluginWrapper implements Wrapper { ); const { method } = options; const args = options.args || {}; - const module = this._getInstance(); - if (!module) { - return ResultErr(Error(`PluginWrapper: module "${module}" not found.`)); - } - if (!module.getMethod(method)) { + if (!this.module.getMethod(method)) { return ResultErr(Error(`PluginWrapper: method "${method}" not found.`)); } // Set the module's environment - await module.setEnv(options.env || {}); + this.module.setEnv(options.env || {}); let jsArgs: Record; @@ -86,7 +82,7 @@ export class PluginWrapper implements Wrapper { } // Invoke the function - const result = await module._wrap_invoke(method, jsArgs, client); + const result = await this.module._wrap_invoke(method, jsArgs, client); if (result.ok) { const data = result.value; diff --git a/packages/js/plugins/file-system/package.json b/packages/js/plugins/file-system/package.json index f085c44df3..9a61648d80 100644 --- a/packages/js/plugins/file-system/package.json +++ b/packages/js/plugins/file-system/package.json @@ -21,7 +21,6 @@ }, "dependencies": { "@polywrap/core-js": "0.8.0", - "@polywrap/core-js": "0.8.0" "@polywrap/plugin-js": "0.8.0" }, "devDependencies": { diff --git a/packages/js/plugins/ipfs/src/index.ts b/packages/js/plugins/ipfs/src/index.ts index 8a9d86046c..1d346fcdd3 100644 --- a/packages/js/plugins/ipfs/src/index.ts +++ b/packages/js/plugins/ipfs/src/index.ts @@ -159,8 +159,7 @@ export class IpfsPlugin extends Module { } } -export const ipfsPlugin: PluginFactory = ( - config: IpfsPluginConfig -) => new PluginPackage(new IpfsPlugin(config), manifest); +export const ipfsPlugin: PluginFactory = () => + new PluginPackage(new IpfsPlugin({}), manifest); export const plugin = ipfsPlugin; diff --git a/packages/js/plugins/logger/package.json b/packages/js/plugins/logger/package.json index 8efc4d1b24..eea3d8a52f 100644 --- a/packages/js/plugins/logger/package.json +++ b/packages/js/plugins/logger/package.json @@ -21,7 +21,6 @@ }, "dependencies": { "@polywrap/core-js": "0.8.0", - "@polywrap/core-js": "0.8.0" "@polywrap/plugin-js": "0.8.0" }, "devDependencies": { diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/package.json b/packages/js/plugins/uri-resolvers/file-system-resolver/package.json index 034f0c62d7..0d8a88095a 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/package.json @@ -21,7 +21,6 @@ }, "dependencies": { "@polywrap/core-js": "0.8.0", - "@polywrap/core-js": "0.8.0" "@polywrap/plugin-js": "0.8.0" }, "devDependencies": { diff --git a/packages/js/plugins/uri-resolvers/http-resolver/package.json b/packages/js/plugins/uri-resolvers/http-resolver/package.json index 71aaa4415c..d3b12479be 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/http-resolver/package.json @@ -25,6 +25,7 @@ "abort-controller": "3.0.0" }, "devDependencies": { + "@polywrap/plugin-js": "0.8.0", "@polywrap/http-plugin-js": "0.8.0", "@polywrap/polywrap-manifest-types-js": "0.8.0", "@polywrap/test-env-js": "0.8.0", diff --git a/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts index 9dc0003e72..d20dd89ec9 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts @@ -8,8 +8,7 @@ import { Module, UriResolver_MaybeUriOrManifest, } from "./wrap"; - -import { PluginFactory } from "@polywrap/core-js"; +import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; type NoConfig = Record; @@ -84,11 +83,7 @@ export class HttpResolverPlugin extends Module { } } -export const httpResolverPlugin: PluginFactory = () => { - return { - factory: () => new HttpResolverPlugin({}), - manifest, - }; -}; +export const httpResolverPlugin: PluginFactory = () => + new PluginPackage(new HttpResolverPlugin({}), manifest); export const plugin = httpResolverPlugin; diff --git a/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts b/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts index 71190fcd69..9fc0a78de6 100644 --- a/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts +++ b/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts @@ -3,13 +3,7 @@ import { PackageResolver } from "../packages"; import { WrapperResolver } from "../wrappers"; import { Result } from "@polywrap/result"; -import { - IUriResolver, - Uri, - Client, - toUri, - UriRedirect, -} from "@polywrap/core-js"; +import { IUriResolver, Uri, Client, UriRedirect } from "@polywrap/core-js"; import { PackageRegistration, WrapperRegistration, @@ -53,7 +47,7 @@ export const buildUriResolver = ( ) { const uriPackage = resolverLike as PackageRegistration; return (new PackageResolver( - toUri(uriPackage.uri), + Uri.from(uriPackage.uri), uriPackage.package ) as unknown) as IUriResolver; } else if ( @@ -62,7 +56,7 @@ export const buildUriResolver = ( ) { const uriWrapper = resolverLike as WrapperRegistration; return (new WrapperResolver( - toUri(uriWrapper.uri), + Uri.from(uriWrapper.uri), uriWrapper.wrapper ) as unknown) as IUriResolver; } else { diff --git a/packages/js/uri-resolvers/src/redirects/RedirectResolver.ts b/packages/js/uri-resolvers/src/redirects/RedirectResolver.ts index 042e0b9e6a..500a9e8e23 100644 --- a/packages/js/uri-resolvers/src/redirects/RedirectResolver.ts +++ b/packages/js/uri-resolvers/src/redirects/RedirectResolver.ts @@ -1,6 +1,6 @@ import { ResolverWithHistory, UriResolutionResult } from "../helpers"; -import { Uri, toUri, UriPackageOrWrapper } from "@polywrap/core-js"; +import { Uri, UriPackageOrWrapper } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; export class RedirectResolver< diff --git a/packages/js/uri-resolvers/src/static/StaticResolver.ts b/packages/js/uri-resolvers/src/static/StaticResolver.ts index 53b3f5bda5..da50362208 100644 --- a/packages/js/uri-resolvers/src/static/StaticResolver.ts +++ b/packages/js/uri-resolvers/src/static/StaticResolver.ts @@ -9,7 +9,6 @@ import { IUriResolver, Uri, UriPackageOrWrapper, - toUri, UriRedirect, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; @@ -34,18 +33,18 @@ export class StaticResolver (staticResolverLike as UriRedirect).to !== undefined ) { const uriRedirect = staticResolverLike as UriRedirect; - const from = toUri(uriRedirect.from); + const from = Uri.from(uriRedirect.from); uriMap.set(from.uri, { type: "uri", - uri: toUri(uriRedirect.to), + uri: Uri.from(uriRedirect.to), }); } else if ( (staticResolverLike as PackageRegistration).uri !== undefined && (staticResolverLike as PackageRegistration).package !== undefined ) { const uriPackage = staticResolverLike as PackageRegistration; - const uri = toUri(uriPackage.uri); + const uri = Uri.from(uriPackage.uri); uriMap.set(uri.uri, { type: "package", @@ -57,7 +56,7 @@ export class StaticResolver (staticResolverLike as WrapperRegistration).wrapper !== undefined ) { const uriWrapper = staticResolverLike as WrapperRegistration; - const uri = toUri(uriWrapper.uri); + const uri = Uri.from(uriWrapper.uri); uriMap.set(uri.uri, { type: "wrapper", diff --git a/yarn.lock b/yarn.lock index c53372ae26..9b927f6016 100644 --- a/yarn.lock +++ b/yarn.lock @@ -124,10 +124,10 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.1", "@babel/compat-data@^7.9.0": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" - integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3", "@babel/compat-data@^7.9.0": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151" + integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw== "@babel/core@7.9.0": version "7.9.0" @@ -152,32 +152,32 @@ source-map "^0.5.0" "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.4.5", "@babel/core@^7.7.5": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.1.tgz#c8fa615c5e88e272564ace3d42fbc8b17bfeb22b" - integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" + integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.1" + "@babel/generator" "^7.19.3" + "@babel/helper-compilation-targets" "^7.19.3" "@babel/helper-module-transforms" "^7.19.0" "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.1" + "@babel/parser" "^7.19.3" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.19.3" + "@babel/types" "^7.19.3" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.19.0", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" - integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== +"@babel/generator@^7.19.3", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.3.tgz#d7f4d1300485b4547cb6f94b27d10d237b42bf59" + integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ== dependencies: - "@babel/types" "^7.19.0" + "@babel/types" "^7.19.3" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -196,12 +196,12 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.1", "@babel/helper-compilation-targets@^7.8.7": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz#7f630911d83b408b76fe584831c98e5395d7a17c" - integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3", "@babel/helper-compilation-targets@^7.8.7": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz#a10a04588125675d7c7ae299af86fa1b2ee038ca" + integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg== dependencies: - "@babel/compat-data" "^7.19.1" + "@babel/compat-data" "^7.19.3" "@babel/helper-validator-option" "^7.18.6" browserslist "^4.21.3" semver "^6.3.0" @@ -353,7 +353,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== -"@babel/helper-validator-identifier@^7.18.6": +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== @@ -391,10 +391,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.1", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.1.tgz#6f6d6c2e621aad19a92544cc217ed13f1aac5b4c" - integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a" + integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -1047,9 +1047,9 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.9.0": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.1.tgz#adcf180a041dcbd29257ad31b0c65d4de531ce8d" - integrity sha512-+ILcOU+6mWLlvCwnL920m2Ow3wWx3Wo8n2t5aROQmV55GZt+hOiLvBaa3DNzRjSEHa1aauRs4/YLmkCfFkhhRQ== + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz#4f1db1e0fe278b42ddbc19ec2f6cd2f8262e35d6" + integrity sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w== dependencies: "@babel/helper-create-class-features-plugin" "^7.19.0" "@babel/helper-plugin-utils" "^7.19.0" @@ -1137,12 +1137,12 @@ semver "^5.5.0" "@babel/preset-env@^7.4.5": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.1.tgz#9f04c916f9c0205a48ebe5cc1be7768eb1983f67" - integrity sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA== + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.3.tgz#52cd19abaecb3f176a4ff9cc5e15b7bf06bec754" + integrity sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w== dependencies: - "@babel/compat-data" "^7.19.1" - "@babel/helper-compilation-targets" "^7.19.1" + "@babel/compat-data" "^7.19.3" + "@babel/helper-compilation-targets" "^7.19.3" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" @@ -1210,7 +1210,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.19.0" + "@babel/types" "^7.19.3" babel-plugin-polyfill-corejs2 "^0.3.3" babel-plugin-polyfill-corejs3 "^0.6.0" babel-plugin-polyfill-regenerator "^0.4.1" @@ -1291,29 +1291,29 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" - integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.3", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.3.tgz#3a3c5348d4988ba60884e8494b0592b2f15a04b4" + integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" + "@babel/generator" "^7.19.3" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.1" - "@babel/types" "^7.19.0" + "@babel/parser" "^7.19.3" + "@babel/types" "^7.19.3" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" - integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.3.tgz#fc420e6bbe54880bce6779ffaf315f5e43ec9624" + integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw== dependencies: "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -3703,9 +3703,9 @@ integrity sha512-wH6Tu9mbiOt0n5EvdoWy0VGQaJMHfLIxY/6wS0xLC7CV1taM6gESEzcYy0ZlWvxxiiljYvfDIvz4hHbUUDRlhw== "@types/node@*": - version "18.7.20" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.20.tgz#d9442de7b5cb166476340b4271b15300fe058a39" - integrity sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ== + version "18.7.23" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.23.tgz#75c580983846181ebe5f4abc40fe9dfb2d65665f" + integrity sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg== "@types/node@12.12.26": version "12.12.26" @@ -5593,9 +5593,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: - version "1.0.30001411" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001411.tgz#303c8594ca5903b193a6d875ac613548cb73379a" - integrity sha512-HPnJKESKuhKpHvMY1/ux7J3nG7xG8jRuL4lbyCjDRm0doTNV91tcRk60xrP7Ym9DtJH/yuqntDWBJCqpXB4b7g== + version "1.0.30001412" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz#30f67d55a865da43e0aeec003f073ea8764d5d7c" + integrity sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA== capture-exit@^2.0.0: version "2.0.0" @@ -6313,16 +6313,16 @@ copyfiles@2.4.1: yargs "^16.1.0" core-js-compat@^3.25.1, core-js-compat@^3.6.2: - version "3.25.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138" - integrity sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ== + version "3.25.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.3.tgz#d6a442a03f4eade4555d4e640e6a06151dd95d38" + integrity sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ== dependencies: browserslist "^4.21.4" core-js-pure@^3.25.1: - version "3.25.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.2.tgz#44a4fd873bdd4fecf6ca11512bcefedbe87e744a" - integrity sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA== + version "3.25.3" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.3.tgz#66ac5bfa5754b47fdfd14f3841c5ed21c46db608" + integrity sha512-T/7qvgv70MEvRkZ8p6BasLZmOVYKzOaWNBEHAU8FmveCJkl4nko2quqPQOmy6AJIp5MBanhz9no3A94NoRb0XA== core-js@^2.4.0: version "2.6.12" @@ -6330,9 +6330,9 @@ core-js@^2.4.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.5.0: - version "3.25.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.2.tgz#2d3670c1455432b53fa780300a6fc1bd8304932c" - integrity sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A== + version "3.25.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.3.tgz#cbc2be50b5ddfa7981837bd8c41639f27b166593" + integrity sha512-y1hvKXmPHvm5B7w4ln1S4uc9eV/O5+iFExSRUimnvIph11uaizFR8LFMdONN8hG3P2pipUfX4Y/fR8rAEtcHcQ== core-util-is@1.0.2: version "1.0.2" @@ -7260,9 +7260,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: - version "1.4.261" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.261.tgz#31f14ad60c6f95bec404a77a2fd5e1962248e112" - integrity sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg== + version "1.4.266" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.266.tgz#b2ce973eedbff309e2b98d1ed348e447bd4681fe" + integrity sha512-saJTYECxUSv7eSpnXw0XIEvUkP9x4s/x2mm3TVX7k4rIFS6f5TjBih1B5h437WzIhHQjid+d8ouQzPQskMervQ== elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" @@ -17374,14 +17374,14 @@ typescript@4.0.7: integrity sha512-yi7M4y74SWvYbnazbn8/bmJmX4Zlej39ZOqwG/8dut/MYoSQ119GY9ZFbbGsD4PFZYWxqik/XsP3vk3+W5H3og== typescript@^4.0: - version "4.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" - integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== uglify-js@^3.1.4: - version "3.17.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.1.tgz#1258a2a488147a8266b3034499ce6959978ba7f4" - integrity sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q== + version "3.17.2" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.2.tgz#f55f668b9a64b213977ae688703b6bbb7ca861c6" + integrity sha512-bbxglRjsGQMchfvXZNusUcYgiB9Hx2K4AHYXQy2DITZ9Rd+JzhX7+hoocE5Winr7z2oHvPsekkBwXtigvxevXg== uid-number@0.0.6: version "0.0.6" From c13d948ac9be4d519b3cf41ad8ac611f2e971547 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 28 Sep 2022 19:14:37 +0200 Subject: [PATCH 035/126] fixes after merge with remote --- .../ens-recursive-name-register/index.ts | 7 ++-- .../lib/defaults/deploy-modules/ens/index.ts | 9 +--- packages/cli/src/lib/helpers/client.ts | 4 +- .../cli/src/lib/test-env/client-config.ts | 2 +- .../src/__tests__/core/plugin-wrapper.spec.ts | 42 ++++--------------- .../uri-resolution/uri-resolution.spec.ts | 2 +- packages/js/test-env/src/index.ts | 1 - 7 files changed, 18 insertions(+), 49 deletions(-) diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts index bc34d6dd1a..75e2f207f5 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts @@ -12,6 +12,7 @@ import { Connection, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; class ENSRecursiveNameRegisterPublisher implements Deployer { async execute( @@ -58,10 +59,10 @@ class ENSRecursiveNameRegisterPublisher implements Deployer { to: embeddedWrappers.sha3, }, ], - plugins: [ + resolver: buildUriResolver([ { uri: ethereumPluginUri, - plugin: ethereumPlugin({ + package: ethereumPlugin({ connections: new Connections({ networks: { [network]: new Connection({ @@ -73,7 +74,7 @@ class ENSRecursiveNameRegisterPublisher implements Deployer { }), }), }, - ], + ]), }); const signerAddress = await client.invoke({ diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts index bb22beff25..9347b0dc8d 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts @@ -60,10 +60,10 @@ class ENSPublisher implements Deployer { to: embeddedWrappers.sha3, }, ], - plugins: [ + resolver: buildUriResolver([ { uri: ethereumPluginUri, - plugin: ethereumPlugin({ + package: ethereumPlugin({ connections: new Connections({ networks: { [network]: new Connection({ @@ -73,11 +73,6 @@ class ENSPublisher implements Deployer { }, defaultNetwork: network, }), - resolver: buildUriResolver([ - { - uri: ethereumPluginUri, - package: ethereumPlugin({ - connections, }), }, ]), diff --git a/packages/cli/src/lib/helpers/client.ts b/packages/cli/src/lib/helpers/client.ts index f2abd6cd13..3aa2e0d876 100644 --- a/packages/cli/src/lib/helpers/client.ts +++ b/packages/cli/src/lib/helpers/client.ts @@ -1,4 +1,4 @@ -import { PluginRegistration, Env } from "@polywrap/core-js"; +import { Env } from "@polywrap/core-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { ethereumPlugin, @@ -51,7 +51,7 @@ export function getSimpleClient(config: SimpleClientConfig): PolywrapClient { if (ipfsProvider) { plugins.push({ uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({}), + package: ipfsPlugin({}), }); envs.push({ diff --git a/packages/cli/src/lib/test-env/client-config.ts b/packages/cli/src/lib/test-env/client-config.ts index 9eb35518f0..6808cea68c 100644 --- a/packages/cli/src/lib/test-env/client-config.ts +++ b/packages/cli/src/lib/test-env/client-config.ts @@ -46,7 +46,7 @@ export async function getTestEnvClientConfig(): Promise< }, { uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({}), + package: ipfsPlugin({}), }, { uri: "wrap://ens/ens-resolver.polywrap.eth", diff --git a/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts b/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts index 2aae16f3e2..040c7e4daa 100644 --- a/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts @@ -1,10 +1,10 @@ -import { PolywrapClient, PluginModule, PluginPackage } from "../.."; +import { PolywrapClient } from "../.."; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { PluginPackage, PluginModule } from "@polywrap/plugin-js"; import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; jest.setTimeout(200000); - "wrap://ens/http-resolver.polywrap.eth", describe("plugin-wrapper", () => { const mockMapPlugin = () => { interface Config extends Record { @@ -28,10 +28,10 @@ describe("plugin-wrapper", () => { } return new PluginPackage( - {} as WrapManifest, new MockMapPlugin({ map: new Map().set("a", 1).set("b", 2), }), + {} as WrapManifest, ); }; @@ -73,38 +73,12 @@ describe("plugin-wrapper", () => { ); }); - test("get plugin package by uri", async () => { - interface SamplePluginConfig { - bar: string; - } - class SamplePluginModule extends PluginModule {} - const config: SamplePluginConfig = { bar: "test" }; - - const pluginPackage = >{ - factory: () => new SamplePluginModule(config), - manifest: {}, - }; - - const client = new PolywrapClient( - { - plugins: [ - { - uri: "wrap://ens/some.plugin.eth", - plugin: pluginPackage, - }, - ], - } - ); - - const plugin = await client.getPluginByUri( - "wrap://ens/some.plugin.eth" - ); - - expect(plugin).toStrictEqual(pluginPackage); - }); - test("get manifest should fetch wrap manifest from plugin", async () => { - const client = await getClient() + const client = new PolywrapClient({ + resolver: buildUriResolver([ + { uri: "ens/ipfs.polywrap.eth", package: ipfsPlugin({}) }, + ]) + }); const manifest = await client.getManifest("ens/ipfs.polywrap.eth"); if (!manifest.ok) fail(manifest.error); expect(manifest.value.type).toEqual("plugin"); diff --git a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts index 64f71b5472..3aa75980a8 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts +++ b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts @@ -374,7 +374,7 @@ describe("URI resolution", () => { const fromUri = new Uri(`ens/from.eth`); const redirectUri = new Uri(`ens/to.eth`); - const client = await getClient({ + const client = new PolywrapClient({ resolver: { tryResolveUri: async (uri: Uri) => { if (uri.uri === fromUri.uri) { diff --git a/packages/js/test-env/src/index.ts b/packages/js/test-env/src/index.ts index b5f36c2da8..ac4616d833 100644 --- a/packages/js/test-env/src/index.ts +++ b/packages/js/test-env/src/index.ts @@ -7,7 +7,6 @@ import axios from "axios"; import fs from "fs"; import yaml from "js-yaml"; import { Uri } from "@polywrap/core-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { DeployManifest, deserializePolywrapManifest, From e8749017931a335b0be9e2d282a542aab25f9283 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 28 Sep 2022 19:38:45 +0200 Subject: [PATCH 036/126] lint fix --- packages/cli/package.json | 1 + packages/js/core/src/types/Client.ts | 1 - packages/js/plugin-js/src/PluginModule.ts | 4 ++-- packages/js/plugin-js/src/PluginPackage.ts | 7 ++++--- packages/js/plugin-js/src/PluginWrapper.ts | 4 ++-- .../js/plugin-js/src/utils/PluginModuleWithMethods.ts | 3 ++- .../js/plugins/uri-resolvers/http-resolver/package.json | 1 + .../js/plugins/uri-resolvers/http-resolver/src/index.ts | 1 + .../src/aggregator/UriResolverAggregatorBase.ts | 3 ++- .../js/uri-resolvers/src/helpers/InfiniteLoopError.ts | 3 ++- .../js/uri-resolvers/src/helpers/RecursiveResolver.ts | 8 ++++---- .../uri-resolvers/src/helpers/ResolverWithLoopGuard.ts | 8 ++++---- packages/js/uri-resolvers/src/helpers/UriResolverLike.ts | 5 +++-- .../js/uri-resolvers/src/helpers/buildUriResolver.ts | 6 +++--- .../js/uri-resolvers/src/packages/PackageResolver.ts | 9 +++------ packages/js/uri-resolvers/src/static/StaticResolver.ts | 3 +-- .../js/uri-resolvers/src/static/StaticResolverLike.ts | 3 ++- .../js/uri-resolvers/src/wrappers/WrapperResolver.ts | 9 +++------ 18 files changed, 40 insertions(+), 39 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 827d86069e..92b15576d4 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -55,6 +55,7 @@ "@polywrap/test-env-js": "0.8.0", "@polywrap/wasm-js": "0.8.0", "@polywrap/wrap-manifest-types-js": "0.8.0", + "@polywrap/uri-resolvers-js": "0.8.0", "assemblyscript": "0.19.1", "axios": "0.21.2", "chalk": "4.1.0", diff --git a/packages/js/core/src/types/Client.ts b/packages/js/core/src/types/Client.ts index 3f7cfd8716..a36c8a7c79 100644 --- a/packages/js/core/src/types/Client.ts +++ b/packages/js/core/src/types/Client.ts @@ -42,7 +42,6 @@ export interface Client getRedirects(): readonly UriRedirect[]; - getInterfaces(): readonly InterfaceImplementations[]; getEnvs(): readonly Env[]; diff --git a/packages/js/plugin-js/src/PluginModule.ts b/packages/js/plugin-js/src/PluginModule.ts index e4eba79fd5..52b32fd28e 100644 --- a/packages/js/plugin-js/src/PluginModule.ts +++ b/packages/js/plugin-js/src/PluginModule.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { Client, executeMaybeAsyncFunction } from "@polywrap/core-js"; - import { PluginMethod } from "./PluginMethod"; + +import { Client, executeMaybeAsyncFunction } from "@polywrap/core-js"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; export abstract class PluginModule< diff --git a/packages/js/plugin-js/src/PluginPackage.ts b/packages/js/plugin-js/src/PluginPackage.ts index 2392f6a318..212ec3944f 100644 --- a/packages/js/plugin-js/src/PluginPackage.ts +++ b/packages/js/plugin-js/src/PluginPackage.ts @@ -1,10 +1,11 @@ -import { IWrapPackage, Wrapper } from "@polywrap/core-js"; -import { Result, ResultOk } from "@polywrap/result"; -import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { PluginModule } from "./PluginModule"; import { PluginWrapper } from "./PluginWrapper"; import { GetPluginMethodsFunc, PluginModuleWithMethods } from "./utils"; +import { IWrapPackage, Wrapper } from "@polywrap/core-js"; +import { Result, ResultOk } from "@polywrap/result"; +import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; + export class PluginPackage implements IWrapPackage { constructor( private pluginModule: PluginModule, diff --git a/packages/js/plugin-js/src/PluginWrapper.ts b/packages/js/plugin-js/src/PluginWrapper.ts index bbcae9d615..20135750ff 100644 --- a/packages/js/plugin-js/src/PluginWrapper.ts +++ b/packages/js/plugin-js/src/PluginWrapper.ts @@ -1,3 +1,5 @@ +import { PluginModule } from "./PluginModule"; + import { Wrapper, Client, @@ -8,11 +10,9 @@ import { GetManifestOptions, isBuffer, } from "@polywrap/core-js"; - import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { msgpackDecode } from "@polywrap/msgpack-js"; import { Tracer, TracingLevel } from "@polywrap/tracing-js"; -import { PluginModule } from "./PluginModule"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; export class PluginWrapper implements Wrapper { diff --git a/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts b/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts index 0946b2cc75..a150976955 100644 --- a/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts +++ b/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts @@ -1,10 +1,11 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { Client, executeMaybeAsyncFunction } from "@polywrap/core-js"; import { PluginMethod } from "../PluginMethod"; import { PluginModule } from "../PluginModule"; import { GetPluginMethodsFunc } from "./GetPluginMethodsFunc"; +import { Client, executeMaybeAsyncFunction } from "@polywrap/core-js"; + export class PluginModuleWithMethods< TEnv extends Record = Record > extends PluginModule { diff --git a/packages/js/plugins/uri-resolvers/http-resolver/package.json b/packages/js/plugins/uri-resolvers/http-resolver/package.json index d3b12479be..af159983ea 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/http-resolver/package.json @@ -22,6 +22,7 @@ }, "dependencies": { "@polywrap/core-js": "0.8.0", + "@polywrap/plugin-js": "0.8.0", "abort-controller": "3.0.0" }, "devDependencies": { diff --git a/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts index d20dd89ec9..8c13313d57 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts @@ -8,6 +8,7 @@ import { Module, UriResolver_MaybeUriOrManifest, } from "./wrap"; + import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; type NoConfig = Record; diff --git a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts index c150f2f7c9..e5c526579c 100644 --- a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts +++ b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts @@ -1,3 +1,5 @@ +import { UriResolutionResult } from "../helpers"; + import { IUriResolver, Uri, @@ -6,7 +8,6 @@ import { UriPackageOrWrapper, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; -import { UriResolutionResult } from "../helpers"; export abstract class UriResolverAggregatorBase< TResolutionError = undefined, diff --git a/packages/js/uri-resolvers/src/helpers/InfiniteLoopError.ts b/packages/js/uri-resolvers/src/helpers/InfiniteLoopError.ts index 74756daf7f..bffca25a94 100644 --- a/packages/js/uri-resolvers/src/helpers/InfiniteLoopError.ts +++ b/packages/js/uri-resolvers/src/helpers/InfiniteLoopError.ts @@ -1,6 +1,7 @@ -import { Uri, IUriResolutionStep } from "@polywrap/core-js"; import { getUriResolutionPath } from "./getUriResolutionPath"; +import { Uri, IUriResolutionStep } from "@polywrap/core-js"; + export class InfiniteLoopError extends Error { constructor( private readonly uri: Uri, diff --git a/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts b/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts index 5b5a444c04..d8368aaa8b 100644 --- a/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts +++ b/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts @@ -1,5 +1,9 @@ import { InfiniteLoopError } from "./InfiniteLoopError"; +import { UriResolverLike } from "./UriResolverLike"; +import { UriResolutionResult } from "./UriResolutionResult"; +import { buildUriResolver } from "./buildUriResolver"; +import { Result } from "@polywrap/result"; import { IUriResolver, Uri, @@ -7,10 +11,6 @@ import { IUriResolutionContext, UriPackageOrWrapper, } from "@polywrap/core-js"; -import { Result } from "@polywrap/result"; -import { UriResolverLike } from "./UriResolverLike"; -import { UriResolutionResult } from "./UriResolutionResult"; -import { buildUriResolver } from "./buildUriResolver"; export class RecursiveResolver implements IUriResolver { diff --git a/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts b/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts index fa9547781e..7bc934a563 100644 --- a/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts +++ b/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts @@ -1,6 +1,8 @@ import { InfiniteLoopError } from "./InfiniteLoopError"; +import { UriResolverLike } from "./UriResolverLike"; +import { UriResolutionResult } from "./UriResolutionResult"; +import { buildUriResolver } from "./buildUriResolver"; -import { Result } from "@polywrap/result"; import { IUriResolver, Uri, @@ -8,9 +10,7 @@ import { IUriResolutionContext, UriPackageOrWrapper, } from "@polywrap/core-js"; -import { UriResolverLike } from "./UriResolverLike"; -import { UriResolutionResult } from "./UriResolutionResult"; -import { buildUriResolver } from "./buildUriResolver"; +import { Result } from "@polywrap/result"; export class ResolverWithLoopGuard implements IUriResolver { diff --git a/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts b/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts index 2a10399056..d87ccb5961 100644 --- a/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts +++ b/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts @@ -1,3 +1,6 @@ +import { PackageRegistration } from "./PackageRegistration"; +import { WrapperRegistration } from "./WrapperRegistration"; + import { IUriResolver, UriRedirect, @@ -5,8 +8,6 @@ import { IUriPackage, IUriWrapper, } from "@polywrap/core-js"; -import { PackageRegistration } from "./PackageRegistration"; -import { WrapperRegistration } from "./WrapperRegistration"; export type UriResolverLike = | IUriResolver diff --git a/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts b/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts index 9fc0a78de6..7a05c21cbc 100644 --- a/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts +++ b/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts @@ -1,9 +1,6 @@ import { UriResolverAggregator } from "../aggregator"; import { PackageResolver } from "../packages"; import { WrapperResolver } from "../wrappers"; - -import { Result } from "@polywrap/result"; -import { IUriResolver, Uri, Client, UriRedirect } from "@polywrap/core-js"; import { PackageRegistration, WrapperRegistration, @@ -11,6 +8,9 @@ import { } from "../helpers"; import { RedirectResolver } from "../redirects"; +import { Result } from "@polywrap/result"; +import { IUriResolver, Uri, Client, UriRedirect } from "@polywrap/core-js"; + export const buildUriResolver = ( resolverLike: UriResolverLike, resolverName?: string diff --git a/packages/js/uri-resolvers/src/packages/PackageResolver.ts b/packages/js/uri-resolvers/src/packages/PackageResolver.ts index be5125605a..26684e56be 100644 --- a/packages/js/uri-resolvers/src/packages/PackageResolver.ts +++ b/packages/js/uri-resolvers/src/packages/PackageResolver.ts @@ -1,11 +1,8 @@ -import { - Uri, - IWrapPackage, - UriPackageOrWrapper, -} from "@polywrap/core-js"; -import { Result } from "@polywrap/result"; import { ResolverWithHistory, UriResolutionResult } from "../helpers"; +import { Uri, IWrapPackage, UriPackageOrWrapper } from "@polywrap/core-js"; +import { Result } from "@polywrap/result"; + export class PackageResolver extends ResolverWithHistory { constructor(private uri: Uri, private wrapPackage: IWrapPackage) { super(); diff --git a/packages/js/uri-resolvers/src/static/StaticResolver.ts b/packages/js/uri-resolvers/src/static/StaticResolver.ts index da50362208..75fd4c9bb5 100644 --- a/packages/js/uri-resolvers/src/static/StaticResolver.ts +++ b/packages/js/uri-resolvers/src/static/StaticResolver.ts @@ -18,8 +18,7 @@ export class StaticResolver constructor(public uriMap: Map) {} static from( - staticResolverLikes: UriResolverLike[], - resolverName?: string + staticResolverLikes: UriResolverLike[] ): StaticResolver { const uriMap = new Map(); for (const staticResolverLike of staticResolverLikes) { diff --git a/packages/js/uri-resolvers/src/static/StaticResolverLike.ts b/packages/js/uri-resolvers/src/static/StaticResolverLike.ts index aeb8b096fe..2262689d0d 100644 --- a/packages/js/uri-resolvers/src/static/StaticResolverLike.ts +++ b/packages/js/uri-resolvers/src/static/StaticResolverLike.ts @@ -1,6 +1,7 @@ -import { UriRedirect, Uri, IUriPackage, IUriWrapper } from "@polywrap/core-js"; import { PackageRegistration, WrapperRegistration } from "../helpers"; +import { UriRedirect, Uri, IUriPackage, IUriWrapper } from "@polywrap/core-js"; + export type StaticResolverLike = | UriRedirect | IUriPackage diff --git a/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts b/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts index 97c5e9abee..de297fd6ce 100644 --- a/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts +++ b/packages/js/uri-resolvers/src/wrappers/WrapperResolver.ts @@ -1,11 +1,8 @@ -import { - Uri, - UriPackageOrWrapper, - Wrapper, -} from "@polywrap/core-js"; -import { Result } from "@polywrap/result"; import { ResolverWithHistory, UriResolutionResult } from "../helpers"; +import { Uri, UriPackageOrWrapper, Wrapper } from "@polywrap/core-js"; +import { Result } from "@polywrap/result"; + export class WrapperResolver extends ResolverWithHistory { constructor(private uri: Uri, private wrapper: Wrapper) { super(); From bada6689e5e5ed4766b5437587b48822383cb446 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 28 Sep 2022 19:39:14 +0200 Subject: [PATCH 037/126] getClientConfig now works with config builder in test cases --- .../app/codegen/004-custom-config/config.ts | 184 +++++++------- .../cli/docgen/002-custom-config/config.ts | 185 +++++++------- .../codegen/005-custom-config/config.ts | 37 ++- .../build-cmd/010-custom-config/config.ts | 227 +++++++++--------- .../wasm/codegen/004-custom-config/config.ts | 185 +++++++------- 5 files changed, 406 insertions(+), 412 deletions(-) diff --git a/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts b/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts index 0fa0a5a83b..e2b7fb520f 100644 --- a/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts +++ b/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts @@ -1,45 +1,45 @@ -import { PolywrapClientConfig } from "@polywrap/client-js"; -import { PluginModule } from "@polywrap/core-js"; -import { latestWrapManifestVersion, WrapManifest } from "@polywrap/wrap-manifest-types-js"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { PluginModule } from "@polywrap/plugin-js"; +import { + latestWrapManifestVersion, + WrapManifest, +} from "@polywrap/wrap-manifest-types-js"; interface Config extends Record { val: number; } class MockPlugin extends PluginModule { - - getData(_: unknown): number { return this.config.val; } + getData(_: unknown): number { + return this.config.val; + } setData(args: { value: number }) { this.config.val = +args.value; return true; } - deployContract(): string { return "0x100"; } + deployContract(): string { + return "0x100"; + } } const mockPlugin = () => { return { factory: () => new MockPlugin({ val: 0 }), - manifest: mockPluginManifest + manifest: mockPluginManifest, }; }; -export function getClientConfig(defaultConfigs: Partial) { - if (defaultConfigs.plugins) { - defaultConfigs.plugins.push({ - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }); - } else { - defaultConfigs.plugins = [ - { - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }, - ]; - } - return defaultConfigs; +export function getClientConfig( + builder: ClientConfigBuilder +): ClientConfigBuilder { + builder.addPackage({ + uri: "wrap://ens/mock.eth", + plugin: mockPlugin(), + }); + + return builder; } export const mockPluginManifest: WrapManifest = { @@ -47,80 +47,80 @@ export const mockPluginManifest: WrapManifest = { type: "plugin", version: latestWrapManifestVersion, abi: { - "version": "0.1", - "moduleType": { - "type": "Module", - "kind": 128, - "methods": [ + version: "0.1", + moduleType: { + type: "Module", + kind: 128, + methods: [ { - "type": "Method", - "name": "getData", - "required": true, - "kind": 64, - "return": { - "type": "Int", - "name": "getData", - "required": true, - "kind": 34, - "scalar": { - "type": "Int", - "name": "getData", - "required": true, - "kind": 4 - } - } + type: "Method", + name: "getData", + required: true, + kind: 64, + return: { + type: "Int", + name: "getData", + required: true, + kind: 34, + scalar: { + type: "Int", + name: "getData", + required: true, + kind: 4, + }, + }, }, { - "type": "Method", - "name": "setData", - "required": true, - "kind": 64, - "arguments": [ + type: "Method", + name: "setData", + required: true, + kind: 64, + arguments: [ { - "type": "Int", - "name": "value", - "required": true, - "kind": 34, - "scalar": { - "type": "Int", - "name": "value", - "required": true, - "kind": 4 - } - } + type: "Int", + name: "value", + required: true, + kind: 34, + scalar: { + type: "Int", + name: "value", + required: true, + kind: 4, + }, + }, ], - "return": { - "type": "Boolean", - "name": "setData", - "required": true, - "kind": 34, - "scalar": { - "type": "Boolean", - "name": "setData", - "required": true, - "kind": 4 - } - } + return: { + type: "Boolean", + name: "setData", + required: true, + kind: 34, + scalar: { + type: "Boolean", + name: "setData", + required: true, + kind: 4, + }, + }, }, { - "type": "Method", - "name": "deployContract", - "required": true, - "kind": 64, - "return": { - "type": "String", - "name": "deployContract", - "required": true, - "kind": 34, - "scalar": { - "type": "String", - "name": "deployContract", - "required": true, - "kind": 4 - } - } - } - ] - } - } -} + type: "Method", + name: "deployContract", + required: true, + kind: 64, + return: { + type: "String", + name: "deployContract", + required: true, + kind: 34, + scalar: { + type: "String", + name: "deployContract", + required: true, + kind: 4, + }, + }, + }, + ], + }, + }, +}; diff --git a/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts b/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts index cd5b1b6220..e2b7fb520f 100644 --- a/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts +++ b/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts @@ -1,45 +1,45 @@ -import { PolywrapClientConfig } from "@polywrap/client-js"; -import { PluginModule } from "@polywrap/core-js"; -import { latestWrapManifestVersion, WrapManifest } from "@polywrap/wrap-manifest-types-js"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { PluginModule } from "@polywrap/plugin-js"; +import { + latestWrapManifestVersion, + WrapManifest, +} from "@polywrap/wrap-manifest-types-js"; interface Config extends Record { val: number; } class MockPlugin extends PluginModule { - - getData(_: unknown): number { return this.config.val; } + getData(_: unknown): number { + return this.config.val; + } setData(args: { value: number }) { this.config.val = +args.value; return true; } - deployContract(): string { return "0x100"; } + deployContract(): string { + return "0x100"; + } } const mockPlugin = () => { return { factory: () => new MockPlugin({ val: 0 }), - manifest: mockPluginManifest + manifest: mockPluginManifest, }; }; -export function getClientConfig(defaultConfigs: Partial) { - if (defaultConfigs.plugins) { - defaultConfigs.plugins.push({ - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }); - } else { - defaultConfigs.plugins = [ - { - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }, - ]; - } - return defaultConfigs; +export function getClientConfig( + builder: ClientConfigBuilder +): ClientConfigBuilder { + builder.addPackage({ + uri: "wrap://ens/mock.eth", + plugin: mockPlugin(), + }); + + return builder; } export const mockPluginManifest: WrapManifest = { @@ -47,81 +47,80 @@ export const mockPluginManifest: WrapManifest = { type: "plugin", version: latestWrapManifestVersion, abi: { - "version": "0.1", - "moduleType": { - "type": "Module", - "kind": 128, - "methods": [ + version: "0.1", + moduleType: { + type: "Module", + kind: 128, + methods: [ { - "type": "Method", - "name": "getData", - "required": true, - "kind": 64, - "return": { - "type": "Int", - "name": "getData", - "required": true, - "kind": 34, - "scalar": { - "type": "Int", - "name": "getData", - "required": true, - "kind": 4 - } - } + type: "Method", + name: "getData", + required: true, + kind: 64, + return: { + type: "Int", + name: "getData", + required: true, + kind: 34, + scalar: { + type: "Int", + name: "getData", + required: true, + kind: 4, + }, + }, }, { - "type": "Method", - "name": "setData", - "required": true, - "kind": 64, - "arguments": [ + type: "Method", + name: "setData", + required: true, + kind: 64, + arguments: [ { - "type": "Int", - "name": "value", - "required": true, - "kind": 34, - "scalar": { - "type": "Int", - "name": "value", - "required": true, - "kind": 4 - } - } + type: "Int", + name: "value", + required: true, + kind: 34, + scalar: { + type: "Int", + name: "value", + required: true, + kind: 4, + }, + }, ], - "return": { - "type": "Boolean", - "name": "setData", - "required": true, - "kind": 34, - "scalar": { - "type": "Boolean", - "name": "setData", - "required": true, - "kind": 4 - } - } + return: { + type: "Boolean", + name: "setData", + required: true, + kind: 34, + scalar: { + type: "Boolean", + name: "setData", + required: true, + kind: 4, + }, + }, }, { - "type": "Method", - "name": "deployContract", - "required": true, - "kind": 64, - "return": { - "type": "String", - "name": "deployContract", - "required": true, - "kind": 34, - "scalar": { - "type": "String", - "name": "deployContract", - "required": true, - "kind": 4 - } - } - } - ] - } - } -} - + type: "Method", + name: "deployContract", + required: true, + kind: 64, + return: { + type: "String", + name: "deployContract", + required: true, + kind: 34, + scalar: { + type: "String", + name: "deployContract", + required: true, + kind: 4, + }, + }, + }, + ], + }, + }, +}; diff --git a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts index a51cd93907..e66d5dfde9 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts @@ -1,20 +1,23 @@ -import { PolywrapClientConfig } from "@polywrap/client-js"; -import { PluginModule } from "@polywrap/core-js"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { PluginModule } from "@polywrap/plugin-js"; interface Config extends Record { val: number; } class MockPlugin extends PluginModule { - - getData(_: unknown): number { return this.config.val; } + getData(_: unknown): number { + return this.config.val; + } setData(args: { value: number }) { this.config.val = +args.value; return true; } - deployContract(): string { return "0x100"; } + deployContract(): string { + return "0x100"; + } } const mockPlugin = () => { @@ -33,19 +36,13 @@ const mockPlugin = () => { }; }; -export function getClientConfig(defaultConfigs: Partial) { - if (defaultConfigs.plugins) { - defaultConfigs.plugins.push({ - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }); - } else { - defaultConfigs.plugins = [ - { - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }, - ]; - } - return defaultConfigs; +export function getClientConfig( + builder: ClientConfigBuilder +): ClientConfigBuilder { + builder.addPackage({ + uri: "wrap://ens/mock.eth", + plugin: mockPlugin(), + }); + + return builder; } diff --git a/packages/test-cases/cases/cli/wasm/build-cmd/010-custom-config/config.ts b/packages/test-cases/cases/cli/wasm/build-cmd/010-custom-config/config.ts index bf5ec3d50d..85c4d18c85 100644 --- a/packages/test-cases/cases/cli/wasm/build-cmd/010-custom-config/config.ts +++ b/packages/test-cases/cases/cli/wasm/build-cmd/010-custom-config/config.ts @@ -1,20 +1,23 @@ -import { PolywrapClientConfig } from "@polywrap/client-js"; -import { PluginModule } from "@polywrap/core-js"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { PluginModule } from "@polywrap/plugin-js"; interface Config extends Record { val: number; } class MockPlugin extends PluginModule { - - getData(_: unknown): number { return this.config.val; } + getData(_: unknown): number { + return this.config.val; + } setData(args: { value: number }) { this.config.val = +args.value; return true; } - deployContract(): string { return "0x100"; } + deployContract(): string { + return "0x100"; + } } const mockPlugin = () => { @@ -22,132 +25,126 @@ const mockPlugin = () => { factory: () => new MockPlugin({ val: 0 }), manifest: { abi: { - "objectTypes": [], - "enumTypes": [], - "interfaceTypes": [], - "importedObjectTypes": [], - "importedModuleTypes": [], - "importedEnumTypes": [], - "importedEnvTypes": [], - "moduleType": { - "type": "Module", - "name": null, - "required": null, - "kind": 128, - "methods": [ + objectTypes: [], + enumTypes: [], + interfaceTypes: [], + importedObjectTypes: [], + importedModuleTypes: [], + importedEnumTypes: [], + importedEnvTypes: [], + moduleType: { + type: "Module", + name: null, + required: null, + kind: 128, + methods: [ { - "type": "Method", - "name": "getData", - "required": true, - "kind": 64, - "arguments": [], - "return": { - "type": "Int", - "name": "getData", - "required": true, - "kind": 34, - "array": null, - "map": null, - "scalar": { - "type": "Int", - "name": "getData", - "required": true, - "kind": 4 + type: "Method", + name: "getData", + required: true, + kind: 64, + arguments: [], + return: { + type: "Int", + name: "getData", + required: true, + kind: 34, + array: null, + map: null, + scalar: { + type: "Int", + name: "getData", + required: true, + kind: 4, }, - "object": null, - "enum": null, - "unresolvedObjectOrEnum": null - } + object: null, + enum: null, + unresolvedObjectOrEnum: null, + }, }, { - "type": "Method", - "name": "setData", - "required": true, - "kind": 64, - "arguments": [ + type: "Method", + name: "setData", + required: true, + kind: 64, + arguments: [ { - "type": "Int", - "name": "value", - "required": true, - "kind": 34, - "array": null, - "map": null, - "scalar": { - "type": "Int", - "name": "value", - "required": true, - "kind": 4 + type: "Int", + name: "value", + required: true, + kind: 34, + array: null, + map: null, + scalar: { + type: "Int", + name: "value", + required: true, + kind: 4, }, - "object": null, - "enum": null, - "unresolvedObjectOrEnum": null - } + object: null, + enum: null, + unresolvedObjectOrEnum: null, + }, ], - "return": { - "type": "Boolean", - "name": "setData", - "required": true, - "kind": 34, - "array": null, - "map": null, - "scalar": { - "type": "Boolean", - "name": "setData", - "required": true, - "kind": 4 + return: { + type: "Boolean", + name: "setData", + required: true, + kind: 34, + array: null, + map: null, + scalar: { + type: "Boolean", + name: "setData", + required: true, + kind: 4, }, - "object": null, - "enum": null, - "unresolvedObjectOrEnum": null - } + object: null, + enum: null, + unresolvedObjectOrEnum: null, + }, }, { - "type": "Method", - "name": "deployContract", - "required": true, - "kind": 64, - "arguments": [], - "return": { - "type": "String", - "name": "deployContract", - "required": true, - "kind": 34, - "array": null, - "map": null, - "scalar": { - "type": "String", - "name": "deployContract", - "required": true, - "kind": 4 + type: "Method", + name: "deployContract", + required: true, + kind: 64, + arguments: [], + return: { + type: "String", + name: "deployContract", + required: true, + kind: 34, + array: null, + map: null, + scalar: { + type: "String", + name: "deployContract", + required: true, + kind: 4, }, - "object": null, - "enum": null, - "unresolvedObjectOrEnum": null - } - } + object: null, + enum: null, + unresolvedObjectOrEnum: null, + }, + }, ], - "imports": [], - "interfaces": [] - } + imports: [], + interfaces: [], + }, }, implements: [], }, }; }; -export function getClientConfig(defaultConfigs: Partial) { - if (defaultConfigs.plugins) { - defaultConfigs.plugins.push({ - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }); - } else { - defaultConfigs.plugins = [ - { - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }, - ]; - } - return defaultConfigs; +export function getClientConfig( + builder: ClientConfigBuilder +): ClientConfigBuilder { + builder.addPackage({ + uri: "wrap://ens/mock.eth", + plugin: mockPlugin(), + }); + + return builder; } diff --git a/packages/test-cases/cases/cli/wasm/codegen/004-custom-config/config.ts b/packages/test-cases/cases/cli/wasm/codegen/004-custom-config/config.ts index a98f365a7e..87d9cac65e 100644 --- a/packages/test-cases/cases/cli/wasm/codegen/004-custom-config/config.ts +++ b/packages/test-cases/cases/cli/wasm/codegen/004-custom-config/config.ts @@ -1,21 +1,28 @@ -import { PolywrapClientConfig } from "@polywrap/client-js"; -import { PluginModule } from "@polywrap/core-js"; -import { latestWrapManifestVersion, WrapManifest, WrapAbi } from "@polywrap/wrap-manifest-types-js"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { PluginModule } from "@polywrap/plugin-js"; +import { + latestWrapManifestVersion, + WrapManifest, + WrapAbi, +} from "@polywrap/wrap-manifest-types-js"; interface Config extends Record { val: number; } class MockPlugin extends PluginModule { - - getData(_: unknown): number { return this.config.val; } + getData(_: unknown): number { + return this.config.val; + } setData(args: { value: number }) { this.config.val = +args.value; return true; } - deployContract(): string { return "0x100"; } + deployContract(): string { + return "0x100"; + } } const mockPlugin = () => { @@ -25,104 +32,98 @@ const mockPlugin = () => { name: "mock", type: "plugin", version: latestWrapManifestVersion, - abi - } as WrapManifest + abi, + } as WrapManifest, }; }; -export function getClientConfig(defaultConfigs: Partial) { - if (defaultConfigs.plugins) { - defaultConfigs.plugins.push({ - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }); - } else { - defaultConfigs.plugins = [ - { - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }, - ]; - } - return defaultConfigs; +export function getClientConfig( + builder: ClientConfigBuilder +): ClientConfigBuilder { + builder.addPackage({ + uri: "wrap://ens/mock.eth", + plugin: mockPlugin(), + }); + + return builder; } const abi: WrapAbi = { version: "0.1", - "moduleType": { - "type": "Module", - "kind": 128, - "methods": [ + moduleType: { + type: "Module", + kind: 128, + methods: [ { - "type": "Method", - "name": "getData", - "required": true, - "kind": 64, - "arguments": [], - "return": { - "type": "Int", - "name": "getData", - "required": true, - "kind": 34, - "scalar": { - "type": "Int", - "name": "getData", - "required": true, - "kind": 4 - } - } + type: "Method", + name: "getData", + required: true, + kind: 64, + arguments: [], + return: { + type: "Int", + name: "getData", + required: true, + kind: 34, + scalar: { + type: "Int", + name: "getData", + required: true, + kind: 4, + }, + }, }, { - "type": "Method", - "name": "setData", - "required": true, - "kind": 64, - "arguments": [ + type: "Method", + name: "setData", + required: true, + kind: 64, + arguments: [ { - "type": "Int", - "name": "value", - "required": true, - "kind": 34, - "scalar": { - "type": "Int", - "name": "value", - "required": true, - "kind": 4 - } - } + type: "Int", + name: "value", + required: true, + kind: 34, + scalar: { + type: "Int", + name: "value", + required: true, + kind: 4, + }, + }, ], - "return": { - "type": "Boolean", - "name": "setData", - "required": true, - "kind": 34, - "scalar": { - "type": "Boolean", - "name": "setData", - "required": true, - "kind": 4 - } - } + return: { + type: "Boolean", + name: "setData", + required: true, + kind: 34, + scalar: { + type: "Boolean", + name: "setData", + required: true, + kind: 4, + }, + }, }, { - "type": "Method", - "name": "deployContract", - "required": true, - "kind": 64, - "arguments": [], - "return": { - "type": "String", - "name": "deployContract", - "required": true, - "kind": 34, - "scalar": { - "type": "String", - "name": "deployContract", - "required": true, - "kind": 4 - } - } - } - ] - } + type: "Method", + name: "deployContract", + required: true, + kind: 64, + arguments: [], + return: { + type: "String", + name: "deployContract", + required: true, + kind: 34, + scalar: { + type: "String", + name: "deployContract", + required: true, + kind: 4, + }, + }, + }, + ], + }, }; From 189164fcc6e49c64a8b9f7db54eb9120892a03ce Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 12:27:26 +0200 Subject: [PATCH 038/126] renamed UriRedirect to IUriRedirect and made IUriWrapper and IUriPackage generic --- .../js/core/src/__tests__/UriRedirect.spec.ts | 26 ------------------- .../js/core/src/algorithms/apply-redirects.ts | 4 +-- .../src/algorithms/get-implementations.ts | 4 +-- packages/js/core/src/types/Client.ts | 6 ++--- packages/js/core/src/types/IUriPackage.ts | 4 +-- packages/js/core/src/types/IUriRedirect.ts | 6 +++++ packages/js/core/src/types/IUriWrapper.ts | 4 +-- packages/js/core/src/types/UriRedirect.ts | 23 ---------------- packages/js/core/src/types/index.ts | 2 +- .../src/uri-resolution/UriPackageOrWrapper.ts | 4 +-- 10 files changed, 20 insertions(+), 63 deletions(-) delete mode 100644 packages/js/core/src/__tests__/UriRedirect.spec.ts create mode 100644 packages/js/core/src/types/IUriRedirect.ts delete mode 100644 packages/js/core/src/types/UriRedirect.ts diff --git a/packages/js/core/src/__tests__/UriRedirect.spec.ts b/packages/js/core/src/__tests__/UriRedirect.spec.ts deleted file mode 100644 index ea208904a2..0000000000 --- a/packages/js/core/src/__tests__/UriRedirect.spec.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Uri } from "../"; -import { sanitizeUriRedirects } from "../types/UriRedirect"; - -describe("sanitizeUriRedirects", () => { - it("Returns empty array if empty array passed", () => { - const redirects = sanitizeUriRedirects([]); - - expect(redirects).toEqual([]); - }); - - it("Returns uri redirects from uri redirect definitions", () => { - const redirects = sanitizeUriRedirects([ - { - from: "wrap://polywrap/wrapper", - to: "wrap://polywrap/wrapper" - } - ]); - - expect(redirects).toEqual([ - { - from: new Uri("wrap://polywrap/wrapper"), - to: new Uri("wrap://polywrap/wrapper") - } - ]); - }); -}); diff --git a/packages/js/core/src/algorithms/apply-redirects.ts b/packages/js/core/src/algorithms/apply-redirects.ts index fd1c60a3fe..6ae68f3764 100644 --- a/packages/js/core/src/algorithms/apply-redirects.ts +++ b/packages/js/core/src/algorithms/apply-redirects.ts @@ -1,11 +1,11 @@ -import { Uri, UriRedirect } from "../types"; +import { Uri, IUriRedirect } from "../types"; import { Tracer } from "@polywrap/tracing-js"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; export const applyRedirects = Tracer.traceFunc( "core: applyRedirects", - (uri: Uri, redirects: readonly UriRedirect[]): Result => { + (uri: Uri, redirects: readonly IUriRedirect[]): Result => { // Keep track of past redirects (from -> to) to find the final uri const redirectFromToMap: Record = {}; diff --git a/packages/js/core/src/algorithms/get-implementations.ts b/packages/js/core/src/algorithms/get-implementations.ts index 359313941c..11a4763b49 100644 --- a/packages/js/core/src/algorithms/get-implementations.ts +++ b/packages/js/core/src/algorithms/get-implementations.ts @@ -1,4 +1,4 @@ -import { Uri, UriRedirect, InterfaceImplementations } from "../types"; +import { Uri, IUriRedirect, InterfaceImplementations } from "../types"; import { applyRedirects } from "./apply-redirects"; import { Tracer } from "@polywrap/tracing-js"; @@ -9,7 +9,7 @@ export const getImplementations = Tracer.traceFunc( ( wrapperInterfaceUri: Uri, interfaces: readonly InterfaceImplementations[], - redirects?: readonly UriRedirect[] + redirects?: readonly IUriRedirect[] ): Result => { const result: Uri[] = []; diff --git a/packages/js/core/src/types/Client.ts b/packages/js/core/src/types/Client.ts index a36c8a7c79..2752dcac3a 100644 --- a/packages/js/core/src/types/Client.ts +++ b/packages/js/core/src/types/Client.ts @@ -2,7 +2,7 @@ import { QueryHandler, Invoker, SubscriptionHandler, - UriRedirect, + IUriRedirect, Uri, InterfaceImplementations, Env, @@ -14,7 +14,7 @@ import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { Result } from "@polywrap/result"; export interface ClientConfig { - redirects: UriRedirect[]; + redirects: IUriRedirect[]; interfaces: InterfaceImplementations[]; envs: Env[]; resolver: IUriResolver; @@ -40,7 +40,7 @@ export interface Client UriResolverHandler { getConfig(): ClientConfig; - getRedirects(): readonly UriRedirect[]; + getRedirects(): readonly IUriRedirect[]; getInterfaces(): readonly InterfaceImplementations[]; diff --git a/packages/js/core/src/types/IUriPackage.ts b/packages/js/core/src/types/IUriPackage.ts index eead0b4c09..f7b27f64e0 100644 --- a/packages/js/core/src/types/IUriPackage.ts +++ b/packages/js/core/src/types/IUriPackage.ts @@ -1,6 +1,6 @@ import { Uri, IWrapPackage } from "."; -export interface IUriPackage { - uri: Uri; +export interface IUriPackage { + uri: TUri; package: IWrapPackage; } diff --git a/packages/js/core/src/types/IUriRedirect.ts b/packages/js/core/src/types/IUriRedirect.ts new file mode 100644 index 0000000000..3475f727a0 --- /dev/null +++ b/packages/js/core/src/types/IUriRedirect.ts @@ -0,0 +1,6 @@ +import { Uri } from "."; + +export interface IUriRedirect { + from: TUri; + to: TUri; +} diff --git a/packages/js/core/src/types/IUriWrapper.ts b/packages/js/core/src/types/IUriWrapper.ts index bb0b606c53..0a5aa5c622 100644 --- a/packages/js/core/src/types/IUriWrapper.ts +++ b/packages/js/core/src/types/IUriWrapper.ts @@ -1,6 +1,6 @@ import { Uri, Wrapper } from "."; -export interface IUriWrapper { - uri: Uri; +export interface IUriWrapper { + uri: TUri; wrapper: Wrapper; } diff --git a/packages/js/core/src/types/UriRedirect.ts b/packages/js/core/src/types/UriRedirect.ts deleted file mode 100644 index 8be1dd4de4..0000000000 --- a/packages/js/core/src/types/UriRedirect.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Uri } from "."; - -import { Tracer } from "@polywrap/tracing-js"; - -export interface UriRedirect { - from: TUri; - to: TUri; -} - -export const sanitizeUriRedirects = Tracer.traceFunc( - "core: sanitizeUriRedirects", - (input: UriRedirect[]): UriRedirect[] => { - const output: UriRedirect[] = []; - for (const definition of input) { - output.push({ - from: Uri.from(definition.from), - to: Uri.from(definition.to), - }); - } - - return output; - } -); diff --git a/packages/js/core/src/types/index.ts b/packages/js/core/src/types/index.ts index 5543c61e5c..99cef6b5ac 100644 --- a/packages/js/core/src/types/index.ts +++ b/packages/js/core/src/types/index.ts @@ -5,10 +5,10 @@ export * from "./MaybeAsync"; export * from "./Query"; export * from "./Subscription"; export * from "./Uri"; -export * from "./UriRedirect"; export * from "./Env"; export * from "./InterfaceImplementations"; export * from "./UriResolver"; export * from "./IWrapPackage"; +export * from "./IUriRedirect"; export * from "./IUriWrapper"; export * from "./IUriPackage"; diff --git a/packages/js/core/src/uri-resolution/UriPackageOrWrapper.ts b/packages/js/core/src/uri-resolution/UriPackageOrWrapper.ts index 8b762b825e..ce662e6a76 100644 --- a/packages/js/core/src/uri-resolution/UriPackageOrWrapper.ts +++ b/packages/js/core/src/uri-resolution/UriPackageOrWrapper.ts @@ -6,11 +6,11 @@ export type UriValue = { uri: Uri; }; -export type UriPackageValue = IUriPackage & { +export type UriPackageValue = IUriPackage & { type: "package"; }; -export type UriWrapperValue = IUriWrapper & { +export type UriWrapperValue = IUriWrapper & { type: "wrapper"; }; From 39ef0d818def820271139f53b95a0ad278bed773 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 13:52:58 +0200 Subject: [PATCH 039/126] removed config builder from client --- packages/js/client/src/PolywrapClient.ts | 74 ++++++++++-------------- 1 file changed, 32 insertions(+), 42 deletions(-) diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index 7c16e92234..f4e84b848b 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -14,7 +14,7 @@ import { SubscribeOptions, Subscription, Uri, - UriRedirect, + IUriRedirect, createQueryDocument, getImplementations, parseQuery, @@ -28,63 +28,53 @@ import { QueryResult, InvokeResult, } from "@polywrap/core-js"; -import { - buildCleanUriHistory, - IWrapperCache, -} from "@polywrap/uri-resolvers-js"; +import { buildCleanUriHistory } from "@polywrap/uri-resolvers-js"; import { msgpackEncode, msgpackDecode } from "@polywrap/msgpack-js"; import { DeserializeManifestOptions, WrapManifest, } from "@polywrap/wrap-manifest-types-js"; import { Tracer, TracerConfig, TracingLevel } from "@polywrap/tracing-js"; -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; +export interface PolywrapClientArgs { + redirects?: IUriRedirect[]; + interfaces?: InterfaceImplementations[]; + envs?: Env[]; + resolver: IUriResolver; + tracerConfig?: Partial; +} export interface PolywrapClientConfig extends ClientConfig { tracerConfig: Partial; - wrapperCache?: IWrapperCache; } export class PolywrapClient implements Client { - private _config: PolywrapClientConfig = ({ - redirects: [], - interfaces: [], - envs: [], - tracerConfig: {}, - } as unknown) as PolywrapClientConfig; - - constructor( - config?: Partial>, - options?: { noDefaults?: boolean } - ) { + private _config: PolywrapClientConfig; + + constructor(config: PolywrapClientArgs) { try { this.setTracingEnabled(config?.tracerConfig); Tracer.startSpan("PolywrapClient: constructor"); - const builder = new ClientConfigBuilder(); - - if (!options?.noDefaults) { - builder.addDefaults(config?.wrapperCache, config?.resolver); - if (config) { - // Add everything except for the resolver because we already added it above - builder.add({ - ...config, - resolver: undefined, - }); - } - } else { - if (config) { - builder.add(config); - } - } - - const sanitizedConfig = builder.build(); - this._config = { - ...sanitizedConfig, + redirects: + config?.redirects?.map((x) => ({ + from: Uri.from(x.from), + to: Uri.from(x.to), + })) ?? [], + interfaces: + config?.interfaces?.map((x) => ({ + interface: Uri.from(x.interface), + implementations: x.implementations.map((y) => Uri.from(y)), + })) ?? [], + envs: + config?.envs?.map((x) => ({ + uri: Uri.from(x.uri), + env: x.env, + })) ?? [], + resolver: config.resolver, tracerConfig: { consoleEnabled: !!config?.tracerConfig?.consoleEnabled, consoleDetailed: config?.tracerConfig?.consoleDetailed, @@ -113,11 +103,10 @@ export class PolywrapClient implements Client { } else { Tracer.disableTracing(); } - this._config.tracerConfig = tracerConfig ?? {}; } @Tracer.traceMethod("PolywrapClient: getRedirects") - public getRedirects(): readonly UriRedirect[] { + public getRedirects(): readonly IUriRedirect[] { return this._config.redirects; } @@ -330,8 +319,9 @@ export class PolywrapClient implements Client { typedOptions.uri, resolutionContext ); + if (!loadWrapperResult.ok) { - return ResultErr(loadWrapperResult.error); + return loadWrapperResult; } const wrapper = loadWrapperResult.value; @@ -347,7 +337,7 @@ export class PolywrapClient implements Client { }); if (!invokeResult.ok) { - return ResultErr(invokeResult.error); + return invokeResult; } return invokeResult; From ec519e6df3dad4e0054df33e6864c1a436a31bea Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 14:14:12 +0200 Subject: [PATCH 040/126] implemented custom client config in config builder --- .../src/ClientConfigBuilder.ts | 200 +++++++++++++++--- .../src/CustomClientConfig.ts | 18 ++ ...t-client-config.ts => getDefaultConfig.ts} | 37 +--- .../src/bundles/index.ts | 2 +- .../js/client-config-builder/src/index.ts | 1 + 5 files changed, 197 insertions(+), 61 deletions(-) create mode 100644 packages/js/client-config-builder/src/CustomClientConfig.ts rename packages/js/client-config-builder/src/bundles/{default-client-config.ts => getDefaultConfig.ts} (79%) diff --git a/packages/js/client-config-builder/src/ClientConfigBuilder.ts b/packages/js/client-config-builder/src/ClientConfigBuilder.ts index 596475b2e6..28be14fcae 100644 --- a/packages/js/client-config-builder/src/ClientConfigBuilder.ts +++ b/packages/js/client-config-builder/src/ClientConfigBuilder.ts @@ -1,32 +1,42 @@ -import { getDefaultClientConfig } from "./bundles"; +import { getDefaultConfig } from "./bundles"; +import { CustomClientConfig } from "./CustomClientConfig"; import { ClientConfig, Uri, IUriResolver, + IUriPackage, + IUriWrapper, Env, - InterfaceImplementations, - UriRedirect, } from "@polywrap/core-js"; -import { IWrapperCache } from "@polywrap/uri-resolvers-js"; +import { + IWrapperCache, + LegacyRedirectsResolver, + PackageToWrapperCacheResolver, + RecursiveResolver, + StaticResolver, + UriResolverLike, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; export class ClientConfigBuilder { - private _config: { - redirects: UriRedirect[]; - interfaces: InterfaceImplementations[]; - envs: Env[]; - resolver?: IUriResolver; - } = { - redirects: [], - interfaces: [], + private _config: CustomClientConfig = { envs: [], + interfaces: [], + redirects: [], + wrappers: [], + packages: [], + resolvers: [], }; - add(config: Partial>): ClientConfigBuilder { + getConfig(): CustomClientConfig { + return this._config; + } + + add(config: Partial>): ClientConfigBuilder { if (config.envs) { - for (const env of config.envs) { - this.addEnv(env.uri, env.env); - } + this.addEnvs(config.envs); } if (config.interfaces) { @@ -44,18 +54,115 @@ export class ClientConfigBuilder { } } - if (config.resolver) { - this.setResolver(config.resolver); + if (config.wrappers) { + for (const uriWrapper of config.wrappers) { + this.addWrapper(uriWrapper); + } + } + + if (config.packages) { + for (const uriPackage of config.packages) { + this.addPackage(uriPackage); + } + } + + if (config.redirects) { + for (const redirect of config.redirects) { + this.addUriRedirect(redirect.from, redirect.to); + } + } + + if (config.resolvers) { + this.addResolvers(config.resolvers); } return this; } - addDefaults( - wrapperCache?: IWrapperCache, - resolver?: IUriResolver - ): ClientConfigBuilder { - return this.add(getDefaultClientConfig(wrapperCache, resolver)); + addDefaults(): ClientConfigBuilder { + return this.add(getDefaultConfig()); + } + + addWrapper(uriWrapper: IUriWrapper): ClientConfigBuilder { + const wrapperUri = Uri.from(uriWrapper.uri); + + const existingRegistration = this._config.wrappers.find((x) => + Uri.equals(x.uri, wrapperUri) + ); + + if (existingRegistration) { + existingRegistration.wrapper = uriWrapper.wrapper; + } else { + this._config.wrappers.push({ + uri: wrapperUri, + wrapper: uriWrapper.wrapper, + }); + } + + return this; + } + + addWrappers(uriWrappers: IUriWrapper[]): ClientConfigBuilder { + for (const uriWrapper of uriWrappers) { + this.addWrapper(uriWrapper); + } + + return this; + } + + removeWrapper(uri: Uri | string): ClientConfigBuilder { + const wrapperUri = Uri.from(uri); + + const idx = this._config.wrappers.findIndex((x) => + Uri.equals(x.uri, wrapperUri) + ); + + if (idx > -1) { + this._config.wrappers.splice(idx, 1); + } + + return this; + } + + addPackage(uriPackage: IUriPackage): ClientConfigBuilder { + const packageUri = Uri.from(uriPackage.uri); + + const existingRegistration = this._config.packages.find((x) => + Uri.equals(x.uri, packageUri) + ); + + if (existingRegistration) { + existingRegistration.package = uriPackage.package; + } else { + this._config.packages.push({ + uri: packageUri, + package: uriPackage.package, + }); + } + + return this; + } + + addPackages(uriPackages: IUriPackage[]): ClientConfigBuilder { + for (const uriPackage of uriPackages) { + this.addPackage(uriPackage); + } + + return this; + } + + removePackage(uri: Uri | string): ClientConfigBuilder { + const packageUri = Uri.from(uri); + + const idx = this._config.packages.findIndex((x) => + Uri.equals(x.uri, packageUri) + ); + + if (idx > -1) { + this._config.packages.splice(idx, 1); + } + + return this; } addEnv(uri: Uri | string, env: Record): ClientConfigBuilder { @@ -78,6 +185,14 @@ export class ClientConfigBuilder { return this; } + addEnvs(envs: Env[]): ClientConfigBuilder { + for (const env of envs) { + this.addEnv(env.uri, env.env); + } + + return this; + } + removeEnv(uri: Uri | string): ClientConfigBuilder { const envUri = Uri.from(uri); @@ -230,21 +345,44 @@ export class ClientConfigBuilder { return this; } - setResolver(resolver: IUriResolver): ClientConfigBuilder { - this._config.resolver = resolver; + addResolver(resolver: UriResolverLike): ClientConfigBuilder { + this._config.resolvers.push(resolver); return this; } - build(): ClientConfig { - if (!this._config.resolver) { - throw new Error("No URI resolver provided"); + addResolvers(resolvers: UriResolverLike[]): ClientConfigBuilder { + for (const resolver of resolvers) { + this.addResolver(resolver); } - return this._config as ClientConfig; + return this; } - buildPartial(): Partial> { - return this._config; + buildDefault( + wrapperCache?: IWrapperCache, + resolver?: IUriResolver + ): ClientConfig { + return { + envs: this._config.envs, + interfaces: this._config.interfaces, + redirects: this._config.redirects, + resolver: + resolver ?? + new RecursiveResolver( + PackageToWrapperCacheResolver.from( + [ + new LegacyRedirectsResolver(), + StaticResolver.from([ + ...this._config.wrappers, + ...this._config.packages, + ]), + ...this._config.resolvers, + new ExtendableUriResolver(), + ], + wrapperCache ?? new WrapperCache() + ) + ), + }; } } diff --git a/packages/js/client-config-builder/src/CustomClientConfig.ts b/packages/js/client-config-builder/src/CustomClientConfig.ts new file mode 100644 index 0000000000..ab4817a39b --- /dev/null +++ b/packages/js/client-config-builder/src/CustomClientConfig.ts @@ -0,0 +1,18 @@ +import { + Uri, + Env, + InterfaceImplementations, + IUriRedirect, + IUriPackage, + IUriWrapper, +} from "@polywrap/core-js"; +import { UriResolverLike } from "@polywrap/uri-resolvers-js"; + +export type CustomClientConfig = { + redirects: IUriRedirect[]; + interfaces: InterfaceImplementations[]; + envs: Env[]; + wrappers: IUriWrapper[]; + packages: IUriPackage[]; + resolvers: UriResolverLike[]; +}; diff --git a/packages/js/client-config-builder/src/bundles/default-client-config.ts b/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts similarity index 79% rename from packages/js/client-config-builder/src/bundles/default-client-config.ts rename to packages/js/client-config-builder/src/bundles/getDefaultConfig.ts index 8a96801365..496660a46e 100644 --- a/packages/js/client-config-builder/src/bundles/default-client-config.ts +++ b/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts @@ -1,4 +1,4 @@ -import { ClientConfig, IUriResolver, Uri } from "@polywrap/core-js"; +import { IUriPackage, Uri } from "@polywrap/core-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; import { @@ -6,34 +6,15 @@ import { Connection, Connections, } from "@polywrap/ethereum-plugin-js"; -import { - LegacyRedirectsResolver, - IWrapperCache, - WrapperCache, - PackageToWrapperCacheResolver, - RecursiveResolver, - UriResolverLike, - buildUriResolver, -} from "@polywrap/uri-resolvers-js"; -import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { httpPlugin } from "@polywrap/http-plugin-js"; import { httpResolverPlugin } from "@polywrap/http-resolver-plugin-js"; import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; import { loggerPlugin } from "@polywrap/logger-plugin-js"; import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; +import { CustomClientConfig } from "../CustomClientConfig"; -export const getDefaultClientConfig = ( - wrapperCache?: IWrapperCache, - resolver?: IUriResolver -): ClientConfig => { - const innerResolvers: UriResolverLike[] = resolver - ? [new LegacyRedirectsResolver(), resolver] - : [new LegacyRedirectsResolver()]; - - innerResolvers.push(...getDefaultPlugins()); - innerResolvers.push(new ExtendableUriResolver()); - +export const getDefaultConfig = (): CustomClientConfig => { return { envs: [ { @@ -71,6 +52,7 @@ export const getDefaultClientConfig = ( new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), new Uri("wrap://ens/ens-resolver.polywrap.eth"), new Uri("wrap://ens/fs-resolver.polywrap.eth"), + new Uri("wrap://ens/http-resolver.polywrap.eth"), ], }, { @@ -78,12 +60,9 @@ export const getDefaultClientConfig = ( implementations: [new Uri("wrap://ens/js-logger.polywrap.eth")], }, ], - resolver: new RecursiveResolver( - new PackageToWrapperCacheResolver( - wrapperCache ?? new WrapperCache(), - buildUriResolver(innerResolvers) - ) - ), + packages: getDefaultPlugins(), + wrappers: [], + resolvers: [], }; }; @@ -98,7 +77,7 @@ export const defaultWrappers = { graphNode: "wrap://ens/goerli/graph-node.wrappers.eth", }; -export const getDefaultPlugins = (): UriResolverLike[] => { +export const getDefaultPlugins = (): IUriPackage[] => { return [ // IPFS is required for downloading Polywrap packages { diff --git a/packages/js/client-config-builder/src/bundles/index.ts b/packages/js/client-config-builder/src/bundles/index.ts index b66e52f16e..1c6c20bb7b 100644 --- a/packages/js/client-config-builder/src/bundles/index.ts +++ b/packages/js/client-config-builder/src/bundles/index.ts @@ -1 +1 @@ -export * from "./default-client-config"; +export * from "./getDefaultConfig"; diff --git a/packages/js/client-config-builder/src/index.ts b/packages/js/client-config-builder/src/index.ts index 83e3ef472c..14e4fd55cf 100644 --- a/packages/js/client-config-builder/src/index.ts +++ b/packages/js/client-config-builder/src/index.ts @@ -1,2 +1,3 @@ export * from "./ClientConfigBuilder"; +export * from "./CustomClientConfig"; export * from "./bundles"; From fca511f40561d082526185ced679593ff2932fbe Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 14:14:55 +0200 Subject: [PATCH 041/126] fixed issues with inline plugins --- packages/js/plugin-js/src/PluginPackage.ts | 43 ++++++++++++------- .../src/utils/GetPluginMethodsFunc.ts | 6 ++- .../src/utils/PluginModuleWithMethods.ts | 12 ++++-- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/packages/js/plugin-js/src/PluginPackage.ts b/packages/js/plugin-js/src/PluginPackage.ts index 212ec3944f..ea9517d22f 100644 --- a/packages/js/plugin-js/src/PluginPackage.ts +++ b/packages/js/plugin-js/src/PluginPackage.ts @@ -6,34 +6,45 @@ import { IWrapPackage, Wrapper } from "@polywrap/core-js"; import { Result, ResultOk } from "@polywrap/result"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; -export class PluginPackage implements IWrapPackage { +export class PluginPackage< + TConfig, + TEnv extends Record = Record +> implements IWrapPackage { constructor( - private pluginModule: PluginModule, + private pluginModule: PluginModule, private manifest: WrapManifest ) {} - static from( + static from< + TConfig, + TEnv extends Record = Record + >( pluginModule: PluginModule, manifest?: WrapManifest - ): PluginPackage; - static from( - getPluginFuncs: GetPluginMethodsFunc, + ): PluginPackage; + static from = Record>( + getPluginFuncs: GetPluginMethodsFunc, manifest?: WrapManifest - ): PluginPackage; - static from( - pluginModuleOrGetPluginFuncs: PluginModule | GetPluginMethodsFunc, + ): PluginPackage; + static from< + TConfig, + TEnv extends Record = Record + >( + pluginModuleOrGetPluginFuncs: + | PluginModule + | GetPluginMethodsFunc, manifest?: WrapManifest - ): PluginPackage { + ): PluginPackage { if (typeof pluginModuleOrGetPluginFuncs === "function") { - const getPluginFuncs = pluginModuleOrGetPluginFuncs as GetPluginMethodsFunc; + const getPluginFuncs = pluginModuleOrGetPluginFuncs as GetPluginMethodsFunc; - return new PluginPackage( - new PluginModuleWithMethods(getPluginFuncs), + return new PluginPackage( + new PluginModuleWithMethods(getPluginFuncs), manifest || ({} as WrapManifest) - ) as PluginPackage; + ) as PluginPackage; } else { - return new PluginPackage( - pluginModuleOrGetPluginFuncs as PluginModule, + return new PluginPackage( + pluginModuleOrGetPluginFuncs as PluginModule, manifest || ({} as WrapManifest) ); } diff --git a/packages/js/plugin-js/src/utils/GetPluginMethodsFunc.ts b/packages/js/plugin-js/src/utils/GetPluginMethodsFunc.ts index 5633206d36..9cb2bd2d81 100644 --- a/packages/js/plugin-js/src/utils/GetPluginMethodsFunc.ts +++ b/packages/js/plugin-js/src/utils/GetPluginMethodsFunc.ts @@ -1,5 +1,7 @@ import { PluginModule, PluginMethod } from ".."; -export type GetPluginMethodsFunc = ( - module: PluginModule +export type GetPluginMethodsFunc< + TEnv extends Record = Record +> = ( + module: PluginModule ) => Record, unknown>>; diff --git a/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts b/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts index a150976955..b332aac9f6 100644 --- a/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts +++ b/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts @@ -5,18 +5,23 @@ import { PluginModule } from "../PluginModule"; import { GetPluginMethodsFunc } from "./GetPluginMethodsFunc"; import { Client, executeMaybeAsyncFunction } from "@polywrap/core-js"; +import { Result, ResultOk } from "@polywrap/result"; export class PluginModuleWithMethods< TEnv extends Record = Record > extends PluginModule { - constructor(private getPluginMethods: GetPluginMethodsFunc) { + constructor(private getPluginMethods: GetPluginMethodsFunc) { super({} as never); } async _wrap_invoke< TArgs extends Record = Record, TResult = unknown - >(method: string, args: TArgs, client: Client): Promise { + >( + method: string, + args: TArgs, + client: Client + ): Promise> { const fn = this.getMethod(method); if (!fn) { @@ -27,9 +32,10 @@ export class PluginModuleWithMethods< throw Error(`Plugin method "${method}" must be of type 'function'`); } - return await executeMaybeAsyncFunction( + const data = await executeMaybeAsyncFunction( fn.bind(this, args, client) ); + return ResultOk(data); } getMethod< From 046adbd611e68d25bfa1c8a87ec44e8bc7f80674 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 14:15:50 +0200 Subject: [PATCH 042/126] replaced wrapper and package registrations with uri wrappers and uri packages --- .../src/helpers/PackageRegistration.ts | 6 -- .../src/helpers/UriResolverLike.ts | 15 ++-- .../src/helpers/WrapperRegistration.ts | 6 -- .../src/helpers/buildUriResolver.ts | 33 +++++---- .../js/uri-resolvers/src/helpers/index.ts | 2 - .../src/static/StaticResolver.ts | 69 +++++++++++++------ .../src/static/StaticResolverLike.ts | 12 ++-- 7 files changed, 74 insertions(+), 69 deletions(-) delete mode 100644 packages/js/uri-resolvers/src/helpers/PackageRegistration.ts delete mode 100644 packages/js/uri-resolvers/src/helpers/WrapperRegistration.ts diff --git a/packages/js/uri-resolvers/src/helpers/PackageRegistration.ts b/packages/js/uri-resolvers/src/helpers/PackageRegistration.ts deleted file mode 100644 index ddcdd742d4..0000000000 --- a/packages/js/uri-resolvers/src/helpers/PackageRegistration.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { IWrapPackage, Uri } from "@polywrap/core-js"; - -export type PackageRegistration = { - uri: string | Uri; - package: IWrapPackage; -}; diff --git a/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts b/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts index d87ccb5961..100756f54b 100644 --- a/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts +++ b/packages/js/uri-resolvers/src/helpers/UriResolverLike.ts @@ -1,19 +1,14 @@ -import { PackageRegistration } from "./PackageRegistration"; -import { WrapperRegistration } from "./WrapperRegistration"; - import { - IUriResolver, - UriRedirect, Uri, + IUriResolver, + IUriRedirect, IUriPackage, IUriWrapper, } from "@polywrap/core-js"; export type UriResolverLike = | IUriResolver - | UriRedirect - | IUriPackage - | IUriWrapper - | PackageRegistration - | WrapperRegistration + | IUriRedirect + | IUriPackage + | IUriWrapper | UriResolverLike[]; diff --git a/packages/js/uri-resolvers/src/helpers/WrapperRegistration.ts b/packages/js/uri-resolvers/src/helpers/WrapperRegistration.ts deleted file mode 100644 index bb42c5b563..0000000000 --- a/packages/js/uri-resolvers/src/helpers/WrapperRegistration.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Uri, Wrapper } from "@polywrap/core-js"; - -export type WrapperRegistration = { - uri: string | Uri; - wrapper: Wrapper; -}; diff --git a/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts b/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts index 7a05c21cbc..347ef1d577 100644 --- a/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts +++ b/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts @@ -1,15 +1,18 @@ import { UriResolverAggregator } from "../aggregator"; import { PackageResolver } from "../packages"; import { WrapperResolver } from "../wrappers"; -import { - PackageRegistration, - WrapperRegistration, - UriResolverLike, -} from "../helpers"; +import { UriResolverLike } from "../helpers"; import { RedirectResolver } from "../redirects"; import { Result } from "@polywrap/result"; -import { IUriResolver, Uri, Client, UriRedirect } from "@polywrap/core-js"; +import { + IUriResolver, + Uri, + Client, + IUriRedirect, + IUriPackage, + IUriWrapper, +} from "@polywrap/core-js"; export const buildUriResolver = ( resolverLike: UriResolverLike, @@ -33,28 +36,28 @@ export const buildUriResolver = ( } else if ((resolverLike as IUriResolver).tryResolveUri !== undefined) { return resolverLike as IUriResolver; } else if ( - (resolverLike as UriRedirect).from !== undefined && - (resolverLike as UriRedirect).to !== undefined + (resolverLike as IUriRedirect).from !== undefined && + (resolverLike as IUriRedirect).to !== undefined ) { - const uriRedirect = resolverLike as UriRedirect; + const uriRedirect = resolverLike as IUriRedirect; return (new RedirectResolver( uriRedirect.from, uriRedirect.to ) as unknown) as IUriResolver; } else if ( - (resolverLike as PackageRegistration).uri !== undefined && - (resolverLike as PackageRegistration).package !== undefined + (resolverLike as IUriPackage).uri !== undefined && + (resolverLike as IUriPackage).package !== undefined ) { - const uriPackage = resolverLike as PackageRegistration; + const uriPackage = resolverLike as IUriPackage; return (new PackageResolver( Uri.from(uriPackage.uri), uriPackage.package ) as unknown) as IUriResolver; } else if ( - (resolverLike as WrapperRegistration).uri !== undefined && - (resolverLike as WrapperRegistration).wrapper !== undefined + (resolverLike as IUriWrapper).uri !== undefined && + (resolverLike as IUriWrapper).wrapper !== undefined ) { - const uriWrapper = resolverLike as WrapperRegistration; + const uriWrapper = resolverLike as IUriWrapper; return (new WrapperResolver( Uri.from(uriWrapper.uri), uriWrapper.wrapper diff --git a/packages/js/uri-resolvers/src/helpers/index.ts b/packages/js/uri-resolvers/src/helpers/index.ts index 143078138e..93bbbff22d 100644 --- a/packages/js/uri-resolvers/src/helpers/index.ts +++ b/packages/js/uri-resolvers/src/helpers/index.ts @@ -2,10 +2,8 @@ export * from "./UriResolutionResult"; export * from "./UriResolverLike"; export * from "./ResolverWithHistory"; export * from "./InfiniteLoopError"; -export * from "./PackageRegistration"; export * from "./RecursiveResolver"; export * from "./ResolverWithLoopGuard"; -export * from "./WrapperRegistration"; export * from "./buildUriResolver"; export * from "./clean-uri-history"; export * from "./getUriResolutionPath"; diff --git a/packages/js/uri-resolvers/src/static/StaticResolver.ts b/packages/js/uri-resolvers/src/static/StaticResolver.ts index 75fd4c9bb5..34163642da 100644 --- a/packages/js/uri-resolvers/src/static/StaticResolver.ts +++ b/packages/js/uri-resolvers/src/static/StaticResolver.ts @@ -1,15 +1,14 @@ -import { - PackageRegistration, - UriResolutionResult, - UriResolverLike, - WrapperRegistration, -} from "../helpers"; +import { UriResolutionResult, UriResolverLike } from "../helpers"; import { + Client, + IUriResolutionContext, IUriResolver, Uri, UriPackageOrWrapper, - UriRedirect, + IUriRedirect, + IUriPackage, + IUriWrapper, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; @@ -28,10 +27,10 @@ export class StaticResolver uriMap.set(uri, uriPackageOrWrapper); } } else if ( - (staticResolverLike as UriRedirect).from !== undefined && - (staticResolverLike as UriRedirect).to !== undefined + (staticResolverLike as IUriRedirect).from !== undefined && + (staticResolverLike as IUriRedirect).to !== undefined ) { - const uriRedirect = staticResolverLike as UriRedirect; + const uriRedirect = staticResolverLike as IUriRedirect; const from = Uri.from(uriRedirect.from); uriMap.set(from.uri, { @@ -39,10 +38,10 @@ export class StaticResolver uri: Uri.from(uriRedirect.to), }); } else if ( - (staticResolverLike as PackageRegistration).uri !== undefined && - (staticResolverLike as PackageRegistration).package !== undefined + (staticResolverLike as IUriPackage).uri !== undefined && + (staticResolverLike as IUriPackage).package !== undefined ) { - const uriPackage = staticResolverLike as PackageRegistration; + const uriPackage = staticResolverLike as IUriPackage; const uri = Uri.from(uriPackage.uri); uriMap.set(uri.uri, { @@ -51,10 +50,10 @@ export class StaticResolver package: uriPackage.package, }); } else if ( - (staticResolverLike as WrapperRegistration).uri !== undefined && - (staticResolverLike as WrapperRegistration).wrapper !== undefined + (staticResolverLike as IUriWrapper).uri !== undefined && + (staticResolverLike as IUriWrapper).wrapper !== undefined ) { - const uriWrapper = staticResolverLike as WrapperRegistration; + const uriWrapper = staticResolverLike as IUriWrapper; const uri = Uri.from(uriWrapper.uri); uriMap.set(uri.uri, { @@ -70,14 +69,40 @@ export class StaticResolver return new StaticResolver(uriMap); } - // TODO: add history - async tryResolveUri(uri: Uri): Promise> { - const result = this.uriMap.get(uri.uri); + async tryResolveUri( + uri: Uri, + _: Client, + resolutionContext: IUriResolutionContext + ): Promise> { + const uriPackageOrWrapper = this.uriMap.get(uri.uri); + + let result: Result; + let description = ""; - if (result) { - return UriResolutionResult.ok(result); + if (uriPackageOrWrapper) { + result = UriResolutionResult.ok(uriPackageOrWrapper); + switch (uriPackageOrWrapper.type) { + case "package": + description = `StaticResolver - Package (${uri.uri})`; + break; + case "wrapper": + description = `StaticResolver - Wrapper (${uri.uri})`; + break; + case "uri": + description = `StaticResolver - Redirect (${uri.uri} - ${uriPackageOrWrapper.uri.uri})`; + break; + } } else { - return UriResolutionResult.ok(uri); + result = UriResolutionResult.ok(uri); + description = `StaticResolver - Miss`; } + + resolutionContext.trackStep({ + sourceUri: uri, + result, + description, + }); + + return result; } } diff --git a/packages/js/uri-resolvers/src/static/StaticResolverLike.ts b/packages/js/uri-resolvers/src/static/StaticResolverLike.ts index 2262689d0d..d2b1ce67a0 100644 --- a/packages/js/uri-resolvers/src/static/StaticResolverLike.ts +++ b/packages/js/uri-resolvers/src/static/StaticResolverLike.ts @@ -1,11 +1,7 @@ -import { PackageRegistration, WrapperRegistration } from "../helpers"; - -import { UriRedirect, Uri, IUriPackage, IUriWrapper } from "@polywrap/core-js"; +import { IUriRedirect, Uri, IUriPackage, IUriWrapper } from "@polywrap/core-js"; export type StaticResolverLike = - | UriRedirect - | IUriPackage - | IUriWrapper - | PackageRegistration - | WrapperRegistration + | IUriRedirect + | IUriPackage + | IUriWrapper | StaticResolverLike[]; From ec85c4c1d844ff5e727955977a30656bd9ca76db Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 14:16:19 +0200 Subject: [PATCH 043/126] added helper static 'from' methods to resolvers --- .../cache/PackageToWrapperCacheResolver.ts | 27 ++++++++++++------- .../src/helpers/RecursiveResolver.ts | 8 +++--- .../src/helpers/ResolverWithLoopGuard.ts | 10 ++++--- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts b/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts index 3b54d60ea2..cc2cf75d4d 100644 --- a/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts +++ b/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts @@ -17,22 +17,31 @@ import { import { DeserializeManifestOptions } from "@polywrap/wrap-manifest-types-js"; import { Result } from "@polywrap/result"; -export class PackageToWrapperCacheResolver implements IUriResolver { +export class PackageToWrapperCacheResolver + implements IUriResolver { name: string; - resolverToCache: IUriResolver; constructor( + private resolverToCache: IUriResolver, private cache: IWrapperCache, - resolverToCache: UriResolverLike, private options?: { deserializeManifestOptions?: DeserializeManifestOptions; - resolverName?: string; endOnRedirect?: boolean; } - ) { - this.resolverToCache = buildUriResolver( - resolverToCache, - options?.resolverName + ) {} + + static from( + resolver: UriResolverLike, + cache: IWrapperCache, + options?: { + deserializeManifestOptions?: DeserializeManifestOptions; + endOnRedirect?: boolean; + } + ): PackageToWrapperCacheResolver { + return new PackageToWrapperCacheResolver( + buildUriResolver(resolver), + cache, + options ); } @@ -40,7 +49,7 @@ export class PackageToWrapperCacheResolver implements IUriResolver { uri: Uri, client: Client, resolutionContext: IUriResolutionContext - ): Promise> { + ): Promise> { const wrapper = await executeMaybeAsyncFunction( this.cache.get.bind(this.cache, uri) ); diff --git a/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts b/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts index d8368aaa8b..4afca2e08f 100644 --- a/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts +++ b/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts @@ -14,10 +14,12 @@ import { export class RecursiveResolver implements IUriResolver { - private resolver: IUriResolver; + constructor(private resolver: IUriResolver) {} - constructor(resolver: UriResolverLike) { - this.resolver = buildUriResolver(resolver); + static from( + resolver: UriResolverLike + ): RecursiveResolver { + return new RecursiveResolver(buildUriResolver(resolver)); } async tryResolveUri( diff --git a/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts b/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts index 7bc934a563..3340db0619 100644 --- a/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts +++ b/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts @@ -14,10 +14,14 @@ import { Result } from "@polywrap/result"; export class ResolverWithLoopGuard implements IUriResolver { - private resolver: IUriResolver; + constructor(private resolver: IUriResolver) {} - constructor(resolver: UriResolverLike) { - this.resolver = buildUriResolver(resolver); + static from( + resolver: UriResolverLike + ): ResolverWithLoopGuard { + return new ResolverWithLoopGuard( + buildUriResolver(resolver) + ); } async tryResolveUri( From b40bbc13f0e9881df38e37047eeaa3f84801f34a Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 14:16:53 +0200 Subject: [PATCH 044/126] cli config builder fixes wip --- .../src/lib/helpers/validate-client-config.ts | 6 +- .../src/lib/option-parsers/client-config.ts | 28 ++++++---- .../cli/src/lib/test-env/client-config.ts | 55 ++++++++++++++++++- 3 files changed, 74 insertions(+), 15 deletions(-) diff --git a/packages/cli/src/lib/helpers/validate-client-config.ts b/packages/cli/src/lib/helpers/validate-client-config.ts index d73e5786b7..0cc0e96494 100644 --- a/packages/cli/src/lib/helpers/validate-client-config.ts +++ b/packages/cli/src/lib/helpers/validate-client-config.ts @@ -5,7 +5,7 @@ import { InterfaceImplementations, Uri, UriRedirect, - PolywrapClientConfig, + ClientConfig, } from "@polywrap/client-js"; export function validateRedirects( @@ -121,9 +121,7 @@ export function validateEnvs( } } -export function validateClientConfig( - config: Partial -): void { +export function validateClientConfig(config: Partial>): void { if (!config || typeof config !== "object") { throw new Error(intlMsg.commands_run_error_clientConfigNotObject()); } diff --git a/packages/cli/src/lib/option-parsers/client-config.ts b/packages/cli/src/lib/option-parsers/client-config.ts index abc0e16701..0548b84db1 100644 --- a/packages/cli/src/lib/option-parsers/client-config.ts +++ b/packages/cli/src/lib/option-parsers/client-config.ts @@ -1,19 +1,24 @@ import { validateClientConfig } from "../helpers"; import { intlMsg } from "../intl"; import { importTypescriptModule } from "../system"; -import { getTestEnvClientConfig } from "../test-env"; +import { getTestEnvConfigBuilder } from "../test-env"; -import { executeMaybeAsyncFunction } from "@polywrap/core-js"; -import { PolywrapClientConfig } from "@polywrap/client-js"; +import { + ClientConfig, + executeMaybeAsyncFunction, + Uri, +} from "@polywrap/core-js"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; import path from "path"; export async function parseClientConfigOption( clientConfig: string | undefined -): Promise> { - let finalClientConfig: Partial; +): Promise>> { + let builder: ClientConfigBuilder; + let config: ClientConfig; try { - finalClientConfig = await getTestEnvClientConfig(); + builder = await getTestEnvConfigBuilder(); } catch (e) { console.error(intlMsg.commands_run_error_noTestEnvFound()); process.exit(1); @@ -43,18 +48,21 @@ export async function parseClientConfigOption( process.exit(1); } - finalClientConfig = await executeMaybeAsyncFunction( + builder = await executeMaybeAsyncFunction( configModule.getClientConfig, - finalClientConfig + builder ); + config = builder.build(); try { - validateClientConfig(finalClientConfig); + validateClientConfig(config); } catch (e) { console.error(e.message); process.exit(1); } + } else { + config = builder.build(); } - return finalClientConfig; + return config; } diff --git a/packages/cli/src/lib/test-env/client-config.ts b/packages/cli/src/lib/test-env/client-config.ts index 6808cea68c..4f15d6d613 100644 --- a/packages/cli/src/lib/test-env/client-config.ts +++ b/packages/cli/src/lib/test-env/client-config.ts @@ -1,7 +1,10 @@ import { getTestEnvProviders } from "./providers"; import { PolywrapClientConfig } from "@polywrap/client-js"; -import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; +import { + defaultIpfsProviders, + ClientConfigBuilder, +} from "@polywrap/client-config-builder-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { ethereumPlugin, @@ -73,3 +76,53 @@ export async function getTestEnvClientConfig(): Promise< envs, }; } + +export async function getTestEnvConfigBuilder(): Promise { + const builder = new ClientConfigBuilder().addDefaults(); + + const providers = await getTestEnvProviders(); + const ipfsProvider = providers.ipfsProvider; + const ethProvider = providers.ethProvider; + + if (!ipfsProvider || !ethProvider) { + throw Error("Test environment not found."); + } + + const ensAddress = ensAddresses.ensAddress; + + // TODO: move this into its own package, since it's being used everywhere? + // maybe have it exported from test-env. + builder.addPackages([ + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ + connections: new Connections({ + networks: { + testnet: new Connection({ + provider: ethProvider, + }), + }, + }), + }), + }, + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }, + { + uri: "wrap://ens/ens-resolver.polywrap.eth", + package: ensResolverPlugin({ + addresses: { + testnet: ensAddress, + }, + }), + }, + ]); + + builder.addEnv("wrap://ens/ipfs.polywrap.eth", { + provider: ipfsProvider, + fallbackProviders: defaultIpfsProviders, + }); + + return builder; +} From be14a1c365ffb65d92634e5c75a2cec56de0911d Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 14:17:25 +0200 Subject: [PATCH 045/126] updated client tests to work with new config builder --- .../__tests__/core/interface-impls.spec.ts | 19 +++--- .../client/src/__tests__/core/sanity.spec.ts | 35 ++-------- ...olve a URI resolver extension wrapper.json | 11 ++- .../histories/can resolve cache - 1.json | 6 +- ...cting by a URI resolver extension - 1.json | 11 ++- ...te recursion when resolved at runtime.json | 11 ++- ...after URI resolver extension redirect.json | 11 ++- .../core/uri-resolution/histories/sanity.json | 38 ++--------- .../uri-resolution/uri-resolution.spec.ts | 32 ++++----- .../src/__tests__/core/wasm-wrapper.spec.ts | 67 +++++++++++-------- .../js/client/src/__tests__/e2e/env.spec.ts | 53 ++++++++++++--- .../src/__tests__/e2e/memory-storage.ts | 2 +- .../js/client/src/__tests__/e2e/test-cases.ts | 38 +++++------ .../client/src/__tests__/e2e/wasm-as.spec.ts | 41 ++++++------ .../client/src/__tests__/e2e/wasm-rs.spec.ts | 36 +++++----- .../helpers/getClientWithEnsAndIpfs.ts | 26 ++++--- .../helpers/mockPluginRegistration.ts | 12 ++-- .../__tests__/utils/createDefaultClient.ts | 11 +++ 18 files changed, 228 insertions(+), 232 deletions(-) create mode 100644 packages/js/client/src/__tests__/utils/createDefaultClient.ts diff --git a/packages/js/client/src/__tests__/core/interface-impls.spec.ts b/packages/js/client/src/__tests__/core/interface-impls.spec.ts index 896e553feb..a7f50d1f26 100644 --- a/packages/js/client/src/__tests__/core/interface-impls.spec.ts +++ b/packages/js/client/src/__tests__/core/interface-impls.spec.ts @@ -2,6 +2,7 @@ import { coreInterfaceUris, Uri, PolywrapClient } from "../.."; import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { mockPluginRegistration } from "../helpers/mockPluginRegistration"; +import { createDefaultClient } from "../utils/createDefaultClient"; jest.setTimeout(200000); @@ -11,7 +12,7 @@ describe("interface-impls", () => { const implementation1Uri = "wrap://ens/some-implementation1.eth"; const implementation2Uri = "wrap://ens/some-implementation2.eth"; - const client = new PolywrapClient({ + const client = createDefaultClient({ interfaces: [ { interface: interfaceUri, @@ -23,7 +24,7 @@ describe("interface-impls", () => { const interfaces = client.getInterfaces(); const builder = new ClientConfigBuilder(); - const defaultClientConfig = builder.addDefaults().build(); + const defaultClientConfig = builder.addDefaults().buildDefault(); expect(interfaces).toEqual([ ...(defaultClientConfig.interfaces ?? []), @@ -36,7 +37,7 @@ describe("interface-impls", () => { }, ]); - const implementations = client.getImplementations(interfaceUri); + const implementations = client.getImplementations(interfaceUri, { applyRedirects: false }); if (!implementations.ok) fail(implementations.error); expect(implementations.value).toEqual([implementation1Uri, implementation2Uri]); @@ -119,7 +120,7 @@ describe("interface-impls", () => { const implementationUri1 = "wrap://ens/implementation1.eth"; const implementationUri2 = "wrap://ens/implementation2.eth"; - const client = new PolywrapClient({ + const client = createDefaultClient({ interfaces: [ { interface: interfaceUri, @@ -150,7 +151,7 @@ describe("interface-impls", () => { const implementationUri1 = "wrap://ens/implementation1.eth"; const implementationUri2 = "wrap://ens/implementation2.eth"; - const client = new PolywrapClient({ + const client = createDefaultClient({ interfaces: [ { interface: interfaceUri, @@ -171,7 +172,7 @@ describe("interface-impls", () => { const implementationUris = interfaces[0].implementations; const builder = new ClientConfigBuilder(); - const defaultClientConfig = builder.addDefaults().build(); + const defaultClientConfig = builder.addDefaults().buildDefault(); expect(implementationUris).toEqual([ ...defaultClientConfig.interfaces.find( @@ -246,7 +247,7 @@ describe("interface-impls", () => { const implementation1Uri = "wrap://ens/some-implementation1.eth"; const implementation2Uri = "wrap://ens/some-implementation2.eth"; - const client = new PolywrapClient({ + const client = createDefaultClient({ redirects: [ { from: oldInterfaceUri, @@ -265,7 +266,7 @@ describe("interface-impls", () => { ], }); - let result = client.getImplementations(oldInterfaceUri); + let result = client.getImplementations(oldInterfaceUri, { applyRedirects: false }); if (!result.ok) fail(result.error); expect(result.value).toEqual([implementation1Uri]); @@ -275,7 +276,7 @@ describe("interface-impls", () => { if (!result.ok) fail(result.error); expect(result.value).toEqual([implementation1Uri, implementation2Uri]); - let result2 = client.getImplementations(new Uri(oldInterfaceUri)); + let result2 = client.getImplementations(new Uri(oldInterfaceUri), { applyRedirects: false }); if (!result2.ok) fail(result2.error); expect(result2.value).toEqual([new Uri(implementation1Uri)]); diff --git a/packages/js/client/src/__tests__/core/sanity.spec.ts b/packages/js/client/src/__tests__/core/sanity.spec.ts index a1761a4a19..830040eebb 100644 --- a/packages/js/client/src/__tests__/core/sanity.spec.ts +++ b/packages/js/client/src/__tests__/core/sanity.spec.ts @@ -1,13 +1,13 @@ import { coreInterfaceUris } from "@polywrap/core-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; -import { Uri, PolywrapClient } from "../.."; +import { Uri } from "../.."; import { defaultWrappers } from "@polywrap/client-config-builder-js"; +import { createDefaultClient } from "../utils/createDefaultClient"; jest.setTimeout(200000); describe("sanity", () => { test("default client config", () => { - const client = new PolywrapClient(); + const client = createDefaultClient(); expect(client.getRedirects()).toStrictEqual([ { @@ -42,38 +42,11 @@ describe("sanity", () => { ]); }); - test("client noDefaults flag works as expected", async () => { - let client = new PolywrapClient(); - expect(client.getUriResolver()).toBeTruthy(); - - client = new PolywrapClient({}, {}); - expect(client.getUriResolver()).toBeTruthy(); - - client = new PolywrapClient({}, { noDefaults: false }); - expect(client.getUriResolver()).toBeTruthy(); - - client = new PolywrapClient( - { resolver: buildUriResolver([]) }, - { noDefaults: true } - ); - - expect(client.getUriResolver()).toBeTruthy(); - - let message = ""; - try { - client = new PolywrapClient({}, { noDefaults: true }); - } catch (e) { - message = e.message; - } - - expect(message).toBe("No URI resolver provided"); - }); - test("redirect registration", () => { const implementation1Uri = "wrap://ens/some-implementation1.eth"; const implementation2Uri = "wrap://ens/some-implementation2.eth"; - const client = new PolywrapClient({ + const client = createDefaultClient({ redirects: [ { from: implementation1Uri, diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve a URI resolver extension wrapper.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve a URI resolver extension wrapper.json index def264c691..b71a7d2930 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve a URI resolver extension wrapper.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve a URI resolver extension wrapper.json @@ -9,31 +9,28 @@ [ "wrap://ens/ipfs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ipfs-resolver.polywrap.eth)", [ - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" + "wrap://ens/ipfs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/ens-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ens-resolver.polywrap.eth)", [ "wrap://ens/ens-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ens-resolver.polywrap.eth)", [ - "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" + "wrap://ens/ens-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/fs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/fs-resolver.polywrap.eth)", [ "wrap://ens/fs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/fs-resolver.polywrap.eth)", [ - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" + "wrap://ens/fs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://ens/http-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/http-resolver.polywrap.eth)", [ "wrap://ens/http-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/http-resolver.polywrap.eth)", [ - "wrap://ens/http-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/http-resolver.polywrap.eth)", - [ - "wrap://ens/http-resolver.polywrap.eth => Plugin (wrap://ens/http-resolver.polywrap.eth) => package (wrap://ens/http-resolver.polywrap.eth)" - ] + "wrap://ens/http-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/http-resolver.polywrap.eth) => package (wrap://ens/http-resolver.polywrap.eth)" ] ], "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 1.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 1.json index 9e5c70eadc..929857b596 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 1.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 1.json @@ -9,21 +9,21 @@ [ "wrap://ens/ipfs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ipfs-resolver.polywrap.eth)", [ - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" + "wrap://ens/ipfs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/ens-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ens-resolver.polywrap.eth)", [ "wrap://ens/ens-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ens-resolver.polywrap.eth)", [ - "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" + "wrap://ens/ens-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/fs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/fs-resolver.polywrap.eth)", [ "wrap://ens/fs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/fs-resolver.polywrap.eth)", [ - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" + "wrap://ens/fs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://file/$root-wrapper-dir/simple/build => ResolverExtension (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://file/$root-wrapper-dir/simple/build)" diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 1.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 1.json index 9100dcadf0..99c1c4f4bc 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 1.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 1.json @@ -9,31 +9,28 @@ [ "wrap://ens/ipfs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ipfs-resolver.polywrap.eth)", [ - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" + "wrap://ens/ipfs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/ens-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ens-resolver.polywrap.eth)", [ "wrap://ens/ens-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ens-resolver.polywrap.eth)", [ - "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" + "wrap://ens/ens-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/fs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/fs-resolver.polywrap.eth)", [ "wrap://ens/fs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/fs-resolver.polywrap.eth)", [ - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" + "wrap://ens/fs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://ens/http-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/http-resolver.polywrap.eth)", [ "wrap://ens/http-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/http-resolver.polywrap.eth)", [ - "wrap://ens/http-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/http-resolver.polywrap.eth)", - [ - "wrap://ens/http-resolver.polywrap.eth => Plugin (wrap://ens/http-resolver.polywrap.eth) => package (wrap://ens/http-resolver.polywrap.eth)" - ] + "wrap://ens/http-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/http-resolver.polywrap.eth) => package (wrap://ens/http-resolver.polywrap.eth)" ] ], "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/custom wrapper resolver does not cause infinite recursion when resolved at runtime.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/custom wrapper resolver does not cause infinite recursion when resolved at runtime.json index 5582673e21..7763bcf916 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/custom wrapper resolver does not cause infinite recursion when resolved at runtime.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/custom wrapper resolver does not cause infinite recursion when resolved at runtime.json @@ -9,31 +9,28 @@ [ "wrap://ens/ipfs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ipfs-resolver.polywrap.eth)", [ - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" + "wrap://ens/ipfs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/ens-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ens-resolver.polywrap.eth)", [ "wrap://ens/ens-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ens-resolver.polywrap.eth)", [ - "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" + "wrap://ens/ens-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/fs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/fs-resolver.polywrap.eth)", [ "wrap://ens/fs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/fs-resolver.polywrap.eth)", [ - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" + "wrap://ens/fs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://ens/http-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/http-resolver.polywrap.eth)", [ "wrap://ens/http-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/http-resolver.polywrap.eth)", [ - "wrap://ens/http-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/http-resolver.polywrap.eth)", - [ - "wrap://ens/http-resolver.polywrap.eth => Plugin (wrap://ens/http-resolver.polywrap.eth) => package (wrap://ens/http-resolver.polywrap.eth)" - ] + "wrap://ens/http-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/http-resolver.polywrap.eth) => package (wrap://ens/http-resolver.polywrap.eth)" ] ], "wrap://ens/test.eth => ResolverExtension (wrap://ens/undefined-resolver.eth) => error While resolving wrap://ens/test.eth with URI resolver extension wrap://ens/undefined-resolver.eth, the extension could not be fully resolved. Last tried URI is wrap://ens/undefined-resolver.eth" diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/restarts URI resolution after URI resolver extension redirect.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/restarts URI resolution after URI resolver extension redirect.json index 6eb8f8a8ef..a877388e87 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/restarts URI resolution after URI resolver extension redirect.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/restarts URI resolution after URI resolver extension redirect.json @@ -9,31 +9,28 @@ [ "wrap://ens/ipfs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ipfs-resolver.polywrap.eth)", [ - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" + "wrap://ens/ipfs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/ens-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ens-resolver.polywrap.eth)", [ "wrap://ens/ens-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/ens-resolver.polywrap.eth)", [ - "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" + "wrap://ens/ens-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/fs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/fs-resolver.polywrap.eth)", [ "wrap://ens/fs-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/fs-resolver.polywrap.eth)", [ - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" + "wrap://ens/fs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://ens/http-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/http-resolver.polywrap.eth)", [ "wrap://ens/http-resolver.polywrap.eth => UriResolverAggregator => package (wrap://ens/http-resolver.polywrap.eth)", [ - "wrap://ens/http-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/http-resolver.polywrap.eth)", - [ - "wrap://ens/http-resolver.polywrap.eth => Plugin (wrap://ens/http-resolver.polywrap.eth) => package (wrap://ens/http-resolver.polywrap.eth)" - ] + "wrap://ens/http-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/http-resolver.polywrap.eth) => package (wrap://ens/http-resolver.polywrap.eth)" ] ], "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/sanity.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/sanity.json index 26dc00e8bd..a57d0ec314 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/sanity.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/sanity.json @@ -9,14 +9,7 @@ "wrap://ens/uri.eth => Redirect (wrap://ens/uts46.polywrap.eth - wrap://ens/goerli/uts46-lite.wrappers.eth)", "wrap://ens/uri.eth => Redirect (wrap://ens/graph-node.polywrap.eth - wrap://ens/goerli/graph-node.wrappers.eth)" ], - "wrap://ens/uri.eth => Package (wrap://ens/ipfs.polywrap.eth)", - "wrap://ens/uri.eth => Package (wrap://ens/ens-resolver.polywrap.eth)", - "wrap://ens/uri.eth => Package (wrap://ens/ethereum.polywrap.eth)", - "wrap://ens/uri.eth => Package (wrap://ens/http.polywrap.eth)", - "wrap://ens/uri.eth => Package (wrap://ens/js-logger.polywrap.eth)", - "wrap://ens/uri.eth => Package (wrap://ens/fs.polywrap.eth)", - "wrap://ens/uri.eth => Package (wrap://ens/fs-resolver.polywrap.eth)", - "wrap://ens/uri.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth)", + "wrap://ens/uri.eth => StaticResolver - Miss", "wrap://ens/uri.eth => ExtendableUriResolver", [ "wrap://ens/ipfs-resolver.polywrap.eth => PackageToWrapperCacheResolver => wrapper (wrap://ens/ipfs-resolver.polywrap.eth)", @@ -29,14 +22,7 @@ "wrap://ens/ipfs-resolver.polywrap.eth => Redirect (wrap://ens/uts46.polywrap.eth - wrap://ens/goerli/uts46-lite.wrappers.eth)", "wrap://ens/ipfs-resolver.polywrap.eth => Redirect (wrap://ens/graph-node.polywrap.eth - wrap://ens/goerli/graph-node.wrappers.eth)" ], - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ethereum.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/http.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/js-logger.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/fs.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth)", - "wrap://ens/ipfs-resolver.polywrap.eth => Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" + "wrap://ens/ipfs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ipfs-resolver.polywrap.eth) => package (wrap://ens/ipfs-resolver.polywrap.eth)" ] ], "wrap://ens/uri.eth => ResolverExtension (wrap://ens/ipfs-resolver.polywrap.eth)", @@ -50,8 +36,7 @@ "wrap://ens/ens-resolver.polywrap.eth => Redirect (wrap://ens/uts46.polywrap.eth - wrap://ens/goerli/uts46-lite.wrappers.eth)", "wrap://ens/ens-resolver.polywrap.eth => Redirect (wrap://ens/graph-node.polywrap.eth - wrap://ens/goerli/graph-node.wrappers.eth)" ], - "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ipfs.polywrap.eth)", - "wrap://ens/ens-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" + "wrap://ens/ens-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/ens-resolver.polywrap.eth) => package (wrap://ens/ens-resolver.polywrap.eth)" ] ], "wrap://ens/uri.eth => ResolverExtension (wrap://ens/ens-resolver.polywrap.eth)", @@ -65,13 +50,7 @@ "wrap://ens/fs-resolver.polywrap.eth => Redirect (wrap://ens/uts46.polywrap.eth - wrap://ens/goerli/uts46-lite.wrappers.eth)", "wrap://ens/fs-resolver.polywrap.eth => Redirect (wrap://ens/graph-node.polywrap.eth - wrap://ens/goerli/graph-node.wrappers.eth)" ], - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/ipfs.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/ens-resolver.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/ethereum.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/http.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/js-logger.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs.polywrap.eth)", - "wrap://ens/fs-resolver.polywrap.eth => Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" + "wrap://ens/fs-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/fs-resolver.polywrap.eth) => package (wrap://ens/fs-resolver.polywrap.eth)" ] ], "wrap://ens/uri.eth => ResolverExtension (wrap://ens/fs-resolver.polywrap.eth)", @@ -85,14 +64,7 @@ "wrap://ens/http-resolver.polywrap.eth => Redirect (wrap://ens/uts46.polywrap.eth - wrap://ens/goerli/uts46-lite.wrappers.eth)", "wrap://ens/http-resolver.polywrap.eth => Redirect (wrap://ens/graph-node.polywrap.eth - wrap://ens/goerli/graph-node.wrappers.eth)" ], - "wrap://ens/http-resolver.polywrap.eth => LegacyPluginsResolver => package (wrap://ens/http-resolver.polywrap.eth)", - [ - "wrap://ens/http-resolver.polywrap.eth => Plugin (wrap://ens/ipfs.polywrap.eth)", - "wrap://ens/http-resolver.polywrap.eth => Plugin (wrap://ens/ens-resolver.polywrap.eth)", - "wrap://ens/http-resolver.polywrap.eth => Plugin (wrap://ens/ethereum.polywrap.eth)", - "wrap://ens/http-resolver.polywrap.eth => Plugin (wrap://ens/http.polywrap.eth)", - "wrap://ens/http-resolver.polywrap.eth => Plugin (wrap://ens/http-resolver.polywrap.eth) => package (wrap://ens/http-resolver.polywrap.eth)" - ] + "wrap://ens/http-resolver.polywrap.eth => StaticResolver - Package (wrap://ens/http-resolver.polywrap.eth) => package (wrap://ens/http-resolver.polywrap.eth)" ] ], "wrap://ens/uri.eth => ResolverExtension (wrap://ens/http-resolver.polywrap.eth)" diff --git a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts index 3aa75980a8..d462663d47 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts +++ b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts @@ -15,8 +15,8 @@ import { } from "@polywrap/uri-resolvers-js"; import fs from "fs"; import { Result } from "@polywrap/result"; -import { PolywrapClient } from "../../../PolywrapClient"; import { mockPluginRegistration } from "../../helpers/mockPluginRegistration"; +import { createDefaultClient } from "../../utils/createDefaultClient"; jest.setTimeout(200000); @@ -115,7 +115,7 @@ describe("URI resolution", () => { it("sanity", async () => { const uri = new Uri("ens/uri.eth"); - const client = new PolywrapClient(); + const client = createDefaultClient(); const resolutionContext = new UriResolutionContext(); const result = await client.tryResolveUri({ uri, resolutionContext }); @@ -133,7 +133,7 @@ describe("URI resolution", () => { const toUri1 = new Uri("ens/to1.eth"); const toUri2 = new Uri("ens/to2.eth"); - const client = new PolywrapClient({ + const client = createDefaultClient({ redirects: [ { from: fromUri.uri, @@ -169,8 +169,8 @@ describe("URI resolution", () => { it("can resolve plugin", async () => { const pluginUri = new Uri("ens/plugin.eth"); - const client = new PolywrapClient({ - resolver: buildUriResolver(mockPluginRegistration(pluginUri)), + const client = createDefaultClient({ + resolvers: [buildUriResolver(mockPluginRegistration(pluginUri))], }); const resolutionContext = new UriResolutionContext(); @@ -192,7 +192,7 @@ describe("URI resolution", () => { }); it("can resolve a URI resolver extension wrapper", async () => { - const client = new PolywrapClient({ + const client = createDefaultClient({ interfaces: [ { interface: coreInterfaceUris.uriResolver.uri, @@ -223,7 +223,7 @@ describe("URI resolution", () => { }); it("can resolve cache", async () => { - const client = new PolywrapClient(); + const client = createDefaultClient(); const resolutionContext1 = new UriResolutionContext(); const result1 = await client.tryResolveUri({ @@ -259,7 +259,7 @@ describe("URI resolution", () => { }); it("can resolve previously cached URI after redirecting by a URI resolver extension", async () => { - const client = new PolywrapClient({ + const client = createDefaultClient({ interfaces: [ { interface: coreInterfaceUris.uriResolver.uri, @@ -313,7 +313,7 @@ describe("URI resolution", () => { const sourceUri = new Uri(`simple-redirect/${wrapperPath}/build`); const resolverRedirectUri = new Uri(`simple/${wrapperPath}/build`); const finalRedirectedUri = new Uri(`ens/redirect.eth`); - const client = new PolywrapClient({ + const client = createDefaultClient({ redirects: [ { from: resolverRedirectUri.uri, @@ -353,8 +353,8 @@ describe("URI resolution", () => { const ensUri = new Uri(`ens/test`); const redirectUri = new Uri(`ens/redirect.eth`); - const client = new PolywrapClient({ - resolver: { + const client = createDefaultClient({ + resolvers: [{ tryResolveUri: async (uri: Uri) => { if (uri.uri === ensUri.uri) { return UriResolutionResult.ok(redirectUri); @@ -362,7 +362,7 @@ describe("URI resolution", () => { return UriResolutionResult.ok(uri); }, - }, + }], }); const result = await client.tryResolveUri({ uri: ensUri }); @@ -374,8 +374,8 @@ describe("URI resolution", () => { const fromUri = new Uri(`ens/from.eth`); const redirectUri = new Uri(`ens/to.eth`); - const client = new PolywrapClient({ - resolver: { + const client = createDefaultClient({ + resolvers: [{ tryResolveUri: async (uri: Uri) => { if (uri.uri === fromUri.uri) { return UriResolutionResult.ok(redirectUri); @@ -383,7 +383,7 @@ describe("URI resolution", () => { return UriResolutionResult.ok(uri); }, - }, + }], }); const result = await client.tryResolveUri({ @@ -394,7 +394,7 @@ describe("URI resolution", () => { }); it("custom wrapper resolver does not cause infinite recursion when resolved at runtime", async () => { - const client = new PolywrapClient({ + const client = createDefaultClient({ interfaces: [ { interface: coreInterfaceUris.uriResolver.uri, diff --git a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts index f93c35c075..e2c9d14bb5 100644 --- a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts @@ -3,7 +3,6 @@ import { msgpackDecode } from "@polywrap/msgpack-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import fs from "fs"; import { Uri, Subscription, PolywrapClient, IWrapPackage } from "../.."; -import { Uri, PluginModule, Subscription, PolywrapClient } from "../.."; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { makeMemoryStoragePlugin } from "../e2e/memory-storage"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; @@ -11,6 +10,7 @@ import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { ErrResult } from "../utils/resultTypes"; import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; import { mockPluginRegistration } from "../helpers/mockPluginRegistration"; +import { createDefaultClient } from "../utils/createDefaultClient"; jest.setTimeout(200000); @@ -35,11 +35,11 @@ describe("wasm-wrapper", () => { } } - return new PluginPackage({} as WrapManifest, new MockPlugin({})); + return new PluginPackage(new MockPlugin({}), {} as WrapManifest); }; test("can invoke with string URI", async () => { - const client = new PolywrapClient(); + const client = createDefaultClient(); const result = await client.invoke({ uri: simpleWrapperUri.uri, method: "simpleMethod", @@ -55,7 +55,7 @@ describe("wasm-wrapper", () => { }); test("can invoke with typed URI", async () => { - const client = new PolywrapClient(); + const client = createDefaultClient(); const result = await client.invoke({ uri: simpleWrapperUri, method: "simpleMethod", @@ -71,7 +71,7 @@ describe("wasm-wrapper", () => { }); test("invoke with decode defaulted to true works as expected", async () => { - const client = new PolywrapClient(); + const client = createDefaultClient(); const result = await client.invoke({ uri: simpleWrapperUri.uri, method: "simpleMethod", @@ -87,7 +87,7 @@ describe("wasm-wrapper", () => { }); test("invoke with decode set to false works as expected", async () => { - const client = new PolywrapClient(); + const client = createDefaultClient(); const result = await client.invoke({ uri: simpleWrapperUri, method: "simpleMethod", @@ -104,19 +104,19 @@ describe("wasm-wrapper", () => { }); it("should invoke wrapper with custom redirects", async () => { - const client = new PolywrapClient({ + const client = createDefaultClient({ redirects: [ { from: simpleWrapperUri.uri, to: "wrap://ens/mock.polywrap.eth", }, ], - resolver: buildUriResolver([ + resolvers: [ { uri: "wrap://ens/mock.polywrap.eth", package: mockPlugin(), }, - ]), + ], }); const result = await client.invoke({ @@ -133,15 +133,29 @@ describe("wasm-wrapper", () => { }); it("should allow clone + reconfigure of redirects", async () => { - const client = new PolywrapClient({ - resolver: buildUriResolver([ + let builder = new ClientConfigBuilder().addDefaults().add({ + packages: [ { uri: "wrap://ens/mock.polywrap.eth", package: mockPlugin(), }, - ]), + ] }); + const client = createDefaultClient(builder.buildDefault()); + + const clientResult = await client.invoke({ + uri: simpleWrapperUri.uri, + method: "simpleMethod", + args: { + arg: "test", + } + }); + + if (!clientResult.ok) fail(clientResult.error); + expect(clientResult.value).toBeTruthy(); + expect(clientResult.value).toEqual("test"); + const redirects = [ { from: simpleWrapperUri.uri, @@ -149,16 +163,13 @@ describe("wasm-wrapper", () => { }, ]; - const newConfig = new ClientConfigBuilder() - .add(client.getConfig()) - .add({ redirects }) - .build(); + builder = builder.add({ redirects }); const newClient = new PolywrapClient( - newConfig + builder.buildDefault() ); - const result = await newClient.invoke({ + const newClientResult = await newClient.invoke({ uri: simpleWrapperUri.uri, method: "simpleMethod", args: { @@ -166,13 +177,13 @@ describe("wasm-wrapper", () => { } }); - if (!result.ok) fail(result.error); - expect(result.value).toBeTruthy(); - expect(result.value).toEqual("plugin response"); + if (!newClientResult.ok) fail(newClientResult.error); + expect(newClientResult.value).toBeTruthy(); + expect(newClientResult.value).toEqual("plugin response"); }); test("get file from wrapper", async () => { - const client = new PolywrapClient(); + const client = createDefaultClient(); const expectedManifest = new Uint8Array( await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.info`) @@ -219,13 +230,13 @@ describe("wasm-wrapper", () => { }); test("subscribe", async () => { - const client = new PolywrapClient({ - resolver: buildUriResolver([ + const client = createDefaultClient({ + resolvers: [ { uri: memoryStoragePluginUri, package: makeMemoryStoragePlugin({}), }, - ]), + ], }); // test subscription @@ -268,13 +279,13 @@ describe("wasm-wrapper", () => { }); test("subscription early stop", async () => { - const client = new PolywrapClient({ - resolver: buildUriResolver([ + const client = createDefaultClient({ + resolvers: [ { uri: memoryStoragePluginUri, package: makeMemoryStoragePlugin({}), }, - ]), + ], }); // test subscription diff --git a/packages/js/client/src/__tests__/e2e/env.spec.ts b/packages/js/client/src/__tests__/e2e/env.spec.ts index 15c9c3479c..9035d8eebb 100644 --- a/packages/js/client/src/__tests__/e2e/env.spec.ts +++ b/packages/js/client/src/__tests__/e2e/env.spec.ts @@ -1,23 +1,23 @@ import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { PolywrapClient } from "../../PolywrapClient"; jest.setTimeout(200000); +interface MockEnv extends Record { + arg1: number; +} + describe("env", () => { const mockEnvPlugin = () => { - interface Env extends Record { - arg1: number; - } - - class MockEnvPlugin extends PluginModule<{}, Env> { - mockEnv(): Env { + class MockEnvPlugin extends PluginModule<{}, MockEnv> { + mockEnv(): MockEnv { return this.env; } } - return new PluginPackage({} as WrapManifest, new MockEnvPlugin({})); + return new PluginPackage(new MockEnvPlugin({}), {} as WrapManifest); }; describe("env client types", () => { @@ -25,12 +25,45 @@ describe("env", () => { const implementationUri = "wrap://ens/some-implementation.eth"; const envPlugin = mockEnvPlugin(); const client = new PolywrapClient({ - resolver: buildUriResolver([ + resolver: RecursiveResolver.from( { uri: implementationUri, package: envPlugin, }, - ]), + ), + envs: [ + { + uri: implementationUri, + env: { + arg1: "10", + }, + }, + ], + }); + + const mockEnv = await client.invoke({ + uri: implementationUri, + method: "mockEnv", + }); + + if (!mockEnv.ok) fail(mockEnv.error); + expect(mockEnv.value).toBeTruthy(); + expect(mockEnv.value).toMatchObject({ arg1: "10" }); + }); + + test("inline plugin env types", async () => { + const implementationUri = "wrap://ens/some-implementation.eth"; + const client = new PolywrapClient({ + resolver: RecursiveResolver.from([ + { + uri: implementationUri, + package: PluginPackage.from((module) => ({ + mockEnv: (): MockEnv => { + return module.env; + } + })), + }] + ), envs: [ { uri: implementationUri, diff --git a/packages/js/client/src/__tests__/e2e/memory-storage.ts b/packages/js/client/src/__tests__/e2e/memory-storage.ts index aa250766e2..403dda6b45 100644 --- a/packages/js/client/src/__tests__/e2e/memory-storage.ts +++ b/packages/js/client/src/__tests__/e2e/memory-storage.ts @@ -24,5 +24,5 @@ export const makeMemoryStoragePlugin: PluginFactory = () => { } } - return new PluginPackage({} as WrapManifest, new MemoryStoragePlugin({})); + return new PluginPackage(new MemoryStoragePlugin({}), {} as WrapManifest); }; diff --git a/packages/js/client/src/__tests__/e2e/test-cases.ts b/packages/js/client/src/__tests__/e2e/test-cases.ts index 1eab2256ce..6c33ef5b25 100644 --- a/packages/js/client/src/__tests__/e2e/test-cases.ts +++ b/packages/js/client/src/__tests__/e2e/test-cases.ts @@ -1,9 +1,9 @@ -import { PolywrapClient, Uri } from "../../"; +import { Client, Uri } from "../../"; import { BigNumber } from "bignumber.js"; import { ErrResult } from "../utils/resultTypes"; export const runAsyncifyTest = async ( - client: PolywrapClient, + client: Client, wrapperUri: string ) => { const subsequentInvokes = await client.invoke({ @@ -118,7 +118,7 @@ export const runAsyncifyTest = async ( }; export const runBigIntTypeTest = async ( - client: PolywrapClient, + client: Client, uri: string ) => { { @@ -167,7 +167,7 @@ export const runBigIntTypeTest = async ( }; export const runBigNumberTypeTest = async ( - client: PolywrapClient, + client: Client, uri: string ) => { { @@ -217,7 +217,7 @@ export const runBigNumberTypeTest = async ( } }; -export const runBytesTypeTest = async (client: PolywrapClient, uri: string) => { +export const runBytesTypeTest = async (client: Client, uri: string) => { const response = await client.invoke({ uri, method: "bytesMethod", @@ -235,7 +235,7 @@ export const runBytesTypeTest = async (client: PolywrapClient, uri: string) => { ); }; -export const runEnumTypesTest = async (client: PolywrapClient, uri: string) => { +export const runEnumTypesTest = async (client: Client, uri: string) => { let method1a = await client.invoke({ uri, method: "method1", @@ -292,11 +292,11 @@ export const runEnumTypesTest = async (client: PolywrapClient, uri: string) => { }; export const runImplementationsTest = async ( - client: PolywrapClient, + client: Client, interfaceUri: string, implementationUri: string ) => { - const implResult = client.getImplementations(interfaceUri); + const implResult = client.getImplementations(interfaceUri, { applyRedirects: false }); if (!implResult.ok) fail(implResult.error); expect(implResult.value).toEqual([new Uri(implementationUri).uri]); @@ -332,13 +332,13 @@ export const runImplementationsTest = async ( }; export const runGetImplementationsTest = async ( - client: PolywrapClient, + client: Client, aggregatorUri: string, interfaceUri: string, implementationUri: string ) => { let implUri = new Uri(implementationUri); - const implResult = client.getImplementations(interfaceUri); + const implResult = client.getImplementations(interfaceUri, { applyRedirects: false }); if (!implResult.ok) fail(implResult.error); expect(implResult.value).toEqual([implUri.uri]); @@ -365,7 +365,7 @@ export const runGetImplementationsTest = async ( }; export const runInvalidTypesTest = async ( - client: PolywrapClient, + client: Client, uri: string ) => { let invalidBoolIntSent = await client.invoke({ @@ -438,7 +438,7 @@ export const runInvalidTypesTest = async ( ); }; -export const runJsonTypeTest = async (client: PolywrapClient, uri: string, testReserved: boolean = false) => { +export const runJsonTypeTest = async (client: Client, uri: string, testReserved: boolean = false) => { type Json = string; const value = JSON.stringify({ foo: "bar", bar: "bar" }); const parseResponse = await client.invoke({ @@ -527,7 +527,7 @@ export const runJsonTypeTest = async (client: PolywrapClient, uri: string, testR }; export const runLargeTypesTest = async ( - client: PolywrapClient, + client: Client, uri: string ) => { const largeStr = new Array(5000).join("polywrap "); @@ -564,7 +564,7 @@ export const runLargeTypesTest = async ( }; export const runNumberTypesTest = async ( - client: PolywrapClient, + client: Client, uri: string ) => { let i8Underflow = await client.invoke({ @@ -654,7 +654,7 @@ export const runNumberTypesTest = async ( }; export const runObjectTypesTest = async ( - client: PolywrapClient, + client: Client, uri: string ) => { const method1a = await client.invoke({ @@ -806,7 +806,7 @@ export const runObjectTypesTest = async ( }); }; -export const runMapTypeTest = async (client: PolywrapClient, uri: string) => { +export const runMapTypeTest = async (client: Client, uri: string) => { const mapClass = new Map().set("Hello", 1).set("Heyo", 50); const nestedMapClass = new Map>().set( "Nested", @@ -901,7 +901,7 @@ export const runMapTypeTest = async (client: PolywrapClient, uri: string) => { }; export const runSimpleStorageTest = async ( - client: PolywrapClient, + client: Client, wrapperUri: string ) => { const deploy = await client.invoke({ @@ -951,7 +951,7 @@ export const runSimpleStorageTest = async ( }; export const runSimpleEnvTest = async ( - client: PolywrapClient, + client: Client, wrapperUri: string ) => { const getEnvResult = await client.invoke({ @@ -999,7 +999,7 @@ export const runSimpleEnvTest = async ( }; export const runComplexEnvs = async ( - client: PolywrapClient, + client: Client, wrapperUri: string ) => { const methodRequireEnvResult = await client.invoke({ diff --git a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts index 305c745c1f..686037d3d6 100644 --- a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts +++ b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts @@ -7,9 +7,8 @@ import { runCLI, } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { PolywrapClient } from "../../PolywrapClient"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { getClientWithEnsAndIpfs } from "../helpers/getClientWithEnsAndIpfs"; +import { createDefaultClient } from "../utils/createDefaultClient"; jest.setTimeout(300000); @@ -28,13 +27,13 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - const client = new PolywrapClient({ - resolver: buildUriResolver([ + const client = createDefaultClient({ + packages: [ { uri: "wrap://ens/memory-storage.polywrap.eth", package: makeMemoryStoragePlugin({}), }, - ]), + ], }); await TestCases.runAsyncifyTest(client, wrapperUri); @@ -46,7 +45,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBigIntTypeTest(new PolywrapClient(), wrapperUri); + await TestCases.runBigIntTypeTest(createDefaultClient(), wrapperUri); }); it("bignumber-type", async () => { @@ -55,7 +54,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBigNumberTypeTest(new PolywrapClient(), wrapperUri); + await TestCases.runBigNumberTypeTest(createDefaultClient(), wrapperUri); }); it("bytes-type", async () => { @@ -64,7 +63,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBytesTypeTest(new PolywrapClient(), wrapperUri); + await TestCases.runBytesTypeTest(createDefaultClient(), wrapperUri); }); it("enum-types", async () => { @@ -73,7 +72,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runEnumTypesTest(new PolywrapClient(), wrapperUri); + await TestCases.runEnumTypesTest(createDefaultClient(), wrapperUri); }); it("map-type", async () => { @@ -82,11 +81,11 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runMapTypeTest(new PolywrapClient(), wrapperUri); + await TestCases.runMapTypeTest(createDefaultClient(), wrapperUri); }); it("reserved-words", async () => { - const client = new PolywrapClient(); + const client = createDefaultClient(); const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/reserved-words`; const wrapperUri = `fs/${wrapperPath}/build`; @@ -121,7 +120,7 @@ describe("wasm-as test cases", () => { await buildWrapper(interfacePath); await buildWrapper(implementationPath); - const client = new PolywrapClient({ + const client = createDefaultClient({ interfaces: [ { interface: interfaceUri, @@ -151,7 +150,7 @@ describe("wasm-as test cases", () => { await buildWrapper(implementationPath); await buildWrapper(aggregatorPath); - const client = new PolywrapClient({ + const client = createDefaultClient({ interfaces: [ { interface: interfaceUri, @@ -182,7 +181,7 @@ describe("wasm-as test cases", () => { await buildWrapper(implementationPath); - const client = new PolywrapClient({ + const client = createDefaultClient({ interfaces: [ { interface: interfaceUri, @@ -221,7 +220,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runInvalidTypesTest(new PolywrapClient(), wrapperUri); + await TestCases.runInvalidTypesTest(createDefaultClient(), wrapperUri); }); it("JSON-type", async () => { @@ -230,7 +229,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runJsonTypeTest(new PolywrapClient(), wrapperUri); + await TestCases.runJsonTypeTest(createDefaultClient(), wrapperUri); }); it("large-types", async () => { @@ -239,7 +238,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runLargeTypesTest(new PolywrapClient(), wrapperUri); + await TestCases.runLargeTypesTest(createDefaultClient(), wrapperUri); }); it("number-types under and overflows", async () => { @@ -248,7 +247,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runNumberTypesTest(new PolywrapClient(), wrapperUri); + await TestCases.runNumberTypesTest(createDefaultClient(), wrapperUri); }); it("object-types", async () => { @@ -257,7 +256,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runObjectTypesTest(new PolywrapClient(), wrapperUri); + await TestCases.runObjectTypesTest(createDefaultClient(), wrapperUri); }); it("simple-storage", async () => { @@ -276,7 +275,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); await TestCases.runSimpleEnvTest( - new PolywrapClient({ + createDefaultClient({ envs: [ { uri: wrapperUri, @@ -302,7 +301,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); await TestCases.runComplexEnvs( - new PolywrapClient({ + createDefaultClient({ envs: [ { uri: wrapperUri, diff --git a/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts b/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts index 9de5afb889..469c20e027 100644 --- a/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts +++ b/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts @@ -6,11 +6,11 @@ import { stopTestEnvironment, } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { getClient } from "../helpers/getClient"; import { getClientWithEnsAndIpfs } from "../helpers/getClientWithEnsAndIpfs"; import fse from "fs-extra"; import path from "path"; import { execSync } from "child_process"; +import { createDefaultClient } from "../utils/createDefaultClient"; const { performance } = require("perf_hooks"); jest.setTimeout(1200000); @@ -30,8 +30,8 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - const client = await getClient({ - plugins: [ + const client = createDefaultClient({ + packages: [ { uri: "wrap://ens/memory-storage.polywrap.eth", plugin: makeMemoryStoragePlugin({}), @@ -48,7 +48,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBigIntTypeTest(await getClient(), wrapperUri); + await TestCases.runBigIntTypeTest(createDefaultClient(), wrapperUri); }); it("bignumber-type", async () => { @@ -57,7 +57,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBigNumberTypeTest(await getClient(), wrapperUri); + await TestCases.runBigNumberTypeTest(createDefaultClient(), wrapperUri); }); it("bytes-type", async () => { @@ -66,7 +66,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBytesTypeTest(await getClient(), wrapperUri); + await TestCases.runBytesTypeTest(createDefaultClient(), wrapperUri); }); it("enum-types", async () => { @@ -75,7 +75,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runEnumTypesTest(await getClient(), wrapperUri); + await TestCases.runEnumTypesTest(createDefaultClient(), wrapperUri); }); it("map-type", async () => { @@ -84,7 +84,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runMapTypeTest(await getClient(), wrapperUri); + await TestCases.runMapTypeTest(createDefaultClient(), wrapperUri); }); it("implementations - e2e", async () => { @@ -98,7 +98,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(implementationPath); - const client = await getClient({ + const client = createDefaultClient({ interfaces: [ { interface: interfaceUri, @@ -128,7 +128,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(implementationPath); await buildWrapper(aggregatorPath); - const client = await getClient({ + const client = createDefaultClient({ interfaces: [ { interface: interfaceUri, @@ -151,7 +151,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runInvalidTypesTest(await getClient(), wrapperUri); + await TestCases.runInvalidTypesTest(createDefaultClient(), wrapperUri); }); it("JSON-type", async () => { @@ -160,7 +160,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runJsonTypeTest(await getClient(), wrapperUri, true); + await TestCases.runJsonTypeTest(createDefaultClient(), wrapperUri, true); }); it("large-types", async () => { @@ -169,7 +169,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runLargeTypesTest(await getClient(), wrapperUri); + await TestCases.runLargeTypesTest(createDefaultClient(), wrapperUri); }); it("number-types under and overflows", async () => { @@ -178,7 +178,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runNumberTypesTest(await getClient(), wrapperUri); + await TestCases.runNumberTypesTest(createDefaultClient(), wrapperUri); }); it("object-types", async () => { @@ -187,7 +187,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runObjectTypesTest(await getClient(), wrapperUri); + await TestCases.runObjectTypesTest(createDefaultClient(), wrapperUri); }); it("simple-storage", async () => { @@ -206,7 +206,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); await TestCases.runSimpleEnvTest( - await await getClient({ + await createDefaultClient({ envs: [ { uri: wrapperUri, @@ -232,7 +232,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); await TestCases.runComplexEnvs( - await getClient({ + createDefaultClient({ envs: [ { uri: wrapperUri, @@ -302,7 +302,7 @@ describe.skip("Wasm-rs benchmarking", () => { const msTime = endTime - startTime; //Make sure the wrapper works correctly - await TestCases.runBigNumberTypeTest(await getClient(), wrapperUri); + await TestCases.runBigNumberTypeTest(createDefaultClient(), wrapperUri); return msTime; }; diff --git a/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts b/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts index 89351a2208..a772289436 100644 --- a/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts +++ b/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts @@ -6,7 +6,6 @@ import { ethereumPlugin, } from "@polywrap/ethereum-plugin-js"; import { - buildUriResolver, RecursiveResolver, PackageToWrapperCacheResolver, WrapperCache, @@ -29,6 +28,14 @@ export const getClientWithEnsAndIpfs = () => { }); return new PolywrapClient( { + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { + provider: providers.ipfs + } + } + ], interfaces: [ { interface: coreInterfaceUris.uriResolver, @@ -39,10 +46,9 @@ export const getClientWithEnsAndIpfs = () => { ], }, ], - resolver: new RecursiveResolver( - new PackageToWrapperCacheResolver( - new WrapperCache(), - buildUriResolver([ + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ { uri: "wrap://ens/ethereum.polywrap.eth", package: ethereumPlugin({ connections }), @@ -57,7 +63,7 @@ export const getClientWithEnsAndIpfs = () => { }, { uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({ provider: providers.ipfs }), + package: ipfsPlugin({}), }, { uri: "wrap://ens/ipfs-resolver.polywrap.eth", @@ -72,10 +78,10 @@ export const getClientWithEnsAndIpfs = () => { package: fileSystemResolverPlugin({}), }, new ExtendableUriResolver(), - ]) - ) + ], + new WrapperCache(), + ), ), - }, - { noDefaults: true } + } ); }; diff --git a/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts b/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts index 2f8d7c7f4e..9b1b72fa90 100644 --- a/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts +++ b/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts @@ -1,13 +1,15 @@ import { Uri } from "@polywrap/core-js"; -import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; -import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; +import { PluginPackage } from "@polywrap/plugin-js"; export const mockPluginRegistration = (uri: string | Uri) => { return { uri: Uri.from(uri), - package: new PluginPackage( - {} as WrapManifest, - ({} as unknown) as PluginModule<{}> + package: PluginPackage.from( + () => ({ + simpleMethod: (_: unknown): string => { + return "plugin response"; + } + }) ), }; }; diff --git a/packages/js/client/src/__tests__/utils/createDefaultClient.ts b/packages/js/client/src/__tests__/utils/createDefaultClient.ts new file mode 100644 index 0000000000..f8f295c82c --- /dev/null +++ b/packages/js/client/src/__tests__/utils/createDefaultClient.ts @@ -0,0 +1,11 @@ +import { ClientConfigBuilder, CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { Uri, Client } from "@polywrap/core-js"; +import { PolywrapClient } from "../../PolywrapClient"; + +export const createDefaultClient = ( + config: Partial> = {} +): Client => { + return new PolywrapClient( + new ClientConfigBuilder().addDefaults().add(config).buildDefault() + ); +}; From c1b54f8ec4c38b1aa77e6b7a29f5c2b943872896 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 20:48:04 +0200 Subject: [PATCH 046/126] using new CustomClientConfig in cli --- .../cli/src/__tests__/unit/jobrunner.spec.ts | 8 +- .../ens-recursive-name-register/index.ts | 9 +- .../lib/defaults/deploy-modules/ens/index.ts | 11 +-- packages/cli/src/lib/helpers/client.ts | 15 ++- .../src/lib/helpers/validate-client-config.ts | 10 +- .../src/lib/option-parsers/client-config.ts | 26 +++--- .../cli/src/lib/test-env/client-config.ts | 91 +++++++++---------- packages/cli/src/lib/test-env/providers.ts | 4 +- packages/cli/src/lib/workflow/JobRunner.ts | 10 +- packages/cli/src/utils/createDefaultClient.ts | 14 +++ packages/js/client/src/PolywrapClient.ts | 15 ++- .../app/codegen/004-custom-config/config.ts | 30 +++--- .../cli/docgen/002-custom-config/config.ts | 27 +++--- .../001-sanity/expected/wrap/module.ts | 7 +- .../002-single-module/expected/wrap/module.ts | 7 +- .../codegen/003-env/expected/wrap/module.ts | 7 +- .../expected/wrap/module.ts | 7 +- .../codegen/005-custom-config/config.ts | 41 +++++---- .../005-custom-config/expected/wrap/module.ts | 7 +- .../expected/wrap/module.ts | 7 +- .../cases/cli/run/008-custom-config/config.ts | 16 ++-- .../build-cmd/010-custom-config/config.ts | 61 +++++-------- .../wasm/codegen/004-custom-config/config.ts | 40 ++++---- 23 files changed, 222 insertions(+), 248 deletions(-) create mode 100644 packages/cli/src/utils/createDefaultClient.ts diff --git a/packages/cli/src/__tests__/unit/jobrunner.spec.ts b/packages/cli/src/__tests__/unit/jobrunner.spec.ts index 02a9e486a4..7b04ee7250 100644 --- a/packages/cli/src/__tests__/unit/jobrunner.spec.ts +++ b/packages/cli/src/__tests__/unit/jobrunner.spec.ts @@ -3,20 +3,20 @@ import { buildWrapper } from "@polywrap/test-env-js"; import { testCases } from "./jobrunner-test-cases"; import { JobRunner } from "../../lib"; import path from "path"; -import { PolywrapClient } from "@polywrap/client-js"; +import { Client } from "@polywrap/core-js"; +import { createDefaultClient } from "../../utils/createDefaultClient"; jest.setTimeout(200000); describe("workflow JobRunner", () => { - - let client: PolywrapClient; + let client: Client; beforeAll(async () => { await buildWrapper( path.join(GetPathToTestWrappers(), "wasm-as", "simple-calculator") ); - client = new PolywrapClient({}); + client = createDefaultClient(); }); for (const testCase of testCases) { diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts index 75e2f207f5..41785d1459 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts @@ -5,14 +5,13 @@ import { Deployer } from "../../../deploy"; import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; import { Uri } from "@polywrap/core-js"; -import { PolywrapClient } from "@polywrap/client-js"; import { ethereumPlugin, Connections, Connection, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { createDefaultClient } from "../../../../utils/createDefaultClient"; class ENSRecursiveNameRegisterPublisher implements Deployer { async execute( @@ -48,7 +47,7 @@ class ENSRecursiveNameRegisterPublisher implements Deployer { const ethereumPluginUri = "wrap://ens/ethereum.polywrap.eth"; const ensWrapperUri = embeddedWrappers.ens; - const client = new PolywrapClient({ + const client = createDefaultClient({ redirects: [ { from: "wrap://ens/uts46.polywrap.eth", @@ -59,7 +58,7 @@ class ENSRecursiveNameRegisterPublisher implements Deployer { to: embeddedWrappers.sha3, }, ], - resolver: buildUriResolver([ + packages: [ { uri: ethereumPluginUri, package: ethereumPlugin({ @@ -74,7 +73,7 @@ class ENSRecursiveNameRegisterPublisher implements Deployer { }), }), }, - ]), + ], }); const signerAddress = await client.invoke({ diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts index 9347b0dc8d..546966a5bc 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts @@ -5,14 +5,13 @@ import { Deployer } from "../../../deploy"; import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; import { Uri } from "@polywrap/core-js"; -import { PolywrapClient } from "@polywrap/client-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { - ethereumPlugin, Connections, Connection, + ethereumPlugin, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; +import { createDefaultClient } from "../../../../utils/createDefaultClient"; const contentHash = require("content-hash"); @@ -49,7 +48,7 @@ class ENSPublisher implements Deployer { const ethereumPluginUri = "wrap://ens/ethereum.polywrap.eth"; const ensWrapperUri = embeddedWrappers.ens; - const client = new PolywrapClient({ + const client = createDefaultClient({ redirects: [ { from: "wrap://ens/uts46.polywrap.eth", @@ -60,7 +59,7 @@ class ENSPublisher implements Deployer { to: embeddedWrappers.sha3, }, ], - resolver: buildUriResolver([ + packages: [ { uri: ethereumPluginUri, package: ethereumPlugin({ @@ -75,7 +74,7 @@ class ENSPublisher implements Deployer { }), }), }, - ]), + ], }); const resolver = await client.invoke({ diff --git a/packages/cli/src/lib/helpers/client.ts b/packages/cli/src/lib/helpers/client.ts index 3aa2e0d876..a749109e80 100644 --- a/packages/cli/src/lib/helpers/client.ts +++ b/packages/cli/src/lib/helpers/client.ts @@ -1,4 +1,4 @@ -import { Env } from "@polywrap/core-js"; +import { Client, Env, IUriPackage, Uri } from "@polywrap/core-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { ethereumPlugin, @@ -6,12 +6,8 @@ import { Connections, } from "@polywrap/ethereum-plugin-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; -import { PolywrapClient } from "@polywrap/client-js"; import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; -import { - PackageRegistration, - buildUriResolver, -} from "@polywrap/uri-resolvers-js"; +import { createDefaultClient } from "../../utils/createDefaultClient"; interface SimpleClientConfig { ensAddress?: string; @@ -19,9 +15,9 @@ interface SimpleClientConfig { ipfsProvider?: string; } -export function getSimpleClient(config: SimpleClientConfig): PolywrapClient { +export function getSimpleClient(config: SimpleClientConfig): Client { const { ensAddress, ethProvider, ipfsProvider } = config; - const plugins: PackageRegistration[] = []; + const plugins: IUriPackage[] = []; const envs: Env[] = []; if (ensAddress) { @@ -62,5 +58,6 @@ export function getSimpleClient(config: SimpleClientConfig): PolywrapClient { }, }); } - return new PolywrapClient({ envs, resolver: buildUriResolver(plugins) }); + + return createDefaultClient({ envs, packages: plugins }); } diff --git a/packages/cli/src/lib/helpers/validate-client-config.ts b/packages/cli/src/lib/helpers/validate-client-config.ts index 0cc0e96494..e45c893f40 100644 --- a/packages/cli/src/lib/helpers/validate-client-config.ts +++ b/packages/cli/src/lib/helpers/validate-client-config.ts @@ -4,12 +4,12 @@ import { Env, InterfaceImplementations, Uri, - UriRedirect, - ClientConfig, + IUriRedirect, } from "@polywrap/client-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; export function validateRedirects( - redirects: UriRedirect[] + redirects: IUriRedirect[] ): void { if (!Array.isArray(redirects)) { throw new Error(intlMsg.commands_run_error_redirectsExportNotArray()); @@ -121,7 +121,9 @@ export function validateEnvs( } } -export function validateClientConfig(config: Partial>): void { +export function validateClientConfig( + config: Partial> +): void { if (!config || typeof config !== "object") { throw new Error(intlMsg.commands_run_error_clientConfigNotObject()); } diff --git a/packages/cli/src/lib/option-parsers/client-config.ts b/packages/cli/src/lib/option-parsers/client-config.ts index 0548b84db1..7a629b58ea 100644 --- a/packages/cli/src/lib/option-parsers/client-config.ts +++ b/packages/cli/src/lib/option-parsers/client-config.ts @@ -1,24 +1,27 @@ import { validateClientConfig } from "../helpers"; import { intlMsg } from "../intl"; import { importTypescriptModule } from "../system"; -import { getTestEnvConfigBuilder } from "../test-env"; +import { getTestEnvCustomConfig } from "../test-env"; import { ClientConfig, executeMaybeAsyncFunction, Uri, } from "@polywrap/core-js"; -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; import path from "path"; export async function parseClientConfigOption( clientConfig: string | undefined ): Promise>> { - let builder: ClientConfigBuilder; + const builder = new ClientConfigBuilder().addDefaults(); let config: ClientConfig; try { - builder = await getTestEnvConfigBuilder(); + builder.add(getTestEnvCustomConfig()); } catch (e) { console.error(intlMsg.commands_run_error_noTestEnvFound()); process.exit(1); @@ -40,7 +43,7 @@ export async function parseClientConfigOption( process.exit(1); } - if (!configModule || !configModule.getClientConfig) { + if (!configModule || !configModule.getCustomConfig) { const configsModuleMissingExportMessage = intlMsg.commands_run_error_clientConfigModuleMissingExport( { module: configModule } ); @@ -48,20 +51,19 @@ export async function parseClientConfigOption( process.exit(1); } - builder = await executeMaybeAsyncFunction( - configModule.getClientConfig, - builder - ); + const customConfig = await executeMaybeAsyncFunction< + Partial> + >(configModule.getCustomConfig); - config = builder.build(); try { - validateClientConfig(config); + validateClientConfig(customConfig); + config = builder.add(customConfig).buildDefault(); } catch (e) { console.error(e.message); process.exit(1); } } else { - config = builder.build(); + config = builder.buildDefault(); } return config; diff --git a/packages/cli/src/lib/test-env/client-config.ts b/packages/cli/src/lib/test-env/client-config.ts index 4f15d6d613..ea212e5843 100644 --- a/packages/cli/src/lib/test-env/client-config.ts +++ b/packages/cli/src/lib/test-env/client-config.ts @@ -3,7 +3,7 @@ import { getTestEnvProviders } from "./providers"; import { PolywrapClientConfig } from "@polywrap/client-js"; import { defaultIpfsProviders, - ClientConfigBuilder, + CustomClientConfig, } from "@polywrap/client-config-builder-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { @@ -13,16 +13,11 @@ import { } from "@polywrap/ethereum-plugin-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { ensAddresses } from "@polywrap/test-env-js"; -import { Env } from "@polywrap/core-js"; -import { - PackageRegistration, - buildUriResolver, -} from "@polywrap/uri-resolvers-js"; +import { Env, IUriPackage, Uri } from "@polywrap/core-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; -export async function getTestEnvClientConfig(): Promise< - Partial -> { - const providers = await getTestEnvProviders(); +export function getTestEnvClientConfig(): Partial { + const providers = getTestEnvProviders(); const ipfsProvider = providers.ipfsProvider; const ethProvider = providers.ethProvider; @@ -34,7 +29,7 @@ export async function getTestEnvClientConfig(): Promise< // TODO: move this into its own package, since it's being used everywhere? // maybe have it exported from test-env. - const packages: PackageRegistration[] = [ + const packages: IUriPackage[] = [ { uri: "wrap://ens/ethereum.polywrap.eth", package: ethereumPlugin({ @@ -77,10 +72,8 @@ export async function getTestEnvClientConfig(): Promise< }; } -export async function getTestEnvConfigBuilder(): Promise { - const builder = new ClientConfigBuilder().addDefaults(); - - const providers = await getTestEnvProviders(); +export function getTestEnvCustomConfig(): Partial> { + const providers = getTestEnvProviders(); const ipfsProvider = providers.ipfsProvider; const ethProvider = providers.ethProvider; @@ -90,39 +83,41 @@ export async function getTestEnvConfigBuilder(): Promise { const ensAddress = ensAddresses.ensAddress; - // TODO: move this into its own package, since it's being used everywhere? - // maybe have it exported from test-env. - builder.addPackages([ - { - uri: "wrap://ens/ethereum.polywrap.eth", - package: ethereumPlugin({ - connections: new Connections({ - networks: { - testnet: new Connection({ - provider: ethProvider, - }), + return { + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { + provider: ipfsProvider, + fallbackProviders: defaultIpfsProviders, + }, + }, + ], + packages: [ + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ + connections: new Connections({ + networks: { + testnet: new Connection({ + provider: ethProvider, + }), + }, + }), + }), + }, + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }, + { + uri: "wrap://ens/ens-resolver.polywrap.eth", + package: ensResolverPlugin({ + addresses: { + testnet: ensAddress, }, }), - }), - }, - { - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }, - { - uri: "wrap://ens/ens-resolver.polywrap.eth", - package: ensResolverPlugin({ - addresses: { - testnet: ensAddress, - }, - }), - }, - ]); - - builder.addEnv("wrap://ens/ipfs.polywrap.eth", { - provider: ipfsProvider, - fallbackProviders: defaultIpfsProviders, - }); - - return builder; + }, + ], + }; } diff --git a/packages/cli/src/lib/test-env/providers.ts b/packages/cli/src/lib/test-env/providers.ts index bfe81b5589..4846273449 100644 --- a/packages/cli/src/lib/test-env/providers.ts +++ b/packages/cli/src/lib/test-env/providers.ts @@ -1,9 +1,9 @@ import { providers } from "@polywrap/test-env-js"; -export async function getTestEnvProviders( +export function getTestEnvProviders( ipfsProvider?: string, ethProvider?: string -): Promise<{ ipfsProvider?: string; ethProvider?: string }> { +): { ipfsProvider?: string; ethProvider?: string } { return { ipfsProvider: ipfsProvider ?? providers.ipfs, ethProvider: ethProvider ?? providers.ethereum, diff --git a/packages/cli/src/lib/workflow/JobRunner.ts b/packages/cli/src/lib/workflow/JobRunner.ts index ea4c15cdd5..ee2e26a13b 100644 --- a/packages/cli/src/lib/workflow/JobRunner.ts +++ b/packages/cli/src/lib/workflow/JobRunner.ts @@ -1,7 +1,11 @@ import { JobResult, JobStatus, Step } from "./types"; import { PolywrapClient } from "@polywrap/client-js"; -import { executeMaybeAsyncFunction, MaybeAsync } from "@polywrap/core-js"; +import { + Client, + executeMaybeAsyncFunction, + MaybeAsync, +} from "@polywrap/core-js"; import { WorkflowJobs } from "@polywrap/polywrap-manifest-types-js"; import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; @@ -9,7 +13,7 @@ export class JobRunner { private jobOutput: Map; constructor( - private client: PolywrapClient, + private client: Client, private onExecution?: (id: string, JobResult: JobResult) => MaybeAsync ) { this.jobOutput = new Map(); @@ -180,7 +184,7 @@ export class JobRunner { const finalConfig = new ClientConfigBuilder() .add(this.client.getConfig()) .add(step.config) - .build(); + .buildDefault(); finalClient = new PolywrapClient(finalConfig); } diff --git a/packages/cli/src/utils/createDefaultClient.ts b/packages/cli/src/utils/createDefaultClient.ts new file mode 100644 index 0000000000..fa851850c2 --- /dev/null +++ b/packages/cli/src/utils/createDefaultClient.ts @@ -0,0 +1,14 @@ +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; +import { Uri, Client } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; + +export const createDefaultClient = ( + config: Partial> = {} +): Client => { + return new PolywrapClient( + new ClientConfigBuilder().addDefaults().add(config).buildDefault() + ); +}; diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index f4e84b848b..8b58f6995f 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -37,14 +37,7 @@ import { import { Tracer, TracerConfig, TracingLevel } from "@polywrap/tracing-js"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; -export interface PolywrapClientArgs { - redirects?: IUriRedirect[]; - interfaces?: InterfaceImplementations[]; - envs?: Env[]; - resolver: IUriResolver; - tracerConfig?: Partial; -} -export interface PolywrapClientConfig +export interface PolywrapClientConfig extends ClientConfig { tracerConfig: Partial; } @@ -52,12 +45,16 @@ export interface PolywrapClientConfig export class PolywrapClient implements Client { private _config: PolywrapClientConfig; - constructor(config: PolywrapClientArgs) { + constructor(config: Partial) { try { this.setTracingEnabled(config?.tracerConfig); Tracer.startSpan("PolywrapClient: constructor"); + if (!config?.resolver) { + throw new Error("URI Resolver is required but not defined"); + } + this._config = { redirects: config?.redirects?.map((x) => ({ diff --git a/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts b/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts index e2b7fb520f..eff24d7c27 100644 --- a/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts +++ b/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts @@ -1,5 +1,8 @@ -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; -import { PluginModule } from "@polywrap/plugin-js"; +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; +import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { latestWrapManifestVersion, WrapManifest, @@ -25,21 +28,18 @@ class MockPlugin extends PluginModule { } const mockPlugin = () => { - return { - factory: () => new MockPlugin({ val: 0 }), - manifest: mockPluginManifest, - }; + return PluginPackage.from(new MockPlugin({ val: 0 }), mockPluginManifest); }; -export function getClientConfig( - builder: ClientConfigBuilder -): ClientConfigBuilder { - builder.addPackage({ - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }); - - return builder; +export function getCustomConfig(): Partial> { + return { + packages: [ + { + uri: "wrap://ens/mock.eth", + package: mockPlugin(), + }, + ], + }; } export const mockPluginManifest: WrapManifest = { diff --git a/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts b/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts index e2b7fb520f..593dae0647 100644 --- a/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts +++ b/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts @@ -1,5 +1,5 @@ -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; -import { PluginModule } from "@polywrap/plugin-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { latestWrapManifestVersion, WrapManifest, @@ -25,21 +25,18 @@ class MockPlugin extends PluginModule { } const mockPlugin = () => { - return { - factory: () => new MockPlugin({ val: 0 }), - manifest: mockPluginManifest, - }; + return PluginPackage.from(new MockPlugin({ val: 0 }), mockPluginManifest); }; -export function getClientConfig( - builder: ClientConfigBuilder -): ClientConfigBuilder { - builder.addPackage({ - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }); - - return builder; +export function getCustomConfig(): Partial> { + return { + packages: [ + { + uri: "wrap://ens/mock.eth", + package: mockPlugin(), + }, + ], + }; } export const mockPluginManifest: WrapManifest = { diff --git a/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/module.ts index 69fb521c72..d80585a809 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/module.ts @@ -3,11 +3,8 @@ import * as Types from "./types"; -import { - Client, - PluginModule, - MaybeAsync -} from "@polywrap/core-js"; +import { Client, MaybeAsync } from "@polywrap/core-js"; +import { PluginModule } from "@polywrap/plugin-js"; export interface Args_methodOne { str: Types.String; diff --git a/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/module.ts index d180a0c0e0..f9668a2f3e 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/module.ts @@ -3,11 +3,8 @@ import * as Types from "./types"; -import { - Client, - PluginModule, - MaybeAsync -} from "@polywrap/core-js"; +import { Client, MaybeAsync } from "@polywrap/core-js"; +import { PluginModule } from "@polywrap/plugin-js"; export interface Args_method { str: Types.String; diff --git a/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/module.ts index 9cd107891c..a2294ddca8 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/module.ts @@ -3,11 +3,8 @@ import * as Types from "./types"; -import { - Client, - PluginModule, - MaybeAsync -} from "@polywrap/core-js"; +import { Client, MaybeAsync } from "@polywrap/core-js"; +import { PluginModule } from "@polywrap/plugin-js"; export interface Args_method { str: Types.String; diff --git a/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/module.ts index 9cd107891c..a2294ddca8 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/module.ts @@ -3,11 +3,8 @@ import * as Types from "./types"; -import { - Client, - PluginModule, - MaybeAsync -} from "@polywrap/core-js"; +import { Client, MaybeAsync } from "@polywrap/core-js"; +import { PluginModule } from "@polywrap/plugin-js"; export interface Args_method { str: Types.String; diff --git a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts index e66d5dfde9..5851c3c026 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts @@ -1,5 +1,9 @@ -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; -import { PluginModule } from "@polywrap/plugin-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; +import { + latestWrapManifestVersion, + WrapManifest, +} from "@polywrap/wrap-manifest-types-js"; interface Config extends Record { val: number; @@ -21,28 +25,29 @@ class MockPlugin extends PluginModule { } const mockPlugin = () => { - return { - factory: () => new MockPlugin({ val: 0 }), - manifest: { - schema: ` + return PluginPackage.from(new MockPlugin({ val: 0 }), { + name: "mock", + type: "plugin", + version: latestWrapManifestVersion, + schema: ` type Module { getData: Int! setData(value: Int!): Boolean! deployContract: String! } `, - implements: [], - }, - }; + abi: [], + implements: [], + } as WrapManifest); }; -export function getClientConfig( - builder: ClientConfigBuilder -): ClientConfigBuilder { - builder.addPackage({ - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }); - - return builder; +export function getCustomConfig(): Partial> { + return { + packages: [ + { + uri: "wrap://ens/mock.eth", + package: mockPlugin(), + }, + ], + }; } diff --git a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/module.ts index 69fb521c72..d80585a809 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/module.ts @@ -3,11 +3,8 @@ import * as Types from "./types"; -import { - Client, - PluginModule, - MaybeAsync -} from "@polywrap/core-js"; +import { Client, MaybeAsync } from "@polywrap/core-js"; +import { PluginModule } from "@polywrap/plugin-js"; export interface Args_methodOne { str: Types.String; diff --git a/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/module.ts index 69fb521c72..d80585a809 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/module.ts @@ -3,11 +3,8 @@ import * as Types from "./types"; -import { - Client, - PluginModule, - MaybeAsync -} from "@polywrap/core-js"; +import { Client, MaybeAsync } from "@polywrap/core-js"; +import { PluginModule } from "@polywrap/plugin-js"; export interface Args_methodOne { str: Types.String; diff --git a/packages/test-cases/cases/cli/run/008-custom-config/config.ts b/packages/test-cases/cases/cli/run/008-custom-config/config.ts index 6017d5e9cd..40537beefc 100644 --- a/packages/test-cases/cases/cli/run/008-custom-config/config.ts +++ b/packages/test-cases/cases/cli/run/008-custom-config/config.ts @@ -1,25 +1,23 @@ -import { PolywrapClientConfig } from "@polywrap/client-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; import path from "path"; -export async function getClientConfig( - defaultConfigs: Partial -): Promise> { +export function getCustomConfig(): Partial> { const wrapperPath = path.join(__dirname, "..", "run-test-wrapper"); const wrapperUri = `fs/${path.resolve(wrapperPath)}/build`; return { redirects: [ { from: "wrap://ens/test.eth", - to: wrapperUri - } + to: wrapperUri, + }, ], envs: [ { uri: wrapperUri, env: { - value: 1 - } + value: 1, + }, }, ], - } + }; } diff --git a/packages/test-cases/cases/cli/wasm/build-cmd/010-custom-config/config.ts b/packages/test-cases/cases/cli/wasm/build-cmd/010-custom-config/config.ts index 85c4d18c85..efbd02e953 100644 --- a/packages/test-cases/cases/cli/wasm/build-cmd/010-custom-config/config.ts +++ b/packages/test-cases/cases/cli/wasm/build-cmd/010-custom-config/config.ts @@ -1,5 +1,9 @@ -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; -import { PluginModule } from "@polywrap/plugin-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; +import { + latestWrapManifestVersion, + WrapManifest, +} from "@polywrap/wrap-manifest-types-js"; interface Config extends Record { val: number; @@ -21,9 +25,12 @@ class MockPlugin extends PluginModule { } const mockPlugin = () => { - return { - factory: () => new MockPlugin({ val: 0 }), - manifest: { + return PluginPackage.from( + new MockPlugin({ val: 0 }) as PluginModule, + { + name: "mock", + type: "plugin", + version: latestWrapManifestVersion, abi: { objectTypes: [], enumTypes: [], @@ -34,8 +41,6 @@ const mockPlugin = () => { importedEnvTypes: [], moduleType: { type: "Module", - name: null, - required: null, kind: 128, methods: [ { @@ -49,17 +54,12 @@ const mockPlugin = () => { name: "getData", required: true, kind: 34, - array: null, - map: null, scalar: { type: "Int", name: "getData", required: true, kind: 4, }, - object: null, - enum: null, - unresolvedObjectOrEnum: null, }, }, { @@ -73,17 +73,12 @@ const mockPlugin = () => { name: "value", required: true, kind: 34, - array: null, - map: null, scalar: { type: "Int", name: "value", required: true, kind: 4, }, - object: null, - enum: null, - unresolvedObjectOrEnum: null, }, ], return: { @@ -91,17 +86,12 @@ const mockPlugin = () => { name: "setData", required: true, kind: 34, - array: null, - map: null, scalar: { type: "Boolean", name: "setData", required: true, kind: 4, }, - object: null, - enum: null, - unresolvedObjectOrEnum: null, }, }, { @@ -115,17 +105,12 @@ const mockPlugin = () => { name: "deployContract", required: true, kind: 34, - array: null, - map: null, scalar: { type: "String", name: "deployContract", required: true, kind: 4, }, - object: null, - enum: null, - unresolvedObjectOrEnum: null, }, }, ], @@ -134,17 +119,17 @@ const mockPlugin = () => { }, }, implements: [], - }, - }; + } as WrapManifest + ); }; -export function getClientConfig( - builder: ClientConfigBuilder -): ClientConfigBuilder { - builder.addPackage({ - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }); - - return builder; +export function getCustomConfig(): Partial> { + return { + packages: [ + { + uri: "wrap://ens/mock.eth", + package: mockPlugin(), + } + ] + }; } diff --git a/packages/test-cases/cases/cli/wasm/codegen/004-custom-config/config.ts b/packages/test-cases/cases/cli/wasm/codegen/004-custom-config/config.ts index 87d9cac65e..10c787b72c 100644 --- a/packages/test-cases/cases/cli/wasm/codegen/004-custom-config/config.ts +++ b/packages/test-cases/cases/cli/wasm/codegen/004-custom-config/config.ts @@ -1,5 +1,6 @@ -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; -import { PluginModule } from "@polywrap/plugin-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { IWrapPackage } from "@polywrap/core-js"; +import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { latestWrapManifestVersion, WrapManifest, @@ -25,27 +26,24 @@ class MockPlugin extends PluginModule { } } -const mockPlugin = () => { - return { - factory: () => new MockPlugin({ val: 0 }), - manifest: { - name: "mock", - type: "plugin", - version: latestWrapManifestVersion, - abi, - } as WrapManifest, - }; +const mockPlugin = (): IWrapPackage => { + return PluginPackage.from(new MockPlugin({ val: 0 }), { + name: "mock", + type: "plugin", + version: latestWrapManifestVersion, + abi, + } as WrapManifest); }; -export function getClientConfig( - builder: ClientConfigBuilder -): ClientConfigBuilder { - builder.addPackage({ - uri: "wrap://ens/mock.eth", - plugin: mockPlugin(), - }); - - return builder; +export function getCustomConfig(): Partial> { + return { + packages: [ + { + uri: "wrap://ens/mock.eth", + package: mockPlugin(), + }, + ], + }; } const abi: WrapAbi = { From 6a6ea9f4bc9877f2460183355d9920eef7f83031 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 20:56:22 +0200 Subject: [PATCH 047/126] lint fix --- .../deploy-modules/ens-recursive-name-register/index.ts | 2 +- packages/cli/src/lib/defaults/deploy-modules/ens/index.ts | 2 +- packages/cli/src/lib/helpers/client.ts | 3 ++- .../js/client-config-builder/src/bundles/getDefaultConfig.ts | 3 ++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts index 41785d1459..472bea9a14 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable @typescript-eslint/no-var-requires */ import { Deployer } from "../../../deploy"; +import { createDefaultClient } from "../../../../utils/createDefaultClient"; import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; @@ -11,7 +12,6 @@ import { Connection, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; -import { createDefaultClient } from "../../../../utils/createDefaultClient"; class ENSRecursiveNameRegisterPublisher implements Deployer { async execute( diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts index 546966a5bc..dbde98e789 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable @typescript-eslint/no-var-requires */ import { Deployer } from "../../../deploy"; +import { createDefaultClient } from "../../../../utils/createDefaultClient"; import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; @@ -11,7 +12,6 @@ import { ethereumPlugin, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; -import { createDefaultClient } from "../../../../utils/createDefaultClient"; const contentHash = require("content-hash"); diff --git a/packages/cli/src/lib/helpers/client.ts b/packages/cli/src/lib/helpers/client.ts index a749109e80..d45a52d7b8 100644 --- a/packages/cli/src/lib/helpers/client.ts +++ b/packages/cli/src/lib/helpers/client.ts @@ -1,3 +1,5 @@ +import { createDefaultClient } from "../../utils/createDefaultClient"; + import { Client, Env, IUriPackage, Uri } from "@polywrap/core-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { @@ -7,7 +9,6 @@ import { } from "@polywrap/ethereum-plugin-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; -import { createDefaultClient } from "../../utils/createDefaultClient"; interface SimpleClientConfig { ensAddress?: string; diff --git a/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts b/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts index 496660a46e..f2074b999a 100644 --- a/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts +++ b/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts @@ -1,3 +1,5 @@ +import { CustomClientConfig } from "../CustomClientConfig"; + import { IUriPackage, Uri } from "@polywrap/core-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; @@ -12,7 +14,6 @@ import { httpResolverPlugin } from "@polywrap/http-resolver-plugin-js"; import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; import { loggerPlugin } from "@polywrap/logger-plugin-js"; import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; -import { CustomClientConfig } from "../CustomClientConfig"; export const getDefaultConfig = (): CustomClientConfig => { return { From d007cc5911d7f15ab10a05405c0110cabea63862 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 21:15:22 +0200 Subject: [PATCH 048/126] fixed ipfs plugin tests client creation --- .../js/plugins/ipfs/src/__tests__/e2e.spec.ts | 60 +++++++++---------- .../ipfs/src/__tests__/helpers/getClient.ts | 28 --------- 2 files changed, 30 insertions(+), 58 deletions(-) delete mode 100644 packages/js/plugins/ipfs/src/__tests__/helpers/getClient.ts diff --git a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts index 18d696bf20..71445c078e 100644 --- a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts @@ -9,7 +9,9 @@ import { IpfsClient, IpfsFileInfo } from "../utils/IpfsClient"; import { Ipfs_Module } from "../wrap"; import { Client } from "@polywrap/core-js"; import { ResultOk } from "@polywrap/result"; -import { getClient } from "./helpers/getClient"; +import { PolywrapClient } from "@polywrap/client-js"; +import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; +import { ipfsPlugin } from ".."; const createIpfsClient = require("@dorgjelli-test/ipfs-http-client-lite"); @@ -27,15 +29,18 @@ describe("IPFS Plugin", () => { await initTestEnvironment(); ipfs = createIpfsClient(providers.ipfs); - client = getClient(); - plugin: ipfsPlugin({}), - }, - ], + client = new PolywrapClient({ envs: [ { uri: "wrap://ens/ipfs.polywrap.eth", - env: { - }, + env: { provider: providers.ipfs }, + }, + ], + resolver: RecursiveResolver.from({ + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }), + }); let ipfsAddResult = await ipfs.add(sampleFileBuffer); sampleFileIpfsInfo = ipfsAddResult[0]; @@ -52,7 +57,7 @@ describe("IPFS Plugin", () => { { cid: sampleFileIpfsInfo.hash.toString() }, client ); - + if (!result.ok) fail(result.error); expect(result.value).toEqual(sampleFileBuffer); @@ -95,20 +100,12 @@ describe("IPFS Plugin", () => { ): Promise> => { return new Promise>((resolve) => setTimeout(() => { - resolve( - ResultOk(Uint8Array.from([1, 2, 3, 4])) - ); + resolve(ResultOk(Uint8Array.from([1, 2, 3, 4]))); }, timeout) ); }; const altClient = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({}), - }, - ], envs: [ { uri: "wrap://ens/ipfs.polywrap.eth", @@ -118,6 +115,10 @@ describe("IPFS Plugin", () => { }, }, ], + resolver: RecursiveResolver.from({ + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }), }); const nonExistentFileCid = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; @@ -150,7 +151,10 @@ describe("IPFS Plugin", () => { ]); expect(resultForOverride).toBeTruthy(); - resultForOverride = resultForOverride as { ok: false; error: Error | undefined }; + resultForOverride = resultForOverride as { + ok: false; + error: Error | undefined; + }; expect(resultForOverride.error).toBeTruthy(); expect(resultForOverride.error?.stack).toMatch("Timeout has been reached"); expect(resultForOverride.error?.stack).toMatch("Timeout: 500"); @@ -158,12 +162,6 @@ describe("IPFS Plugin", () => { it("Should use provider from method options", async () => { const clientWithBadProvider = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({}), - }, - ], envs: [ { uri: "wrap://ens/ipfs.polywrap.eth", @@ -172,6 +170,10 @@ describe("IPFS Plugin", () => { }, }, ], + resolver: RecursiveResolver.from({ + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }), }); const catResult = await Ipfs_Module.cat( @@ -202,12 +204,6 @@ describe("IPFS Plugin", () => { it("Should use fallback provider from method options", async () => { const clientWithBadProvider = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({}), - }, - ], envs: [ { uri: "wrap://ens/ipfs.polywrap.eth", @@ -216,6 +212,10 @@ describe("IPFS Plugin", () => { }, }, ], + resolver: RecursiveResolver.from({ + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }), }); const catResult = await Ipfs_Module.cat( diff --git a/packages/js/plugins/ipfs/src/__tests__/helpers/getClient.ts b/packages/js/plugins/ipfs/src/__tests__/helpers/getClient.ts deleted file mode 100644 index ffdad8bf25..0000000000 --- a/packages/js/plugins/ipfs/src/__tests__/helpers/getClient.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ipfsPlugin } from "../.."; -import { providers } from "@polywrap/test-env-js"; -import { PolywrapClient } from "@polywrap/client-js"; -import { - buildUriResolver, - RecursiveResolver, - PackageToWrapperCacheResolver, - WrapperCache, -} from "@polywrap/uri-resolvers-js"; - -export const getClient = (): PolywrapClient => { - return new PolywrapClient( - { - resolver: new RecursiveResolver( - new PackageToWrapperCacheResolver( - new WrapperCache(), - buildUriResolver([ - { - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({ provider: providers.ipfs }), - }, - ]) - ) - ), - }, - { noDefaults: true } - ); -}; From ffdc661ed003f6c5cf2de1c3460d9df220e9115f Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 30 Sep 2022 21:33:42 +0200 Subject: [PATCH 049/126] fixed ethereum plugin tests --- .../ethereum/src/__tests__/e2e.spec.ts | 207 +++++++++++------- .../src/__tests__/helpers/getClient.ts | 46 ---- .../src/__tests__/helpers/getDefaultConfig.ts | 45 ++++ 3 files changed, 178 insertions(+), 120 deletions(-) delete mode 100644 packages/js/plugins/ethereum/src/__tests__/helpers/getClient.ts create mode 100644 packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts diff --git a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts index 6ff502f766..88bdf0b765 100644 --- a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts @@ -1,7 +1,10 @@ import * as Schema from "../wrap"; -import { PolywrapClient } from "@polywrap/client-js"; -import { ClientConfigBuilder, defaultIpfsProviders } from "@polywrap/client-config-builder-js"; +import { PolywrapClient, Uri } from "@polywrap/client-js"; +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; import { initTestEnvironment, stopTestEnvironment, @@ -13,14 +16,14 @@ import { deployStorage, addPrimitiveToArrayStorage, addStructToStorage, - setPrimitiveToStorage -} from './utils/storage'; + setPrimitiveToStorage, +} from "./utils/storage"; import { ethers, Wallet } from "ethers"; import { keccak256 } from "js-sha3"; import { Connections } from "../Connections"; import { Connection } from "../Connection"; -import { getClient } from "./helpers/getClient"; +import { getDefaultConfig } from "./helpers/getDefaultConfig"; const { hash: namehash } = require("eth-ens-namehash"); const contracts = { @@ -31,9 +34,12 @@ const contracts = { SimpleStorage: { abi: require("./contracts/SimpleStorage.ABI.json"), bytecode: `0x${require("./contracts/SimpleStorage.Bytecode.json").object}`, - abiSinglePrimitiveMethod: '[{"inputs":[],"name":"get","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]', - abiArrayPrimitivesMethod: '[{"inputs":[],"name":"getSimple","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}]', - abiArrayStructsMethod: '[{"inputs":[],"name":"getJobs","outputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct SimpleStorage.Job[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"}]', + abiSinglePrimitiveMethod: + '[{"inputs":[],"name":"get","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]', + abiArrayPrimitivesMethod: + '[{"inputs":[],"name":"getSimple","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}]', + abiArrayStructsMethod: + '[{"inputs":[],"name":"getJobs","outputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct SimpleStorage.Job[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"}]', }, }; @@ -44,6 +50,7 @@ describe("Ethereum Plugin", () => { let ensAddress: string; let resolverAddress: string; let registrarAddress: string; + let defaultConfig: Partial>; const signer = "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1"; const wrapperPath = `${__dirname}/integration`; @@ -68,17 +75,10 @@ describe("Ethereum Plugin", () => { defaultNetwork: "testnet", }); - client = getClient(connections); - envs: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: providers.ipfs, - fallbackProviders: defaultIpfsProviders, - }, - }, - ], - + defaultConfig = getDefaultConfig(connections); + client = new PolywrapClient( + new ClientConfigBuilder().add(defaultConfig).buildDefault() + ); await buildWrapper(wrapperPath); }); @@ -106,15 +106,22 @@ describe("Ethereum Plugin", () => { }); it("callContractView (primitive value - string ABI)", async () => { - const storageAddress = await deployStorage(contracts.SimpleStorage.abi, contracts.SimpleStorage.bytecode) - await setPrimitiveToStorage(contracts.SimpleStorage.abi, storageAddress, "100"); + const storageAddress = await deployStorage( + contracts.SimpleStorage.abi, + contracts.SimpleStorage.bytecode + ); + await setPrimitiveToStorage( + contracts.SimpleStorage.abi, + storageAddress, + "100" + ); const response = await client.invoke({ uri, method: "callContractView", args: { address: storageAddress, - method: 'function get() public view returns (uint256)', + method: "function get() public view returns (uint256)", args: [], }, }); @@ -126,8 +133,15 @@ describe("Ethereum Plugin", () => { }); it("callContractView (primitive value - JSON ABI)", async () => { - const storageAddress = await deployStorage(contracts.SimpleStorage.abi, contracts.SimpleStorage.bytecode) - await setPrimitiveToStorage(contracts.SimpleStorage.abi, storageAddress, "100"); + const storageAddress = await deployStorage( + contracts.SimpleStorage.abi, + contracts.SimpleStorage.bytecode + ); + await setPrimitiveToStorage( + contracts.SimpleStorage.abi, + storageAddress, + "100" + ); const response = await client.invoke({ uri, @@ -146,16 +160,27 @@ describe("Ethereum Plugin", () => { }); it("callContractView (primitives array - string ABI)", async () => { - const storageAddress = await deployStorage(contracts.SimpleStorage.abi, contracts.SimpleStorage.bytecode) - await addPrimitiveToArrayStorage(contracts.SimpleStorage.abi, storageAddress, "100"); - await addPrimitiveToArrayStorage(contracts.SimpleStorage.abi, storageAddress, "90"); + const storageAddress = await deployStorage( + contracts.SimpleStorage.abi, + contracts.SimpleStorage.bytecode + ); + await addPrimitiveToArrayStorage( + contracts.SimpleStorage.abi, + storageAddress, + "100" + ); + await addPrimitiveToArrayStorage( + contracts.SimpleStorage.abi, + storageAddress, + "90" + ); const response = await client.invoke({ uri, method: "callContractView", args: { address: storageAddress, - method: 'function getSimple() public view returns (uint256[] memory)', + method: "function getSimple() public view returns (uint256[] memory)", args: [], }, }); @@ -163,7 +188,7 @@ describe("Ethereum Plugin", () => { if (!response.ok) fail(response.error); if (!response.value) { - throw new Error('Empty data on view call, expecting JSON'); + throw new Error("Empty data on view call, expecting JSON"); } const result = JSON.parse(response.value); @@ -173,9 +198,20 @@ describe("Ethereum Plugin", () => { }); it("callContractView (primitives array - JSON ABI)", async () => { - const storageAddress = await deployStorage(contracts.SimpleStorage.abi, contracts.SimpleStorage.bytecode) - await addPrimitiveToArrayStorage(contracts.SimpleStorage.abi, storageAddress, "100"); - await addPrimitiveToArrayStorage(contracts.SimpleStorage.abi, storageAddress, "90"); + const storageAddress = await deployStorage( + contracts.SimpleStorage.abi, + contracts.SimpleStorage.bytecode + ); + await addPrimitiveToArrayStorage( + contracts.SimpleStorage.abi, + storageAddress, + "100" + ); + await addPrimitiveToArrayStorage( + contracts.SimpleStorage.abi, + storageAddress, + "90" + ); const response = await client.invoke({ uri, @@ -190,7 +226,7 @@ describe("Ethereum Plugin", () => { if (!response.ok) fail(response.error); if (!response.value) { - throw new Error('Empty data on view call, expecting JSON'); + throw new Error("Empty data on view call, expecting JSON"); } const result = JSON.parse(response.value); @@ -200,16 +236,28 @@ describe("Ethereum Plugin", () => { }); it("callContractView (primitives array - non-array JSON ABI)", async () => { - const storageAddress = await deployStorage(contracts.SimpleStorage.abi, contracts.SimpleStorage.bytecode) - await addPrimitiveToArrayStorage(contracts.SimpleStorage.abi, storageAddress, "100"); - await addPrimitiveToArrayStorage(contracts.SimpleStorage.abi, storageAddress, "90"); + const storageAddress = await deployStorage( + contracts.SimpleStorage.abi, + contracts.SimpleStorage.bytecode + ); + await addPrimitiveToArrayStorage( + contracts.SimpleStorage.abi, + storageAddress, + "100" + ); + await addPrimitiveToArrayStorage( + contracts.SimpleStorage.abi, + storageAddress, + "90" + ); const response = await client.invoke({ uri, method: "callContractView", args: { address: storageAddress, - method: '{"inputs":[],"name":"getSimple","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}', + method: + '{"inputs":[],"name":"getSimple","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}', args: [], }, }); @@ -217,7 +265,7 @@ describe("Ethereum Plugin", () => { if (!response.ok) fail(response.error); if (!response.value) { - throw new Error('Empty data on view call, expecting JSON'); + throw new Error("Empty data on view call, expecting JSON"); } const result = JSON.parse(response.value); @@ -227,7 +275,10 @@ describe("Ethereum Plugin", () => { }); it("callContractView (struct array empty)", async () => { - const queueAddress = await deployStorage(contracts.SimpleStorage.abi, contracts.SimpleStorage.bytecode) + const queueAddress = await deployStorage( + contracts.SimpleStorage.abi, + contracts.SimpleStorage.bytecode + ); const response = await client.invoke({ uri, @@ -240,12 +291,18 @@ describe("Ethereum Plugin", () => { }); if (!response.ok) fail(response.error); - expect(response.value).toEqual('[]'); + expect(response.value).toEqual("[]"); }); it("callContractView (struct array single element)", async () => { - const queueAddress = await deployStorage(contracts.SimpleStorage.abi, contracts.SimpleStorage.bytecode) - await addStructToStorage(contracts.SimpleStorage.abi, queueAddress, [queueAddress, "100"]); + const queueAddress = await deployStorage( + contracts.SimpleStorage.abi, + contracts.SimpleStorage.bytecode + ); + await addStructToStorage(contracts.SimpleStorage.abi, queueAddress, [ + queueAddress, + "100", + ]); const response = await client.invoke({ uri, @@ -260,7 +317,7 @@ describe("Ethereum Plugin", () => { if (!response.ok) fail(response.error); if (!response.value) { - throw new Error('Empty data on view call, expecting JSON'); + throw new Error("Empty data on view call, expecting JSON"); } const result = JSON.parse(response.value); @@ -270,9 +327,18 @@ describe("Ethereum Plugin", () => { }); it("callContractView (struct array multiple elements)", async () => { - const queueAddress = await deployStorage(contracts.SimpleStorage.abi, contracts.SimpleStorage.bytecode) - await addStructToStorage(contracts.SimpleStorage.abi, queueAddress, [queueAddress, "100"]); - await addStructToStorage(contracts.SimpleStorage.abi, queueAddress, [ensAddress, "99"]); + const queueAddress = await deployStorage( + contracts.SimpleStorage.abi, + contracts.SimpleStorage.bytecode + ); + await addStructToStorage(contracts.SimpleStorage.abi, queueAddress, [ + queueAddress, + "100", + ]); + await addStructToStorage(contracts.SimpleStorage.abi, queueAddress, [ + ensAddress, + "99", + ]); const response = await client.invoke({ uri, @@ -287,7 +353,7 @@ describe("Ethereum Plugin", () => { if (!response.ok) fail(response.error); if (!response.value) { - throw new Error('Empty data on view call, expecting JSON'); + throw new Error("Empty data on view call, expecting JSON"); } const result = JSON.parse(response.value); @@ -678,7 +744,8 @@ describe("Ethereum Plugin", () => { const domain = "testwhatever10.eth"; const newOwner = "0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0"; - const listenerPromise = client.invoke({ + const listenerPromise = client + .invoke({ uri, method: "waitForEvent", args: { @@ -689,16 +756,14 @@ describe("Ethereum Plugin", () => { }, }) .then((result) => { - if (result.ok) return result.value - else fail(result.error) + if (result.ok) return result.value; + else fail(result.error); }) .then((result: Schema.EventNotification) => { expect(typeof result.data === "string").toBe(true); expect(typeof result.address === "string").toBe(true); expect(result.log).toBeDefined(); - expect(typeof result.log.transactionHash === "string").toBe( - true - ); + expect(typeof result.log.transactionHash === "string").toBe(true); }); await client.invoke({ @@ -741,16 +806,14 @@ describe("Ethereum Plugin", () => { }, }) .then((result) => { - if (result.ok) return result.value - else fail(result.error) + if (result.ok) return result.value; + else fail(result.error); }) .then((result: Schema.EventNotification) => { expect(typeof result.data === "string").toBe(true); expect(typeof result.address === "string").toBe(true); expect(result.log).toBeDefined(); - expect(typeof result.log.transactionHash === "string").toBe( - true - ); + expect(typeof result.log.transactionHash === "string").toBe(true); }); await client.invoke({ @@ -805,7 +868,7 @@ describe("Ethereum Plugin", () => { }, }, }); - + if (!polygonNetwork.ok) fail(polygonNetwork.error); expect(polygonNetwork.value).toBeTruthy(); expect(polygonNetwork.value?.chainId).toBe("137"); @@ -815,7 +878,7 @@ describe("Ethereum Plugin", () => { it("getNetwork - mainnet with env", async () => { const config = new ClientConfigBuilder() - .add(client.getConfig()) + .add(defaultConfig) .add({ envs: [ { @@ -828,10 +891,8 @@ describe("Ethereum Plugin", () => { }, ], }) - .build(); - const mainnetClient = new PolywrapClient( - config - ); + .buildDefault(); + const mainnetClient = new PolywrapClient(config); const mainnetNetwork = await mainnetClient.invoke({ uri, method: "getNetwork", @@ -848,7 +909,7 @@ describe("Ethereum Plugin", () => { it("getNetwork - polygon with env", async () => { const config = new ClientConfigBuilder() - .add(client.getConfig()) + .add(defaultConfig) .add({ envs: [ { @@ -861,10 +922,8 @@ describe("Ethereum Plugin", () => { }, ], }) - .build(); - const polygonClient = new PolywrapClient( - config - ); + .buildDefault(); + const polygonClient = new PolywrapClient(config); const polygonNetwork = await polygonClient.invoke({ uri, method: "getNetwork", @@ -885,7 +944,9 @@ describe("Ethereum Plugin", () => { // eth_requestAccounts is not supported by Ganache // this RPC error indicates that the method call was attempted expect( - error?.message.indexOf("Method eth_requestAccounts not supported") + result.error?.message.indexOf( + "Method eth_requestAccounts not supported" + ) ).toBeGreaterThanOrEqual(0); }); }); @@ -960,8 +1021,7 @@ describe("Ethereum Plugin", () => { if (!response.ok) fail(response.error); expect(response.value).toBeDefined(); - expect( - response.value?.transactionHash + expect(response.value?.transactionHash).toBeDefined(); }); it("deployContract", async () => { @@ -1044,8 +1104,7 @@ describe("Ethereum Plugin", () => { if (!response2.ok) fail(response2.error); expect(response2.value).toBeDefined(); - expect( - response2.value?.transactionHash + expect(response2.value?.transactionHash).toBeDefined(); }); }); }); \ No newline at end of file diff --git a/packages/js/plugins/ethereum/src/__tests__/helpers/getClient.ts b/packages/js/plugins/ethereum/src/__tests__/helpers/getClient.ts deleted file mode 100644 index c5108a60d6..0000000000 --- a/packages/js/plugins/ethereum/src/__tests__/helpers/getClient.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - buildUriResolver, - RecursiveResolver, - PackageToWrapperCacheResolver, - WrapperCache, -} from "@polywrap/uri-resolvers-js"; -import { coreInterfaceUris } from "@polywrap/core-js"; -import { PolywrapClient } from "@polywrap/client-js"; -import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; -import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; -import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; -import { ethereumPlugin, Connections } from "../.."; - -export const getClient = (connections: Connections) => { - return new PolywrapClient( - { - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: ["wrap://ens/fs-resolver.polywrap.eth"], - }, - ], - resolver: new RecursiveResolver( - new PackageToWrapperCacheResolver( - new WrapperCache(), - buildUriResolver([ - { - uri: "wrap://ens/ethereum.polywrap.eth", - package: ethereumPlugin({ connections }), - }, - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - package: fileSystemResolverPlugin({}), - }, - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, - new ExtendableUriResolver(), - ]) - ) - ), - }, - { noDefaults: true } - ); -}; diff --git a/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts b/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts new file mode 100644 index 0000000000..77c06db332 --- /dev/null +++ b/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts @@ -0,0 +1,45 @@ +import { coreInterfaceUris, Uri } from "@polywrap/core-js"; +import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; +import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; +import { ethereumPlugin, Connections } from "../.."; +import { providers } from "@polywrap/test-env-js"; +import { + defaultIpfsProviders, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; + +export const getDefaultConfig = ( + connections: Connections +): Partial> => { + return { + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { + provider: providers.ipfs, + fallbackProviders: defaultIpfsProviders, + }, + }, + ], + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/fs-resolver.polywrap.eth"], + }, + ], + packages: [ + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ connections }), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + ], + }; +}; From f0b23a989b27c31e2b5bf9a66ddd25498a6e7294 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 20:21:07 +0200 Subject: [PATCH 050/126] fixed http plugin tests --- .../http/src/__tests__/e2e/e2e.spec.ts | 24 +++---- .../src/__tests__/e2e/integration.spec.ts | 1 - .../http/src/__tests__/helpers/getClient.ts | 60 ++++++++-------- yarn.lock | 72 +++++++++---------- 4 files changed, 76 insertions(+), 81 deletions(-) diff --git a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts index c6730d368d..fb9a4c50ed 100644 --- a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts @@ -2,7 +2,10 @@ import { httpPlugin } from "../.."; import { Http_Response } from "../../wrap"; import { PolywrapClient } from "@polywrap/client-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { + buildUriResolver, + RecursiveResolver, +} from "@polywrap/uri-resolvers-js"; import nock from "nock"; @@ -17,17 +20,14 @@ describe("e2e tests for HttpPlugin", () => { let polywrapClient: PolywrapClient; beforeEach(() => { - polywrapClient = new PolywrapClient( - { - resolver: buildUriResolver([ - { - uri: "wrap://ens/http.polywrap.eth", - package: httpPlugin({}), - }, - ]), - }, - { noDefaults: true } - ); + polywrapClient = new PolywrapClient({ + resolver: RecursiveResolver.from([ + { + uri: "wrap://ens/http.polywrap.eth", + package: httpPlugin({}), + }, + ]), + }); }); describe("get method", () => { diff --git a/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts b/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts index 970e77937f..ac9e083bcf 100644 --- a/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts +++ b/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts @@ -1,4 +1,3 @@ -import { httpPlugin } from "../.."; import { Http_Response } from "../../wrap"; import { PolywrapClient } from "@polywrap/client-js"; diff --git a/packages/js/plugins/http/src/__tests__/helpers/getClient.ts b/packages/js/plugins/http/src/__tests__/helpers/getClient.ts index 8d68ee66a6..3ddbf22d8f 100644 --- a/packages/js/plugins/http/src/__tests__/helpers/getClient.ts +++ b/packages/js/plugins/http/src/__tests__/helpers/getClient.ts @@ -1,5 +1,4 @@ import { - buildUriResolver, RecursiveResolver, PackageToWrapperCacheResolver, WrapperCache, @@ -12,35 +11,32 @@ import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; import { httpPlugin } from "../.."; export const getClient = () => { - return new PolywrapClient( - { - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: ["wrap://ens/fs-resolver.polywrap.eth"], - }, - ], - resolver: new RecursiveResolver( - new PackageToWrapperCacheResolver( - new WrapperCache(), - buildUriResolver([ - { - uri: "wrap://ens/http.polywrap.eth", - package: httpPlugin({}), - }, - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - package: fileSystemResolverPlugin({}), - }, - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, - new ExtendableUriResolver(), - ]) - ) - ), - }, - { noDefaults: true } - ); + return new PolywrapClient({ + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/fs-resolver.polywrap.eth"], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/http.polywrap.eth", + package: httpPlugin({}), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }); }; diff --git a/yarn.lock b/yarn.lock index 9b927f6016..59680b781e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3315,9 +3315,9 @@ integrity sha512-aPfcBeLErM/PPiAuAbNFLN5sNbZLc3KZlar27uohllN8Zs6jJbHyJU1y7cMA6W/zuq+thkaG8mujiS+3iD/FWQ== "@sinclair/typebox@^0.24.1": - version "0.24.43" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.43.tgz#2e2bce0e5e493aaf639beed0cd6c88cfde7dd3d7" - integrity sha512-1orQTvtazZmsPeBroJjysvsOQCYV2yjWlebkSY38pl5vr2tdLjEJ+LoxITlGNZaH2RE19WlAwQMkH/7C14wLfw== + version "0.24.44" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.44.tgz#0a0aa3bf4a155a678418527342a3ee84bd8caa5c" + integrity sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg== "@sinonjs/commons@^1.7.0": version "1.8.3" @@ -3678,9 +3678,9 @@ integrity sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw== "@types/lodash@^4.14.182": - version "4.14.185" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.185.tgz#c9843f5a40703a8f5edfd53358a58ae729816908" - integrity sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA== + version "4.14.186" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.186.tgz#862e5514dd7bd66ada6c70ee5fce844b06c8ee97" + integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw== "@types/minimatch@*": version "5.1.2" @@ -3703,9 +3703,9 @@ integrity sha512-wH6Tu9mbiOt0n5EvdoWy0VGQaJMHfLIxY/6wS0xLC7CV1taM6gESEzcYy0ZlWvxxiiljYvfDIvz4hHbUUDRlhw== "@types/node@*": - version "18.7.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.23.tgz#75c580983846181ebe5f4abc40fe9dfb2d65665f" - integrity sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg== + version "18.8.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.1.tgz#33e6759935f7a82821b72fb936e66f6b99a36173" + integrity sha512-vuYaNuEIbOYLTLUAJh50ezEbvxrD43iby+lpUA2aa148Nh5kX/AVO/9m1Ahmbux2iU5uxJTNF9g2Y+31uml7RQ== "@types/node@12.12.26": version "12.12.26" @@ -5054,9 +5054,9 @@ bech32@1.1.4: integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== before-after-hook@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== + version "2.2.3" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== big.js@^5.2.2: version "5.2.2" @@ -5593,9 +5593,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: - version "1.0.30001412" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz#30f67d55a865da43e0aeec003f073ea8764d5d7c" - integrity sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA== + version "1.0.30001415" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001415.tgz#fd7ea96e9e94c181a7f56e7571efb43d92b860cc" + integrity sha512-ER+PfgCJUe8BqunLGWd/1EY4g8AzQcsDAVzdtMGKVtQEmKAwaFfU6vb7EAVIqTMYsqxBorYZi2+22Iouj/y7GQ== capture-exit@^2.0.0: version "2.0.0" @@ -6313,16 +6313,16 @@ copyfiles@2.4.1: yargs "^16.1.0" core-js-compat@^3.25.1, core-js-compat@^3.6.2: - version "3.25.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.3.tgz#d6a442a03f4eade4555d4e640e6a06151dd95d38" - integrity sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ== + version "3.25.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.5.tgz#0016e8158c904f7b059486639e6e82116eafa7d9" + integrity sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA== dependencies: browserslist "^4.21.4" core-js-pure@^3.25.1: - version "3.25.3" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.3.tgz#66ac5bfa5754b47fdfd14f3841c5ed21c46db608" - integrity sha512-T/7qvgv70MEvRkZ8p6BasLZmOVYKzOaWNBEHAU8FmveCJkl4nko2quqPQOmy6AJIp5MBanhz9no3A94NoRb0XA== + version "3.25.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.5.tgz#79716ba54240c6aa9ceba6eee08cf79471ba184d" + integrity sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg== core-js@^2.4.0: version "2.6.12" @@ -6330,9 +6330,9 @@ core-js@^2.4.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.5.0: - version "3.25.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.3.tgz#cbc2be50b5ddfa7981837bd8c41639f27b166593" - integrity sha512-y1hvKXmPHvm5B7w4ln1S4uc9eV/O5+iFExSRUimnvIph11uaizFR8LFMdONN8hG3P2pipUfX4Y/fR8rAEtcHcQ== + version "3.25.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.5.tgz#e86f651a2ca8a0237a5f064c2fe56cef89646e27" + integrity sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw== core-util-is@1.0.2: version "1.0.2" @@ -7253,16 +7253,16 @@ ejs@^2.6.1: integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== electron-fetch@^1.7.2: - version "1.7.4" - resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.7.4.tgz#af975ab92a14798bfaa025f88dcd2e54a7b0b769" - integrity sha512-+fBLXEy4CJWQ5bz8dyaeSG1hD6JJ15kBZyj3eh24pIVrd3hLM47H/umffrdQfS6GZ0falF0g9JT9f3Rs6AVUhw== + version "1.9.1" + resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" + integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== dependencies: encoding "^0.1.13" electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: - version "1.4.266" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.266.tgz#b2ce973eedbff309e2b98d1ed348e447bd4681fe" - integrity sha512-saJTYECxUSv7eSpnXw0XIEvUkP9x4s/x2mm3TVX7k4rIFS6f5TjBih1B5h437WzIhHQjid+d8ouQzPQskMervQ== + version "1.4.271" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.271.tgz#2d9f04f6a53c70e1bb1acfaae9c39f07ca40d290" + integrity sha512-BCPBtK07xR1/uY2HFDtl3wK2De66AW4MSiPlLrnPNxKC/Qhccxd59W73654S3y6Rb/k3hmuGJOBnhjfoutetXA== elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" @@ -12544,9 +12544,9 @@ modify-values@^1.0.0: integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== moo@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" - integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== + version "0.5.2" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.2.tgz#f9fe82473bc7c184b0d32e2215d3f6e67278733c" + integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q== move-concurrently@^1.0.1: version "1.0.1" @@ -16268,9 +16268,9 @@ socks-proxy-agent@^6.0.0: socks "^2.6.2" socks@^2.3.3, socks@^2.6.2: - version "2.7.0" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.0.tgz#f9225acdb841e874dca25f870e9130990f3913d0" - integrity sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA== + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== dependencies: ip "^2.0.0" smart-buffer "^4.2.0" From 97746b13f6dd7b2226b7a913974a34093889c079 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 20:21:56 +0200 Subject: [PATCH 051/126] fixed logger plugin tests --- .../js/plugins/http/src/__tests__/e2e/e2e.spec.ts | 5 +---- packages/js/plugins/logger/package.json | 1 + .../js/plugins/logger/src/__tests__/e2e/e2e.spec.ts | 11 ++++++++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts index fb9a4c50ed..3600135038 100644 --- a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts @@ -2,10 +2,7 @@ import { httpPlugin } from "../.."; import { Http_Response } from "../../wrap"; import { PolywrapClient } from "@polywrap/client-js"; -import { - buildUriResolver, - RecursiveResolver, -} from "@polywrap/uri-resolvers-js"; +import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; import nock from "nock"; diff --git a/packages/js/plugins/logger/package.json b/packages/js/plugins/logger/package.json index eea3d8a52f..42480532b6 100644 --- a/packages/js/plugins/logger/package.json +++ b/packages/js/plugins/logger/package.json @@ -25,6 +25,7 @@ }, "devDependencies": { "@polywrap/client-js": "0.8.0", + "@polywrap/uri-resolvers-js": "0.8.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts index 889e5e9b06..c763637b68 100644 --- a/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts @@ -1,8 +1,17 @@ import { PolywrapClient } from "@polywrap/client-js"; +import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; +import { loggerPlugin } from "../.."; describe("log method", () => { it("logs to console appropriate level", async () => { - const polywrapClient = new PolywrapClient(); + const polywrapClient = new PolywrapClient({ + resolver: RecursiveResolver.from([ + { + uri: "wrap://ens/js-logger.polywrap.eth", + package: loggerPlugin({}), + }, + ]), + }); const response = await polywrapClient.invoke({ uri: "wrap://ens/js-logger.polywrap.eth", From 3df62684ba5b81f27ca82412b33ff67c51edf39a Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 20:23:06 +0200 Subject: [PATCH 052/126] fixed ens resolver plugin tests --- .../ens-resolver/src/__tests__/e2e.spec.ts | 6 -- .../src/__tests__/helpers/getClient.ts | 98 +++++++++---------- 2 files changed, 47 insertions(+), 57 deletions(-) diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts index d8eb6f90a0..85ce85bf1f 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts @@ -30,12 +30,6 @@ describe("ENS Resolver Plugin", () => { wrapperEnsDomain = ensDomain; client = getClient(); - } - ], - plugins: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({}), }); afterAll(async () => { diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts index 80989ae4e7..946d369df3 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts +++ b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts @@ -6,7 +6,6 @@ import { ethereumPlugin, } from "@polywrap/ethereum-plugin-js"; import { - buildUriResolver, RecursiveResolver, PackageToWrapperCacheResolver, WrapperCache, @@ -18,56 +17,53 @@ import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; export const getClient = () => { - return new PolywrapClient( - { - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: [ - "wrap://ens/ipfs-resolver.polywrap.eth", - "wrap://ens/ens-resolver.polywrap.eth", - "wrap://ens/fs-resolver.polywrap.eth", - ], - }, - ], - resolver: new RecursiveResolver( - new PackageToWrapperCacheResolver( - new WrapperCache(), - buildUriResolver([ - { - uri: "wrap://ens/ipfs-resolver.polywrap.eth", - package: ipfsResolverPlugin({}), - }, - { - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({ provider: providers.ipfs }), - }, - { - uri: "wrap://ens/ethereum.polywrap.eth", - package: ethereumPlugin({ - connections: new Connections({ - networks: { - testnet: new Connection({ - provider: providers.ethereum, - }), - }, - defaultNetwork: "testnet", - }), - }), - }, - { - uri: "wrap://ens/ens-resolver.polywrap.eth", - package: ensResolverPlugin({ - addresses: { - testnet: ensAddresses.ensAddress, + return new PolywrapClient({ + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: [ + "wrap://ens/ipfs-resolver.polywrap.eth", + "wrap://ens/ens-resolver.polywrap.eth", + "wrap://ens/fs-resolver.polywrap.eth", + ], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + package: ipfsResolverPlugin({}), + }, + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }, + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ + connections: new Connections({ + networks: { + testnet: new Connection({ + provider: providers.ethereum, + }), }, + defaultNetwork: "testnet", }), - }, - new ExtendableUriResolver(), - ]) - ) - ), - }, - { noDefaults: true } - ); + }), + }, + { + uri: "wrap://ens/ens-resolver.polywrap.eth", + package: ensResolverPlugin({ + addresses: { + testnet: ensAddresses.ensAddress, + }, + }), + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }); }; From 6d63b816b134fe2b65de79df02fc33edd61b8a6b Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 20:29:39 +0200 Subject: [PATCH 053/126] fixed file system resolver plugin tests --- .../src/__tests__/e2e.spec.ts | 18 ++----- .../src/__tests__/helpers/getClient.ts | 52 +++++++++---------- 2 files changed, 29 insertions(+), 41 deletions(-) diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/e2e.spec.ts b/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/e2e.spec.ts index b1106a9153..8bc08adb0b 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/e2e.spec.ts @@ -17,15 +17,6 @@ describe("Filesystem plugin", () => { await buildWrapper(simpleWrapperPath); client = getClient(); - envs: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: providers.ipfs, - fallbackProviders: defaultIpfsProviders, - }, - }, - ], }); afterAll(async () => { @@ -41,10 +32,11 @@ describe("Filesystem plugin", () => { }, }); - expect(result.error).toBeFalsy(); - expect(result.data).toBeTruthy(); - expect(typeof result.data).toBe("string"); - expect(result.data).toEqual("test"); + if (!result.ok) { + fail("Expected response to not be an error"); + } + + expect(result.value).toEqual("test"); // get the manifest const manifest = await client.getManifest(simpleWrapperUri); diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts b/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts index 43f24408b4..9587419467 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts @@ -1,5 +1,4 @@ import { - buildUriResolver, RecursiveResolver, PackageToWrapperCacheResolver, WrapperCache, @@ -11,31 +10,28 @@ import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; import { fileSystemResolverPlugin } from "../.."; export const getClient = () => { - return new PolywrapClient( - { - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: ["wrap://ens/fs-resolver.polywrap.eth"], - }, - ], - resolver: new RecursiveResolver( - new PackageToWrapperCacheResolver( - new WrapperCache(), - buildUriResolver([ - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - package: fileSystemResolverPlugin({}), - }, - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, - new ExtendableUriResolver(), - ]) - ) - ), - }, - { noDefaults: true } - ); + return new PolywrapClient({ + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/fs-resolver.polywrap.eth"], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }); }; From cbcbe49db35e1138ea76da2546c826a19526700b Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 20:36:05 +0200 Subject: [PATCH 054/126] fixed web socket plugin tests --- .../e2e/helpers/createDefaultClient.ts | 14 +++++++ .../ws/src/__tests__/e2e/integration.spec.ts | 41 +++++++++---------- 2 files changed, 34 insertions(+), 21 deletions(-) create mode 100644 packages/js/plugins/ws/src/__tests__/e2e/helpers/createDefaultClient.ts diff --git a/packages/js/plugins/ws/src/__tests__/e2e/helpers/createDefaultClient.ts b/packages/js/plugins/ws/src/__tests__/e2e/helpers/createDefaultClient.ts new file mode 100644 index 0000000000..c8ef2098c2 --- /dev/null +++ b/packages/js/plugins/ws/src/__tests__/e2e/helpers/createDefaultClient.ts @@ -0,0 +1,14 @@ +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { Uri, Client } from "@polywrap/core-js"; + +export const createDefaultClient = ( + config: Partial> = {} +): Client => { + return new PolywrapClient( + new ClientConfigBuilder().addDefaults().add(config).buildDefault() + ); +}; diff --git a/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts b/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts index ccab92c52b..18f1587f62 100644 --- a/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts +++ b/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts @@ -1,30 +1,29 @@ import { wsPlugin } from "../.."; import { Client } from "@polywrap/core-js"; -import { PolywrapClient } from "@polywrap/client-js"; import { buildWrapper } from "@polywrap/test-env-js"; import WS from "jest-websocket-mock"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { PluginPackage } from "@polywrap/plugin-js"; +import { createDefaultClient } from "./helpers/createDefaultClient"; jest.setTimeout(360000); describe("e2e tests for WsPlugin", () => { describe("integration", () => { - let client: PolywrapClient; + let client: Client; let server: WS; const wrapperPath = `${__dirname}/integration`; const uri = `fs/${wrapperPath}/build`; beforeAll(async () => { - client = new PolywrapClient({ - resolver: buildUriResolver([ + client = createDefaultClient({ + packages: [ { uri: "wrap://ens/ws.polywrap.eth", package: wsPlugin({}), }, - ]), + ], }); await buildWrapper(wrapperPath); @@ -61,17 +60,17 @@ describe("e2e tests for WsPlugin", () => { }, })); - client = new PolywrapClient({ - resolver: buildUriResolver([ - { - uri: "wrap://ens/memory.polywrap.eth", - package: memoryPlugin, - }, + client = createDefaultClient({ + packages: [ { uri: "wrap://ens/ws.polywrap.eth", package: wsPlugin({}), }, - ]), + { + uri: "wrap://ens/memory.polywrap.eth", + package: memoryPlugin, + }, + ], }); await client.invoke({ @@ -110,17 +109,17 @@ describe("e2e tests for WsPlugin", () => { }, })); - client = new PolywrapClient({ - resolver: buildUriResolver([ - { - uri: "wrap://ens/memory.polywrap.eth", - package: memoryPlugin, - }, + client = createDefaultClient({ + packages: [ { uri: "wrap://ens/ws.polywrap.eth", package: wsPlugin({}), }, - ]), + { + uri: "wrap://ens/memory.polywrap.eth", + package: memoryPlugin, + }, + ], }); await client.invoke({ @@ -163,7 +162,7 @@ describe("e2e tests for WsPlugin", () => { }); if (!response.ok) fail(response.error); - expect(response.value).toEqual(["1","2"]) + expect(response.value).toEqual(["1", "2"]); clearTimeout(t1); clearTimeout(t2); From 4b53661e69c92be4f3aa5c4e15791615ec7d3897 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 20:36:37 +0200 Subject: [PATCH 055/126] fixed web socket plugin tests --- packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts index 1af4e750c0..7ef1c8eb59 100644 --- a/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts @@ -4,7 +4,10 @@ import { Message } from "../../wrap"; import WS from "jest-websocket-mock"; import { PolywrapClient } from "@polywrap/client-js" import { Client } from "@polywrap/core-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { + buildUriResolver, + RecursiveResolver, +} from "@polywrap/uri-resolvers-js"; import { PluginPackage } from "@polywrap/plugin-js"; describe("WebSocket plugin", () => { @@ -16,7 +19,7 @@ describe("WebSocket plugin", () => { const setup = () => { polywrapClient = new PolywrapClient({ - resolver: buildUriResolver([ + resolver: RecursiveResolver.from([ { uri: "wrap://ens/ws.polywrap.eth", package: wsPlugin({}), From e05f8a579e935bfebff83c622d2f532dfb818bbf Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 20:37:36 +0200 Subject: [PATCH 056/126] fixed file system plugin tests --- .../js/plugins/file-system/src/__tests__/e2e.spec.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts b/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts index f1bb08954d..1455005dcb 100644 --- a/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts @@ -1,6 +1,6 @@ import { fileSystemPlugin } from "../index"; import { PolywrapClient } from "@polywrap/client-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; import { FileSystem_Module, FileSystem_EncodingEnum } from "../wrap"; import fs from "fs"; import path from "path"; @@ -27,12 +27,10 @@ describe("FileSystem plugin", () => { await cleanUpTempFiles(); client = new PolywrapClient({ - resolver: buildUriResolver([ - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, - ]), + resolver: RecursiveResolver.from({ + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }), }); }); From d2598486fe57d07d3f99d24c33f34f8b73fa2105 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 20:39:05 +0200 Subject: [PATCH 057/126] moved createDefaultClient to deployer directories --- .../createDefaultClient.ts | 14 ++++++++++++++ .../ens-recursive-name-register/index.ts | 2 +- .../deploy-modules/ens/createDefaultClient.ts | 14 ++++++++++++++ .../src/lib/defaults/deploy-modules/ens/index.ts | 2 +- 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/createDefaultClient.ts create mode 100644 packages/cli/src/lib/defaults/deploy-modules/ens/createDefaultClient.ts diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/createDefaultClient.ts b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/createDefaultClient.ts new file mode 100644 index 0000000000..fa851850c2 --- /dev/null +++ b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/createDefaultClient.ts @@ -0,0 +1,14 @@ +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; +import { Uri, Client } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; + +export const createDefaultClient = ( + config: Partial> = {} +): Client => { + return new PolywrapClient( + new ClientConfigBuilder().addDefaults().add(config).buildDefault() + ); +}; diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts index 472bea9a14..d11bb78d5b 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts @@ -1,7 +1,6 @@ /* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable @typescript-eslint/no-var-requires */ import { Deployer } from "../../../deploy"; -import { createDefaultClient } from "../../../../utils/createDefaultClient"; import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; @@ -12,6 +11,7 @@ import { Connection, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; +import { createDefaultClient } from "./createDefaultClient"; class ENSRecursiveNameRegisterPublisher implements Deployer { async execute( diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens/createDefaultClient.ts b/packages/cli/src/lib/defaults/deploy-modules/ens/createDefaultClient.ts new file mode 100644 index 0000000000..fa851850c2 --- /dev/null +++ b/packages/cli/src/lib/defaults/deploy-modules/ens/createDefaultClient.ts @@ -0,0 +1,14 @@ +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; +import { Uri, Client } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; + +export const createDefaultClient = ( + config: Partial> = {} +): Client => { + return new PolywrapClient( + new ClientConfigBuilder().addDefaults().add(config).buildDefault() + ); +}; diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts index dbde98e789..bb36f2686d 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts @@ -1,7 +1,6 @@ /* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable @typescript-eslint/no-var-requires */ import { Deployer } from "../../../deploy"; -import { createDefaultClient } from "../../../../utils/createDefaultClient"; import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; @@ -12,6 +11,7 @@ import { ethereumPlugin, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; +import { createDefaultClient } from "./createDefaultClient"; const contentHash = require("content-hash"); From 9a032cb1653bb0fd857cb80ae89ac8184ce6939d Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 20:41:15 +0200 Subject: [PATCH 058/126] lint fix --- .../deploy-modules/ens-recursive-name-register/index.ts | 2 +- packages/cli/src/lib/defaults/deploy-modules/ens/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts index d11bb78d5b..27068785ba 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable @typescript-eslint/no-var-requires */ import { Deployer } from "../../../deploy"; +import { createDefaultClient } from "./createDefaultClient"; import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; @@ -11,7 +12,6 @@ import { Connection, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; -import { createDefaultClient } from "./createDefaultClient"; class ENSRecursiveNameRegisterPublisher implements Deployer { async execute( diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts index bb36f2686d..08d785edfc 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable @typescript-eslint/no-var-requires */ import { Deployer } from "../../../deploy"; +import { createDefaultClient } from "./createDefaultClient"; import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; @@ -11,7 +12,6 @@ import { ethereumPlugin, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; -import { createDefaultClient } from "./createDefaultClient"; const contentHash = require("content-hash"); From 71f76b9a12770a39238139a4a62e74f6fa409b0f Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 21:38:37 +0200 Subject: [PATCH 059/126] fixed http resolver tests --- .../http-resolver/src/__tests__/e2e.spec.ts | 40 ++++++++----------- .../src/__tests__/helpers/getClient.ts | 37 +++++++++++++++++ 2 files changed, 54 insertions(+), 23 deletions(-) create mode 100644 packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/helpers/getClient.ts diff --git a/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/e2e.spec.ts b/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/e2e.spec.ts index 0ad6a63c58..3f3282adb0 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/e2e.spec.ts @@ -2,10 +2,9 @@ import { PolywrapClient } from "@polywrap/client-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { buildAndDeployWrapperToHttp, runCLI, providers } from "@polywrap/test-env-js"; -import { httpPlugin } from "@polywrap/http-plugin-js"; import axios from "axios"; -import { httpResolverPlugin } from ".."; import { deserializeWrapManifest } from "@polywrap/wrap-manifest-types-js"; +import { getClient } from "./helpers/getClient"; jest.setTimeout(300000); @@ -17,7 +16,7 @@ describe("HTTP Plugin", () => { beforeAll(async () => { const { exitCode, stderr } = await runCLI({ - args: ["infra", "up", "--modules=http", "--verbose"] + args: ["infra", "up", "--modules=http", "--verbose"], }); if (exitCode !== 0) { @@ -32,23 +31,12 @@ describe("HTTP Plugin", () => { wrapperHttpUri = uri; - client = new PolywrapClient({ - plugins: [ - { - uri: "wrap://ens/http.polywrap.eth", - plugin: httpPlugin({}) - }, - { - uri: "wrap://ens/http-uri-resolver.polywrap.eth", - plugin: httpResolverPlugin({}) - } - ], - }); + client = getClient(); }); afterAll(async () => { const { exitCode, stderr } = await runCLI({ - args: ["infra", "down", "--modules=http", "--verbose"] + args: ["infra", "down", "--modules=http", "--verbose"], }); if (exitCode !== 0) { @@ -68,10 +56,13 @@ describe("HTTP Plugin", () => { if (result.value.type !== "wrapper") { fail("Expected response to be a wrapper"); } - - const { data } = await axios.get(`${providers.http}/wrappers/local/${wrapperName}/wrap.info`, { - responseType: "arraybuffer" - }); + + const { data } = await axios.get( + `${providers.http}/wrappers/local/${wrapperName}/wrap.info`, + { + responseType: "arraybuffer", + } + ); const expectedManifest = await deserializeWrapManifest(data); const manifest = await result.value.wrapper.getManifest({}, client); @@ -93,9 +84,12 @@ describe("HTTP Plugin", () => { fail("Expected response to be a wrapper"); } - const { data } = await axios.get(`${providers.http}/wrappers/local/${wrapperName}/wrap.info`, { - responseType: "arraybuffer" - }); + const { data } = await axios.get( + `${providers.http}/wrappers/local/${wrapperName}/wrap.info`, + { + responseType: "arraybuffer", + } + ); const expectedManifest = await deserializeWrapManifest(data); const manifest = await result.value.wrapper.getManifest({}, client); diff --git a/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/helpers/getClient.ts b/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/helpers/getClient.ts new file mode 100644 index 0000000000..e3dcf17a95 --- /dev/null +++ b/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/helpers/getClient.ts @@ -0,0 +1,37 @@ +import { + RecursiveResolver, + PackageToWrapperCacheResolver, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; +import { coreInterfaceUris } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; +import { httpPlugin } from "@polywrap/http-plugin-js"; +import { httpResolverPlugin } from "../.."; + +export const getClient = () => { + return new PolywrapClient({ + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/http-uri-resolver.polywrap.eth"], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/http.polywrap.eth", + package: httpPlugin({}), + }, + { + uri: "wrap://ens/http-uri-resolver.polywrap.eth", + package: httpResolverPlugin({}), + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }); +}; From 404e1d4007635a62e1ade09c0b379e0db3069b5b Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 21:39:45 +0200 Subject: [PATCH 060/126] fixed ipfs resolver tests --- .../ipfs-resolver/src/__tests__/e2e.spec.ts | 59 ++++------------ .../__tests__/helpers/getClientWithIpfs.ts | 68 ++++++++++--------- .../polywrap.wasm-linked.build.yaml | 11 --- .../assemblyscript/polywrap.wasm-linked.yaml | 9 --- 4 files changed, 50 insertions(+), 97 deletions(-) delete mode 100644 packages/templates/wasm/assemblyscript/polywrap.wasm-linked.build.yaml delete mode 100644 packages/templates/wasm/assemblyscript/polywrap.wasm-linked.yaml diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts index 21b6c238b8..36d157223d 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts @@ -1,57 +1,23 @@ -import { PolywrapClient } from "@polywrap/client-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { import { getClientWithIpfs } from "./helpers/getClientWithIpfs"; +import { Result } from "@polywrap/core-js"; +import { ResultOk } from "@polywrap/result"; +import { buildAndDeployWrapper, initTestEnvironment, providers, stopTestEnvironment, } from "@polywrap/test-env-js"; -import { IpfsClient } from "./helpers/IpfsClient"; -import { createIpfsClient } from "./helpers/createIpfsClient"; -import { Result } from "@polywrap/core-js"; -import { ResultOk } from "@polywrap/result"; jest.setTimeout(300000); describe("IPFS Plugin", () => { let ipfsResolverUri = "wrap://ens/ipfs-resolver.polywrap.eth"; - let ipfs: IpfsClient; - let wrapperIpfsCid: string; - const getClientConfigWithIpfsResolverEnv = (env: Record) => { - return { - plugins: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({}), - }, - { - uri: ipfsResolverUri, - plugin: ipfsResolverPlugin({}), - }, - ], - envs: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: providers.ipfs, - }, - }, - { - uri: "wrap://ens/ipfs-resolver.polywrap.eth", - env: env, - }, - ], - }; - }; - beforeAll(async () => { await initTestEnvironment(); - ipfs = createIpfsClient(providers.ipfs); - let { ipfsCid } = await buildAndDeployWrapper({ wrapperAbsPath: `${GetPathToTestWrappers()}/wasm-as/simple-storage`, ipfsProvider: providers.ipfs, @@ -60,7 +26,6 @@ describe("IPFS Plugin", () => { }); wrapperIpfsCid = ipfsCid; - client = getClientWithIpfs(); }); afterAll(async () => { @@ -68,7 +33,7 @@ describe("IPFS Plugin", () => { }); it("Should successfully resolve a deployed wrapper - e2e", async () => { - const client = new PolywrapClient(getClientConfigWithIpfsResolverEnv({})); + const client = getClientWithIpfs({}); const wrapperUri = `ipfs/${wrapperIpfsCid}`; @@ -102,8 +67,9 @@ describe("IPFS Plugin", () => { env: Record, timeout: number ) => { - const nonExistentFileCid = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - const client = new PolywrapClient(getClientConfigWithIpfsResolverEnv(env)); + const nonExistentFileCid = + "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + const client = getClientWithIpfs(env); const getFilePromise = client.invoke({ uri: ipfsResolverUri, @@ -127,7 +93,7 @@ describe("IPFS Plugin", () => { if (!fasterRaceResult.ok) fail(fasterRaceResult.error); const expectedFasterResult = await fasterRacePromise; - if (!expectedFasterResult.ok) fail(expectedFasterResult.error) + if (!expectedFasterResult.ok) fail(expectedFasterResult.error); expect(fasterRaceResult.value).toStrictEqual(expectedFasterResult.value); if (!slowerRaceResult.ok) fail(slowerRaceResult.error); @@ -156,7 +122,7 @@ describe("IPFS Plugin", () => { checkIfExists: timeout, tryResolveUri: timeout, }, - skipCheckIfExists: true + skipCheckIfExists: true, }, timeout ); @@ -167,8 +133,9 @@ describe("IPFS Plugin", () => { env: Record, timeout: number ) => { - const nonExistentFileCid = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - const client = new PolywrapClient(getClientConfigWithIpfsResolverEnv(env)); + const nonExistentFileCid = + "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + const client = getClientWithIpfs(env); const getFilePromise = client.invoke({ uri: ipfsResolverUri, @@ -193,7 +160,7 @@ describe("IPFS Plugin", () => { if (!fasterRaceResult.ok) fail(fasterRaceResult.error); const expectedFasterResult = await fasterRacePromise; - if (!expectedFasterResult.ok) fail(expectedFasterResult.error) + if (!expectedFasterResult.ok) fail(expectedFasterResult.error); expect(fasterRaceResult.value).toStrictEqual(expectedFasterResult.value); if (!slowerRaceResult.ok) fail(slowerRaceResult.error); diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts index 74f5cd06f8..e2966273dc 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts @@ -1,6 +1,4 @@ -import { providers } from "@polywrap/test-env-js"; import { - buildUriResolver, RecursiveResolver, PackageToWrapperCacheResolver, WrapperCache, @@ -9,36 +7,44 @@ import { coreInterfaceUris } from "@polywrap/core-js"; import { PolywrapClient } from "@polywrap/client-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; +import { providers } from "@polywrap/test-env-js"; import { ipfsResolverPlugin } from "../.."; -export const getClientWithIpfs = () => { - return new PolywrapClient( - { - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: ["wrap://ens/ipfs-resolver.polywrap.eth"], +export const getClientWithIpfs = (env: Record) => { + return new PolywrapClient({ + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { + provider: providers.ipfs, }, - ], - resolver: new RecursiveResolver( - new PackageToWrapperCacheResolver( - new WrapperCache(), - buildUriResolver([ - { - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({ - provider: providers.ipfs, - }), - }, - { - uri: "wrap://ens/ipfs-resolver.polywrap.eth", - package: ipfsResolverPlugin({}), - }, - new ExtendableUriResolver(), - ]) - ) - ), - }, - { noDefaults: true } - ); + }, + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + env: env, + }, + ], + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/ipfs-resolver.polywrap.eth"], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }, + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + package: ipfsResolverPlugin({}), + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }); }; diff --git a/packages/templates/wasm/assemblyscript/polywrap.wasm-linked.build.yaml b/packages/templates/wasm/assemblyscript/polywrap.wasm-linked.build.yaml deleted file mode 100644 index 959488ab0c..0000000000 --- a/packages/templates/wasm/assemblyscript/polywrap.wasm-linked.build.yaml +++ /dev/null @@ -1,11 +0,0 @@ -format: 0.1.0 -docker: - name: template-wasm-as -config: - node_version: "16.13.0" - include: - - ./package.json - - ./src -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../wasm/as diff --git a/packages/templates/wasm/assemblyscript/polywrap.wasm-linked.yaml b/packages/templates/wasm/assemblyscript/polywrap.wasm-linked.yaml deleted file mode 100644 index 294a567ae7..0000000000 --- a/packages/templates/wasm/assemblyscript/polywrap.wasm-linked.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.2.0 -project: - name: template-wasm-as - type: wasm/assemblyscript -source: - module: ./src/index.ts - schema: ./src/schema.graphql -extensions: - build: ./polywrap.wasm-linked.build.yaml From f32738a9334128de619e1095e08afdc97da7f218 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 5 Oct 2022 22:10:37 +0200 Subject: [PATCH 061/126] regenerated yarn lock --- yarn.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/yarn.lock b/yarn.lock index 59680b781e..4e98305a35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3703,9 +3703,9 @@ integrity sha512-wH6Tu9mbiOt0n5EvdoWy0VGQaJMHfLIxY/6wS0xLC7CV1taM6gESEzcYy0ZlWvxxiiljYvfDIvz4hHbUUDRlhw== "@types/node@*": - version "18.8.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.1.tgz#33e6759935f7a82821b72fb936e66f6b99a36173" - integrity sha512-vuYaNuEIbOYLTLUAJh50ezEbvxrD43iby+lpUA2aa148Nh5kX/AVO/9m1Ahmbux2iU5uxJTNF9g2Y+31uml7RQ== + version "18.8.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.2.tgz#17d42c6322d917764dd3d2d3a10d7884925de067" + integrity sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA== "@types/node@12.12.26": version "12.12.26" @@ -5593,9 +5593,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: - version "1.0.30001415" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001415.tgz#fd7ea96e9e94c181a7f56e7571efb43d92b860cc" - integrity sha512-ER+PfgCJUe8BqunLGWd/1EY4g8AzQcsDAVzdtMGKVtQEmKAwaFfU6vb7EAVIqTMYsqxBorYZi2+22Iouj/y7GQ== + version "1.0.30001416" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001416.tgz#29692af8a6a11412f2d3cf9a59d588fcdd21ce4c" + integrity sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA== capture-exit@^2.0.0: version "2.0.0" @@ -7260,9 +7260,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: - version "1.4.271" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.271.tgz#2d9f04f6a53c70e1bb1acfaae9c39f07ca40d290" - integrity sha512-BCPBtK07xR1/uY2HFDtl3wK2De66AW4MSiPlLrnPNxKC/Qhccxd59W73654S3y6Rb/k3hmuGJOBnhjfoutetXA== + version "1.4.272" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.272.tgz#cedebaeec5d9879da85b127e65a55c6b4c58344e" + integrity sha512-KS6gPPGNrzpVv9HzFVq+Etd0AjZEPr5pvaTBn2yD6KV4+cKW4I0CJoJNgmTG6gUQPAMZ4wIPtcOuoou3qFAZCA== elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" @@ -15974,9 +15974,9 @@ semver@7.3.5: lru-cache "^6.0.0" semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" @@ -17379,9 +17379,9 @@ typescript@^4.0: integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== uglify-js@^3.1.4: - version "3.17.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.2.tgz#f55f668b9a64b213977ae688703b6bbb7ca861c6" - integrity sha512-bbxglRjsGQMchfvXZNusUcYgiB9Hx2K4AHYXQy2DITZ9Rd+JzhX7+hoocE5Winr7z2oHvPsekkBwXtigvxevXg== + version "3.17.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.3.tgz#f0feedf019c4510f164099e8d7e72ff2d7304377" + integrity sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg== uid-number@0.0.6: version "0.0.6" @@ -17546,9 +17546,9 @@ upath@^2.0.1: integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== update-browserslist-db@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" - integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: escalade "^3.1.1" picocolors "^1.0.0" From e8465b3eb4cfcf98fc09949a270097a16098bb17 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Thu, 6 Oct 2022 21:40:45 +0200 Subject: [PATCH 062/126] fixed issues after merge with remote --- .../cli/src/__tests__/unit/jobrunner.spec.ts | 10 ++-------- packages/cli/src/commands/build.ts | 12 ++++++++--- packages/cli/src/commands/codegen.ts | 12 ++++++++--- packages/cli/src/commands/docgen.ts | 12 ++++++++--- packages/cli/src/commands/run.ts | 8 ++++---- .../src/lib/helpers/validate-client-config.ts | 6 ++++-- .../src/lib/option-parsers/client-config.ts | 17 +++++----------- packages/cli/src/lib/workflow/JobRunner.ts | 20 ++++++++++--------- packages/cli/src/lib/workflow/types.ts | 5 +++-- packages/js/plugin-js/src/PluginModule.ts | 3 +-- .../src/utils/PluginModuleWithMethods.ts | 9 ++++----- yarn.lock | 12 +++++------ 12 files changed, 67 insertions(+), 59 deletions(-) diff --git a/packages/cli/src/__tests__/unit/jobrunner.spec.ts b/packages/cli/src/__tests__/unit/jobrunner.spec.ts index 7b04ee7250..6fba4fc844 100644 --- a/packages/cli/src/__tests__/unit/jobrunner.spec.ts +++ b/packages/cli/src/__tests__/unit/jobrunner.spec.ts @@ -3,28 +3,22 @@ import { buildWrapper } from "@polywrap/test-env-js"; import { testCases } from "./jobrunner-test-cases"; import { JobRunner } from "../../lib"; import path from "path"; -import { Client } from "@polywrap/core-js"; -import { createDefaultClient } from "../../utils/createDefaultClient"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; jest.setTimeout(200000); describe("workflow JobRunner", () => { - let client: Client; - beforeAll(async () => { await buildWrapper( path.join(GetPathToTestWrappers(), "wasm-as", "simple-calculator") ); - - client = createDefaultClient(); }); for (const testCase of testCases) { test(testCase.name, async () => { const ids = Object.keys(testCase.workflow.jobs); - const jobRunner = new JobRunner(client, testCase.onExecution); + const jobRunner = new JobRunner(new ClientConfigBuilder().addDefaults().getConfig(), testCase.onExecution); await jobRunner.run(testCase.workflow.jobs, ids); }); } }); - diff --git a/packages/cli/src/commands/build.ts b/packages/cli/src/commands/build.ts index e18ecc4272..c53a2db57c 100644 --- a/packages/cli/src/commands/build.ts +++ b/packages/cli/src/commands/build.ts @@ -18,7 +18,11 @@ import { import { print } from "gluegun"; import path from "path"; import readline from "readline"; -import { PolywrapClient, PolywrapClientConfig } from "@polywrap/client-js"; +import { PolywrapClient, Uri } from "@polywrap/client-js"; +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; const defaultOutputDir = "./build"; const defaultManifestStr = defaultPolywrapManifest.join(" | "); @@ -27,7 +31,7 @@ const pathStr = intlMsg.commands_build_options_o_path(); type BuildCommandOptions = { manifestFile: string; outputDir: string; - clientConfig: Partial; + clientConfig: Partial>; codegen: boolean; // defaults to true watch?: boolean; verbose?: boolean; @@ -83,7 +87,9 @@ async function run(options: BuildCommandOptions) { } = options; // Get Client - const client = new PolywrapClient(clientConfig); + const client = new PolywrapClient( + new ClientConfigBuilder().add(clientConfig).buildDefault() + ); // Ensure docker is installed if (!isDockerInstalled()) { diff --git a/packages/cli/src/commands/codegen.ts b/packages/cli/src/commands/codegen.ts index 77de543739..9c293b7e29 100644 --- a/packages/cli/src/commands/codegen.ts +++ b/packages/cli/src/commands/codegen.ts @@ -14,9 +14,13 @@ import { defaultProjectManifestFiles, } from "../lib"; -import { PolywrapClient, PolywrapClientConfig } from "@polywrap/client-js"; +import { PolywrapClient, Uri } from "@polywrap/client-js"; import path from "path"; import fs from "fs"; +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; const defaultCodegenDir = "./src/wrap"; const defaultPublishDir = "./build"; @@ -29,7 +33,7 @@ type CodegenCommandOptions = { codegenDir: string; publishDir: string; script?: string; - clientConfig: Partial; + clientConfig: Partial>; }; export const codegen: Command = { @@ -90,7 +94,9 @@ async function run(options: CodegenCommandOptions) { } = options; // Get Client - const client = new PolywrapClient(clientConfig); + const client = new PolywrapClient( + new ClientConfigBuilder().add(clientConfig).buildDefault() + ); const project = await getProjectFromManifest(manifestFile); diff --git a/packages/cli/src/commands/docgen.ts b/packages/cli/src/commands/docgen.ts index 97d0d2cfbc..83281b443e 100644 --- a/packages/cli/src/commands/docgen.ts +++ b/packages/cli/src/commands/docgen.ts @@ -21,9 +21,13 @@ import { scriptPath as jsdocScriptPath } from "../lib/docgen/jsdoc"; import { scriptPath as schemaScriptPath } from "../lib/docgen/schema"; import path from "path"; -import { PolywrapClient, PolywrapClientConfig } from "@polywrap/client-js"; +import { PolywrapClient, Uri } from "@polywrap/client-js"; import chalk from "chalk"; import { Argument } from "commander"; +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; const commandToPathMap: Record = { schema: schemaScriptPath, @@ -44,7 +48,7 @@ const pathStr = intlMsg.commands_codegen_options_o_path(); type DocgenCommandOptions = { manifestFile: string; docgenDir: string; - clientConfig: Partial; + clientConfig: Partial>; imports: boolean; }; @@ -124,7 +128,9 @@ async function run(command: DocType, options: DocgenCommandOptions) { const customScript = require.resolve(commandToPathMap[command]); // Get client - const client = new PolywrapClient(clientConfig); + const client = new PolywrapClient( + new ClientConfigBuilder().add(clientConfig).buildDefault() + ); // Get project let project: Project; diff --git a/packages/cli/src/commands/run.ts b/packages/cli/src/commands/run.ts index 9af3e514b1..98360d5826 100644 --- a/packages/cli/src/commands/run.ts +++ b/packages/cli/src/commands/run.ts @@ -17,13 +17,14 @@ import { parseManifestFileOption, } from "../lib"; -import { PolywrapClient, PolywrapClientConfig } from "@polywrap/client-js"; +import { Uri } from "@polywrap/client-js"; import path from "path"; import yaml from "js-yaml"; import fs from "fs"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; type WorkflowCommandOptions = { - clientConfig: Partial; + clientConfig: Partial>; manifest: string; jobs?: string[]; validationScript?: string; @@ -77,7 +78,6 @@ export const run: Command = { const _run = async (options: WorkflowCommandOptions) => { const { manifest, clientConfig, outputFile, quiet, jobs } = options; - const client = new PolywrapClient(clientConfig); const manifestPath = path.resolve(manifest); const workflow = await loadWorkflowManifest(manifestPath, quiet); @@ -108,7 +108,7 @@ const _run = async (options: WorkflowCommandOptions) => { } }; - const jobRunner = new JobRunner(client, onExecution); + const jobRunner = new JobRunner(clientConfig, onExecution); await jobRunner.run(workflow.jobs, jobs ?? Object.keys(workflow.jobs)); if (outputFile) { diff --git a/packages/cli/src/lib/helpers/validate-client-config.ts b/packages/cli/src/lib/helpers/validate-client-config.ts index 770e4a2842..9e3ba5ed55 100644 --- a/packages/cli/src/lib/helpers/validate-client-config.ts +++ b/packages/cli/src/lib/helpers/validate-client-config.ts @@ -3,12 +3,14 @@ import { intlMsg } from "../intl"; import { Env, InterfaceImplementations, - Uri, IUriRedirect, + Uri, } from "@polywrap/client-js"; import { CustomClientConfig } from "@polywrap/client-config-builder-js"; -export function validateRedirects(redirects: readonly UriRedirect[]): void { +export function validateRedirects( + redirects: readonly IUriRedirect[] +): void { if (!Array.isArray(redirects)) { throw new Error(intlMsg.commands_run_error_redirectsExportNotArray()); } diff --git a/packages/cli/src/lib/option-parsers/client-config.ts b/packages/cli/src/lib/option-parsers/client-config.ts index de33846fc7..a62e5b2f8e 100644 --- a/packages/cli/src/lib/option-parsers/client-config.ts +++ b/packages/cli/src/lib/option-parsers/client-config.ts @@ -3,11 +3,7 @@ import { intlMsg } from "../intl"; import { importTypescriptModule } from "../system"; import { getTestEnvCustomConfig } from "../test-env"; -import { - ClientConfig, - executeMaybeAsyncFunction, - Uri, -} from "@polywrap/core-js"; +import { Uri } from "@polywrap/core-js"; import { ClientConfigBuilder, CustomClientConfig, @@ -16,9 +12,8 @@ import path from "path"; export async function parseClientConfigOption( clientConfig: string | undefined -): Promise>> { +): Promise>> { const builder = new ClientConfigBuilder().addDefaults(); - let config: ClientConfig; try { builder.add(getTestEnvCustomConfig()); @@ -51,18 +46,16 @@ export async function parseClientConfigOption( process.exit(1); } - const customConfig = await configModule.getCustomConfig(); + const customConfig = await configModule.getCustomConfig(); try { validateClientConfig(customConfig); - config = builder.add(customConfig).buildDefault(); + return builder.add(customConfig).getConfig(); } catch (e) { console.error(e.message); process.exit(1); } } else { - config = builder.buildDefault(); + return builder.getConfig(); } - - return config; } diff --git a/packages/cli/src/lib/workflow/JobRunner.ts b/packages/cli/src/lib/workflow/JobRunner.ts index b657fdc280..bd3c355c21 100644 --- a/packages/cli/src/lib/workflow/JobRunner.ts +++ b/packages/cli/src/lib/workflow/JobRunner.ts @@ -1,23 +1,25 @@ import { JobResult, JobStatus, Step } from "./types"; import { PolywrapClient } from "@polywrap/client-js"; -import { MaybeAsync } from "@polywrap/core-js"; -import { - Client, - executeMaybeAsyncFunction, - MaybeAsync, -} from "@polywrap/core-js"; +import { Client, MaybeAsync, Uri } from "@polywrap/core-js"; import { WorkflowJobs } from "@polywrap/polywrap-manifest-types-js"; -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; export class JobRunner { private jobOutput: Map; + private client: Client; constructor( - private client: Client, + private clientConfig: Partial>, private onExecution?: (id: string, JobResult: JobResult) => MaybeAsync ) { this.jobOutput = new Map(); + this.client = new PolywrapClient( + new ClientConfigBuilder().add(this.clientConfig).buildDefault() + ); } async run(jobs: WorkflowJobs, ids: string[]): Promise { @@ -183,7 +185,7 @@ export class JobRunner { if (step.config) { const finalConfig = new ClientConfigBuilder() - .add(this.client.getConfig()) + .add(this.clientConfig) .add(step.config) .buildDefault(); diff --git a/packages/cli/src/lib/workflow/types.ts b/packages/cli/src/lib/workflow/types.ts index cce561c138..96c2182099 100644 --- a/packages/cli/src/lib/workflow/types.ts +++ b/packages/cli/src/lib/workflow/types.ts @@ -1,4 +1,5 @@ -import { ClientConfig, Uri } from "@polywrap/core-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { Uri } from "@polywrap/core-js"; export interface Step { uri: string | Uri; @@ -6,7 +7,7 @@ export interface Step { args?: { [k: string]: unknown; }; - config?: ClientConfig; + config?: CustomClientConfig; } export enum JobStatus { diff --git a/packages/js/plugin-js/src/PluginModule.ts b/packages/js/plugin-js/src/PluginModule.ts index 074bab626b..e86e645d43 100644 --- a/packages/js/plugin-js/src/PluginModule.ts +++ b/packages/js/plugin-js/src/PluginModule.ts @@ -1,8 +1,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ import { PluginMethod } from "./PluginMethod"; -import { Client, MaybeAsync } from "."; -import { Client, executeMaybeAsyncFunction } from "@polywrap/core-js"; +import { Client } from "@polywrap/core-js"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; export abstract class PluginModule< diff --git a/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts b/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts index b332aac9f6..2add3f36dd 100644 --- a/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts +++ b/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts @@ -4,7 +4,7 @@ import { PluginMethod } from "../PluginMethod"; import { PluginModule } from "../PluginModule"; import { GetPluginMethodsFunc } from "./GetPluginMethodsFunc"; -import { Client, executeMaybeAsyncFunction } from "@polywrap/core-js"; +import { Client } from "@polywrap/core-js"; import { Result, ResultOk } from "@polywrap/result"; export class PluginModuleWithMethods< @@ -32,9 +32,8 @@ export class PluginModuleWithMethods< throw Error(`Plugin method "${method}" must be of type 'function'`); } - const data = await executeMaybeAsyncFunction( - fn.bind(this, args, client) - ); + const data = await fn(args, client); + return ResultOk(data); } @@ -46,6 +45,6 @@ export class PluginModuleWithMethods< this )[method] as PluginMethod; - return fn; + return fn.bind(this); } } diff --git a/yarn.lock b/yarn.lock index 9422bdcab1..14218f8e4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7260,9 +7260,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: - version "1.4.272" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.272.tgz#cedebaeec5d9879da85b127e65a55c6b4c58344e" - integrity sha512-KS6gPPGNrzpVv9HzFVq+Etd0AjZEPr5pvaTBn2yD6KV4+cKW4I0CJoJNgmTG6gUQPAMZ4wIPtcOuoou3qFAZCA== + version "1.4.274" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.274.tgz#74369ac6f020c3cea7c77ec040ddf159fe226233" + integrity sha512-Fgn7JZQzq85I81FpKUNxVLAzoghy8JZJ4NIue+YfUYBbu1AkpgzFvNwzF/ZNZH9ElkmJD0TSWu1F2gTpw/zZlg== elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" @@ -10330,9 +10330,9 @@ istanbul-lib-instrument@^4.0.3: semver "^6.3.0" istanbul-lib-instrument@^5.0.4: - version "5.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" - integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" From f3e3aeb55dc1827924e141f10ed8897818f97f6a Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Thu, 6 Oct 2022 22:55:06 +0200 Subject: [PATCH 063/126] renamed plugin-js directory to plugin --- packages/js/{plugin-js => plugin}/README.md | 0 packages/js/{plugin-js => plugin}/jest.config.js | 0 packages/js/{plugin-js => plugin}/package.json | 0 packages/js/{plugin-js => plugin}/src/PluginFactory.ts | 0 packages/js/{plugin-js => plugin}/src/PluginMethod.ts | 0 packages/js/{plugin-js => plugin}/src/PluginModule.ts | 0 packages/js/{plugin-js => plugin}/src/PluginPackage.ts | 0 packages/js/{plugin-js => plugin}/src/PluginWrapper.ts | 0 packages/js/{plugin-js => plugin}/src/index.ts | 0 .../js/{plugin-js => plugin}/src/utils/GetPluginMethodsFunc.ts | 0 .../js/{plugin-js => plugin}/src/utils/PluginModuleWithMethods.ts | 0 packages/js/{plugin-js => plugin}/src/utils/index.ts | 0 packages/js/{plugin-js => plugin}/tsconfig.build.json | 0 packages/js/{plugin-js => plugin}/tsconfig.json | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename packages/js/{plugin-js => plugin}/README.md (100%) rename packages/js/{plugin-js => plugin}/jest.config.js (100%) rename packages/js/{plugin-js => plugin}/package.json (100%) rename packages/js/{plugin-js => plugin}/src/PluginFactory.ts (100%) rename packages/js/{plugin-js => plugin}/src/PluginMethod.ts (100%) rename packages/js/{plugin-js => plugin}/src/PluginModule.ts (100%) rename packages/js/{plugin-js => plugin}/src/PluginPackage.ts (100%) rename packages/js/{plugin-js => plugin}/src/PluginWrapper.ts (100%) rename packages/js/{plugin-js => plugin}/src/index.ts (100%) rename packages/js/{plugin-js => plugin}/src/utils/GetPluginMethodsFunc.ts (100%) rename packages/js/{plugin-js => plugin}/src/utils/PluginModuleWithMethods.ts (100%) rename packages/js/{plugin-js => plugin}/src/utils/index.ts (100%) rename packages/js/{plugin-js => plugin}/tsconfig.build.json (100%) rename packages/js/{plugin-js => plugin}/tsconfig.json (100%) diff --git a/packages/js/plugin-js/README.md b/packages/js/plugin/README.md similarity index 100% rename from packages/js/plugin-js/README.md rename to packages/js/plugin/README.md diff --git a/packages/js/plugin-js/jest.config.js b/packages/js/plugin/jest.config.js similarity index 100% rename from packages/js/plugin-js/jest.config.js rename to packages/js/plugin/jest.config.js diff --git a/packages/js/plugin-js/package.json b/packages/js/plugin/package.json similarity index 100% rename from packages/js/plugin-js/package.json rename to packages/js/plugin/package.json diff --git a/packages/js/plugin-js/src/PluginFactory.ts b/packages/js/plugin/src/PluginFactory.ts similarity index 100% rename from packages/js/plugin-js/src/PluginFactory.ts rename to packages/js/plugin/src/PluginFactory.ts diff --git a/packages/js/plugin-js/src/PluginMethod.ts b/packages/js/plugin/src/PluginMethod.ts similarity index 100% rename from packages/js/plugin-js/src/PluginMethod.ts rename to packages/js/plugin/src/PluginMethod.ts diff --git a/packages/js/plugin-js/src/PluginModule.ts b/packages/js/plugin/src/PluginModule.ts similarity index 100% rename from packages/js/plugin-js/src/PluginModule.ts rename to packages/js/plugin/src/PluginModule.ts diff --git a/packages/js/plugin-js/src/PluginPackage.ts b/packages/js/plugin/src/PluginPackage.ts similarity index 100% rename from packages/js/plugin-js/src/PluginPackage.ts rename to packages/js/plugin/src/PluginPackage.ts diff --git a/packages/js/plugin-js/src/PluginWrapper.ts b/packages/js/plugin/src/PluginWrapper.ts similarity index 100% rename from packages/js/plugin-js/src/PluginWrapper.ts rename to packages/js/plugin/src/PluginWrapper.ts diff --git a/packages/js/plugin-js/src/index.ts b/packages/js/plugin/src/index.ts similarity index 100% rename from packages/js/plugin-js/src/index.ts rename to packages/js/plugin/src/index.ts diff --git a/packages/js/plugin-js/src/utils/GetPluginMethodsFunc.ts b/packages/js/plugin/src/utils/GetPluginMethodsFunc.ts similarity index 100% rename from packages/js/plugin-js/src/utils/GetPluginMethodsFunc.ts rename to packages/js/plugin/src/utils/GetPluginMethodsFunc.ts diff --git a/packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts b/packages/js/plugin/src/utils/PluginModuleWithMethods.ts similarity index 100% rename from packages/js/plugin-js/src/utils/PluginModuleWithMethods.ts rename to packages/js/plugin/src/utils/PluginModuleWithMethods.ts diff --git a/packages/js/plugin-js/src/utils/index.ts b/packages/js/plugin/src/utils/index.ts similarity index 100% rename from packages/js/plugin-js/src/utils/index.ts rename to packages/js/plugin/src/utils/index.ts diff --git a/packages/js/plugin-js/tsconfig.build.json b/packages/js/plugin/tsconfig.build.json similarity index 100% rename from packages/js/plugin-js/tsconfig.build.json rename to packages/js/plugin/tsconfig.build.json diff --git a/packages/js/plugin-js/tsconfig.json b/packages/js/plugin/tsconfig.json similarity index 100% rename from packages/js/plugin-js/tsconfig.json rename to packages/js/plugin/tsconfig.json From b0af3e9bb649e1d90c772de3d1f2cbd7e9a42dcb Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 01:24:07 +0200 Subject: [PATCH 064/126] fixed issues after merge --- .../polywrap.wasm-linked.build.yaml | 11 ---- .../assemblyscript/001-sanity/yarn.lock | 51 +++++++++++++++++++ 2 files changed, 51 insertions(+), 11 deletions(-) delete mode 100644 packages/templates/wasm/assemblyscript/polywrap.wasm-linked.build.yaml create mode 100644 packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock diff --git a/packages/templates/wasm/assemblyscript/polywrap.wasm-linked.build.yaml b/packages/templates/wasm/assemblyscript/polywrap.wasm-linked.build.yaml deleted file mode 100644 index aabb15b6ed..0000000000 --- a/packages/templates/wasm/assemblyscript/polywrap.wasm-linked.build.yaml +++ /dev/null @@ -1,11 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: template-wasm-as - node_version: "16.13.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../wasm/as diff --git a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock new file mode 100644 index 0000000000..d307a391d3 --- /dev/null +++ b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock @@ -0,0 +1,51 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@polywrap/wasm-as@../../../../../../../wasm/as": + version "0.8.0" + dependencies: + "@web3api/assemblyscript-json" "1.2.0" + as-bigint "0.5.3" + as-bignumber "0.2.1" + as-container "0.6.1" + +"@web3api/assemblyscript-json@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@web3api/assemblyscript-json/-/assemblyscript-json-1.2.0.tgz#f01f11f12a66cd1a319d43f12e476307d1ad3da8" + integrity sha512-x+wchJpH1giJzXj3dYs8vh2SKMXepeqVXiaFV/YCtXg4X/KaUnxi0kp5JugbEAyEJurEScH1YuV6IvGhGui/fw== + +as-bigint@0.5.3, as-bigint@^0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/as-bigint/-/as-bigint-0.5.3.tgz#a0647d0b7ce835077aca33115e71eb26a83df8be" + integrity sha512-tg9iTO/vPeovOM5CSk1WxYcsfBd/cd3twhBW5PrpcGUfiSEXlPB69eOxFKvSbZnpuDxBAyQ4YBgEkfnYL89Czw== + +as-bignumber@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/as-bignumber/-/as-bignumber-0.2.1.tgz#6479caca7f24f784b10b3d2633cde457ef9cbc22" + integrity sha512-udKOlFYKSZyuHK7upTczRR8lcXkyPS0DR6NOtP+c3bhM4B2B0VqMBTzqa0hdYG4Zss94zA6UmqpjreEbzNUo4g== + dependencies: + as-bigint "^0.5.1" + +as-container@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/as-container/-/as-container-0.6.1.tgz#94806a91e96b68622c55f301fc04e6339a1228c2" + integrity sha512-cgQ7P/dQAGeU2lLhPpinThYfFcUw3HzV8b00CoqV+l5Tsgpl7xhXdoc/2srCyK0um1BVAQwlrEpNTtthzkMF+g== + +assemblyscript@0.19.5: + version "0.19.5" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.5.tgz#12f5976c41f6b866dd0d1aad5275dcd358a5d82f" + integrity sha512-mAx7gcwjJI5OSu2RcOlugHFNxKt/rtWn3vyp46cN1+uXb7YSS//rgO044+KKwfxnGvoWj0ClsU0dNt5eWoXF7A== + dependencies: + binaryen "101.0.0-nightly.20210604" + long "^4.0.0" + +binaryen@101.0.0-nightly.20210604: + version "101.0.0-nightly.20210604" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210604.tgz#3498a0a0c1108f3386b15ca79f1608425057db9e" + integrity sha512-aTgX1JDN8m3tTFK8g9hazJcEOdQl7mK4yVfElkKAh7q+TRUCaea4a2SMLr1z2xZL7s9N4lkrvrBblxRuEPvxWQ== + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== From cc90cb1a6ef24d880957e6bd54f3e44e6589af9d Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 02:50:55 +0200 Subject: [PATCH 065/126] fixed config builder tests --- .../__tests__/client-config-builder.spec.ts | 98 ++++++++++--------- 1 file changed, 52 insertions(+), 46 deletions(-) diff --git a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts index b05a7ebc88..6bc57698f8 100644 --- a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts +++ b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts @@ -4,13 +4,13 @@ import { Env, InterfaceImplementations, Uri, - UriRedirect, + IUriRedirect, IUriResolver, UriPackageOrWrapper, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; -import { getDefaultClientConfig } from "../bundles"; import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; +import { getDefaultConfig } from "../bundles"; class NamedUriResolver implements IUriResolver { private _name: string; @@ -46,7 +46,7 @@ describe("Client config builder", () => { }, ]; - const testUriRedirects: UriRedirect[] = [ + const testUriRedirects: IUriRedirect[] = [ { from: "wrap://ens/test-one.polywrap.eth", to: "wrap://ens/test1.polywrap.eth", @@ -60,12 +60,15 @@ describe("Client config builder", () => { const testUriResolver: IUriResolver = new NamedUriResolver("test1"); it("should build an empty partial config", () => { - const clientConfig = new ClientConfigBuilder().buildPartial(); + const clientConfig = new ClientConfigBuilder().getConfig(); expect(clientConfig).toStrictEqual({ envs: [], interfaces: [], redirects: [], + wrappers: [], + packages: [], + resolvers: [], }); }); @@ -75,9 +78,9 @@ describe("Client config builder", () => { envs: testEnvs, interfaces: testInterfaces, redirects: testUriRedirects, - resolver: testUriResolver, + resolvers: [testUriResolver], }) - .build(); + .getConfig(); expect(clientConfig).toBeTruthy(); expect(clientConfig.envs).toStrictEqual( @@ -98,7 +101,7 @@ describe("Client config builder", () => { to: Uri.from(x.to), })) ); - expect(clientConfig.resolver).toStrictEqual(testUriResolver); + expect(clientConfig.resolvers).toStrictEqual([testUriResolver]); }); it("should succesfully add and merge two config objects and build", () => { @@ -107,14 +110,14 @@ describe("Client config builder", () => { envs: [testEnvs[0]], interfaces: [testInterfaces[0]], redirects: [testUriRedirects[0]], - resolver: testUriResolver, + resolvers: [testUriResolver], }) .add({ envs: [testEnvs[1]], interfaces: [testInterfaces[1]], redirects: [testUriRedirects[1]], }) - .build(); + .getConfig(); expect(clientConfig).toBeTruthy(); expect(clientConfig.envs).toStrictEqual( @@ -135,19 +138,19 @@ describe("Client config builder", () => { to: Uri.from(x.to), })) ); - expect(clientConfig.resolver).toStrictEqual(testUriResolver); + expect(clientConfig.resolvers).toStrictEqual([testUriResolver]); }); it("should successfully add the default config", () => { - const clientConfig = new ClientConfigBuilder().addDefaults().build(); + const clientConfig = new ClientConfigBuilder().addDefaults().getConfig(); - const expectedConfig = getDefaultClientConfig(); + const expectedConfig = getDefaultConfig(); expect(clientConfig).toBeTruthy(); expect(clientConfig.envs).toStrictEqual(expectedConfig.envs); expect(clientConfig.interfaces).toStrictEqual(expectedConfig.interfaces); expect(clientConfig.redirects).toStrictEqual(expectedConfig.redirects); - expect(clientConfig.resolver instanceof RecursiveResolver).toBe(true); + expect(clientConfig.resolvers).toStrictEqual(expectedConfig.resolvers); }); it("should successfully add an env", () => { @@ -159,7 +162,7 @@ describe("Client config builder", () => { }, }; - const config = new ClientConfigBuilder().addEnv(envUri, env).buildPartial(); + const config = new ClientConfigBuilder().addEnv(envUri, env).getConfig(); if (!config.envs || config.envs.length !== 1) { fail(["Expected 1 env, received:", config.envs]); @@ -183,7 +186,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addEnv(envUri, env1) .addEnv(envUri, env2) - .buildPartial(); + .getConfig(); const expectedEnv = { ...env1, ...env2 }; @@ -199,7 +202,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addEnv(testEnvs[0].uri, testEnvs[0].env) .addEnv(testEnvs[1].uri, testEnvs[1].env) - .buildPartial(); + .getConfig(); if (!config.envs || config.envs.length !== 2) { fail(["Expected 2 envs, received:", config.envs]); @@ -220,7 +223,7 @@ describe("Client config builder", () => { .addEnv(testEnvs[0].uri, testEnvs[0].env) .addEnv(testEnvs[1].uri, testEnvs[1].env) .removeEnv(testEnvs[0].uri) - .buildPartial(); + .getConfig(); if (!config.envs || config.envs.length !== 1) { fail(["Expected 1 env, received:", config.envs]); @@ -239,7 +242,7 @@ describe("Client config builder", () => { foo: "bar", }; - const config = new ClientConfigBuilder().setEnv(envUri, env).buildPartial(); + const config = new ClientConfigBuilder().setEnv(envUri, env).getConfig(); if (!config.envs || config.envs.length !== 1) { fail(["Expected 1 env, received:", config.envs]); @@ -264,7 +267,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addEnv(envUri, env1) .setEnv(envUri, env2) - .buildPartial(); + .getConfig(); if (!config.envs || config.envs.length !== 1) { fail(["Expected 1 env, received:", config.envs]); @@ -282,7 +285,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addInterfaceImplementation(interfaceUri, implUri) - .buildPartial(); + .getConfig(); if (!config.interfaces || config.interfaces.length !== 1) { fail(["Expected 1 interface, received:", config.interfaces]); @@ -302,7 +305,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addInterfaceImplementation(interfaceUri, implUri1) .addInterfaceImplementation(interfaceUri, implUri2) - .buildPartial(); + .getConfig(); if (!config.interfaces || config.interfaces.length !== 1) { fail(["Expected 1 interface, received:", config.interfaces]); @@ -332,7 +335,7 @@ describe("Client config builder", () => { .addInterfaceImplementation(interfaceUri2, implUri2) .addInterfaceImplementation(interfaceUri1, implUri3) .addInterfaceImplementation(interfaceUri2, implUri4) - .buildPartial(); + .getConfig(); if (!config.interfaces || config.interfaces.length !== 2) { fail(["Expected 2 interfaces, received:", config.interfaces]); @@ -363,7 +366,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addInterfaceImplementations(interfaceUri, [implUri1, implUri2]) - .buildPartial(); + .getConfig(); if (!config.interfaces || config.interfaces.length !== 1) { fail(["Expected 1 interface, received:", config.interfaces]); @@ -390,7 +393,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addInterfaceImplementations(interfaceUri, [implUri1]) .addInterfaceImplementations(interfaceUri, [implUri2, implUri3]) - .buildPartial(); + .getConfig(); if (!config.interfaces || config.interfaces.length !== 1) { fail(["Expected 1 interface, received:", config.interfaces]); @@ -426,7 +429,7 @@ describe("Client config builder", () => { .addInterfaceImplementation(interfaceUri2, implUri2) .addInterfaceImplementations(interfaceUri1, [implUri3, implUri5]) .addInterfaceImplementations(interfaceUri2, [implUri4, implUri6]) - .buildPartial(); + .getConfig(); if (!config.interfaces || config.interfaces.length !== 2) { fail(["Expected 2 interfaces, received:", config.interfaces]); @@ -462,7 +465,7 @@ describe("Client config builder", () => { .addInterfaceImplementations(interfaceUri1, [implUri1, implUri2]) .addInterfaceImplementations(interfaceUri2, [implUri1, implUri2]) .removeInterfaceImplementation(interfaceUri1, implUri2) - .buildPartial(); + .getConfig(); if (!config.interfaces || config.interfaces.length !== 2) { fail(["Expected 2 interfaces, received:", config.interfaces]); @@ -496,7 +499,7 @@ describe("Client config builder", () => { .addInterfaceImplementations(interfaceUri2, [implUri1, implUri2]) .removeInterfaceImplementation(interfaceUri1, implUri1) .removeInterfaceImplementation(interfaceUri1, implUri2) - .buildPartial(); + .getConfig(); if (!config.interfaces || config.interfaces.length !== 1) { fail(["Expected 1 interface, received:", config.interfaces]); @@ -521,9 +524,7 @@ describe("Client config builder", () => { const from = "wrap://ens/from.this.ens"; const to = "wrap://ens/to.that.ens"; - const config = new ClientConfigBuilder() - .addUriRedirect(from, to) - .buildPartial(); + const config = new ClientConfigBuilder().addRedirect(from, to).getConfig(); expect(config.redirects).toHaveLength(1); expect(config.redirects).toContainEqual({ @@ -540,9 +541,9 @@ describe("Client config builder", () => { const to2 = "wrap://ens/to.that2.ens"; const config = new ClientConfigBuilder() - .addUriRedirect(from1, to1) - .addUriRedirect(from2, to2) - .buildPartial(); + .addRedirect(from1, to1) + .addRedirect(from2, to2) + .getConfig(); expect(config.redirects).toHaveLength(2); expect(config.redirects).toContainEqual({ @@ -562,10 +563,10 @@ describe("Client config builder", () => { const to2 = "wrap://ens/to.that2.ens"; const config = new ClientConfigBuilder() - .addUriRedirect(from1, to1) - .addUriRedirect(from2, to1) - .addUriRedirect(from1, to2) - .buildPartial(); + .addRedirect(from1, to1) + .addRedirect(from2, to1) + .addRedirect(from1, to2) + .getConfig(); expect(config.redirects).toHaveLength(2); expect(config.redirects).toContainEqual({ @@ -586,10 +587,10 @@ describe("Client config builder", () => { const to2 = "wrap://ens/to.that2.ens"; const config = new ClientConfigBuilder() - .addUriRedirect(from1, to1) - .addUriRedirect(from2, to2) + .addRedirect(from1, to1) + .addRedirect(from2, to2) .removeUriRedirect(from1) - .buildPartial(); + .getConfig(); expect(config.redirects).toHaveLength(1); expect(config.redirects).toContainEqual({ @@ -601,9 +602,11 @@ describe("Client config builder", () => { it("should set uri resolver", () => { const uriResolver = new NamedUriResolver("ResolverName"); - const config = new ClientConfigBuilder().setResolver(uriResolver).build(); + const config = new ClientConfigBuilder() + .addResolver(uriResolver) + .getConfig(); - expect(((config.resolver as unknown) as NamedUriResolver).name).toBe( + expect(((config.resolvers[0] as unknown) as NamedUriResolver).name).toBe( "ResolverName" ); }); @@ -613,11 +616,14 @@ describe("Client config builder", () => { const uriResolver2 = new NamedUriResolver("second"); const config = new ClientConfigBuilder() - .setResolver(uriResolver1) - .setResolver(uriResolver2) - .build(); + .addResolver(uriResolver1) + .addResolver(uriResolver2) + .getConfig(); - expect(((config.resolver as unknown) as NamedUriResolver).name).toBe( + expect(((config.resolvers[0] as unknown) as NamedUriResolver).name).toBe( + "first" + ); + expect(((config.resolvers[1] as unknown) as NamedUriResolver).name).toBe( "second" ); }); From 13a0fd02e861cdb043d22188d832d9dc2e72c5c2 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 02:51:15 +0200 Subject: [PATCH 066/126] fixed config builder tests --- .../src/__tests__/client-config-builder.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts index 6bc57698f8..544c123b37 100644 --- a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts +++ b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts @@ -9,7 +9,6 @@ import { UriPackageOrWrapper, } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; -import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; import { getDefaultConfig } from "../bundles"; class NamedUriResolver implements IUriResolver { From 2ab7ea49e8f6a12731f90cf3c422340fab2d7e46 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 02:51:52 +0200 Subject: [PATCH 067/126] updated readme --- packages/js/client-config-builder/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/js/client-config-builder/README.md b/packages/js/client-config-builder/README.md index fd90b620e0..50d55ab4ee 100644 --- a/packages/js/client-config-builder/README.md +++ b/packages/js/client-config-builder/README.md @@ -13,7 +13,9 @@ const config = new ClientConfigBuilder() envs: [/*...*/], interfaces: [/*...*/], redirects: [/*...*/], - uriResolvers: [/*...*/], + wrappers: [/*...*/], + packages: [/*...*/], + resolvers: [/*...*/], }) .add({/*...*/}) .build(); @@ -24,6 +26,10 @@ const builder = new ClientConfigBuilder(); builder.addDefaults(); +builder.add({ + packages: [/*...*/] +}); + builder.add({ envs: [/*...*/] }); From 5c86e18d8dc24cea48141ba4588660bf7ebe7405 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 02:53:02 +0200 Subject: [PATCH 068/126] added config builder methods to handle arrays --- .../src/ClientConfigBuilder.ts | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/packages/js/client-config-builder/src/ClientConfigBuilder.ts b/packages/js/client-config-builder/src/ClientConfigBuilder.ts index 28be14fcae..3d4ac7a2d3 100644 --- a/packages/js/client-config-builder/src/ClientConfigBuilder.ts +++ b/packages/js/client-config-builder/src/ClientConfigBuilder.ts @@ -8,6 +8,7 @@ import { IUriPackage, IUriWrapper, Env, + IUriRedirect, } from "@polywrap/core-js"; import { IWrapperCache, @@ -49,27 +50,15 @@ export class ClientConfigBuilder { } if (config.redirects) { - for (const redirect of config.redirects) { - this.addUriRedirect(redirect.from, redirect.to); - } + this.addRedirects(config.redirects); } if (config.wrappers) { - for (const uriWrapper of config.wrappers) { - this.addWrapper(uriWrapper); - } + this.addWrappers(config.wrappers); } if (config.packages) { - for (const uriPackage of config.packages) { - this.addPackage(uriPackage); - } - } - - if (config.redirects) { - for (const redirect of config.redirects) { - this.addUriRedirect(redirect.from, redirect.to); - } + this.addPackages(config.packages); } if (config.resolvers) { @@ -311,7 +300,7 @@ export class ClientConfigBuilder { return this; } - addUriRedirect(from: Uri | string, to: Uri | string): ClientConfigBuilder { + addRedirect(from: Uri | string, to: Uri | string): ClientConfigBuilder { const fromSanitized = Uri.from(from); const toSanitized = Uri.from(to); @@ -331,6 +320,14 @@ export class ClientConfigBuilder { return this; } + addRedirects(redirects: IUriRedirect[]): ClientConfigBuilder { + for (const redirect of redirects) { + this.addRedirect(redirect.from, redirect.to); + } + + return this; + } + removeUriRedirect(from: Uri | string): ClientConfigBuilder { const fromSanitized = Uri.from(from); From 85b045506ab682c91f160dd0ebe38cc834abddb2 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 13:37:06 +0200 Subject: [PATCH 069/126] removed default plugin configs from the client --- packages/js/client/package.json | 4 +- .../js/client/scripts/extractPluginConfigs.ts | 182 ------------------ .../src/__tests__/core/wasm-wrapper.spec.ts | 2 +- packages/js/client/src/pluginConfigs/Ens.ts | 16 -- .../js/client/src/pluginConfigs/Ethereum.ts | 47 ----- packages/js/client/src/pluginConfigs/Ipfs.ts | 8 - packages/js/client/src/pluginConfigs/index.ts | 27 --- 7 files changed, 2 insertions(+), 284 deletions(-) delete mode 100644 packages/js/client/scripts/extractPluginConfigs.ts delete mode 100644 packages/js/client/src/pluginConfigs/Ens.ts delete mode 100644 packages/js/client/src/pluginConfigs/Ethereum.ts delete mode 100644 packages/js/client/src/pluginConfigs/Ipfs.ts delete mode 100644 packages/js/client/src/pluginConfigs/index.ts diff --git a/packages/js/client/package.json b/packages/js/client/package.json index d199ee5da8..fe497d93fd 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -13,7 +13,6 @@ ], "scripts": { "build": "rimraf ./build && tsc --project tsconfig.build.json", - "prebuild": "ts-node ./scripts/extractPluginConfigs.ts", "lint": "eslint --color -c ../../../.eslintrc.js src/", "test": "jest --passWithNoTests --runInBand --verbose=true --detectOpenHandles --forceExit", "test:ci": "jest --passWithNoTests --runInBand --verbose --detectOpenHandles --forceExit", @@ -22,9 +21,7 @@ }, "dependencies": { "@polywrap/asyncify-js": "0.8.0", - "@polywrap/client-config-builder-js": "0.8.0", "@polywrap/core-js": "0.8.0", - "@polywrap/ens-resolver-plugin-js": "0.8.0", "@polywrap/msgpack-js": "0.8.0", "@polywrap/result": "0.8.0", "@polywrap/schema-parse": "0.8.0", @@ -38,6 +35,7 @@ "@polywrap/os-js": "0.8.0", "@polywrap/test-cases": "0.8.0", "@polywrap/test-env-js": "0.8.0", + "@polywrap/client-config-builder-js": "0.8.0", "@polywrap/ens-resolver-plugin-js": "0.8.0", "@polywrap/ethereum-plugin-js": "0.8.0", "@polywrap/http-plugin-js": "0.8.0", diff --git a/packages/js/client/scripts/extractPluginConfigs.ts b/packages/js/client/scripts/extractPluginConfigs.ts deleted file mode 100644 index 6c1be1447d..0000000000 --- a/packages/js/client/scripts/extractPluginConfigs.ts +++ /dev/null @@ -1,182 +0,0 @@ -import { Project as TsProject } from "ts-morph"; -import { writeFileSync } from "@polywrap/os-js"; -import path from "path"; - -interface PluginConfigSource { - name: string; - module: string; - uri: string; - config: string; - files: { - name: string; - interfaces?: string[]; - types?: string[]; - }[]; - externals?: { - type: string; - module: string; - }[]; -} - -const plugins: PluginConfigSource[] = [ - { - name: "Ipfs", - module: "@polywrap/ipfs-plugin-js", - uri: "wrap://ens/ipfs.polywrap.eth", - config: "NoConfig", - files: [ - { - name: "build/index.d.ts", - types: ["NoConfig"] - }, - ], - }, - { - name: "Ethereum", - module: "@polywrap/ethereum-plugin-js", - uri: "wrap://ens/ethereum.polywrap.eth", - config: "EthereumPluginConfig", - files: [ - { - name: "build/index.d.ts", - interfaces: ["EthereumPluginConfig"], - }, - { - name: "build/Connection.d.ts", - interfaces: ["ConnectionConfig"], - types: [ - "EthereumProvider", - "EthereumSigner", - "AccountIndex", - "Address", - ], - }, - { - name: "build/Connections.d.ts", - interfaces: ["ConnectionsConfig"], - types: ["Networks"], - }, - ], - externals: [ - { - type: "Connection", - module: "@polywrap/ethereum-plugin-js" - }, - { - type: "Connections", - module: "@polywrap/ethereum-plugin-js" - }, - { - type: "Signer", - module: "ethers", - }, - { - type: "ExternalProvider", - module: "@ethersproject/providers", - }, - { - type: "JsonRpcProvider", - module: "@ethersproject/providers", - }, - ], - }, - { - name: "Ens", - module: "@polywrap/ens-resolver-plugin-js", - uri: "wrap://ens/ens-resolver.polywrap.eth", - config: "EnsResolverPluginConfig", - files: [ - { - name: "build/index.d.ts", - interfaces: ["EnsResolverPluginConfig", "Addresses"], - types: ["Address"], - }, - ], - }, -]; - -function main(): void { - - const header = "/// NOTE: This is an auto-generated file. See scripts/extractPluginConfigs.ts\n" + - "/* eslint-disable @typescript-eslint/no-explicit-any */\n" + - "/* eslint-disable prettier/prettier */"; - const outputFiles: { - fileName: string, - content: string - }[] = []; - - for (const plugin of plugins) { - let output = header; - - output += `\n\n/// Types generated from ${plugin.module} build files:\n/// ${ - plugin.files.map(({ name }) => name).join(', ') - }` - - const project = new TsProject(); - - for (const file of plugin.files) { - const filePath = require.resolve(path.join(plugin.module, file.name)); - const sourceFile = project.addSourceFileAtPath(filePath); - - for (const pluginInterface of file.interfaces || []) { - const int = sourceFile.getInterfaceOrThrow(pluginInterface); - output += `\n\n${int.print().replace(/ /g, " ")}`; - } - - for (const pluginType of file.types || []) { - const typ = sourceFile.getTypeAliasOrThrow(pluginType); - output += `\n\n${typ.print().replace("declare ", "").replace(/ /g, " ")}`; - } - } - - for (const pluginExternal of plugin.externals || []) { - output += `\n\n// import { ${pluginExternal.type} } from "${pluginExternal.module}"`; - output += `\nexport type ${pluginExternal.type} = any;`; - } - - outputFiles.push({ - fileName: `${plugin.name}.ts`, - content: output + "\n" - }); - } - - let indexContent = header + "\n"; - - let pluginConfigs = "\n\ninterface PluginConfigs {"; - let pluginModules = "\n\nconst modules: Record = {"; - let pluginUris = "\n\nconst uris: Record = {"; - - for (const plugin of plugins) { - const pluginKey = plugin.name.toLowerCase(); - indexContent += `\nimport { ${plugin.config} } from "./${plugin.name}";`; - pluginConfigs += `\n ${pluginKey}?: ${plugin.config};`; - pluginModules += `\n ${pluginKey}: "${plugin.module}",`; - pluginUris += `\n ${pluginKey}: "${plugin.uri}",`; - } - - pluginConfigs += `\n}`; - pluginModules += `\n};`; - pluginUris += `\n};`; - - indexContent += pluginConfigs + pluginModules + pluginUris + `\n\nexport { PluginConfigs, modules, uris };\n`; - - outputFiles.push({ - fileName: "index.ts", - content: indexContent - }); - - for (const outputFile of outputFiles) { - writeFileSync( - __dirname + "/../src/pluginConfigs/" + outputFile.fileName, - outputFile.content - ); - } -} - -try { - main(); - process.exit(0); -} catch (err) { - console.error(err); - process.exit(1); -} diff --git a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts index e2c9d14bb5..e5a5f701b5 100644 --- a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts @@ -142,7 +142,7 @@ describe("wasm-wrapper", () => { ] }); - const client = createDefaultClient(builder.buildDefault()); + const client = createDefaultClient(builder.getConfig()); const clientResult = await client.invoke({ uri: simpleWrapperUri.uri, diff --git a/packages/js/client/src/pluginConfigs/Ens.ts b/packages/js/client/src/pluginConfigs/Ens.ts deleted file mode 100644 index 555cec3119..0000000000 --- a/packages/js/client/src/pluginConfigs/Ens.ts +++ /dev/null @@ -1,16 +0,0 @@ -/// NOTE: This is an auto-generated file. See scripts/extractPluginConfigs.ts -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable prettier/prettier */ - -/// Types generated from @polywrap/ens-resolver-plugin-js build files: -/// build/index.d.ts - -export interface EnsResolverPluginConfig { - addresses?: Addresses; -} - -export interface Addresses { - [network: string]: Address; -} - -export type Address = string; diff --git a/packages/js/client/src/pluginConfigs/Ethereum.ts b/packages/js/client/src/pluginConfigs/Ethereum.ts deleted file mode 100644 index a7ff9ab735..0000000000 --- a/packages/js/client/src/pluginConfigs/Ethereum.ts +++ /dev/null @@ -1,47 +0,0 @@ -/// NOTE: This is an auto-generated file. See scripts/extractPluginConfigs.ts -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable prettier/prettier */ - -/// Types generated from @polywrap/ethereum-plugin-js build files: -/// build/index.d.ts, build/Connection.d.ts, build/Connections.d.ts - -export interface EthereumPluginConfig { - connections: Connections; -} - -export interface ConnectionConfig { - provider: EthereumProvider; - signer?: EthereumSigner; -} - -export type EthereumProvider = string | ExternalProvider | JsonRpcProvider; - -export type EthereumSigner = Signer | Address | AccountIndex; - -export type AccountIndex = number; - -export type Address = string; - -export interface ConnectionsConfig { - networks: Networks; - defaultNetwork?: string; -} - -type Networks = { - [network: string]: Connection; -}; - -// import { Connection } from "@polywrap/ethereum-plugin-js" -export type Connection = any; - -// import { Connections } from "@polywrap/ethereum-plugin-js" -export type Connections = any; - -// import { Signer } from "ethers" -export type Signer = any; - -// import { ExternalProvider } from "@ethersproject/providers" -export type ExternalProvider = any; - -// import { JsonRpcProvider } from "@ethersproject/providers" -export type JsonRpcProvider = any; diff --git a/packages/js/client/src/pluginConfigs/Ipfs.ts b/packages/js/client/src/pluginConfigs/Ipfs.ts deleted file mode 100644 index acf0f28c06..0000000000 --- a/packages/js/client/src/pluginConfigs/Ipfs.ts +++ /dev/null @@ -1,8 +0,0 @@ -/// NOTE: This is an auto-generated file. See scripts/extractPluginConfigs.ts -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable prettier/prettier */ - -/// Types generated from @polywrap/ipfs-plugin-js build files: -/// build/index.d.ts - -export type NoConfig = Record; diff --git a/packages/js/client/src/pluginConfigs/index.ts b/packages/js/client/src/pluginConfigs/index.ts deleted file mode 100644 index d6ee66e563..0000000000 --- a/packages/js/client/src/pluginConfigs/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -/// NOTE: This is an auto-generated file. See scripts/extractPluginConfigs.ts -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable prettier/prettier */ - -import { NoConfig } from "./Ipfs"; -import { EthereumPluginConfig } from "./Ethereum"; -import { EnsResolverPluginConfig } from "./Ens"; - -interface PluginConfigs { - ipfs?: NoConfig; - ethereum?: EthereumPluginConfig; - ens?: EnsResolverPluginConfig; -} - -const modules: Record = { - ipfs: "@polywrap/ipfs-plugin-js", - ethereum: "@polywrap/ethereum-plugin-js", - ens: "@polywrap/ens-resolver-plugin-js", -}; - -const uris: Record = { - ipfs: "wrap://ens/ipfs.polywrap.eth", - ethereum: "wrap://ens/ethereum.polywrap.eth", - ens: "wrap://ens/ens-resolver.polywrap.eth", -}; - -export { PluginConfigs, modules, uris }; From 0bade2c0dd6c5b0c80ce9b54308b6f1348f0f82e Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 14:40:32 +0200 Subject: [PATCH 070/126] removed manifest options arg --- packages/js/client/src/PolywrapClient.ts | 6 ++---- packages/js/core/src/types/Client.ts | 3 +-- packages/js/core/src/types/Wrapper.ts | 5 +---- packages/js/plugin/src/PluginWrapper.ts | 3 +-- packages/js/test-env/package.json | 1 - 5 files changed, 5 insertions(+), 13 deletions(-) diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index 03f11d20f4..76b7675d60 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -20,7 +20,6 @@ import { parseQuery, TryResolveUriOptions, IUriResolver, - GetManifestOptions, IUriResolutionContext, UriPackageOrWrapper, UriResolutionContext, @@ -135,15 +134,14 @@ export class PolywrapClient implements Client { @Tracer.traceMethod("PolywrapClient: getManifest") public async getManifest( - uri: TUri, - options: GetManifestOptions = {} + uri: TUri ): Promise> { const load = await this.loadWrapper(Uri.from(uri), undefined); if (!load.ok) { return load; } const wrapper = load.value; - const manifest = wrapper.getManifest(options, this); + const manifest = wrapper.getManifest(); return ResultOk(manifest); } diff --git a/packages/js/core/src/types/Client.ts b/packages/js/core/src/types/Client.ts index 829c00b1a5..2d729b9af6 100644 --- a/packages/js/core/src/types/Client.ts +++ b/packages/js/core/src/types/Client.ts @@ -51,8 +51,7 @@ export interface Client getUriResolver(): IUriResolver; getManifest( - uri: TUri, - options: GetManifestOptions + uri: TUri ): Promise>; getFile( diff --git a/packages/js/core/src/types/Wrapper.ts b/packages/js/core/src/types/Wrapper.ts index 06a784efaf..043d31e0b8 100644 --- a/packages/js/core/src/types/Wrapper.ts +++ b/packages/js/core/src/types/Wrapper.ts @@ -2,7 +2,6 @@ import { Uri, Client, GetFileOptions, - GetManifestOptions, InvokeOptions, Invocable, Invoker, @@ -44,8 +43,6 @@ export interface Wrapper extends Invocable { /** * Get a manifest from the Wrapper package. - * - * @param client The client instance requesting the manifest. */ - getManifest(options: GetManifestOptions, client: Client): WrapManifest; + getManifest(): WrapManifest; } diff --git a/packages/js/plugin/src/PluginWrapper.ts b/packages/js/plugin/src/PluginWrapper.ts index 20135750ff..754215b1df 100644 --- a/packages/js/plugin/src/PluginWrapper.ts +++ b/packages/js/plugin/src/PluginWrapper.ts @@ -7,7 +7,6 @@ import { InvocableResult, Uri, GetFileOptions, - GetManifestOptions, isBuffer, } from "@polywrap/core-js"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; @@ -37,7 +36,7 @@ export class PluginWrapper implements Wrapper { } @Tracer.traceMethod("PluginWrapper: getManifest") - public getManifest(_: GetManifestOptions, _client: Client): WrapManifest { + public getManifest(): WrapManifest { return this.manifest; } diff --git a/packages/js/test-env/package.json b/packages/js/test-env/package.json index fae40c8e68..496915fce1 100644 --- a/packages/js/test-env/package.json +++ b/packages/js/test-env/package.json @@ -19,7 +19,6 @@ "dependencies": { "@polywrap/core-js": "0.8.0", "@polywrap/polywrap-manifest-types-js": "0.8.0", - "@polywrap/uri-resolvers-js": "0.8.0", "axios": "0.21.2", "spawn-command": "0.0.2-1", "yaml": "2.1.3" From c9ee60910b1fac3cc9a5bb257446c084b6ae984d Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 22:02:54 +0200 Subject: [PATCH 071/126] using new client in the cli --- packages/cli/src/commands/build.ts | 9 ++------- packages/cli/src/commands/codegen.ts | 9 ++------- packages/cli/src/commands/docgen.ts | 9 ++------- .../createDefaultClient.ts | 14 -------------- .../ens-recursive-name-register/index.ts | 4 ++-- .../deploy-modules/ens/createDefaultClient.ts | 14 -------------- .../src/lib/defaults/deploy-modules/ens/index.ts | 4 ++-- packages/cli/src/lib/helpers/client.ts | 5 ++--- .../cli/src/lib/option-parsers/client-config.ts | 4 ++-- packages/cli/src/lib/test-env/client-config.ts | 3 +-- packages/cli/src/lib/workflow/JobRunner.ts | 6 ++---- packages/cli/src/utils/createDefaultClient.ts | 14 -------------- 12 files changed, 17 insertions(+), 78 deletions(-) delete mode 100644 packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/createDefaultClient.ts delete mode 100644 packages/cli/src/lib/defaults/deploy-modules/ens/createDefaultClient.ts delete mode 100644 packages/cli/src/utils/createDefaultClient.ts diff --git a/packages/cli/src/commands/build.ts b/packages/cli/src/commands/build.ts index 89f4844ecd..2c9d988a31 100644 --- a/packages/cli/src/commands/build.ts +++ b/packages/cli/src/commands/build.ts @@ -25,10 +25,7 @@ import path from "path"; import readline from "readline"; import { PolywrapClient, Uri } from "@polywrap/client-js"; import { PolywrapManifest } from "@polywrap/polywrap-manifest-types-js"; -import { - ClientConfigBuilder, - CustomClientConfig, -} from "@polywrap/client-config-builder-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; const defaultOutputDir = "./build"; const defaultStrategy = SupportedStrategies.VM; @@ -138,9 +135,7 @@ async function run(options: BuildCommandOptions) { } = options; // Get Client - const client = new PolywrapClient( - new ClientConfigBuilder().add(clientConfig).buildDefault() - ); + const client = new PolywrapClient(clientConfig); const project = new PolywrapProject({ rootDir: path.dirname(manifestFile), diff --git a/packages/cli/src/commands/codegen.ts b/packages/cli/src/commands/codegen.ts index a8668f3d6c..6eab7739d9 100644 --- a/packages/cli/src/commands/codegen.ts +++ b/packages/cli/src/commands/codegen.ts @@ -19,10 +19,7 @@ import { ScriptCodegenerator } from "../lib/codegen/ScriptCodeGenerator"; import { PolywrapClient, Uri } from "@polywrap/client-js"; import path from "path"; import fs from "fs"; -import { - ClientConfigBuilder, - CustomClientConfig, -} from "@polywrap/client-config-builder-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; const defaultCodegenDir = "./src/wrap"; const defaultPublishDir = "./build"; @@ -96,9 +93,7 @@ async function run(options: CodegenCommandOptions) { } = options; // Get Client - const client = new PolywrapClient( - new ClientConfigBuilder().add(clientConfig).buildDefault() - ); + const client = new PolywrapClient(clientConfig); const project = await getProjectFromManifest(manifestFile); diff --git a/packages/cli/src/commands/docgen.ts b/packages/cli/src/commands/docgen.ts index 5b585ca6cb..4369e523b3 100644 --- a/packages/cli/src/commands/docgen.ts +++ b/packages/cli/src/commands/docgen.ts @@ -18,10 +18,7 @@ import { ScriptCodegenerator } from "../lib/codegen/ScriptCodeGenerator"; import { PolywrapClient, Uri } from "@polywrap/client-js"; import chalk from "chalk"; import { Argument } from "commander"; -import { - ClientConfigBuilder, - CustomClientConfig, -} from "@polywrap/client-config-builder-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; const commandToPathMap: Record = { schema: schemaScriptPath, @@ -127,9 +124,7 @@ async function run(command: DocType, options: DocgenCommandOptions) { // Resolve custom script const customScript = require.resolve(commandToPathMap[command]); - const client = new PolywrapClient( - new ClientConfigBuilder().add(clientConfig).buildDefault() - ); + const client = new PolywrapClient(clientConfig); const schemaComposer = new SchemaComposer({ project, diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/createDefaultClient.ts b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/createDefaultClient.ts deleted file mode 100644 index fa851850c2..0000000000 --- a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/createDefaultClient.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ClientConfigBuilder, - CustomClientConfig, -} from "@polywrap/client-config-builder-js"; -import { Uri, Client } from "@polywrap/core-js"; -import { PolywrapClient } from "@polywrap/client-js"; - -export const createDefaultClient = ( - config: Partial> = {} -): Client => { - return new PolywrapClient( - new ClientConfigBuilder().addDefaults().add(config).buildDefault() - ); -}; diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts index 27068785ba..533abae992 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens-recursive-name-register/index.ts @@ -1,7 +1,6 @@ /* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable @typescript-eslint/no-var-requires */ import { Deployer } from "../../../deploy"; -import { createDefaultClient } from "./createDefaultClient"; import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; @@ -12,6 +11,7 @@ import { Connection, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; +import { PolywrapClient } from "@polywrap/client-js"; class ENSRecursiveNameRegisterPublisher implements Deployer { async execute( @@ -47,7 +47,7 @@ class ENSRecursiveNameRegisterPublisher implements Deployer { const ethereumPluginUri = "wrap://ens/ethereum.polywrap.eth"; const ensWrapperUri = embeddedWrappers.ens; - const client = createDefaultClient({ + const client = new PolywrapClient({ redirects: [ { from: "wrap://ens/uts46.polywrap.eth", diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens/createDefaultClient.ts b/packages/cli/src/lib/defaults/deploy-modules/ens/createDefaultClient.ts deleted file mode 100644 index fa851850c2..0000000000 --- a/packages/cli/src/lib/defaults/deploy-modules/ens/createDefaultClient.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ClientConfigBuilder, - CustomClientConfig, -} from "@polywrap/client-config-builder-js"; -import { Uri, Client } from "@polywrap/core-js"; -import { PolywrapClient } from "@polywrap/client-js"; - -export const createDefaultClient = ( - config: Partial> = {} -): Client => { - return new PolywrapClient( - new ClientConfigBuilder().addDefaults().add(config).buildDefault() - ); -}; diff --git a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts index 08d785edfc..8be5bcb826 100644 --- a/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts +++ b/packages/cli/src/lib/defaults/deploy-modules/ens/index.ts @@ -1,7 +1,6 @@ /* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable @typescript-eslint/no-var-requires */ import { Deployer } from "../../../deploy"; -import { createDefaultClient } from "./createDefaultClient"; import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider } from "@ethersproject/providers"; @@ -12,6 +11,7 @@ import { ethereumPlugin, } from "@polywrap/ethereum-plugin-js"; import { embeddedWrappers } from "@polywrap/test-env-js"; +import { PolywrapClient } from "@polywrap/client-js"; const contentHash = require("content-hash"); @@ -48,7 +48,7 @@ class ENSPublisher implements Deployer { const ethereumPluginUri = "wrap://ens/ethereum.polywrap.eth"; const ensWrapperUri = embeddedWrappers.ens; - const client = createDefaultClient({ + const client = new PolywrapClient({ redirects: [ { from: "wrap://ens/uts46.polywrap.eth", diff --git a/packages/cli/src/lib/helpers/client.ts b/packages/cli/src/lib/helpers/client.ts index d45a52d7b8..70ce6023be 100644 --- a/packages/cli/src/lib/helpers/client.ts +++ b/packages/cli/src/lib/helpers/client.ts @@ -1,5 +1,3 @@ -import { createDefaultClient } from "../../utils/createDefaultClient"; - import { Client, Env, IUriPackage, Uri } from "@polywrap/core-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { @@ -9,6 +7,7 @@ import { } from "@polywrap/ethereum-plugin-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; +import { PolywrapClient } from "@polywrap/client-js"; interface SimpleClientConfig { ensAddress?: string; @@ -60,5 +59,5 @@ export function getSimpleClient(config: SimpleClientConfig): Client { }); } - return createDefaultClient({ envs, packages: plugins }); + return new PolywrapClient({ envs, packages: plugins }); } diff --git a/packages/cli/src/lib/option-parsers/client-config.ts b/packages/cli/src/lib/option-parsers/client-config.ts index a62e5b2f8e..8e08155869 100644 --- a/packages/cli/src/lib/option-parsers/client-config.ts +++ b/packages/cli/src/lib/option-parsers/client-config.ts @@ -50,12 +50,12 @@ export async function parseClientConfigOption( try { validateClientConfig(customConfig); - return builder.add(customConfig).getConfig(); + return builder.add(customConfig).build(); } catch (e) { console.error(e.message); process.exit(1); } } else { - return builder.getConfig(); + return builder.build(); } } diff --git a/packages/cli/src/lib/test-env/client-config.ts b/packages/cli/src/lib/test-env/client-config.ts index ea212e5843..1ea7b4838b 100644 --- a/packages/cli/src/lib/test-env/client-config.ts +++ b/packages/cli/src/lib/test-env/client-config.ts @@ -14,7 +14,6 @@ import { import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { ensAddresses } from "@polywrap/test-env-js"; import { Env, IUriPackage, Uri } from "@polywrap/core-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; export function getTestEnvClientConfig(): Partial { const providers = getTestEnvProviders(); @@ -67,7 +66,7 @@ export function getTestEnvClientConfig(): Partial { ]; return { - resolver: buildUriResolver(packages), + packages, envs, }; } diff --git a/packages/cli/src/lib/workflow/JobRunner.ts b/packages/cli/src/lib/workflow/JobRunner.ts index bd3c355c21..e0246fc55f 100644 --- a/packages/cli/src/lib/workflow/JobRunner.ts +++ b/packages/cli/src/lib/workflow/JobRunner.ts @@ -17,9 +17,7 @@ export class JobRunner { private onExecution?: (id: string, JobResult: JobResult) => MaybeAsync ) { this.jobOutput = new Map(); - this.client = new PolywrapClient( - new ClientConfigBuilder().add(this.clientConfig).buildDefault() - ); + this.client = new PolywrapClient(this.clientConfig); } async run(jobs: WorkflowJobs, ids: string[]): Promise { @@ -187,7 +185,7 @@ export class JobRunner { const finalConfig = new ClientConfigBuilder() .add(this.clientConfig) .add(step.config) - .buildDefault(); + .build(); finalClient = new PolywrapClient(finalConfig); } diff --git a/packages/cli/src/utils/createDefaultClient.ts b/packages/cli/src/utils/createDefaultClient.ts deleted file mode 100644 index fa851850c2..0000000000 --- a/packages/cli/src/utils/createDefaultClient.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ClientConfigBuilder, - CustomClientConfig, -} from "@polywrap/client-config-builder-js"; -import { Uri, Client } from "@polywrap/core-js"; -import { PolywrapClient } from "@polywrap/client-js"; - -export const createDefaultClient = ( - config: Partial> = {} -): Client => { - return new PolywrapClient( - new ClientConfigBuilder().addDefaults().add(config).buildDefault() - ); -}; From df4e64309ffe44e7f7c3662672ac01485684bcc7 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 22:04:11 +0200 Subject: [PATCH 072/126] fixed client tests --- packages/js/client/package.json | 1 + .../__tests__/core/interface-impls.spec.ts | 212 ++++++++++-------- .../src/__tests__/core/plugin-wrapper.spec.ts | 30 ++- .../client/src/__tests__/core/sanity.spec.ts | 38 ++-- .../uri-resolution/uri-resolution.spec.ts | 55 ++--- .../src/__tests__/core/wasm-wrapper.spec.ts | 77 +++---- .../js/client/src/__tests__/e2e/env.spec.ts | 68 +++--- .../client/src/__tests__/e2e/wasm-as.spec.ts | 38 ++-- 8 files changed, 281 insertions(+), 238 deletions(-) diff --git a/packages/js/client/package.json b/packages/js/client/package.json index fe497d93fd..316fd2c7a7 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -28,6 +28,7 @@ "@polywrap/tracing-js": "0.8.0", "@polywrap/uri-resolvers-js": "0.8.0", "@polywrap/wrap-manifest-types-js": "0.8.0", + "@polywrap/client-config-builder-js": "0.8.0", "graphql": "15.5.0", "yaml": "2.1.3" }, diff --git a/packages/js/client/src/__tests__/core/interface-impls.spec.ts b/packages/js/client/src/__tests__/core/interface-impls.spec.ts index a7f50d1f26..69ecc5926b 100644 --- a/packages/js/client/src/__tests__/core/interface-impls.spec.ts +++ b/packages/js/client/src/__tests__/core/interface-impls.spec.ts @@ -2,7 +2,6 @@ import { coreInterfaceUris, Uri, PolywrapClient } from "../.."; import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { mockPluginRegistration } from "../helpers/mockPluginRegistration"; -import { createDefaultClient } from "../utils/createDefaultClient"; jest.setTimeout(200000); @@ -12,22 +11,18 @@ describe("interface-impls", () => { const implementation1Uri = "wrap://ens/some-implementation1.eth"; const implementation2Uri = "wrap://ens/some-implementation2.eth"; - const client = createDefaultClient({ + const client = new PolywrapClient({ interfaces: [ { interface: interfaceUri, implementations: [implementation1Uri, implementation2Uri], }, ], - }); + }, { noDefaults: true }); const interfaces = client.getInterfaces(); - const builder = new ClientConfigBuilder(); - const defaultClientConfig = builder.addDefaults().buildDefault(); - expect(interfaces).toEqual([ - ...(defaultClientConfig.interfaces ?? []), { interface: new Uri(interfaceUri), implementations: [ @@ -37,10 +32,15 @@ describe("interface-impls", () => { }, ]); - const implementations = client.getImplementations(interfaceUri, { applyRedirects: false }); + const implementations = client.getImplementations(interfaceUri, { + applyRedirects: false, + }); if (!implementations.ok) fail(implementations.error); - expect(implementations.value).toEqual([implementation1Uri, implementation2Uri]); + expect(implementations.value).toEqual([ + implementation1Uri, + implementation2Uri, + ]); }); it("should get all implementations of interface", async () => { @@ -53,39 +53,44 @@ describe("interface-impls", () => { const implementation3Uri = "wrap://ens/some-implementation3.eth"; const implementation4Uri = "wrap://ens/some-implementation4.eth"; - const client = new PolywrapClient({ - redirects: [ - { - from: interface1Uri, - to: interface2Uri, - }, - { - from: implementation1Uri, - to: implementation2Uri, - }, - { - from: implementation2Uri, - to: implementation3Uri, - }, - ], - resolver: buildUriResolver([ - mockPluginRegistration(implementation4Uri), - ]), - interfaces: [ - { - interface: interface1Uri, - implementations: [implementation1Uri, implementation2Uri], - }, - { - interface: interface2Uri, - implementations: [implementation3Uri], - }, - { - interface: interface3Uri, - implementations: [implementation3Uri, implementation4Uri], - }, - ], - }); + const client = new PolywrapClient( + { + redirects: [ + { + from: interface1Uri, + to: interface2Uri, + }, + { + from: implementation1Uri, + to: implementation2Uri, + }, + { + from: implementation2Uri, + to: implementation3Uri, + }, + ], + resolver: buildUriResolver([ + mockPluginRegistration(implementation4Uri), + ]), + interfaces: [ + { + interface: interface1Uri, + implementations: [implementation1Uri, implementation2Uri], + }, + { + interface: interface2Uri, + implementations: [implementation3Uri], + }, + { + interface: interface3Uri, + implementations: [implementation3Uri, implementation4Uri], + }, + ], + }, + { + noDefaults: true, + } + ); const implementations1 = client.getImplementations(interface1Uri, { applyRedirects: true, @@ -112,7 +117,10 @@ describe("interface-impls", () => { ]); if (!implementations3.ok) fail(implementations3.error); - expect(implementations3.value).toEqual([implementation3Uri, implementation4Uri]); + expect(implementations3.value).toEqual([ + implementation3Uri, + implementation4Uri, + ]); }); it("should merge user-defined interface implementations with each other", async () => { @@ -120,18 +128,20 @@ describe("interface-impls", () => { const implementationUri1 = "wrap://ens/implementation1.eth"; const implementationUri2 = "wrap://ens/implementation2.eth"; - const client = createDefaultClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri1], - }, - { - interface: interfaceUri, - implementations: [implementationUri2], - }, - ], - }); + const client = new PolywrapClient( + { + interfaces: [ + { + interface: interfaceUri, + implementations: [implementationUri1], + }, + { + interface: interfaceUri, + implementations: [implementationUri2], + }, + ], + } + ); const interfaces = client .getInterfaces() @@ -151,18 +161,20 @@ describe("interface-impls", () => { const implementationUri1 = "wrap://ens/implementation1.eth"; const implementationUri2 = "wrap://ens/implementation2.eth"; - const client = createDefaultClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri1], - }, - { - interface: interfaceUri, - implementations: [implementationUri2], - }, - ], - }); + const client = new PolywrapClient( + { + interfaces: [ + { + interface: interfaceUri, + implementations: [implementationUri1], + }, + { + interface: interfaceUri, + implementations: [implementationUri2], + }, + ], + } + ); const interfaces = client .getInterfaces() @@ -189,17 +201,22 @@ describe("interface-impls", () => { const implementation1Uri = "wrap://ens/some-implementation1.eth"; const implementation2Uri = "wrap://ens/some-implementation2.eth"; - const client = new PolywrapClient({ - resolver: buildUriResolver([ - mockPluginRegistration(implementation1Uri), - ]), - interfaces: [ - { - interface: interfaceUri, - implementations: [implementation2Uri], - }, - ], - }); + const client = new PolywrapClient( + { + resolver: buildUriResolver([ + mockPluginRegistration(implementation1Uri), + ]), + interfaces: [ + { + interface: interfaceUri, + implementations: [implementation2Uri], + }, + ], + }, + { + noDefaults: true, + } + ); const getImplementationsResult = client.getImplementations( new Uri(interfaceUri), @@ -207,7 +224,9 @@ describe("interface-impls", () => { ); if (!getImplementationsResult.ok) fail(getImplementationsResult.error); - expect(getImplementationsResult.value).toEqual([new Uri(implementation2Uri)]); + expect(getImplementationsResult.value).toEqual([ + new Uri(implementation2Uri), + ]); }); test("get implementations - return implementations for plugins which don't have interface stated in manifest", () => { @@ -216,17 +235,20 @@ describe("interface-impls", () => { const implementation1Uri = "wrap://ens/some-implementation1.eth"; const implementation2Uri = "wrap://ens/some-implementation2.eth"; - const client = new PolywrapClient({ - resolver: buildUriResolver([ - mockPluginRegistration(implementation1Uri), - ]), - interfaces: [ - { - interface: interfaceUri, - implementations: [implementation1Uri, implementation2Uri], - }, - ], - }); + const client = new PolywrapClient( + { + resolver: buildUriResolver([ + mockPluginRegistration(implementation1Uri), + ]), + interfaces: [ + { + interface: interfaceUri, + implementations: [implementation1Uri, implementation2Uri], + }, + ], + }, + { noDefaults: true } + ); const getImplementationsResult = client.getImplementations( new Uri(interfaceUri), @@ -247,7 +269,7 @@ describe("interface-impls", () => { const implementation1Uri = "wrap://ens/some-implementation1.eth"; const implementation2Uri = "wrap://ens/some-implementation2.eth"; - const client = createDefaultClient({ + const client = new PolywrapClient({ redirects: [ { from: oldInterfaceUri, @@ -266,7 +288,9 @@ describe("interface-impls", () => { ], }); - let result = client.getImplementations(oldInterfaceUri, { applyRedirects: false }); + let result = client.getImplementations(oldInterfaceUri, { + applyRedirects: false, + }); if (!result.ok) fail(result.error); expect(result.value).toEqual([implementation1Uri]); @@ -276,7 +300,9 @@ describe("interface-impls", () => { if (!result.ok) fail(result.error); expect(result.value).toEqual([implementation1Uri, implementation2Uri]); - let result2 = client.getImplementations(new Uri(oldInterfaceUri), { applyRedirects: false }); + let result2 = client.getImplementations(new Uri(oldInterfaceUri), { + applyRedirects: false, + }); if (!result2.ok) fail(result2.error); expect(result2.value).toEqual([new Uri(implementation1Uri)]); diff --git a/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts b/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts index 040c7e4daa..5f7e68917e 100644 --- a/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts @@ -38,14 +38,17 @@ describe("plugin-wrapper", () => { it("plugin map types", async () => { const implementationUri = "wrap://ens/some-implementation.eth"; const mockPlugin = mockMapPlugin(); - const client = new PolywrapClient({ - resolver: buildUriResolver([ - { - uri: implementationUri, - package: mockPlugin - }, - ]), - }); + const client = new PolywrapClient( + { + resolver: buildUriResolver([ + { + uri: implementationUri, + package: mockPlugin, + }, + ]), + }, + { noDefaults: true } + ); const getResult = await client.invoke({ uri: implementationUri, @@ -74,11 +77,14 @@ describe("plugin-wrapper", () => { }); test("get manifest should fetch wrap manifest from plugin", async () => { - const client = new PolywrapClient({ + const client = new PolywrapClient( + { resolver: buildUriResolver([ - { uri: "ens/ipfs.polywrap.eth", package: ipfsPlugin({}) }, - ]) - }); + { uri: "ens/ipfs.polywrap.eth", package: ipfsPlugin({}) }, + ]), + }, + { noDefaults: true } + ); const manifest = await client.getManifest("ens/ipfs.polywrap.eth"); if (!manifest.ok) fail(manifest.error); expect(manifest.value.type).toEqual("plugin"); diff --git a/packages/js/client/src/__tests__/core/sanity.spec.ts b/packages/js/client/src/__tests__/core/sanity.spec.ts index 830040eebb..f8ca56a104 100644 --- a/packages/js/client/src/__tests__/core/sanity.spec.ts +++ b/packages/js/client/src/__tests__/core/sanity.spec.ts @@ -1,13 +1,13 @@ import { coreInterfaceUris } from "@polywrap/core-js"; import { Uri } from "../.."; import { defaultWrappers } from "@polywrap/client-config-builder-js"; -import { createDefaultClient } from "../utils/createDefaultClient"; +import { PolywrapClient } from "../../PolywrapClient"; jest.setTimeout(200000); describe("sanity", () => { test("default client config", () => { - const client = createDefaultClient(); + const client = new PolywrapClient(); expect(client.getRedirects()).toStrictEqual([ { @@ -24,29 +24,29 @@ describe("sanity", () => { }, ]); - new Uri("wrap://ens/http-resolver.polywrap.eth"), - expect(client.getInterfaces()).toStrictEqual([ - { - interface: coreInterfaceUris.uriResolver, - implementations: [ - new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), - new Uri("wrap://ens/ens-resolver.polywrap.eth"), - new Uri("wrap://ens/fs-resolver.polywrap.eth"), - new Uri("wrap://ens/http-resolver.polywrap.eth"), - ], - }, - { - interface: coreInterfaceUris.logger, - implementations: [new Uri("wrap://ens/js-logger.polywrap.eth")], - }, - ]); + new Uri("wrap://ens/http-resolver.polywrap.eth"), + expect(client.getInterfaces()).toStrictEqual([ + { + interface: coreInterfaceUris.uriResolver, + implementations: [ + new Uri("wrap://ens/ipfs-resolver.polywrap.eth"), + new Uri("wrap://ens/ens-resolver.polywrap.eth"), + new Uri("wrap://ens/fs-resolver.polywrap.eth"), + new Uri("wrap://ens/http-resolver.polywrap.eth"), + ], + }, + { + interface: coreInterfaceUris.logger, + implementations: [new Uri("wrap://ens/js-logger.polywrap.eth")], + }, + ]); }); test("redirect registration", () => { const implementation1Uri = "wrap://ens/some-implementation1.eth"; const implementation2Uri = "wrap://ens/some-implementation2.eth"; - const client = createDefaultClient({ + const client = new PolywrapClient({ redirects: [ { from: implementation1Uri, diff --git a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts index d462663d47..ad291809f0 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts +++ b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts @@ -17,6 +17,7 @@ import fs from "fs"; import { Result } from "@polywrap/result"; import { mockPluginRegistration } from "../../helpers/mockPluginRegistration"; import { createDefaultClient } from "../../utils/createDefaultClient"; +import { PolywrapClient } from "../../../PolywrapClient"; jest.setTimeout(200000); @@ -115,7 +116,7 @@ describe("URI resolution", () => { it("sanity", async () => { const uri = new Uri("ens/uri.eth"); - const client = createDefaultClient(); + const client = new PolywrapClient(); const resolutionContext = new UriResolutionContext(); const result = await client.tryResolveUri({ uri, resolutionContext }); @@ -133,7 +134,7 @@ describe("URI resolution", () => { const toUri1 = new Uri("ens/to1.eth"); const toUri2 = new Uri("ens/to2.eth"); - const client = createDefaultClient({ + const client = new PolywrapClient({ redirects: [ { from: fromUri.uri, @@ -169,7 +170,7 @@ describe("URI resolution", () => { it("can resolve plugin", async () => { const pluginUri = new Uri("ens/plugin.eth"); - const client = createDefaultClient({ + const client = new PolywrapClient({ resolvers: [buildUriResolver(mockPluginRegistration(pluginUri))], }); @@ -192,7 +193,7 @@ describe("URI resolution", () => { }); it("can resolve a URI resolver extension wrapper", async () => { - const client = createDefaultClient({ + const client = new PolywrapClient({ interfaces: [ { interface: coreInterfaceUris.uriResolver.uri, @@ -223,7 +224,7 @@ describe("URI resolution", () => { }); it("can resolve cache", async () => { - const client = createDefaultClient(); + const client = new PolywrapClient(); const resolutionContext1 = new UriResolutionContext(); const result1 = await client.tryResolveUri({ @@ -259,7 +260,7 @@ describe("URI resolution", () => { }); it("can resolve previously cached URI after redirecting by a URI resolver extension", async () => { - const client = createDefaultClient({ + const client = new PolywrapClient({ interfaces: [ { interface: coreInterfaceUris.uriResolver.uri, @@ -313,7 +314,7 @@ describe("URI resolution", () => { const sourceUri = new Uri(`simple-redirect/${wrapperPath}/build`); const resolverRedirectUri = new Uri(`simple/${wrapperPath}/build`); const finalRedirectedUri = new Uri(`ens/redirect.eth`); - const client = createDefaultClient({ + const client = new PolywrapClient({ redirects: [ { from: resolverRedirectUri.uri, @@ -353,16 +354,18 @@ describe("URI resolution", () => { const ensUri = new Uri(`ens/test`); const redirectUri = new Uri(`ens/redirect.eth`); - const client = createDefaultClient({ - resolvers: [{ - tryResolveUri: async (uri: Uri) => { - if (uri.uri === ensUri.uri) { - return UriResolutionResult.ok(redirectUri); - } + const client = new PolywrapClient({ + resolvers: [ + { + tryResolveUri: async (uri: Uri) => { + if (uri.uri === ensUri.uri) { + return UriResolutionResult.ok(redirectUri); + } - return UriResolutionResult.ok(uri); + return UriResolutionResult.ok(uri); + }, }, - }], + ], }); const result = await client.tryResolveUri({ uri: ensUri }); @@ -374,27 +377,29 @@ describe("URI resolution", () => { const fromUri = new Uri(`ens/from.eth`); const redirectUri = new Uri(`ens/to.eth`); - const client = createDefaultClient({ - resolvers: [{ - tryResolveUri: async (uri: Uri) => { - if (uri.uri === fromUri.uri) { - return UriResolutionResult.ok(redirectUri); - } + const client = new PolywrapClient({ + resolvers: [ + { + tryResolveUri: async (uri: Uri) => { + if (uri.uri === fromUri.uri) { + return UriResolutionResult.ok(redirectUri); + } - return UriResolutionResult.ok(uri); + return UriResolutionResult.ok(uri); + }, }, - }], + ], }); const result = await client.tryResolveUri({ - uri: fromUri + uri: fromUri, }); expect(result).toEqual(UriResolutionResult.ok(redirectUri)); }); it("custom wrapper resolver does not cause infinite recursion when resolved at runtime", async () => { - const client = createDefaultClient({ + const client = new PolywrapClient({ interfaces: [ { interface: coreInterfaceUris.uriResolver.uri, diff --git a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts index e5a5f701b5..f22f08ecf3 100644 --- a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts @@ -10,7 +10,6 @@ import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { ErrResult } from "../utils/resultTypes"; import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; import { mockPluginRegistration } from "../helpers/mockPluginRegistration"; -import { createDefaultClient } from "../utils/createDefaultClient"; jest.setTimeout(200000); @@ -39,7 +38,7 @@ describe("wasm-wrapper", () => { }; test("can invoke with string URI", async () => { - const client = createDefaultClient(); + const client = new PolywrapClient(); const result = await client.invoke({ uri: simpleWrapperUri.uri, method: "simpleMethod", @@ -55,7 +54,7 @@ describe("wasm-wrapper", () => { }); test("can invoke with typed URI", async () => { - const client = createDefaultClient(); + const client = new PolywrapClient(); const result = await client.invoke({ uri: simpleWrapperUri, method: "simpleMethod", @@ -71,7 +70,7 @@ describe("wasm-wrapper", () => { }); test("invoke with decode defaulted to true works as expected", async () => { - const client = createDefaultClient(); + const client = new PolywrapClient(); const result = await client.invoke({ uri: simpleWrapperUri.uri, method: "simpleMethod", @@ -87,7 +86,7 @@ describe("wasm-wrapper", () => { }); test("invoke with decode set to false works as expected", async () => { - const client = createDefaultClient(); + const client = new PolywrapClient(); const result = await client.invoke({ uri: simpleWrapperUri, method: "simpleMethod", @@ -104,7 +103,7 @@ describe("wasm-wrapper", () => { }); it("should invoke wrapper with custom redirects", async () => { - const client = createDefaultClient({ + const client = new PolywrapClient({ redirects: [ { from: simpleWrapperUri.uri, @@ -133,23 +132,23 @@ describe("wasm-wrapper", () => { }); it("should allow clone + reconfigure of redirects", async () => { - let builder = new ClientConfigBuilder().addDefaults().add({ + let builder = new ClientConfigBuilder().add({ packages: [ { uri: "wrap://ens/mock.polywrap.eth", package: mockPlugin(), }, - ] + ], }); - const client = createDefaultClient(builder.getConfig()); + const client = new PolywrapClient(builder.build()); const clientResult = await client.invoke({ uri: simpleWrapperUri.uri, method: "simpleMethod", args: { arg: "test", - } + }, }); if (!clientResult.ok) fail(clientResult.error); @@ -165,16 +164,14 @@ describe("wasm-wrapper", () => { builder = builder.add({ redirects }); - const newClient = new PolywrapClient( - builder.buildDefault() - ); + const newClient = new PolywrapClient(builder.build()); const newClientResult = await newClient.invoke({ uri: simpleWrapperUri.uri, method: "simpleMethod", args: { arg: "test", - } + }, }); if (!newClientResult.ok) fail(newClientResult.error); @@ -183,18 +180,15 @@ describe("wasm-wrapper", () => { }); test("get file from wrapper", async () => { - const client = createDefaultClient(); + const client = new PolywrapClient(); const expectedManifest = new Uint8Array( await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.info`) ); - const receivedManifestResult = await client.getFile( - simpleWrapperUri, - { - path: "./wrap.info", - } - ); + const receivedManifestResult = await client.getFile(simpleWrapperUri, { + path: "./wrap.info", + }); if (!receivedManifestResult.ok) fail(receivedManifestResult.error); const receivedManifest = receivedManifestResult.value as Uint8Array; @@ -204,33 +198,40 @@ describe("wasm-wrapper", () => { await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.wasm`) ); - const receivedWasmModuleResult = await client.getFile( - simpleWrapperUri, - { - path: "./wrap.wasm", - } - ); + const receivedWasmModuleResult = await client.getFile(simpleWrapperUri, { + path: "./wrap.wasm", + }); if (!receivedWasmModuleResult.ok) fail(receivedWasmModuleResult.error); const receivedWasmModule = receivedWasmModuleResult.value as Uint8Array; expect(receivedWasmModule).toEqual(expectedWasmModule); - const pluginClient = new PolywrapClient({ - resolver: buildUriResolver([ - mockPluginRegistration("ens/mock-plugin.eth") - ]), - }); + const pluginClient = new PolywrapClient( + { + resolver: buildUriResolver([ + mockPluginRegistration("ens/mock-plugin.eth"), + ]), + }, + { + noDefaults: true, + } + ); - let pluginGetFileResult = await pluginClient.getFile("ens/mock-plugin.eth", { - path: "./index.js", - }); + let pluginGetFileResult = await pluginClient.getFile( + "ens/mock-plugin.eth", + { + path: "./index.js", + } + ); pluginGetFileResult = pluginGetFileResult as ErrResult; - expect(pluginGetFileResult.error?.message).toContain("client.getFile(...) is not implemented for Plugins."); + expect(pluginGetFileResult.error?.message).toContain( + "client.getFile(...) is not implemented for Plugins." + ); }); test("subscribe", async () => { - const client = createDefaultClient({ + const client = new PolywrapClient({ resolvers: [ { uri: memoryStoragePluginUri, @@ -279,7 +280,7 @@ describe("wasm-wrapper", () => { }); test("subscription early stop", async () => { - const client = createDefaultClient({ + const client = new PolywrapClient({ resolvers: [ { uri: memoryStoragePluginUri, diff --git a/packages/js/client/src/__tests__/e2e/env.spec.ts b/packages/js/client/src/__tests__/e2e/env.spec.ts index 9035d8eebb..e0fdfb7419 100644 --- a/packages/js/client/src/__tests__/e2e/env.spec.ts +++ b/packages/js/client/src/__tests__/e2e/env.spec.ts @@ -24,22 +24,23 @@ describe("env", () => { test("plugin env types", async () => { const implementationUri = "wrap://ens/some-implementation.eth"; const envPlugin = mockEnvPlugin(); - const client = new PolywrapClient({ - resolver: RecursiveResolver.from( - { + const client = new PolywrapClient( + { + resolver: RecursiveResolver.from({ uri: implementationUri, package: envPlugin, - }, - ), - envs: [ - { - uri: implementationUri, - env: { - arg1: "10", + }), + envs: [ + { + uri: implementationUri, + env: { + arg1: "10", + }, }, - }, - ], - }); + ], + }, + { noDefaults: true } + ); const mockEnv = await client.invoke({ uri: implementationUri, @@ -53,26 +54,29 @@ describe("env", () => { test("inline plugin env types", async () => { const implementationUri = "wrap://ens/some-implementation.eth"; - const client = new PolywrapClient({ - resolver: RecursiveResolver.from([ - { - uri: implementationUri, - package: PluginPackage.from((module) => ({ - mockEnv: (): MockEnv => { - return module.env; - } - })), - }] - ), - envs: [ - { - uri: implementationUri, - env: { - arg1: "10", + const client = new PolywrapClient( + { + resolver: RecursiveResolver.from([ + { + uri: implementationUri, + package: PluginPackage.from((module) => ({ + mockEnv: (): MockEnv => { + return module.env; + }, + })), }, - }, - ], - }); + ]), + envs: [ + { + uri: implementationUri, + env: { + arg1: "10", + }, + }, + ], + }, + { noDefaults: true } + ); const mockEnv = await client.invoke({ uri: implementationUri, diff --git a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts index 686037d3d6..34fb04ca1f 100644 --- a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts +++ b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts @@ -8,7 +8,7 @@ import { } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { getClientWithEnsAndIpfs } from "../helpers/getClientWithEnsAndIpfs"; -import { createDefaultClient } from "../utils/createDefaultClient"; +import { PolywrapClient } from "../../PolywrapClient"; jest.setTimeout(300000); @@ -27,7 +27,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - const client = createDefaultClient({ + const client = new PolywrapClient({ packages: [ { uri: "wrap://ens/memory-storage.polywrap.eth", @@ -45,7 +45,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBigIntTypeTest(createDefaultClient(), wrapperUri); + await TestCases.runBigIntTypeTest(new PolywrapClient(), wrapperUri); }); it("bignumber-type", async () => { @@ -54,7 +54,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBigNumberTypeTest(createDefaultClient(), wrapperUri); + await TestCases.runBigNumberTypeTest(new PolywrapClient(), wrapperUri); }); it("bytes-type", async () => { @@ -63,7 +63,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBytesTypeTest(createDefaultClient(), wrapperUri); + await TestCases.runBytesTypeTest(new PolywrapClient(), wrapperUri); }); it("enum-types", async () => { @@ -72,20 +72,20 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runEnumTypesTest(createDefaultClient(), wrapperUri); + await TestCases.runEnumTypesTest(new PolywrapClient(), wrapperUri); }); - it("map-type", async () => { + it("map-type", async () => { const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/map-type`; const wrapperUri = `fs/${wrapperPath}/build`; await buildWrapper(wrapperPath); - await TestCases.runMapTypeTest(createDefaultClient(), wrapperUri); + await TestCases.runMapTypeTest(new PolywrapClient(), wrapperUri); }); it("reserved-words", async () => { - const client = createDefaultClient(); + const client = new PolywrapClient(); const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/reserved-words`; const wrapperUri = `fs/${wrapperPath}/build`; @@ -120,7 +120,7 @@ describe("wasm-as test cases", () => { await buildWrapper(interfacePath); await buildWrapper(implementationPath); - const client = createDefaultClient({ + const client = new PolywrapClient({ interfaces: [ { interface: interfaceUri, @@ -150,7 +150,7 @@ describe("wasm-as test cases", () => { await buildWrapper(implementationPath); await buildWrapper(aggregatorPath); - const client = createDefaultClient({ + const client = new PolywrapClient({ interfaces: [ { interface: interfaceUri, @@ -181,7 +181,7 @@ describe("wasm-as test cases", () => { await buildWrapper(implementationPath); - const client = createDefaultClient({ + const client = new PolywrapClient({ interfaces: [ { interface: interfaceUri, @@ -220,7 +220,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runInvalidTypesTest(createDefaultClient(), wrapperUri); + await TestCases.runInvalidTypesTest(new PolywrapClient(), wrapperUri); }); it("JSON-type", async () => { @@ -229,7 +229,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runJsonTypeTest(createDefaultClient(), wrapperUri); + await TestCases.runJsonTypeTest(new PolywrapClient(), wrapperUri); }); it("large-types", async () => { @@ -238,7 +238,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runLargeTypesTest(createDefaultClient(), wrapperUri); + await TestCases.runLargeTypesTest(new PolywrapClient(), wrapperUri); }); it("number-types under and overflows", async () => { @@ -247,7 +247,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runNumberTypesTest(createDefaultClient(), wrapperUri); + await TestCases.runNumberTypesTest(new PolywrapClient(), wrapperUri); }); it("object-types", async () => { @@ -256,7 +256,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runObjectTypesTest(createDefaultClient(), wrapperUri); + await TestCases.runObjectTypesTest(new PolywrapClient(), wrapperUri); }); it("simple-storage", async () => { @@ -275,7 +275,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); await TestCases.runSimpleEnvTest( - createDefaultClient({ + new PolywrapClient({ envs: [ { uri: wrapperUri, @@ -301,7 +301,7 @@ describe("wasm-as test cases", () => { await buildWrapper(wrapperPath); await TestCases.runComplexEnvs( - createDefaultClient({ + new PolywrapClient({ envs: [ { uri: wrapperUri, From f46f06d9f0ec1af2b48e965cc12898de9fb463f7 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 22:11:11 +0200 Subject: [PATCH 073/126] config builder updates --- .../src/ClientConfigBuilder.ts | 8 +-- .../src/CustomClientConfig.ts | 12 ++--- .../__tests__/client-config-builder.spec.ts | 50 +++++++++---------- 3 files changed, 34 insertions(+), 36 deletions(-) diff --git a/packages/js/client-config-builder/src/ClientConfigBuilder.ts b/packages/js/client-config-builder/src/ClientConfigBuilder.ts index 3d4ac7a2d3..1f807c2207 100644 --- a/packages/js/client-config-builder/src/ClientConfigBuilder.ts +++ b/packages/js/client-config-builder/src/ClientConfigBuilder.ts @@ -31,10 +31,6 @@ export class ClientConfigBuilder { resolvers: [], }; - getConfig(): CustomClientConfig { - return this._config; - } - add(config: Partial>): ClientConfigBuilder { if (config.envs) { this.addEnvs(config.envs); @@ -356,6 +352,10 @@ export class ClientConfigBuilder { return this; } + build(): CustomClientConfig { + return this._config; + } + buildDefault( wrapperCache?: IWrapperCache, resolver?: IUriResolver diff --git a/packages/js/client-config-builder/src/CustomClientConfig.ts b/packages/js/client-config-builder/src/CustomClientConfig.ts index ab4817a39b..73999ca74e 100644 --- a/packages/js/client-config-builder/src/CustomClientConfig.ts +++ b/packages/js/client-config-builder/src/CustomClientConfig.ts @@ -9,10 +9,10 @@ import { import { UriResolverLike } from "@polywrap/uri-resolvers-js"; export type CustomClientConfig = { - redirects: IUriRedirect[]; - interfaces: InterfaceImplementations[]; - envs: Env[]; - wrappers: IUriWrapper[]; - packages: IUriPackage[]; - resolvers: UriResolverLike[]; + readonly redirects: IUriRedirect[]; + readonly interfaces: InterfaceImplementations[]; + readonly envs: Env[]; + readonly wrappers: IUriWrapper[]; + readonly packages: IUriPackage[]; + readonly resolvers: UriResolverLike[]; }; diff --git a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts index 544c123b37..231892d122 100644 --- a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts +++ b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts @@ -59,7 +59,7 @@ describe("Client config builder", () => { const testUriResolver: IUriResolver = new NamedUriResolver("test1"); it("should build an empty partial config", () => { - const clientConfig = new ClientConfigBuilder().getConfig(); + const clientConfig = new ClientConfigBuilder().build(); expect(clientConfig).toStrictEqual({ envs: [], @@ -79,7 +79,7 @@ describe("Client config builder", () => { redirects: testUriRedirects, resolvers: [testUriResolver], }) - .getConfig(); + .build(); expect(clientConfig).toBeTruthy(); expect(clientConfig.envs).toStrictEqual( @@ -116,7 +116,7 @@ describe("Client config builder", () => { interfaces: [testInterfaces[1]], redirects: [testUriRedirects[1]], }) - .getConfig(); + .build(); expect(clientConfig).toBeTruthy(); expect(clientConfig.envs).toStrictEqual( @@ -141,7 +141,7 @@ describe("Client config builder", () => { }); it("should successfully add the default config", () => { - const clientConfig = new ClientConfigBuilder().addDefaults().getConfig(); + const clientConfig = new ClientConfigBuilder().addDefaults().build(); const expectedConfig = getDefaultConfig(); @@ -161,7 +161,7 @@ describe("Client config builder", () => { }, }; - const config = new ClientConfigBuilder().addEnv(envUri, env).getConfig(); + const config = new ClientConfigBuilder().addEnv(envUri, env).build(); if (!config.envs || config.envs.length !== 1) { fail(["Expected 1 env, received:", config.envs]); @@ -185,7 +185,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addEnv(envUri, env1) .addEnv(envUri, env2) - .getConfig(); + .build(); const expectedEnv = { ...env1, ...env2 }; @@ -201,7 +201,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addEnv(testEnvs[0].uri, testEnvs[0].env) .addEnv(testEnvs[1].uri, testEnvs[1].env) - .getConfig(); + .build(); if (!config.envs || config.envs.length !== 2) { fail(["Expected 2 envs, received:", config.envs]); @@ -222,7 +222,7 @@ describe("Client config builder", () => { .addEnv(testEnvs[0].uri, testEnvs[0].env) .addEnv(testEnvs[1].uri, testEnvs[1].env) .removeEnv(testEnvs[0].uri) - .getConfig(); + .build(); if (!config.envs || config.envs.length !== 1) { fail(["Expected 1 env, received:", config.envs]); @@ -241,7 +241,7 @@ describe("Client config builder", () => { foo: "bar", }; - const config = new ClientConfigBuilder().setEnv(envUri, env).getConfig(); + const config = new ClientConfigBuilder().setEnv(envUri, env).build(); if (!config.envs || config.envs.length !== 1) { fail(["Expected 1 env, received:", config.envs]); @@ -266,7 +266,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addEnv(envUri, env1) .setEnv(envUri, env2) - .getConfig(); + .build(); if (!config.envs || config.envs.length !== 1) { fail(["Expected 1 env, received:", config.envs]); @@ -284,7 +284,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addInterfaceImplementation(interfaceUri, implUri) - .getConfig(); + .build(); if (!config.interfaces || config.interfaces.length !== 1) { fail(["Expected 1 interface, received:", config.interfaces]); @@ -304,7 +304,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addInterfaceImplementation(interfaceUri, implUri1) .addInterfaceImplementation(interfaceUri, implUri2) - .getConfig(); + .build(); if (!config.interfaces || config.interfaces.length !== 1) { fail(["Expected 1 interface, received:", config.interfaces]); @@ -334,7 +334,7 @@ describe("Client config builder", () => { .addInterfaceImplementation(interfaceUri2, implUri2) .addInterfaceImplementation(interfaceUri1, implUri3) .addInterfaceImplementation(interfaceUri2, implUri4) - .getConfig(); + .build(); if (!config.interfaces || config.interfaces.length !== 2) { fail(["Expected 2 interfaces, received:", config.interfaces]); @@ -365,7 +365,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addInterfaceImplementations(interfaceUri, [implUri1, implUri2]) - .getConfig(); + .build(); if (!config.interfaces || config.interfaces.length !== 1) { fail(["Expected 1 interface, received:", config.interfaces]); @@ -392,7 +392,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addInterfaceImplementations(interfaceUri, [implUri1]) .addInterfaceImplementations(interfaceUri, [implUri2, implUri3]) - .getConfig(); + .build(); if (!config.interfaces || config.interfaces.length !== 1) { fail(["Expected 1 interface, received:", config.interfaces]); @@ -428,7 +428,7 @@ describe("Client config builder", () => { .addInterfaceImplementation(interfaceUri2, implUri2) .addInterfaceImplementations(interfaceUri1, [implUri3, implUri5]) .addInterfaceImplementations(interfaceUri2, [implUri4, implUri6]) - .getConfig(); + .build(); if (!config.interfaces || config.interfaces.length !== 2) { fail(["Expected 2 interfaces, received:", config.interfaces]); @@ -464,7 +464,7 @@ describe("Client config builder", () => { .addInterfaceImplementations(interfaceUri1, [implUri1, implUri2]) .addInterfaceImplementations(interfaceUri2, [implUri1, implUri2]) .removeInterfaceImplementation(interfaceUri1, implUri2) - .getConfig(); + .build(); if (!config.interfaces || config.interfaces.length !== 2) { fail(["Expected 2 interfaces, received:", config.interfaces]); @@ -498,7 +498,7 @@ describe("Client config builder", () => { .addInterfaceImplementations(interfaceUri2, [implUri1, implUri2]) .removeInterfaceImplementation(interfaceUri1, implUri1) .removeInterfaceImplementation(interfaceUri1, implUri2) - .getConfig(); + .build(); if (!config.interfaces || config.interfaces.length !== 1) { fail(["Expected 1 interface, received:", config.interfaces]); @@ -523,7 +523,7 @@ describe("Client config builder", () => { const from = "wrap://ens/from.this.ens"; const to = "wrap://ens/to.that.ens"; - const config = new ClientConfigBuilder().addRedirect(from, to).getConfig(); + const config = new ClientConfigBuilder().addRedirect(from, to).build(); expect(config.redirects).toHaveLength(1); expect(config.redirects).toContainEqual({ @@ -542,7 +542,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addRedirect(from1, to1) .addRedirect(from2, to2) - .getConfig(); + .build(); expect(config.redirects).toHaveLength(2); expect(config.redirects).toContainEqual({ @@ -565,7 +565,7 @@ describe("Client config builder", () => { .addRedirect(from1, to1) .addRedirect(from2, to1) .addRedirect(from1, to2) - .getConfig(); + .build(); expect(config.redirects).toHaveLength(2); expect(config.redirects).toContainEqual({ @@ -589,7 +589,7 @@ describe("Client config builder", () => { .addRedirect(from1, to1) .addRedirect(from2, to2) .removeUriRedirect(from1) - .getConfig(); + .build(); expect(config.redirects).toHaveLength(1); expect(config.redirects).toContainEqual({ @@ -601,9 +601,7 @@ describe("Client config builder", () => { it("should set uri resolver", () => { const uriResolver = new NamedUriResolver("ResolverName"); - const config = new ClientConfigBuilder() - .addResolver(uriResolver) - .getConfig(); + const config = new ClientConfigBuilder().addResolver(uriResolver).build(); expect(((config.resolvers[0] as unknown) as NamedUriResolver).name).toBe( "ResolverName" @@ -617,7 +615,7 @@ describe("Client config builder", () => { const config = new ClientConfigBuilder() .addResolver(uriResolver1) .addResolver(uriResolver2) - .getConfig(); + .build(); expect(((config.resolvers[0] as unknown) as NamedUriResolver).name).toBe( "first" From ac8dd5d53b1e1021d2d0a5a2dc7aa45ee01e9d20 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 22:11:51 +0200 Subject: [PATCH 074/126] re-exporting resolvers and config builder --- packages/js/client/src/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/js/client/src/index.ts b/packages/js/client/src/index.ts index af87db3bb2..0c801b801a 100644 --- a/packages/js/client/src/index.ts +++ b/packages/js/client/src/index.ts @@ -1,2 +1,4 @@ export * from "./PolywrapClient"; export * from "@polywrap/core-js"; +export * from "@polywrap/uri-resolvers-js"; +export * from "@polywrap/client-config-builder-js"; From d090ec77ccdea9bb50917fe0464108278cfbb563 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 7 Oct 2022 22:14:15 +0200 Subject: [PATCH 075/126] implemented new default client --- packages/js/client/src/PolywrapClient.ts | 131 +++++++++++++----- .../helpers/getClientWithEnsAndIpfs.ts | 112 +++++++-------- .../__tests__/utils/createDefaultClient.ts | 11 -- .../ethereum/src/__tests__/e2e.spec.ts | 4 +- 4 files changed, 146 insertions(+), 112 deletions(-) delete mode 100644 packages/js/client/src/__tests__/utils/createDefaultClient.ts diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index 76b7675d60..ce61948e75 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -27,7 +27,10 @@ import { QueryResult, InvokeResult, } from "@polywrap/core-js"; -import { buildCleanUriHistory } from "@polywrap/uri-resolvers-js"; +import { + buildCleanUriHistory, + IWrapperCache, +} from "@polywrap/uri-resolvers-js"; import { msgpackEncode, msgpackDecode } from "@polywrap/msgpack-js"; import { DeserializeManifestOptions, @@ -35,50 +38,53 @@ import { } from "@polywrap/wrap-manifest-types-js"; import { Tracer, TracerConfig, TracingLevel } from "@polywrap/tracing-js"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; +import { + ClientConfigBuilder, + CustomClientConfig, +} from "@polywrap/client-config-builder-js"; export interface PolywrapClientConfig - extends ClientConfig { + extends CustomClientConfig { + readonly wrapperCache?: IWrapperCache; readonly tracerConfig: Readonly>; } -export class PolywrapClient implements Client { - private _config: PolywrapClientConfig; +export interface PolywrapCoreClientConfig< + TUri extends Uri | string = Uri | string +> extends ClientConfig { + readonly tracerConfig: Readonly>; +} - constructor(config: Partial) { +export class PolywrapClient implements Client { + private _config: PolywrapCoreClientConfig; + + constructor( + config?: Partial, + options?: { noDefaults?: false } + ); + constructor( + config: Partial, + options: { noDefaults: true } + ); + constructor( + config: + | Partial + | undefined + | Partial, + options?: { noDefaults?: boolean } + ) { try { this.setTracingEnabled(config?.tracerConfig); Tracer.startSpan("PolywrapClient: constructor"); - if (!config?.resolver) { - throw new Error("URI Resolver is required but not defined"); - } - - this._config = { - redirects: - config?.redirects?.map((x) => ({ - from: Uri.from(x.from), - to: Uri.from(x.to), - })) ?? [], - interfaces: - config?.interfaces?.map((x) => ({ - interface: Uri.from(x.interface), - implementations: x.implementations.map((y) => Uri.from(y)), - })) ?? [], - envs: - config?.envs?.map((x) => ({ - uri: Uri.from(x.uri), - env: x.env, - })) ?? [], - resolver: config.resolver, - tracerConfig: { - consoleEnabled: !!config?.tracerConfig?.consoleEnabled, - consoleDetailed: config?.tracerConfig?.consoleDetailed, - httpEnabled: !!config?.tracerConfig?.httpEnabled, - httpUrl: config?.tracerConfig?.httpUrl, - tracingLevel: config?.tracerConfig?.tracingLevel, - }, - }; + this._config = !options?.noDefaults + ? this.buildConfigFromPolywrapClientConfig( + config as PolywrapClientConfig + ) + : this.buildConfigFromPolywrapCoreClientConfig( + config as PolywrapCoreClientConfig + ); Tracer.setAttribute("config", this._config); } catch (error) { @@ -89,7 +95,7 @@ export class PolywrapClient implements Client { } } - public getConfig(): PolywrapClientConfig { + public getConfig(): PolywrapCoreClientConfig { return this._config; } @@ -510,4 +516,59 @@ export class PolywrapClient implements Client { return ResultOk(uriPackageOrWrapper.wrapper); } } + + private buildConfigFromPolywrapClientConfig( + config?: PolywrapClientConfig + ): PolywrapCoreClientConfig { + const builder = new ClientConfigBuilder(); + + builder.addDefaults(); + + if (config) { + builder.add(config); + } + + const sanitizedConfig = builder.buildDefault(config?.wrapperCache); + + return { + ...sanitizedConfig, + tracerConfig: { + consoleEnabled: !!config?.tracerConfig?.consoleEnabled, + consoleDetailed: config?.tracerConfig?.consoleDetailed, + httpEnabled: !!config?.tracerConfig?.httpEnabled, + httpUrl: config?.tracerConfig?.httpUrl, + tracingLevel: config?.tracerConfig?.tracingLevel, + }, + }; + } + + private buildConfigFromPolywrapCoreClientConfig( + config: PolywrapCoreClientConfig + ): PolywrapCoreClientConfig { + return { + redirects: + config?.redirects?.map((x) => ({ + from: Uri.from(x.from), + to: Uri.from(x.to), + })) ?? [], + interfaces: + config?.interfaces?.map((x) => ({ + interface: Uri.from(x.interface), + implementations: x.implementations.map((y) => Uri.from(y)), + })) ?? [], + envs: + config?.envs?.map((x) => ({ + uri: Uri.from(x.uri), + env: x.env, + })) ?? [], + resolver: config.resolver, + tracerConfig: { + consoleEnabled: !!config?.tracerConfig?.consoleEnabled, + consoleDetailed: config?.tracerConfig?.consoleDetailed, + httpEnabled: !!config?.tracerConfig?.httpEnabled, + httpUrl: config?.tracerConfig?.httpUrl, + tracingLevel: config?.tracerConfig?.tracingLevel, + }, + }; + } } diff --git a/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts b/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts index a772289436..bda4d8cab1 100644 --- a/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts +++ b/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts @@ -5,17 +5,11 @@ import { Connections, ethereumPlugin, } from "@polywrap/ethereum-plugin-js"; -import { - RecursiveResolver, - PackageToWrapperCacheResolver, - WrapperCache, -} from "@polywrap/uri-resolvers-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; -import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; export const getClientWithEnsAndIpfs = () => { const connections: Connections = new Connections({ @@ -26,62 +20,54 @@ export const getClientWithEnsAndIpfs = () => { }, defaultNetwork: "testnet", }); - return new PolywrapClient( - { - envs: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: providers.ipfs - } - } - ], - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: [ - "wrap://ens/ipfs-resolver.polywrap.eth", - "wrap://ens/ens-resolver.polywrap.eth", - "wrap://ens/fs-resolver.polywrap.eth", - ], + return new PolywrapClient({ + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { + provider: providers.ipfs, }, - ], - resolver: RecursiveResolver.from( - PackageToWrapperCacheResolver.from( - [ - { - uri: "wrap://ens/ethereum.polywrap.eth", - package: ethereumPlugin({ connections }), - }, - { - uri: "wrap://ens/ens-resolver.polywrap.eth", - package: ensResolverPlugin({ - addresses: { - testnet: ensAddresses.ensAddress, - }, - }), - }, - { - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }, - { - uri: "wrap://ens/ipfs-resolver.polywrap.eth", - package: ipfsResolverPlugin({}), - }, - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - package: fileSystemResolverPlugin({}), - }, - new ExtendableUriResolver(), - ], - new WrapperCache(), - ), - ), - } - ); + }, + ], + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: [ + "wrap://ens/ipfs-resolver.polywrap.eth", + "wrap://ens/ens-resolver.polywrap.eth", + "wrap://ens/fs-resolver.polywrap.eth", + ], + }, + ], + packages: [ + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ connections }), + }, + { + uri: "wrap://ens/ens-resolver.polywrap.eth", + package: ensResolverPlugin({ + addresses: { + testnet: ensAddresses.ensAddress, + }, + }), + }, + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }, + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + package: ipfsResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + ], + }); }; diff --git a/packages/js/client/src/__tests__/utils/createDefaultClient.ts b/packages/js/client/src/__tests__/utils/createDefaultClient.ts deleted file mode 100644 index f8f295c82c..0000000000 --- a/packages/js/client/src/__tests__/utils/createDefaultClient.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ClientConfigBuilder, CustomClientConfig } from "@polywrap/client-config-builder-js"; -import { Uri, Client } from "@polywrap/core-js"; -import { PolywrapClient } from "../../PolywrapClient"; - -export const createDefaultClient = ( - config: Partial> = {} -): Client => { - return new PolywrapClient( - new ClientConfigBuilder().addDefaults().add(config).buildDefault() - ); -}; diff --git a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts index 88bdf0b765..c616f73fb7 100644 --- a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts @@ -76,9 +76,7 @@ describe("Ethereum Plugin", () => { }); defaultConfig = getDefaultConfig(connections); - client = new PolywrapClient( - new ClientConfigBuilder().add(defaultConfig).buildDefault() - ); + client = new PolywrapClient(defaultConfig); await buildWrapper(wrapperPath); }); From 0b756c96359b3748c554a954c1290a9dc084b63f Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 8 Oct 2022 00:26:00 +0200 Subject: [PATCH 076/126] fixed tests with new client --- .../cli/src/__tests__/unit/jobrunner.spec.ts | 5 +- .../ethereum/src/__tests__/e2e.spec.ts | 53 ++++---- .../file-system/src/__tests__/e2e.spec.ts | 17 +-- .../http/src/__tests__/e2e/e2e.spec.ts | 15 +-- .../http/src/__tests__/helpers/getClient.ts | 59 ++++----- .../js/plugins/ipfs/src/__tests__/e2e.spec.ts | 114 ++++++++++-------- .../logger/src/__tests__/e2e/e2e.spec.ts | 21 ++-- .../ens-resolver/src/__tests__/e2e.spec.ts | 2 +- .../src/__tests__/helpers/getClient.ts | 97 +++++++-------- .../src/__tests__/helpers/getClient.ts | 51 ++++---- .../http-resolver/src/__tests__/e2e.spec.ts | 4 +- .../src/__tests__/helpers/getClient.ts | 51 ++++---- .../ipfs-resolver/src/__tests__/e2e.spec.ts | 8 +- .../src/__tests__/helpers/getClient.ts | 53 ++++++++ .../__tests__/helpers/getClientWithIpfs.ts | 50 -------- .../plugins/ws/src/__tests__/e2e/e2e.spec.ts | 99 +++++++-------- .../e2e/helpers/createDefaultClient.ts | 14 --- .../ws/src/__tests__/e2e/integration.spec.ts | 8 +- 18 files changed, 368 insertions(+), 353 deletions(-) create mode 100644 packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClient.ts delete mode 100644 packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts delete mode 100644 packages/js/plugins/ws/src/__tests__/e2e/helpers/createDefaultClient.ts diff --git a/packages/cli/src/__tests__/unit/jobrunner.spec.ts b/packages/cli/src/__tests__/unit/jobrunner.spec.ts index 6fba4fc844..ceb0da7642 100644 --- a/packages/cli/src/__tests__/unit/jobrunner.spec.ts +++ b/packages/cli/src/__tests__/unit/jobrunner.spec.ts @@ -17,7 +17,10 @@ describe("workflow JobRunner", () => { for (const testCase of testCases) { test(testCase.name, async () => { const ids = Object.keys(testCase.workflow.jobs); - const jobRunner = new JobRunner(new ClientConfigBuilder().addDefaults().getConfig(), testCase.onExecution); + const jobRunner = new JobRunner( + new ClientConfigBuilder().addDefaults().build(), + testCase.onExecution + ); await jobRunner.run(testCase.workflow.jobs, ids); }); } diff --git a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts index c616f73fb7..ee7b078201 100644 --- a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts @@ -1,10 +1,7 @@ import * as Schema from "../wrap"; import { PolywrapClient, Uri } from "@polywrap/client-js"; -import { - ClientConfigBuilder, - CustomClientConfig, -} from "@polywrap/client-config-builder-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; import { initTestEnvironment, stopTestEnvironment, @@ -875,22 +872,18 @@ describe("Ethereum Plugin", () => { }); it("getNetwork - mainnet with env", async () => { - const config = new ClientConfigBuilder() - .add(defaultConfig) - .add({ - envs: [ - { - uri: "wrap://ens/ethereum.polywrap.eth", - env: { - connection: { - networkNameOrChainId: "mainnet", - }, + const mainnetClient = new PolywrapClient({ + envs: [ + { + uri: "wrap://ens/ethereum.polywrap.eth", + env: { + connection: { + networkNameOrChainId: "mainnet", }, }, - ], - }) - .buildDefault(); - const mainnetClient = new PolywrapClient(config); + }, + ], + }); const mainnetNetwork = await mainnetClient.invoke({ uri, method: "getNetwork", @@ -906,22 +899,18 @@ describe("Ethereum Plugin", () => { }); it("getNetwork - polygon with env", async () => { - const config = new ClientConfigBuilder() - .add(defaultConfig) - .add({ - envs: [ - { - uri: "wrap://ens/ethereum.polywrap.eth", - env: { - connection: { - node: "https://polygon-rpc.com", - }, + const polygonClient = new PolywrapClient({ + envs: [ + { + uri: "wrap://ens/ethereum.polywrap.eth", + env: { + connection: { + node: "https://polygon-rpc.com", }, }, - ], - }) - .buildDefault(); - const polygonClient = new PolywrapClient(config); + }, + ], + }); const polygonNetwork = await polygonClient.invoke({ uri, method: "getNetwork", diff --git a/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts b/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts index 1455005dcb..98d738e13b 100644 --- a/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts @@ -1,6 +1,6 @@ import { fileSystemPlugin } from "../index"; import { PolywrapClient } from "@polywrap/client-js"; -import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { FileSystem_Module, FileSystem_EncodingEnum } from "../wrap"; import fs from "fs"; import path from "path"; @@ -26,12 +26,15 @@ describe("FileSystem plugin", () => { beforeAll(async () => { await cleanUpTempFiles(); - client = new PolywrapClient({ - resolver: RecursiveResolver.from({ - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }), - }); + client = new PolywrapClient( + { + resolver: buildUriResolver({ + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }), + }, + { noDefaults: true } + ); }); afterEach(async () => { diff --git a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts index 3600135038..fc9e8574ed 100644 --- a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts @@ -2,7 +2,7 @@ import { httpPlugin } from "../.."; import { Http_Response } from "../../wrap"; import { PolywrapClient } from "@polywrap/client-js"; -import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import nock from "nock"; @@ -17,14 +17,15 @@ describe("e2e tests for HttpPlugin", () => { let polywrapClient: PolywrapClient; beforeEach(() => { - polywrapClient = new PolywrapClient({ - resolver: RecursiveResolver.from([ - { + polywrapClient = new PolywrapClient( + { + resolver: buildUriResolver({ uri: "wrap://ens/http.polywrap.eth", package: httpPlugin({}), - }, - ]), - }); + }), + }, + { noDefaults: true } + ); }); describe("get method", () => { diff --git a/packages/js/plugins/http/src/__tests__/helpers/getClient.ts b/packages/js/plugins/http/src/__tests__/helpers/getClient.ts index 3ddbf22d8f..b186c40f4c 100644 --- a/packages/js/plugins/http/src/__tests__/helpers/getClient.ts +++ b/packages/js/plugins/http/src/__tests__/helpers/getClient.ts @@ -11,32 +11,35 @@ import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; import { httpPlugin } from "../.."; export const getClient = () => { - return new PolywrapClient({ - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: ["wrap://ens/fs-resolver.polywrap.eth"], - }, - ], - resolver: RecursiveResolver.from( - PackageToWrapperCacheResolver.from( - [ - { - uri: "wrap://ens/http.polywrap.eth", - package: httpPlugin({}), - }, - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - package: fileSystemResolverPlugin({}), - }, - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, - new ExtendableUriResolver(), - ], - new WrapperCache() - ) - ), - }); + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/fs-resolver.polywrap.eth"], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/http.polywrap.eth", + package: httpPlugin({}), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }, + { noDefaults: true } + ); }; diff --git a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts index 404e6774ca..cc51a4052b 100644 --- a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts @@ -27,18 +27,21 @@ describe("IPFS Plugin", () => { await initTestEnvironment(); ipfs = createIpfsClient(providers.ipfs); - client = new PolywrapClient({ - envs: [ - { + client = new PolywrapClient( + { + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { provider: providers.ipfs }, + }, + ], + resolver: RecursiveResolver.from({ uri: "wrap://ens/ipfs.polywrap.eth", - env: { provider: providers.ipfs }, - }, - ], - resolver: RecursiveResolver.from({ - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }), - }); + package: ipfsPlugin({}), + }), + }, + { noDefaults: true } + ); let ipfsAddResult = await ipfs.add(sampleFileBuffer); sampleFileIpfsInfo = ipfsAddResult[0]; @@ -103,21 +106,24 @@ describe("IPFS Plugin", () => { ); }; - const altClient = new PolywrapClient({ - envs: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: providers.ipfs, - timeout: 1000, + const altClient = new PolywrapClient( + { + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { + provider: providers.ipfs, + timeout: 1000, + }, }, - }, - ], - resolver: RecursiveResolver.from({ - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }), - }); + ], + resolver: RecursiveResolver.from({ + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }), + }, + { noDefaults: true } + ); const nonExistentFileCid = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; @@ -159,20 +165,23 @@ describe("IPFS Plugin", () => { }); it("Should use provider from method options", async () => { - const clientWithBadProvider = new PolywrapClient({ - envs: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: "this-provider-doesnt-exist", + const clientWithBadProvider = new PolywrapClient( + { + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { + provider: "this-provider-doesnt-exist", + }, }, - }, - ], - resolver: RecursiveResolver.from({ - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }), - }); + ], + resolver: RecursiveResolver.from({ + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }), + }, + { noDefaults: true } + ); const catResult = await Ipfs_Module.cat( { @@ -201,20 +210,23 @@ describe("IPFS Plugin", () => { }); it("Should use fallback provider from method options", async () => { - const clientWithBadProvider = new PolywrapClient({ - envs: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: "this-provider-doesnt-exist", + const clientWithBadProvider = new PolywrapClient( + { + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { + provider: "this-provider-doesnt-exist", + }, }, - }, - ], - resolver: RecursiveResolver.from({ - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }), - }); + ], + resolver: RecursiveResolver.from({ + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }), + }, + { noDefaults: true } + ); const catResult = await Ipfs_Module.cat( { diff --git a/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts index c763637b68..5b529942fd 100644 --- a/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts @@ -1,17 +1,20 @@ import { PolywrapClient } from "@polywrap/client-js"; -import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { loggerPlugin } from "../.."; describe("log method", () => { it("logs to console appropriate level", async () => { - const polywrapClient = new PolywrapClient({ - resolver: RecursiveResolver.from([ - { - uri: "wrap://ens/js-logger.polywrap.eth", - package: loggerPlugin({}), - }, - ]), - }); + const polywrapClient = new PolywrapClient( + { + resolver: buildUriResolver([ + { + uri: "wrap://ens/js-logger.polywrap.eth", + package: loggerPlugin({}), + }, + ]), + }, + { noDefaults: true } + ); const response = await polywrapClient.invoke({ uri: "wrap://ens/js-logger.polywrap.eth", diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts index 85ce85bf1f..633efacf1b 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/e2e.spec.ts @@ -48,7 +48,7 @@ describe("ENS Resolver Plugin", () => { fail("Expected response to be a wrapper"); } - const manifest = await result.value.wrapper.getManifest({}, client); + const manifest = await result.value.wrapper.getManifest(); expect(manifest?.name).toBe("SimpleStorage"); }); diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts index 946d369df3..2a9bd6d4ba 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts +++ b/packages/js/plugins/uri-resolvers/ens-resolver/src/__tests__/helpers/getClient.ts @@ -17,53 +17,56 @@ import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; export const getClient = () => { - return new PolywrapClient({ - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: [ - "wrap://ens/ipfs-resolver.polywrap.eth", - "wrap://ens/ens-resolver.polywrap.eth", - "wrap://ens/fs-resolver.polywrap.eth", - ], - }, - ], - resolver: RecursiveResolver.from( - PackageToWrapperCacheResolver.from( - [ - { - uri: "wrap://ens/ipfs-resolver.polywrap.eth", - package: ipfsResolverPlugin({}), - }, - { - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }, - { - uri: "wrap://ens/ethereum.polywrap.eth", - package: ethereumPlugin({ - connections: new Connections({ - networks: { - testnet: new Connection({ - provider: providers.ethereum, - }), + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: [ + "wrap://ens/ipfs-resolver.polywrap.eth", + "wrap://ens/ens-resolver.polywrap.eth", + "wrap://ens/fs-resolver.polywrap.eth", + ], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + package: ipfsResolverPlugin({}), + }, + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }, + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ + connections: new Connections({ + networks: { + testnet: new Connection({ + provider: providers.ethereum, + }), + }, + defaultNetwork: "testnet", + }), + }), + }, + { + uri: "wrap://ens/ens-resolver.polywrap.eth", + package: ensResolverPlugin({ + addresses: { + testnet: ensAddresses.ensAddress, }, - defaultNetwork: "testnet", }), - }), - }, - { - uri: "wrap://ens/ens-resolver.polywrap.eth", - package: ensResolverPlugin({ - addresses: { - testnet: ensAddresses.ensAddress, - }, - }), - }, - new ExtendableUriResolver(), - ], - new WrapperCache() - ) - ), - }); + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }, + { noDefaults: true } + ); }; diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts b/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts index 9587419467..06c93f16fa 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/src/__tests__/helpers/getClient.ts @@ -10,28 +10,31 @@ import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; import { fileSystemResolverPlugin } from "../.."; export const getClient = () => { - return new PolywrapClient({ - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: ["wrap://ens/fs-resolver.polywrap.eth"], - }, - ], - resolver: RecursiveResolver.from( - PackageToWrapperCacheResolver.from( - [ - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - package: fileSystemResolverPlugin({}), - }, - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, - new ExtendableUriResolver(), - ], - new WrapperCache() - ) - ), - }); + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/fs-resolver.polywrap.eth"], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }, + { noDefaults: true } + ); }; diff --git a/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/e2e.spec.ts b/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/e2e.spec.ts index 3f3282adb0..d2813100a6 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/e2e.spec.ts @@ -65,7 +65,7 @@ describe("HTTP Plugin", () => { ); const expectedManifest = await deserializeWrapManifest(data); - const manifest = await result.value.wrapper.getManifest({}, client); + const manifest = await result.value.wrapper.getManifest(); expect(manifest?.name).toBe("SimpleStorage"); expect(manifest).toEqual(expectedManifest); @@ -92,7 +92,7 @@ describe("HTTP Plugin", () => { ); const expectedManifest = await deserializeWrapManifest(data); - const manifest = await result.value.wrapper.getManifest({}, client); + const manifest = await result.value.wrapper.getManifest(); expect(manifest?.name).toBe("SimpleStorage"); expect(manifest).toEqual(expectedManifest); diff --git a/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/helpers/getClient.ts b/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/helpers/getClient.ts index e3dcf17a95..8dc9472df9 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/helpers/getClient.ts +++ b/packages/js/plugins/uri-resolvers/http-resolver/src/__tests__/helpers/getClient.ts @@ -10,28 +10,31 @@ import { httpPlugin } from "@polywrap/http-plugin-js"; import { httpResolverPlugin } from "../.."; export const getClient = () => { - return new PolywrapClient({ - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: ["wrap://ens/http-uri-resolver.polywrap.eth"], - }, - ], - resolver: RecursiveResolver.from( - PackageToWrapperCacheResolver.from( - [ - { - uri: "wrap://ens/http.polywrap.eth", - package: httpPlugin({}), - }, - { - uri: "wrap://ens/http-uri-resolver.polywrap.eth", - package: httpResolverPlugin({}), - }, - new ExtendableUriResolver(), - ], - new WrapperCache() - ) - ), - }); + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/http-uri-resolver.polywrap.eth"], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/http.polywrap.eth", + package: httpPlugin({}), + }, + { + uri: "wrap://ens/http-uri-resolver.polywrap.eth", + package: httpResolverPlugin({}), + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }, + { noDefaults: true } + ); }; diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts index 36d157223d..8cba6eec60 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts @@ -1,5 +1,5 @@ import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { getClientWithIpfs } from "./helpers/getClientWithIpfs"; +import { getClient } from "./helpers/getClient"; import { Result } from "@polywrap/core-js"; import { ResultOk } from "@polywrap/result"; import { @@ -33,7 +33,7 @@ describe("IPFS Plugin", () => { }); it("Should successfully resolve a deployed wrapper - e2e", async () => { - const client = getClientWithIpfs({}); + const client = getClient({}); const wrapperUri = `ipfs/${wrapperIpfsCid}`; @@ -69,7 +69,7 @@ describe("IPFS Plugin", () => { ) => { const nonExistentFileCid = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - const client = getClientWithIpfs(env); + const client = getClient(env); const getFilePromise = client.invoke({ uri: ipfsResolverUri, @@ -135,7 +135,7 @@ describe("IPFS Plugin", () => { ) => { const nonExistentFileCid = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - const client = getClientWithIpfs(env); + const client = getClient(env); const getFilePromise = client.invoke({ uri: ipfsResolverUri, diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClient.ts b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClient.ts new file mode 100644 index 0000000000..b1adcdfaff --- /dev/null +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClient.ts @@ -0,0 +1,53 @@ +import { + RecursiveResolver, + PackageToWrapperCacheResolver, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; +import { coreInterfaceUris } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; +import { providers } from "@polywrap/test-env-js"; +import { ipfsResolverPlugin } from "../.."; + +export const getClient = (env: Record) => { + return new PolywrapClient( + { + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { + provider: providers.ipfs, + }, + }, + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + env: env, + }, + ], + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/ipfs-resolver.polywrap.eth"], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }, + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + package: ipfsResolverPlugin({}), + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }, + { noDefaults: true } + ); +}; diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts deleted file mode 100644 index e2966273dc..0000000000 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/helpers/getClientWithIpfs.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { - RecursiveResolver, - PackageToWrapperCacheResolver, - WrapperCache, -} from "@polywrap/uri-resolvers-js"; -import { coreInterfaceUris } from "@polywrap/core-js"; -import { PolywrapClient } from "@polywrap/client-js"; -import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; -import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; -import { providers } from "@polywrap/test-env-js"; -import { ipfsResolverPlugin } from "../.."; - -export const getClientWithIpfs = (env: Record) => { - return new PolywrapClient({ - envs: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: providers.ipfs, - }, - }, - { - uri: "wrap://ens/ipfs-resolver.polywrap.eth", - env: env, - }, - ], - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: ["wrap://ens/ipfs-resolver.polywrap.eth"], - }, - ], - resolver: RecursiveResolver.from( - PackageToWrapperCacheResolver.from( - [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }, - { - uri: "wrap://ens/ipfs-resolver.polywrap.eth", - package: ipfsResolverPlugin({}), - }, - new ExtendableUriResolver(), - ], - new WrapperCache() - ) - ), - }); -}; diff --git a/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts index 7ef1c8eb59..f4885e8b68 100644 --- a/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts @@ -4,10 +4,7 @@ import { Message } from "../../wrap"; import WS from "jest-websocket-mock"; import { PolywrapClient } from "@polywrap/client-js" import { Client } from "@polywrap/core-js"; -import { - buildUriResolver, - RecursiveResolver, -} from "@polywrap/uri-resolvers-js"; +import { buildUriResolver } from "@polywrap/uri-resolvers-js"; import { PluginPackage } from "@polywrap/plugin-js"; describe("WebSocket plugin", () => { @@ -18,14 +15,17 @@ describe("WebSocket plugin", () => { let t3: ReturnType; const setup = () => { - polywrapClient = new PolywrapClient({ - resolver: RecursiveResolver.from([ - { - uri: "wrap://ens/ws.polywrap.eth", - package: wsPlugin({}), - }, - ]), - }); + polywrapClient = new PolywrapClient( + { + resolver: buildUriResolver([ + { + uri: "wrap://ens/ws.polywrap.eth", + package: wsPlugin({}), + }, + ]), + }, + { noDefaults: true } + ); server = new WS("ws://localhost:1234"); t1 = setTimeout(() => { server.send("1"); @@ -90,7 +90,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "close", args: { - id: result.value + id: result.value, }, }); @@ -140,21 +140,24 @@ describe("WebSocket plugin", () => { const callbackPlugin = PluginPackage.from(() => ({ callback(args: { data: string }, _client: Client): void { msgs.push(args.data); - } + }, })); - polywrapClient = new PolywrapClient({ - resolver: buildUriResolver([ - { - uri: "wrap://ens/ws.polywrap.eth", - package: wsPlugin({}), - }, - { - uri: "wrap://ens/stub.polywrap.eth", - package: callbackPlugin, - }, - ]), - }); + polywrapClient = new PolywrapClient( + { + resolver: buildUriResolver([ + { + uri: "wrap://ens/ws.polywrap.eth", + package: wsPlugin({}), + }, + { + uri: "wrap://ens/stub.polywrap.eth", + package: callbackPlugin, + }, + ]), + }, + { noDefaults: true } + ); }); afterEach(() => { @@ -261,7 +264,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id: result.value + id: result.value, }, }); @@ -273,12 +276,12 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { - id: result.value + id: result.value, }, }); if (!response.ok) fail(response.error); - let data = response.value.map((msg) => msg.data) + let data = response.value.map((msg) => msg.data); expect(data).toEqual(["1", "2"]); }); @@ -296,7 +299,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id: result.value + id: result.value, }, }); @@ -306,7 +309,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "removeCache", args: { - id: result.value + id: result.value, }, }); resolve(); @@ -321,12 +324,12 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { - id: result.value + id: result.value, }, }); if (!response.ok) fail(response.error); - let data = response.value.map((msg) => msg.data) + let data = response.value.map((msg) => msg.data); expect(data).toEqual(["1", "2"]); }); @@ -344,7 +347,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id: result.value + id: result.value, }, }); @@ -358,7 +361,7 @@ describe("WebSocket plugin", () => { }); if (!response.ok) fail(response.error); - let data = response.value.map((msg) => msg.data) + let data = response.value.map((msg) => msg.data); expect(data).toEqual(["1", "2"]); }); @@ -376,7 +379,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id: result.value + id: result.value, }, }); @@ -390,7 +393,7 @@ describe("WebSocket plugin", () => { }); if (!response.ok) fail(response.error); - let data = response.value.map((msg) => msg.data) + let data = response.value.map((msg) => msg.data); expect(data).toEqual(["1", "2"]); }); @@ -408,7 +411,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id: result.value + id: result.value, }, }); @@ -423,7 +426,7 @@ describe("WebSocket plugin", () => { }); if (!response.ok) fail(response.error); - let data = response.value.map((msg) => msg.data) + let data = response.value.map((msg) => msg.data); expect(data).toEqual(["1"]); }); @@ -441,7 +444,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id: result.value + id: result.value, }, }); @@ -456,7 +459,7 @@ describe("WebSocket plugin", () => { }); if (!response.ok) fail(response.error); - let data = response.value.map((msg) => msg.data) + let data = response.value.map((msg) => msg.data); expect(data).toEqual(["1"]); }); @@ -474,7 +477,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "addCache", args: { - id: result.value + id: result.value, }, }); @@ -486,7 +489,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { - id: result.value + id: result.value, }, }); @@ -498,7 +501,7 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { - id: result.value + id: result.value, }, }); @@ -510,20 +513,20 @@ describe("WebSocket plugin", () => { uri: "wrap://ens/ws.polywrap.eth", method: "receive", args: { - id: result.value + id: result.value, }, }); if (!response1.ok) fail(response1.error); - let data1 = response1.value.map((msg) => msg.data) + let data1 = response1.value.map((msg) => msg.data); expect(data1).toEqual(["1", "2"]); if (!response2.ok) fail(response2.error); - let data2 = response2.value.map((msg) => msg.data) + let data2 = response2.value.map((msg) => msg.data); expect(data2).toEqual(["3"]); if (!response3.ok) fail(response3.error); - let data3 = response3.value.map((msg) => msg.data) + let data3 = response3.value.map((msg) => msg.data); expect(data3).toEqual([]); }); }); diff --git a/packages/js/plugins/ws/src/__tests__/e2e/helpers/createDefaultClient.ts b/packages/js/plugins/ws/src/__tests__/e2e/helpers/createDefaultClient.ts deleted file mode 100644 index c8ef2098c2..0000000000 --- a/packages/js/plugins/ws/src/__tests__/e2e/helpers/createDefaultClient.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ClientConfigBuilder, - CustomClientConfig, -} from "@polywrap/client-config-builder-js"; -import { PolywrapClient } from "@polywrap/client-js"; -import { Uri, Client } from "@polywrap/core-js"; - -export const createDefaultClient = ( - config: Partial> = {} -): Client => { - return new PolywrapClient( - new ClientConfigBuilder().addDefaults().add(config).buildDefault() - ); -}; diff --git a/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts b/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts index 18f1587f62..7787e45fca 100644 --- a/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts +++ b/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts @@ -4,7 +4,7 @@ import { Client } from "@polywrap/core-js"; import { buildWrapper } from "@polywrap/test-env-js"; import WS from "jest-websocket-mock"; import { PluginPackage } from "@polywrap/plugin-js"; -import { createDefaultClient } from "./helpers/createDefaultClient"; +import { PolywrapClient } from "@polywrap/client-js"; jest.setTimeout(360000); @@ -17,7 +17,7 @@ describe("e2e tests for WsPlugin", () => { const uri = `fs/${wrapperPath}/build`; beforeAll(async () => { - client = createDefaultClient({ + client = new PolywrapClient({ packages: [ { uri: "wrap://ens/ws.polywrap.eth", @@ -60,7 +60,7 @@ describe("e2e tests for WsPlugin", () => { }, })); - client = createDefaultClient({ + client = new PolywrapClient({ packages: [ { uri: "wrap://ens/ws.polywrap.eth", @@ -109,7 +109,7 @@ describe("e2e tests for WsPlugin", () => { }, })); - client = createDefaultClient({ + client = new PolywrapClient({ packages: [ { uri: "wrap://ens/ws.polywrap.eth", From ae3cd52dc7995eb09b6f96bfb8d964ec27a7c47a Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 8 Oct 2022 13:22:48 +0200 Subject: [PATCH 077/126] renamed buildUriResolver to UriResolver.from --- .../__tests__/core/interface-impls.spec.ts | 79 +++++++++---------- .../src/__tests__/core/plugin-wrapper.spec.ts | 10 +-- .../uri-resolution/uri-resolution.spec.ts | 4 +- .../src/__tests__/core/wasm-wrapper.spec.ts | 4 +- .../file-system/src/__tests__/e2e.spec.ts | 8 +- .../http/src/__tests__/e2e/e2e.spec.ts | 10 +-- .../logger/src/__tests__/e2e/e2e.spec.ts | 4 +- .../plugins/ws/src/__tests__/e2e/e2e.spec.ts | 6 +- .../src/aggregator/UriResolverAggregator.ts | 4 +- .../cache/PackageToWrapperCacheResolver.ts | 8 +- .../src/helpers/RecursiveResolver.ts | 4 +- .../src/helpers/ResolverWithLoopGuard.ts | 4 +- .../uri-resolvers/src/helpers/UriResolver.ts | 70 ++++++++++++++++ .../src/helpers/buildUriResolver.ts | 68 ---------------- .../js/uri-resolvers/src/helpers/index.ts | 2 +- 15 files changed, 141 insertions(+), 144 deletions(-) create mode 100644 packages/js/uri-resolvers/src/helpers/UriResolver.ts delete mode 100644 packages/js/uri-resolvers/src/helpers/buildUriResolver.ts diff --git a/packages/js/client/src/__tests__/core/interface-impls.spec.ts b/packages/js/client/src/__tests__/core/interface-impls.spec.ts index 69ecc5926b..475cd71695 100644 --- a/packages/js/client/src/__tests__/core/interface-impls.spec.ts +++ b/packages/js/client/src/__tests__/core/interface-impls.spec.ts @@ -1,6 +1,6 @@ import { coreInterfaceUris, Uri, PolywrapClient } from "../.."; import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { UriResolver } from "@polywrap/uri-resolvers-js"; import { mockPluginRegistration } from "../helpers/mockPluginRegistration"; jest.setTimeout(200000); @@ -11,14 +11,17 @@ describe("interface-impls", () => { const implementation1Uri = "wrap://ens/some-implementation1.eth"; const implementation2Uri = "wrap://ens/some-implementation2.eth"; - const client = new PolywrapClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [implementation1Uri, implementation2Uri], - }, - ], - }, { noDefaults: true }); + const client = new PolywrapClient( + { + interfaces: [ + { + interface: interfaceUri, + implementations: [implementation1Uri, implementation2Uri], + }, + ], + }, + { noDefaults: true } + ); const interfaces = client.getInterfaces(); @@ -69,7 +72,7 @@ describe("interface-impls", () => { to: implementation3Uri, }, ], - resolver: buildUriResolver([ + resolver: UriResolver.from([ mockPluginRegistration(implementation4Uri), ]), interfaces: [ @@ -128,20 +131,18 @@ describe("interface-impls", () => { const implementationUri1 = "wrap://ens/implementation1.eth"; const implementationUri2 = "wrap://ens/implementation2.eth"; - const client = new PolywrapClient( - { - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri1], - }, - { - interface: interfaceUri, - implementations: [implementationUri2], - }, - ], - } - ); + const client = new PolywrapClient({ + interfaces: [ + { + interface: interfaceUri, + implementations: [implementationUri1], + }, + { + interface: interfaceUri, + implementations: [implementationUri2], + }, + ], + }); const interfaces = client .getInterfaces() @@ -161,20 +162,18 @@ describe("interface-impls", () => { const implementationUri1 = "wrap://ens/implementation1.eth"; const implementationUri2 = "wrap://ens/implementation2.eth"; - const client = new PolywrapClient( - { - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri1], - }, - { - interface: interfaceUri, - implementations: [implementationUri2], - }, - ], - } - ); + const client = new PolywrapClient({ + interfaces: [ + { + interface: interfaceUri, + implementations: [implementationUri1], + }, + { + interface: interfaceUri, + implementations: [implementationUri2], + }, + ], + }); const interfaces = client .getInterfaces() @@ -203,7 +202,7 @@ describe("interface-impls", () => { const client = new PolywrapClient( { - resolver: buildUriResolver([ + resolver: UriResolver.from([ mockPluginRegistration(implementation1Uri), ]), interfaces: [ @@ -237,7 +236,7 @@ describe("interface-impls", () => { const client = new PolywrapClient( { - resolver: buildUriResolver([ + resolver: UriResolver.from([ mockPluginRegistration(implementation1Uri), ]), interfaces: [ diff --git a/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts b/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts index 5f7e68917e..80f7ea4c01 100644 --- a/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/plugin-wrapper.spec.ts @@ -1,7 +1,7 @@ import { PolywrapClient } from "../.."; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { PluginPackage, PluginModule } from "@polywrap/plugin-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { UriResolver } from "@polywrap/uri-resolvers-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; jest.setTimeout(200000); @@ -29,9 +29,9 @@ describe("plugin-wrapper", () => { return new PluginPackage( new MockMapPlugin({ - map: new Map().set("a", 1).set("b", 2), + map: new Map().set("a", 1).set("b", 2), }), - {} as WrapManifest, + {} as WrapManifest ); }; @@ -40,7 +40,7 @@ describe("plugin-wrapper", () => { const mockPlugin = mockMapPlugin(); const client = new PolywrapClient( { - resolver: buildUriResolver([ + resolver: UriResolver.from([ { uri: implementationUri, package: mockPlugin, @@ -79,7 +79,7 @@ describe("plugin-wrapper", () => { test("get manifest should fetch wrap manifest from plugin", async () => { const client = new PolywrapClient( { - resolver: buildUriResolver([ + resolver: UriResolver.from([ { uri: "ens/ipfs.polywrap.eth", package: ipfsPlugin({}) }, ]), }, diff --git a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts index ad291809f0..07923733bd 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts +++ b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts @@ -9,7 +9,7 @@ import { } from "@polywrap/core-js"; import { buildCleanUriHistory, - buildUriResolver, + UriResolver, getUriResolutionPath, UriResolutionResult, } from "@polywrap/uri-resolvers-js"; @@ -171,7 +171,7 @@ describe("URI resolution", () => { const pluginUri = new Uri("ens/plugin.eth"); const client = new PolywrapClient({ - resolvers: [buildUriResolver(mockPluginRegistration(pluginUri))], + resolvers: [UriResolver.from(mockPluginRegistration(pluginUri))], }); const resolutionContext = new UriResolutionContext(); diff --git a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts index f22f08ecf3..faeefb88ac 100644 --- a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts @@ -6,7 +6,7 @@ import { Uri, Subscription, PolywrapClient, IWrapPackage } from "../.."; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { makeMemoryStoragePlugin } from "../e2e/memory-storage"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { UriResolver } from "@polywrap/uri-resolvers-js"; import { ErrResult } from "../utils/resultTypes"; import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; import { mockPluginRegistration } from "../helpers/mockPluginRegistration"; @@ -208,7 +208,7 @@ describe("wasm-wrapper", () => { const pluginClient = new PolywrapClient( { - resolver: buildUriResolver([ + resolver: UriResolver.from([ mockPluginRegistration("ens/mock-plugin.eth"), ]), }, diff --git a/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts b/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts index 98d738e13b..4e9b2103dd 100644 --- a/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/file-system/src/__tests__/e2e.spec.ts @@ -1,6 +1,6 @@ import { fileSystemPlugin } from "../index"; import { PolywrapClient } from "@polywrap/client-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { UriResolver } from "@polywrap/uri-resolvers-js"; import { FileSystem_Module, FileSystem_EncodingEnum } from "../wrap"; import fs from "fs"; import path from "path"; @@ -28,7 +28,7 @@ describe("FileSystem plugin", () => { client = new PolywrapClient( { - resolver: buildUriResolver({ + resolver: UriResolver.from({ uri: "wrap://ens/fs.polywrap.eth", package: fileSystemPlugin({}), }), @@ -48,7 +48,7 @@ describe("FileSystem plugin", () => { { path: sampleFilePath }, client ); - + if (!result.ok) fail(result.error); expect(result.value).toEqual(new Uint8Array(expectedContents)); }); @@ -61,7 +61,7 @@ describe("FileSystem plugin", () => { client ); - result = result as { ok: false, error: Error | undefined }; + result = result as { ok: false; error: Error | undefined }; expect(result.error).toBeTruthy(); expect(result.ok).toBeFalsy(); }); diff --git a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts index fc9e8574ed..8c93d0c937 100644 --- a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts @@ -2,7 +2,7 @@ import { httpPlugin } from "../.."; import { Http_Response } from "../../wrap"; import { PolywrapClient } from "@polywrap/client-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { UriResolver } from "@polywrap/uri-resolvers-js"; import nock from "nock"; @@ -19,7 +19,7 @@ describe("e2e tests for HttpPlugin", () => { beforeEach(() => { polywrapClient = new PolywrapClient( { - resolver: buildUriResolver({ + resolver: UriResolver.from({ uri: "wrap://ens/http.polywrap.eth", package: httpPlugin({}), }), @@ -45,7 +45,7 @@ describe("e2e tests for HttpPlugin", () => { }, }, }); - + if (!response.ok) fail(response.error); expect(response.value).toBeDefined(); expect(response.value?.status).toBe(200); @@ -133,7 +133,7 @@ describe("e2e tests for HttpPlugin", () => { }, }); - response = response as { ok: false, error: Error | undefined }; + response = response as { ok: false; error: Error | undefined }; expect(response.error).toBeDefined(); expect(response.ok).toBeFalsy(); }); @@ -283,7 +283,7 @@ describe("e2e tests for HttpPlugin", () => { }, }); - response = response as { ok: false, error: Error | undefined }; + response = response as { ok: false; error: Error | undefined }; expect(response.error).toBeDefined(); expect(response.ok).toBeFalsy(); }); diff --git a/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts index 5b529942fd..84cf008d5c 100644 --- a/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/logger/src/__tests__/e2e/e2e.spec.ts @@ -1,12 +1,12 @@ import { PolywrapClient } from "@polywrap/client-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { UriResolver } from "@polywrap/uri-resolvers-js"; import { loggerPlugin } from "../.."; describe("log method", () => { it("logs to console appropriate level", async () => { const polywrapClient = new PolywrapClient( { - resolver: buildUriResolver([ + resolver: UriResolver.from([ { uri: "wrap://ens/js-logger.polywrap.eth", package: loggerPlugin({}), diff --git a/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts index f4885e8b68..ca964bf8fc 100644 --- a/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts @@ -4,7 +4,7 @@ import { Message } from "../../wrap"; import WS from "jest-websocket-mock"; import { PolywrapClient } from "@polywrap/client-js" import { Client } from "@polywrap/core-js"; -import { buildUriResolver } from "@polywrap/uri-resolvers-js"; +import { UriResolver } from "@polywrap/uri-resolvers-js"; import { PluginPackage } from "@polywrap/plugin-js"; describe("WebSocket plugin", () => { @@ -17,7 +17,7 @@ describe("WebSocket plugin", () => { const setup = () => { polywrapClient = new PolywrapClient( { - resolver: buildUriResolver([ + resolver: UriResolver.from([ { uri: "wrap://ens/ws.polywrap.eth", package: wsPlugin({}), @@ -145,7 +145,7 @@ describe("WebSocket plugin", () => { polywrapClient = new PolywrapClient( { - resolver: buildUriResolver([ + resolver: UriResolver.from([ { uri: "wrap://ens/ws.polywrap.eth", package: wsPlugin({}), diff --git a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts index 53082292cc..87caf7d7bf 100644 --- a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts +++ b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts @@ -1,5 +1,5 @@ import { UriResolverAggregatorBase } from "./UriResolverAggregatorBase"; -import { buildUriResolver, UriResolverLike } from "../helpers"; +import { UriResolver, UriResolverLike } from "../helpers"; import { Result, ResultOk } from "@polywrap/result"; import { IUriResolver, Uri, Client } from "@polywrap/core-js"; @@ -41,7 +41,7 @@ export class UriResolverAggregator< ) { super(); if (Array.isArray(resolvers)) { - this.resolvers = resolvers.map((x) => buildUriResolver(x)); + this.resolvers = resolvers.map((x) => UriResolver.from(x)); } else { this.resolvers = resolvers; } diff --git a/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts b/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts index c8e23eb782..615f9ba99e 100644 --- a/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts +++ b/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts @@ -1,9 +1,5 @@ import { IWrapperCache } from "./IWrapperCache"; -import { - buildUriResolver, - UriResolutionResult, - UriResolverLike, -} from "../helpers"; +import { UriResolver, UriResolutionResult, UriResolverLike } from "../helpers"; import { IUriResolver, @@ -37,7 +33,7 @@ export class PackageToWrapperCacheResolver } ): PackageToWrapperCacheResolver { return new PackageToWrapperCacheResolver( - buildUriResolver(resolver), + UriResolver.from(resolver), cache, options ); diff --git a/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts b/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts index 4afca2e08f..e4117f4179 100644 --- a/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts +++ b/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts @@ -1,7 +1,7 @@ import { InfiniteLoopError } from "./InfiniteLoopError"; import { UriResolverLike } from "./UriResolverLike"; import { UriResolutionResult } from "./UriResolutionResult"; -import { buildUriResolver } from "./buildUriResolver"; +import { UriResolver } from "./UriResolver"; import { Result } from "@polywrap/result"; import { @@ -19,7 +19,7 @@ export class RecursiveResolver static from( resolver: UriResolverLike ): RecursiveResolver { - return new RecursiveResolver(buildUriResolver(resolver)); + return new RecursiveResolver(UriResolver.from(resolver)); } async tryResolveUri( diff --git a/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts b/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts index 3340db0619..2e55cf131d 100644 --- a/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts +++ b/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts @@ -1,7 +1,7 @@ import { InfiniteLoopError } from "./InfiniteLoopError"; import { UriResolverLike } from "./UriResolverLike"; import { UriResolutionResult } from "./UriResolutionResult"; -import { buildUriResolver } from "./buildUriResolver"; +import { UriResolver } from "./UriResolver"; import { IUriResolver, @@ -20,7 +20,7 @@ export class ResolverWithLoopGuard resolver: UriResolverLike ): ResolverWithLoopGuard { return new ResolverWithLoopGuard( - buildUriResolver(resolver) + UriResolver.from(resolver) ); } diff --git a/packages/js/uri-resolvers/src/helpers/UriResolver.ts b/packages/js/uri-resolvers/src/helpers/UriResolver.ts new file mode 100644 index 0000000000..c26994e152 --- /dev/null +++ b/packages/js/uri-resolvers/src/helpers/UriResolver.ts @@ -0,0 +1,70 @@ +import { UriResolverAggregator } from "../aggregator"; +import { PackageResolver } from "../packages"; +import { WrapperResolver } from "../wrappers"; +import { UriResolverLike } from "."; +import { RedirectResolver } from "../redirects"; + +import { Result } from "@polywrap/result"; +import { + IUriResolver, + Uri, + Client, + IUriRedirect, + IUriPackage, + IUriWrapper, +} from "@polywrap/core-js"; + +export class UriResolver { + static from( + resolverLike: UriResolverLike, + resolverName?: string + ): IUriResolver { + if (Array.isArray(resolverLike)) { + return new UriResolverAggregator( + (resolverLike as UriResolverLike[]).map((x) => + UriResolver.from(x, resolverName) + ), + resolverName + ) as IUriResolver; + } else if (typeof resolverLike === "function") { + return new UriResolverAggregator( + resolverLike as ( + uri: Uri, + client: Client + ) => Promise>, + resolverName + ) as IUriResolver; + } else if ((resolverLike as IUriResolver).tryResolveUri !== undefined) { + return resolverLike as IUriResolver; + } else if ( + (resolverLike as IUriRedirect).from !== undefined && + (resolverLike as IUriRedirect).to !== undefined + ) { + const uriRedirect = resolverLike as IUriRedirect; + return (new RedirectResolver( + uriRedirect.from, + uriRedirect.to + ) as unknown) as IUriResolver; + } else if ( + (resolverLike as IUriPackage).uri !== undefined && + (resolverLike as IUriPackage).package !== undefined + ) { + const uriPackage = resolverLike as IUriPackage; + return (new PackageResolver( + Uri.from(uriPackage.uri), + uriPackage.package + ) as unknown) as IUriResolver; + } else if ( + (resolverLike as IUriWrapper).uri !== undefined && + (resolverLike as IUriWrapper).wrapper !== undefined + ) { + const uriWrapper = resolverLike as IUriWrapper; + return (new WrapperResolver( + Uri.from(uriWrapper.uri), + uriWrapper.wrapper + ) as unknown) as IUriResolver; + } else { + throw new Error("Unknown resolver-like type"); + } + } +} diff --git a/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts b/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts deleted file mode 100644 index 347ef1d577..0000000000 --- a/packages/js/uri-resolvers/src/helpers/buildUriResolver.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { UriResolverAggregator } from "../aggregator"; -import { PackageResolver } from "../packages"; -import { WrapperResolver } from "../wrappers"; -import { UriResolverLike } from "../helpers"; -import { RedirectResolver } from "../redirects"; - -import { Result } from "@polywrap/result"; -import { - IUriResolver, - Uri, - Client, - IUriRedirect, - IUriPackage, - IUriWrapper, -} from "@polywrap/core-js"; - -export const buildUriResolver = ( - resolverLike: UriResolverLike, - resolverName?: string -): IUriResolver => { - if (Array.isArray(resolverLike)) { - return new UriResolverAggregator( - (resolverLike as UriResolverLike[]).map((x) => - buildUriResolver(x, resolverName) - ), - resolverName - ) as IUriResolver; - } else if (typeof resolverLike === "function") { - return new UriResolverAggregator( - resolverLike as ( - uri: Uri, - client: Client - ) => Promise>, - resolverName - ) as IUriResolver; - } else if ((resolverLike as IUriResolver).tryResolveUri !== undefined) { - return resolverLike as IUriResolver; - } else if ( - (resolverLike as IUriRedirect).from !== undefined && - (resolverLike as IUriRedirect).to !== undefined - ) { - const uriRedirect = resolverLike as IUriRedirect; - return (new RedirectResolver( - uriRedirect.from, - uriRedirect.to - ) as unknown) as IUriResolver; - } else if ( - (resolverLike as IUriPackage).uri !== undefined && - (resolverLike as IUriPackage).package !== undefined - ) { - const uriPackage = resolverLike as IUriPackage; - return (new PackageResolver( - Uri.from(uriPackage.uri), - uriPackage.package - ) as unknown) as IUriResolver; - } else if ( - (resolverLike as IUriWrapper).uri !== undefined && - (resolverLike as IUriWrapper).wrapper !== undefined - ) { - const uriWrapper = resolverLike as IUriWrapper; - return (new WrapperResolver( - Uri.from(uriWrapper.uri), - uriWrapper.wrapper - ) as unknown) as IUriResolver; - } else { - throw new Error("Unknown resolver-like type"); - } -}; diff --git a/packages/js/uri-resolvers/src/helpers/index.ts b/packages/js/uri-resolvers/src/helpers/index.ts index 93bbbff22d..c054b304a7 100644 --- a/packages/js/uri-resolvers/src/helpers/index.ts +++ b/packages/js/uri-resolvers/src/helpers/index.ts @@ -4,6 +4,6 @@ export * from "./ResolverWithHistory"; export * from "./InfiniteLoopError"; export * from "./RecursiveResolver"; export * from "./ResolverWithLoopGuard"; -export * from "./buildUriResolver"; +export * from "./UriResolver"; export * from "./clean-uri-history"; export * from "./getUriResolutionPath"; From f6b14f787e27a108423a9bd51bcdbcbd996d811b Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 8 Oct 2022 14:26:15 +0200 Subject: [PATCH 078/126] using invoke uri if resolution path is not available --- packages/js/client/src/PolywrapClient.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index ce61948e75..f9935eef1d 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -326,8 +326,9 @@ export class PolywrapClient implements Client { } const wrapper = loadWrapperResult.value; + const resolutionPath = resolutionContext.getResolutionPath(); const env = getEnvFromUriHistory( - resolutionContext.getResolutionPath(), + resolutionPath.length > 0 ? resolutionPath : [typedOptions.uri], this ); From 592e1ab38b43b0897326a0dfe5f4c10fcccd51b9 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 8 Oct 2022 14:26:51 +0200 Subject: [PATCH 079/126] fixed plugin tests --- packages/js/plugins/http/package.json | 5 +- .../http/src/__tests__/helpers/getClient.ts | 27 +++++----- .../js/plugins/ipfs/src/__tests__/e2e.spec.ts | 10 ++-- packages/js/plugins/ws/package.json | 2 + .../ws/src/__tests__/e2e/helpers/getClient.ts | 50 +++++++++++++++++++ .../ws/src/__tests__/e2e/integration.spec.ts | 39 ++++----------- 6 files changed, 84 insertions(+), 49 deletions(-) create mode 100644 packages/js/plugins/ws/src/__tests__/e2e/helpers/getClient.ts diff --git a/packages/js/plugins/http/package.json b/packages/js/plugins/http/package.json index b1c753ddaf..720a0fa826 100644 --- a/packages/js/plugins/http/package.json +++ b/packages/js/plugins/http/package.json @@ -27,8 +27,9 @@ "devDependencies": { "@polywrap/client-js": "0.8.0", "@polywrap/uri-resolvers-js": "0.8.0", - "@polywrap/ens-resolver-plugin-js": "0.8.0", - "@polywrap/ipfs-plugin-js": "0.8.0", + "@polywrap/fs-resolver-plugin-js": "0.8.0", + "@polywrap/fs-plugin-js": "0.8.0", + "@polywrap/uri-resolver-extensions-js": "0.8.0", "@polywrap/test-env-js": "0.8.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", diff --git a/packages/js/plugins/http/src/__tests__/helpers/getClient.ts b/packages/js/plugins/http/src/__tests__/helpers/getClient.ts index b186c40f4c..f6a55bd675 100644 --- a/packages/js/plugins/http/src/__tests__/helpers/getClient.ts +++ b/packages/js/plugins/http/src/__tests__/helpers/getClient.ts @@ -2,6 +2,7 @@ import { RecursiveResolver, PackageToWrapperCacheResolver, WrapperCache, + StaticResolver, } from "@polywrap/uri-resolvers-js"; import { coreInterfaceUris } from "@polywrap/core-js"; import { PolywrapClient } from "@polywrap/client-js"; @@ -22,18 +23,20 @@ export const getClient = () => { resolver: RecursiveResolver.from( PackageToWrapperCacheResolver.from( [ - { - uri: "wrap://ens/http.polywrap.eth", - package: httpPlugin({}), - }, - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - package: fileSystemResolverPlugin({}), - }, - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, + StaticResolver.from([ + { + uri: "wrap://ens/http.polywrap.eth", + package: httpPlugin({}), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + ]), new ExtendableUriResolver(), ], new WrapperCache() diff --git a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts index cc51a4052b..5c037591a0 100644 --- a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts @@ -10,7 +10,7 @@ import { Client } from "@polywrap/core-js"; import { ResultOk } from "@polywrap/result"; import { PolywrapClient } from "@polywrap/client-js"; import createIpfsClient, { IpfsClient, IpfsFileInfo } from "@polywrap/ipfs-http-client-lite"; -import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; +import { UriResolver } from "@polywrap/uri-resolvers-js"; import { ipfsPlugin } from ".."; jest.setTimeout(300000); @@ -35,7 +35,7 @@ describe("IPFS Plugin", () => { env: { provider: providers.ipfs }, }, ], - resolver: RecursiveResolver.from({ + resolver: UriResolver.from({ uri: "wrap://ens/ipfs.polywrap.eth", package: ipfsPlugin({}), }), @@ -117,7 +117,7 @@ describe("IPFS Plugin", () => { }, }, ], - resolver: RecursiveResolver.from({ + resolver: UriResolver.from({ uri: "wrap://ens/ipfs.polywrap.eth", package: ipfsPlugin({}), }), @@ -175,7 +175,7 @@ describe("IPFS Plugin", () => { }, }, ], - resolver: RecursiveResolver.from({ + resolver: UriResolver.from({ uri: "wrap://ens/ipfs.polywrap.eth", package: ipfsPlugin({}), }), @@ -220,7 +220,7 @@ describe("IPFS Plugin", () => { }, }, ], - resolver: RecursiveResolver.from({ + resolver: UriResolver.from({ uri: "wrap://ens/ipfs.polywrap.eth", package: ipfsPlugin({}), }), diff --git a/packages/js/plugins/ws/package.json b/packages/js/plugins/ws/package.json index ebcf751ec0..57e1e61151 100644 --- a/packages/js/plugins/ws/package.json +++ b/packages/js/plugins/ws/package.json @@ -26,6 +26,8 @@ "devDependencies": { "@polywrap/client-js": "0.8.0", "@polywrap/uri-resolvers-js": "0.8.0", + "@polywrap/fs-resolver-plugin-js": "0.8.0", + "@polywrap/fs-plugin-js": "0.8.0", "@polywrap/test-env-js": "0.8.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", diff --git a/packages/js/plugins/ws/src/__tests__/e2e/helpers/getClient.ts b/packages/js/plugins/ws/src/__tests__/e2e/helpers/getClient.ts new file mode 100644 index 0000000000..8a0eab1eed --- /dev/null +++ b/packages/js/plugins/ws/src/__tests__/e2e/helpers/getClient.ts @@ -0,0 +1,50 @@ +import { + RecursiveResolver, + PackageToWrapperCacheResolver, + WrapperCache, + StaticResolver, + StaticResolverLike, +} from "@polywrap/uri-resolvers-js"; +import { coreInterfaceUris } from "@polywrap/core-js"; +import { PolywrapClient } from "@polywrap/client-js"; +import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; +import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; +import { wsPlugin } from "../../.."; + +export const getClient = (staticResolvers?: StaticResolverLike[]) => { + return new PolywrapClient( + { + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: ["wrap://ens/fs-resolver.polywrap.eth"], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + StaticResolver.from([ + { + uri: "wrap://ens/ws.polywrap.eth", + package: wsPlugin({}), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + ...(staticResolvers ?? []), + ]), + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }, + { noDefaults: true } + ); +}; diff --git a/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts b/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts index 7787e45fca..7cb17a83aa 100644 --- a/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts +++ b/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts @@ -1,10 +1,8 @@ -import { wsPlugin } from "../.."; - import { Client } from "@polywrap/core-js"; import { buildWrapper } from "@polywrap/test-env-js"; import WS from "jest-websocket-mock"; import { PluginPackage } from "@polywrap/plugin-js"; -import { PolywrapClient } from "@polywrap/client-js"; +import { getClient } from "./helpers/getClient"; jest.setTimeout(360000); @@ -17,14 +15,7 @@ describe("e2e tests for WsPlugin", () => { const uri = `fs/${wrapperPath}/build`; beforeAll(async () => { - client = new PolywrapClient({ - packages: [ - { - uri: "wrap://ens/ws.polywrap.eth", - package: wsPlugin({}), - }, - ], - }); + client = getClient(); await buildWrapper(wrapperPath); }); @@ -60,18 +51,10 @@ describe("e2e tests for WsPlugin", () => { }, })); - client = new PolywrapClient({ - packages: [ - { - uri: "wrap://ens/ws.polywrap.eth", - package: wsPlugin({}), - }, - { - uri: "wrap://ens/memory.polywrap.eth", - package: memoryPlugin, - }, - ], - }); + client = getClient([{ + uri: "wrap://ens/memory.polywrap.eth", + package: memoryPlugin, + }]); await client.invoke({ uri, @@ -109,18 +92,14 @@ describe("e2e tests for WsPlugin", () => { }, })); - client = new PolywrapClient({ - packages: [ - { - uri: "wrap://ens/ws.polywrap.eth", - package: wsPlugin({}), - }, + client = getClient([ + [ { uri: "wrap://ens/memory.polywrap.eth", package: memoryPlugin, }, ], - }); + ]); await client.invoke({ uri, From 58af1773e0c6cc86585934ee5397cfeef7f3e229 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 8 Oct 2022 16:24:15 +0200 Subject: [PATCH 080/126] fixed issues after merge with remote --- package.json | 2 +- packages/js/plugins/ipfs/src/index.ts | 7 ++- .../assemblyscript/001-sanity/yarn.lock | 51 ------------------- yarn.lock | 42 +++++++-------- 4 files changed, 25 insertions(+), 77 deletions(-) delete mode 100644 packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock diff --git a/package.json b/package.json index d52838dbe9..5f579d2040 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "clean": "npx rimraf ./**/node_modules ./**/yarn.lock ./**/build ./**/coverage ./**/.polywrap", "dependencies:install": "cd dependencies && yarn", "preinstall": "yarn dependencies:install", - "build": "yarn build:core && yarn build:interfaces && yarn build:plugins && yarn build:resolver:plugins && yarn build:config && yarn build:client && yarn build:test-env && yarn build:cli", + "build": "yarn build:core && yarn build:interfaces && yarn link:schema && yarn build:plugins && yarn build:resolver:plugins && yarn build:config && yarn build:client && yarn build:test-env && yarn build:cli", "build:core": "lerna run build --no-private --ignore @polywrap/*plugin-js --ignore @polywrap/client-config-builder-js --ignore polywrap --ignore @polywrap/client-js --ignore @polywrap/react --ignore @polywrap/test-env-js --ignore @polywrap/*-interface", "build:interfaces": "lerna run build --scope @polywrap/*-interface", "build:plugins": "lerna run build --scope @polywrap/*plugin-js --ignore @polywrap/*-resolver-plugin-js", diff --git a/packages/js/plugins/ipfs/src/index.ts b/packages/js/plugins/ipfs/src/index.ts index ae38158024..d47120d9bc 100644 --- a/packages/js/plugins/ipfs/src/index.ts +++ b/packages/js/plugins/ipfs/src/index.ts @@ -109,14 +109,13 @@ export class IpfsPlugin extends Module { ): Promise { const defaultIpfsClient = createIpfsClient(this.env.provider); - if (!options?.fallbackProviders) { - // Default behavior if no fallback providers are provided - // Note that options.timeout is already set by getOptions + if (!options) { + // Default behavior if no options are provided return await execSimple( operation, defaultIpfsClient, this.config.provider, - options?.timeout ?? 0, + 0, func ); } diff --git a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock deleted file mode 100644 index d307a391d3..0000000000 --- a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock +++ /dev/null @@ -1,51 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@polywrap/wasm-as@../../../../../../../wasm/as": - version "0.8.0" - dependencies: - "@web3api/assemblyscript-json" "1.2.0" - as-bigint "0.5.3" - as-bignumber "0.2.1" - as-container "0.6.1" - -"@web3api/assemblyscript-json@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@web3api/assemblyscript-json/-/assemblyscript-json-1.2.0.tgz#f01f11f12a66cd1a319d43f12e476307d1ad3da8" - integrity sha512-x+wchJpH1giJzXj3dYs8vh2SKMXepeqVXiaFV/YCtXg4X/KaUnxi0kp5JugbEAyEJurEScH1YuV6IvGhGui/fw== - -as-bigint@0.5.3, as-bigint@^0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/as-bigint/-/as-bigint-0.5.3.tgz#a0647d0b7ce835077aca33115e71eb26a83df8be" - integrity sha512-tg9iTO/vPeovOM5CSk1WxYcsfBd/cd3twhBW5PrpcGUfiSEXlPB69eOxFKvSbZnpuDxBAyQ4YBgEkfnYL89Czw== - -as-bignumber@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/as-bignumber/-/as-bignumber-0.2.1.tgz#6479caca7f24f784b10b3d2633cde457ef9cbc22" - integrity sha512-udKOlFYKSZyuHK7upTczRR8lcXkyPS0DR6NOtP+c3bhM4B2B0VqMBTzqa0hdYG4Zss94zA6UmqpjreEbzNUo4g== - dependencies: - as-bigint "^0.5.1" - -as-container@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/as-container/-/as-container-0.6.1.tgz#94806a91e96b68622c55f301fc04e6339a1228c2" - integrity sha512-cgQ7P/dQAGeU2lLhPpinThYfFcUw3HzV8b00CoqV+l5Tsgpl7xhXdoc/2srCyK0um1BVAQwlrEpNTtthzkMF+g== - -assemblyscript@0.19.5: - version "0.19.5" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.5.tgz#12f5976c41f6b866dd0d1aad5275dcd358a5d82f" - integrity sha512-mAx7gcwjJI5OSu2RcOlugHFNxKt/rtWn3vyp46cN1+uXb7YSS//rgO044+KKwfxnGvoWj0ClsU0dNt5eWoXF7A== - dependencies: - binaryen "101.0.0-nightly.20210604" - long "^4.0.0" - -binaryen@101.0.0-nightly.20210604: - version "101.0.0-nightly.20210604" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210604.tgz#3498a0a0c1108f3386b15ca79f1608425057db9e" - integrity sha512-aTgX1JDN8m3tTFK8g9hazJcEOdQl7mK4yVfElkKAh7q+TRUCaea4a2SMLr1z2xZL7s9N4lkrvrBblxRuEPvxWQ== - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== diff --git a/yarn.lock b/yarn.lock index 6f60a90661..20736d7c5f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2295,7 +2295,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== @@ -2305,18 +2305,18 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@^0.3.9": - version "0.3.15" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" - integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== + version "0.3.16" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.16.tgz#a7982f16c18cae02be36274365433e5b49d7b23f" + integrity sha512-LCQ+NeThyJ4k1W2d+vIKdxuSt9R3pQSZ4P92m7EakaYuXcVWbHuT5bjNcqLd4Rdgi6xYWYDvBJZJLZSLanjDcA== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" "@jsdevtools/ono@^7.1.3": version "7.1.3" @@ -3698,9 +3698,9 @@ integrity sha512-wH6Tu9mbiOt0n5EvdoWy0VGQaJMHfLIxY/6wS0xLC7CV1taM6gESEzcYy0ZlWvxxiiljYvfDIvz4hHbUUDRlhw== "@types/node@*": - version "18.8.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.2.tgz#17d42c6322d917764dd3d2d3a10d7884925de067" - integrity sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA== + version "18.8.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.3.tgz#ce750ab4017effa51aed6a7230651778d54e327c" + integrity sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w== "@types/node@12.12.26": version "12.12.26" @@ -5576,9 +5576,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: - version "1.0.30001416" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001416.tgz#29692af8a6a11412f2d3cf9a59d588fcdd21ce4c" - integrity sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA== + version "1.0.30001418" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz#5f459215192a024c99e3e3a53aac310fc7cf24e6" + integrity sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg== capture-exit@^2.0.0: version "2.0.0" @@ -7218,9 +7218,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: - version "1.4.274" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.274.tgz#74369ac6f020c3cea7c77ec040ddf159fe226233" - integrity sha512-Fgn7JZQzq85I81FpKUNxVLAzoghy8JZJ4NIue+YfUYBbu1AkpgzFvNwzF/ZNZH9ElkmJD0TSWu1F2gTpw/zZlg== + version "1.4.276" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.276.tgz#17837b19dafcc43aba885c4689358b298c19b520" + integrity sha512-EpuHPqu8YhonqLBXHoU6hDJCD98FCe6KDoet3/gY1qsQ6usjJoHqBH2YIVs8FXaAtHwVL8Uqa/fsYao/vq9VWQ== elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" @@ -7340,9 +7340,9 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0, es-abstract@^1.20.1: - version "1.20.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.3.tgz#90b143ff7aedc8b3d189bcfac7f1e3e3f81e9da1" - integrity sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw== + version "1.20.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" + integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -7354,7 +7354,7 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19 has-property-descriptors "^1.0.0" has-symbols "^1.0.3" internal-slot "^1.0.3" - is-callable "^1.2.6" + is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" @@ -9742,7 +9742,7 @@ is-buffer@^1.0.2, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.6: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== From 5b60ef8648ed0c21411a93fc3295481e90c88981 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 8 Oct 2022 16:56:38 +0200 Subject: [PATCH 081/126] fixed client test --- .../uri-resolution/uri-resolution.spec.ts | 1 - .../client/src/__tests__/e2e/wasm-rs.spec.ts | 48 ++++++++++--------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts index 07923733bd..40ecb6a404 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts +++ b/packages/js/client/src/__tests__/core/uri-resolution/uri-resolution.spec.ts @@ -16,7 +16,6 @@ import { import fs from "fs"; import { Result } from "@polywrap/result"; import { mockPluginRegistration } from "../../helpers/mockPluginRegistration"; -import { createDefaultClient } from "../../utils/createDefaultClient"; import { PolywrapClient } from "../../../PolywrapClient"; jest.setTimeout(200000); diff --git a/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts b/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts index 52d1f64afa..61660e122f 100644 --- a/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts +++ b/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts @@ -10,7 +10,7 @@ import { getClientWithEnsAndIpfs } from "../helpers/getClientWithEnsAndIpfs"; import fse from "fs-extra"; import path from "path"; import { execSync } from "child_process"; -import { createDefaultClient } from "../utils/createDefaultClient"; +import { PolywrapClient } from "../../PolywrapClient"; const { performance } = require("perf_hooks"); jest.setTimeout(1200000); @@ -30,11 +30,11 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - const client = createDefaultClient({ + const client = new PolywrapClient({ packages: [ { uri: "wrap://ens/memory-storage.polywrap.eth", - plugin: makeMemoryStoragePlugin({}), + package: makeMemoryStoragePlugin({}), }, ], }); @@ -48,7 +48,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBigIntTypeTest(createDefaultClient(), wrapperUri); + await TestCases.runBigIntTypeTest(new PolywrapClient(), wrapperUri); }); it("bignumber-type", async () => { @@ -57,7 +57,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBigNumberTypeTest(createDefaultClient(), wrapperUri); + await TestCases.runBigNumberTypeTest(new PolywrapClient(), wrapperUri); }); it("bytes-type", async () => { @@ -66,7 +66,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runBytesTypeTest(createDefaultClient(), wrapperUri); + await TestCases.runBytesTypeTest(new PolywrapClient(), wrapperUri); }); it("enum-types", async () => { @@ -75,7 +75,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runEnumTypesTest(createDefaultClient(), wrapperUri); + await TestCases.runEnumTypesTest(new PolywrapClient(), wrapperUri); }); it("map-type", async () => { @@ -84,7 +84,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runMapTypeTest(createDefaultClient(), wrapperUri); + await TestCases.runMapTypeTest(new PolywrapClient(), wrapperUri); }); it("implementations - e2e", async () => { @@ -98,7 +98,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(implementationPath); - const client = createDefaultClient({ + const client = new PolywrapClient({ interfaces: [ { interface: interfaceUri, @@ -128,7 +128,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(implementationPath); await buildWrapper(aggregatorPath); - const client = createDefaultClient({ + const client = new PolywrapClient({ interfaces: [ { interface: interfaceUri, @@ -151,7 +151,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runInvalidTypesTest(createDefaultClient(), wrapperUri); + await TestCases.runInvalidTypesTest(new PolywrapClient(), wrapperUri); }); it("JSON-type", async () => { @@ -160,7 +160,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runJsonTypeTest(createDefaultClient(), wrapperUri, true); + await TestCases.runJsonTypeTest(new PolywrapClient(), wrapperUri, true); }); it("large-types", async () => { @@ -169,7 +169,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runLargeTypesTest(createDefaultClient(), wrapperUri); + await TestCases.runLargeTypesTest(new PolywrapClient(), wrapperUri); }); it("number-types under and overflows", async () => { @@ -178,7 +178,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runNumberTypesTest(createDefaultClient(), wrapperUri); + await TestCases.runNumberTypesTest(new PolywrapClient(), wrapperUri); }); it("object-types", async () => { @@ -187,7 +187,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); - await TestCases.runObjectTypesTest(createDefaultClient(), wrapperUri); + await TestCases.runObjectTypesTest(new PolywrapClient(), wrapperUri); }); it("simple-storage", async () => { @@ -206,7 +206,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); await TestCases.runSimpleEnvTest( - await createDefaultClient({ + await new PolywrapClient({ envs: [ { uri: wrapperUri, @@ -232,7 +232,7 @@ describe("wasm-rs test cases", () => { await buildWrapper(wrapperPath); await TestCases.runComplexEnvs( - createDefaultClient({ + new PolywrapClient({ envs: [ { uri: wrapperUri, @@ -275,20 +275,24 @@ describe("wasm-rs test cases", () => { console.debug = jest.fn(); const message = "foo bar baz"; - const client = await getClient(); + const client = new PolywrapClient(); const result = await client.invoke({ uri: wrapperUri, method: "logMessage", args: { message, - } + }, }); expect(result.ok).toBeTruthy(); if (!result.ok) return; expect(result.value).toBeTruthy(); - expect((console.debug as any).mock.calls[0][0]).toBe("__wrap_debug_log: " + message); - expect((console.debug as any).mock.calls[1][0]).toBe("__wrap_debug_log: " + message); + expect((console.debug as any).mock.calls[0][0]).toBe( + "__wrap_debug_log: " + message + ); + expect((console.debug as any).mock.calls[1][0]).toBe( + "__wrap_debug_log: " + message + ); jest.clearAllMocks(); }); }); @@ -327,7 +331,7 @@ describe.skip("Wasm-rs benchmarking", () => { const msTime = endTime - startTime; //Make sure the wrapper works correctly - await TestCases.runBigNumberTypeTest(createDefaultClient(), wrapperUri); + await TestCases.runBigNumberTypeTest(new PolywrapClient(), wrapperUri); return msTime; }; From f7471b7bf43a50c2b64bdba32c66dc6ad637a126 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sat, 8 Oct 2022 18:43:48 +0200 Subject: [PATCH 082/126] updated react package to use new client --- .../react/src/__tests__/app/SimpleStorage.tsx | 24 +++++---- packages/js/react/src/__tests__/config.ts | 22 ++++---- .../react/src/__tests__/integration.spec.tsx | 12 +++-- .../src/__tests__/usePolywrapClient.spec.tsx | 39 +++----------- .../src/__tests__/usePolywrapInvoke.spec.tsx | 53 ++++++++++--------- .../src/__tests__/usePolywrapQuery.spec.tsx | 42 ++++++++------- packages/js/react/src/provider.tsx | 12 ++++- 7 files changed, 105 insertions(+), 99 deletions(-) diff --git a/packages/js/react/src/__tests__/app/SimpleStorage.tsx b/packages/js/react/src/__tests__/app/SimpleStorage.tsx index 5698884977..e9787d1ed2 100644 --- a/packages/js/react/src/__tests__/app/SimpleStorage.tsx +++ b/packages/js/react/src/__tests__/app/SimpleStorage.tsx @@ -1,12 +1,16 @@ -import { usePolywrapQuery, PolywrapProvider, usePolywrapClient, createPolywrapProvider } from "@polywrap/react"; -import { PluginRegistration } from "@polywrap/client-js"; +import { + usePolywrapQuery, + PolywrapProvider, + usePolywrapClient, + createPolywrapProvider, +} from "@polywrap/react"; // eslint-disable-next-line import/no-extraneous-dependencies import React from "react"; -import { Env } from "@polywrap/core-js"; +import { Env, IUriPackage, Uri } from "@polywrap/core-js"; const SimpleStorage = ({ uri }: { uri: string }) => { const { execute: deployContract, data: deployData } = usePolywrapQuery<{ - deployContract: string + deployContract: string; }>({ uri, query: `mutation { @@ -31,8 +35,8 @@ const SimpleStorage = ({ uri }: { uri: string }) => { }`, variables: { value: 5, - address: deployData?.deployContract - } + address: deployData?.deployContract, + }, }); const { execute: getStorageData, data: currentStorage } = usePolywrapQuery({ @@ -77,15 +81,15 @@ const CustomProvider = createPolywrapProvider("custom"); export const SimpleStorageContainer = ({ envs, - plugins, + packages, ensUri, }: { - envs: Env[] - plugins: PluginRegistration[]; + envs: Env[]; + packages: IUriPackage[]; ensUri: string; }) => ( - + diff --git a/packages/js/react/src/__tests__/config.ts b/packages/js/react/src/__tests__/config.ts index 224ac9932f..7f41c9be99 100644 --- a/packages/js/react/src/__tests__/config.ts +++ b/packages/js/react/src/__tests__/config.ts @@ -1,17 +1,21 @@ -import { Env, PluginRegistration } from "@polywrap/core-js"; +import { Env, IUriPackage, Uri } from "@polywrap/core-js"; import { plugin as ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; -import { Connection, Connections, plugin as ethereumPlugin } from "@polywrap/ethereum-plugin-js"; +import { + Connection, + Connections, + plugin as ethereumPlugin, +} from "@polywrap/ethereum-plugin-js"; import { plugin as ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; export function createPlugins( ensAddress: string, ethereumProvider: string -): PluginRegistration[] { +): IUriPackage[] { return [ { uri: "wrap://ens/ethereum.polywrap.eth", - plugin: ethereumPlugin({ + package: ethereumPlugin({ connections: new Connections({ networks: { testnet: new Connection({ provider: ethereumProvider }), @@ -21,11 +25,11 @@ export function createPlugins( }, { uri: "wrap://ens/ipfs.polywrap.eth", - plugin: ipfsPlugin({}), + package: ipfsPlugin({}), }, { uri: "wrap://ens/ens-resolver.polywrap.eth", - plugin: ensResolverPlugin({ + package: ensResolverPlugin({ addresses: { testnet: ensAddress, }, @@ -41,7 +45,7 @@ export function createEnvs(ipfsProvider: string): Env[] { env: { provider: ipfsProvider, fallbackProviders: defaultIpfsProviders, - } - } + }, + }, ]; -} \ No newline at end of file +} diff --git a/packages/js/react/src/__tests__/integration.spec.tsx b/packages/js/react/src/__tests__/integration.spec.tsx index bbf4349363..8cfcc13c51 100644 --- a/packages/js/react/src/__tests__/integration.spec.tsx +++ b/packages/js/react/src/__tests__/integration.spec.tsx @@ -7,10 +7,10 @@ import { stopTestEnvironment, buildAndDeployWrapper, ensAddresses, - providers + providers, } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { Env, PluginRegistration } from "@polywrap/core-js"; +import { Env, IUriPackage, Uri } from "@polywrap/core-js"; // eslint-disable-next-line import/no-extraneous-dependencies import React from "react"; @@ -19,7 +19,7 @@ jest.setTimeout(360000); describe("Polywrap React Integration", () => { let envs: Env[]; - let plugins: PluginRegistration[]; + let packages: IUriPackage[]; let ensUri: string; let wrapper: { ensDomain: string; @@ -31,7 +31,7 @@ describe("Polywrap React Integration", () => { envs = createEnvs(providers.ipfs); - plugins = createPlugins(ensAddresses.ensAddress, providers.ethereum); + packages = createPlugins(ensAddresses.ensAddress, providers.ethereum); wrapper = await buildAndDeployWrapper({ wrapperAbsPath: `${GetPathToTestWrappers()}/wasm-as/simple-storage`, @@ -47,7 +47,9 @@ describe("Polywrap React Integration", () => { }); it("Deploys, read and write on Smart Contract ", async () => { - render(); + render( + + ); fireEvent.click(screen.getByText("Deploy")); await waitFor(() => screen.getByText(/0x/), { timeout: 30000 }); diff --git a/packages/js/react/src/__tests__/usePolywrapClient.spec.tsx b/packages/js/react/src/__tests__/usePolywrapClient.spec.tsx index 212f2a554a..074340d0c6 100644 --- a/packages/js/react/src/__tests__/usePolywrapClient.spec.tsx +++ b/packages/js/react/src/__tests__/usePolywrapClient.spec.tsx @@ -6,25 +6,21 @@ import { } from ".."; import { createPlugins, createEnvs } from "./config"; -import { Env, PluginRegistration } from "@polywrap/core-js"; +import { Env, IUriPackage, Uri } from "@polywrap/core-js"; import { ensAddresses, providers, initTestEnvironment, - stopTestEnvironment + stopTestEnvironment, } from "@polywrap/test-env-js"; -import { - renderHook, - RenderHookOptions, - cleanup -} from "@testing-library/react-hooks"; +import { renderHook, RenderHookOptions } from "@testing-library/react-hooks"; jest.setTimeout(360000); describe("usePolywrapClient hook", () => { let envs: Env[]; - let plugins: PluginRegistration[]; + let packages: IUriPackage[]; let WrapperProvider: RenderHookOptions; beforeAll(async () => { @@ -32,13 +28,13 @@ describe("usePolywrapClient hook", () => { envs = createEnvs(providers.ipfs); - plugins = createPlugins(ensAddresses.ensAddress, providers.ethereum); + packages = createPlugins(ensAddresses.ensAddress, providers.ethereum); WrapperProvider = { wrapper: PolywrapProvider, initialProps: { envs, - plugins, + packages, }, }; }); @@ -47,25 +43,6 @@ describe("usePolywrapClient hook", () => { await stopTestEnvironment(); }); - function getClient( - options?: UsePolywrapClientProps - ) { - const hook = () => usePolywrapClient(options); - - const { result: hookResult } = renderHook(hook, WrapperProvider); - - const result = hookResult.current; - cleanup(); - return result; - } - - it("Should return client with plugins", async () => { - const client = getClient(); - - expect(client).toBeTruthy(); - expect(client.getPlugins().length).toBeGreaterThan(0); - }); - it("Should throw error because there's no provider with expected key ", async () => { const props: UsePolywrapClientProps = { provider: "Non existent Polywrap Provider", @@ -84,9 +61,9 @@ describe("usePolywrapClient hook", () => { createPolywrapProvider("other"); const props: UsePolywrapClientProps = { - provider: "other" + provider: "other", }; - + const hook = () => usePolywrapClient(props); const { result } = renderHook(hook, WrapperProvider); diff --git a/packages/js/react/src/__tests__/usePolywrapInvoke.spec.tsx b/packages/js/react/src/__tests__/usePolywrapInvoke.spec.tsx index db46dfd36b..a5fbbf5aa6 100644 --- a/packages/js/react/src/__tests__/usePolywrapInvoke.spec.tsx +++ b/packages/js/react/src/__tests__/usePolywrapInvoke.spec.tsx @@ -6,12 +6,13 @@ import { import { UsePolywrapInvokeProps } from "../invoke"; import { createPlugins, createEnvs } from "./config"; -import { Env, PluginRegistration } from "@polywrap/core-js"; +import { Env, IUriPackage, Uri } from "@polywrap/core-js"; import { initTestEnvironment, stopTestEnvironment, ensAddresses, - providers, buildWrapper, + providers, + buildWrapper, } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; @@ -19,16 +20,15 @@ import { renderHook, act, RenderHookOptions, - cleanup + cleanup, } from "@testing-library/react-hooks"; jest.setTimeout(360000); describe("usePolywrapInvoke hook", () => { let uri: string; - let envUri: string; let envs: Env[]; - let plugins: PluginRegistration[]; + let packages: IUriPackage[]; let WrapperProvider: RenderHookOptions; beforeAll(async () => { @@ -36,19 +36,15 @@ describe("usePolywrapInvoke hook", () => { const simpleStoragePath = `${GetPathToTestWrappers()}/wasm-as/simple-storage`; await buildWrapper(simpleStoragePath); - uri = `fs/${simpleStoragePath}/build` - - const simpleEnvPath = `${GetPathToTestWrappers()}/wasm-as/simple-env-types`; - await buildWrapper(simpleEnvPath); - envUri = `fs/${simpleEnvPath}/build` + uri = `fs/${simpleStoragePath}/build`; envs = createEnvs(providers.ipfs); - plugins = createPlugins(ensAddresses.ensAddress, providers.ethereum); + packages = createPlugins(ensAddresses.ensAddress, providers.ethereum); WrapperProvider = { wrapper: PolywrapProvider, initialProps: { envs, - plugins, + packages, }, }; }); @@ -57,9 +53,7 @@ describe("usePolywrapInvoke hook", () => { await stopTestEnvironment(); }); - async function sendQuery( - options: UsePolywrapInvokeProps - ) { + async function sendQuery(options: UsePolywrapInvokeProps) { const hook = () => usePolywrapInvoke(options); const { result: hookResult } = renderHook(hook, WrapperProvider); @@ -76,11 +70,12 @@ describe("usePolywrapInvoke hook", () => { async function sendQueryWithExecVariables( options: UsePolywrapInvokeProps ) { - const hook = () => usePolywrapInvoke({ - uri: options.uri, - method: options.method, - provider: options.provider - }); + const hook = () => + usePolywrapInvoke({ + uri: options.uri, + method: options.method, + provider: options.provider, + }); const { result: hookResult } = renderHook(hook, WrapperProvider); @@ -133,7 +128,9 @@ describe("usePolywrapInvoke hook", () => { }, }; - const { data: getDataData } = await sendQuery(getStorageDataInvocation); + const { data: getDataData } = await sendQuery( + getStorageDataInvocation + ); expect(getDataData).toBe(5); }); @@ -147,7 +144,8 @@ describe("usePolywrapInvoke hook", () => { }, }; - const getDataStorageHook = () => usePolywrapInvoke(getStorageDataInvocation); + const getDataStorageHook = () => + usePolywrapInvoke(getStorageDataInvocation); const { result } = renderHook(getDataStorageHook); expect(result.error?.message).toMatch( @@ -167,7 +165,8 @@ describe("usePolywrapInvoke hook", () => { }, }; - const getDataStorageHook = () => usePolywrapInvoke(getStorageDataInvocation); + const getDataStorageHook = () => + usePolywrapInvoke(getStorageDataInvocation); const { result } = renderHook(getDataStorageHook, WrapperProvider); expect(result.error?.message).toMatch( @@ -186,7 +185,9 @@ describe("usePolywrapInvoke hook", () => { }, }; - const { data: address } = await sendQueryWithExecVariables(deployInvoke); + const { data: address } = await sendQueryWithExecVariables( + deployInvoke + ); const setStorageInvocation: UsePolywrapInvokeProps = { uri, @@ -215,7 +216,9 @@ describe("usePolywrapInvoke hook", () => { }, }; - const { data: getDataData } = await sendQueryWithExecVariables(getStorageDataInvocation); + const { data: getDataData } = await sendQueryWithExecVariables( + getStorageDataInvocation + ); expect(getDataData).toBe(3); }); }); diff --git a/packages/js/react/src/__tests__/usePolywrapQuery.spec.tsx b/packages/js/react/src/__tests__/usePolywrapQuery.spec.tsx index 6591acf6a4..f81ae3d7c2 100644 --- a/packages/js/react/src/__tests__/usePolywrapQuery.spec.tsx +++ b/packages/js/react/src/__tests__/usePolywrapQuery.spec.tsx @@ -8,12 +8,13 @@ import { } from "../query" import { createPlugins, createEnvs } from "./config"; -import { Env, PluginRegistration } from "@polywrap/core-js"; +import { Env, IUriPackage, Uri } from "@polywrap/core-js"; import { initTestEnvironment, stopTestEnvironment, ensAddresses, - providers, buildWrapper, + providers, + buildWrapper, } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; @@ -21,16 +22,15 @@ import { renderHook, act, RenderHookOptions, - cleanup + cleanup, } from "@testing-library/react-hooks"; jest.setTimeout(360000); describe("usePolywrapQuery hook", () => { let uri: string; - let envUri: string; let envs: Env[]; - let plugins: PluginRegistration[]; + let packages: IUriPackage[]; let WrapperProvider: RenderHookOptions; beforeAll(async () => { @@ -38,19 +38,18 @@ describe("usePolywrapQuery hook", () => { const simpleStoragePath = `${GetPathToTestWrappers()}/wasm-as/simple-storage`; await buildWrapper(simpleStoragePath); - uri = `fs/${simpleStoragePath}/build` + uri = `fs/${simpleStoragePath}/build`; const simpleEnvPath = `${GetPathToTestWrappers()}/wasm-as/simple-env-types`; await buildWrapper(simpleEnvPath); - envUri = `fs/${simpleEnvPath}/build` envs = createEnvs(providers.ipfs); - plugins = createPlugins(ensAddresses.ensAddress, providers.ethereum); + packages = createPlugins(ensAddresses.ensAddress, providers.ethereum); WrapperProvider = { wrapper: PolywrapProvider, initialProps: { envs, - plugins, + packages, }, }; }); @@ -75,10 +74,15 @@ describe("usePolywrapQuery hook", () => { return result; } - async function sendQueryWithExecVariables>( - options: UsePolywrapQueryProps - ) { - const hook = () => usePolywrapQuery({ uri: options.uri, query: options.query, provider: options.provider}); + async function sendQueryWithExecVariables< + TData extends Record + >(options: UsePolywrapQueryProps) { + const hook = () => + usePolywrapQuery({ + uri: options.uri, + query: options.query, + provider: options.provider, + }); const { result: hookResult } = renderHook(hook, WrapperProvider); @@ -104,7 +108,7 @@ describe("usePolywrapQuery hook", () => { }; const { data } = await sendQuery<{ - deployContract: string + deployContract: string; }>(deployQuery); const setStorageDataQuery: UsePolywrapQueryProps = { @@ -141,7 +145,7 @@ describe("usePolywrapQuery hook", () => { }; const { data: getDataData } = await sendQuery<{ - getData: number + getData: number; }>(getStorageDataQuery); expect(getDataData?.getData).toBe(5); }); @@ -159,7 +163,7 @@ describe("usePolywrapQuery hook", () => { }; const { data } = await sendQuery<{ - deployContract: string + deployContract: string; }>(deployQuery); const setStorageDataQuery: UsePolywrapQueryProps = { @@ -255,7 +259,7 @@ describe("usePolywrapQuery hook", () => { }; const { data } = await sendQueryWithExecVariables<{ - deployContract: string + deployContract: string; }>(deployQuery); const setStorageDataQuery: UsePolywrapQueryProps = { @@ -294,7 +298,9 @@ describe("usePolywrapQuery hook", () => { `, }; - const { data: getDataData } = await sendQueryWithExecVariables(getStorageDataQuery); + const { data: getDataData } = await sendQueryWithExecVariables( + getStorageDataQuery + ); expect(getDataData?.getData).toBe(3); }); }); \ No newline at end of file diff --git a/packages/js/react/src/provider.tsx b/packages/js/react/src/provider.tsx index 7071bc991e..79800dcda2 100644 --- a/packages/js/react/src/provider.tsx +++ b/packages/js/react/src/provider.tsx @@ -33,7 +33,15 @@ export function createPolywrapProvider( ClientContext: React.createContext({} as PolywrapClient) }; - return ({ envs, redirects, interfaces, tracerConfig, children }) => { + return ({ + envs, + redirects, + wrappers, + packages, + interfaces, + tracerConfig, + children, + }) => { const [clientCreated, setClientCreated] = React.useState(false); React.useEffect(() => { @@ -47,6 +55,8 @@ export function createPolywrapProvider( // Instantiate the client PROVIDERS[name].client = new PolywrapClient({ redirects, + wrappers, + packages, interfaces, envs, tracerConfig, From fbb567f06b148fdf9a6b41801393d495d337d5e8 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Sun, 9 Oct 2022 15:36:53 +0200 Subject: [PATCH 083/126] fixed issues after merge with remote --- .../cli/src/__tests__/unit/jobrunner.spec.ts | 9 ++-- .../assemblyscript/001-sanity/yarn.lock | 51 +++++++++++++++++++ 2 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock diff --git a/packages/cli/src/__tests__/unit/jobrunner.spec.ts b/packages/cli/src/__tests__/unit/jobrunner.spec.ts index 9f1e94d13d..43b775c373 100644 --- a/packages/cli/src/__tests__/unit/jobrunner.spec.ts +++ b/packages/cli/src/__tests__/unit/jobrunner.spec.ts @@ -3,23 +3,26 @@ import { buildWrapper } from "@polywrap/test-env-js"; import { testCases } from "./jobrunner-test-cases"; import { JobRunner } from "../../lib"; import path from "path"; -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { ClientConfigBuilder, CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { Uri } from "@polywrap/core-js"; jest.setTimeout(200000); describe("workflow JobRunner", () => { + let defaultConfig: CustomClientConfig; + beforeAll(async () => { await buildWrapper( path.join(GetPathToTestWrappers(), "wasm-as", "simple-calculator") ); + defaultConfig = new ClientConfigBuilder().addDefaults().build(); }); for (const testCase of testCases) { it(testCase.name, async () => { - expect(client).toBeTruthy(); const ids = Object.keys(testCase.workflow.jobs); const jobRunner = new JobRunner( - new ClientConfigBuilder().addDefaults().build(), + defaultConfig, testCase.onExecution ); await jobRunner.run(testCase.workflow.jobs, ids); diff --git a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock new file mode 100644 index 0000000000..d307a391d3 --- /dev/null +++ b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock @@ -0,0 +1,51 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@polywrap/wasm-as@../../../../../../../wasm/as": + version "0.8.0" + dependencies: + "@web3api/assemblyscript-json" "1.2.0" + as-bigint "0.5.3" + as-bignumber "0.2.1" + as-container "0.6.1" + +"@web3api/assemblyscript-json@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@web3api/assemblyscript-json/-/assemblyscript-json-1.2.0.tgz#f01f11f12a66cd1a319d43f12e476307d1ad3da8" + integrity sha512-x+wchJpH1giJzXj3dYs8vh2SKMXepeqVXiaFV/YCtXg4X/KaUnxi0kp5JugbEAyEJurEScH1YuV6IvGhGui/fw== + +as-bigint@0.5.3, as-bigint@^0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/as-bigint/-/as-bigint-0.5.3.tgz#a0647d0b7ce835077aca33115e71eb26a83df8be" + integrity sha512-tg9iTO/vPeovOM5CSk1WxYcsfBd/cd3twhBW5PrpcGUfiSEXlPB69eOxFKvSbZnpuDxBAyQ4YBgEkfnYL89Czw== + +as-bignumber@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/as-bignumber/-/as-bignumber-0.2.1.tgz#6479caca7f24f784b10b3d2633cde457ef9cbc22" + integrity sha512-udKOlFYKSZyuHK7upTczRR8lcXkyPS0DR6NOtP+c3bhM4B2B0VqMBTzqa0hdYG4Zss94zA6UmqpjreEbzNUo4g== + dependencies: + as-bigint "^0.5.1" + +as-container@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/as-container/-/as-container-0.6.1.tgz#94806a91e96b68622c55f301fc04e6339a1228c2" + integrity sha512-cgQ7P/dQAGeU2lLhPpinThYfFcUw3HzV8b00CoqV+l5Tsgpl7xhXdoc/2srCyK0um1BVAQwlrEpNTtthzkMF+g== + +assemblyscript@0.19.5: + version "0.19.5" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.5.tgz#12f5976c41f6b866dd0d1aad5275dcd358a5d82f" + integrity sha512-mAx7gcwjJI5OSu2RcOlugHFNxKt/rtWn3vyp46cN1+uXb7YSS//rgO044+KKwfxnGvoWj0ClsU0dNt5eWoXF7A== + dependencies: + binaryen "101.0.0-nightly.20210604" + long "^4.0.0" + +binaryen@101.0.0-nightly.20210604: + version "101.0.0-nightly.20210604" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210604.tgz#3498a0a0c1108f3386b15ca79f1608425057db9e" + integrity sha512-aTgX1JDN8m3tTFK8g9hazJcEOdQl7mK4yVfElkKAh7q+TRUCaea4a2SMLr1z2xZL7s9N4lkrvrBblxRuEPvxWQ== + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== From 44fc947eb07ab4c9de259763289493a0165e305a Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Mon, 10 Oct 2022 13:39:56 +0200 Subject: [PATCH 084/126] regenerated yarn lock --- yarn.lock | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/yarn.lock b/yarn.lock index 20736d7c5f..42a0a2d97d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5124,10 +5124,10 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" content-type "~1.0.4" @@ -5137,7 +5137,7 @@ body-parser@1.20.0: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.10.3" + qs "6.11.0" raw-body "2.5.1" type-is "~1.6.18" unpipe "1.0.0" @@ -7976,13 +7976,13 @@ explain-error@^1.0.4: integrity sha512-/wSgNMxFusiYRy1rd19LT2SQlIXDppHpumpWo06wxjflD1OYxDLbl6rMVw+U3bxD5Nuhex4TKqv9Aem4D0lVzQ== express@^4.17.1: - version "4.18.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.0" + body-parser "1.20.1" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.5.0" @@ -8001,7 +8001,7 @@ express@^4.17.1: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.10.3" + qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.18.0" @@ -14684,14 +14684,7 @@ q@^1.1.2, q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" - -qs@^6.9.4: +qs@6.11.0, qs@^6.9.4: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== From 1ae966faa7da62e6082fd676cb93e0db30454594 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Mon, 10 Oct 2022 14:38:15 +0200 Subject: [PATCH 085/126] bumped version of all packages --- packages/cli/package.json | 2 +- .../infra-modules/http/server/package.json | 2 +- packages/js/client/package.json | 26 +++++++++---------- packages/js/plugin/package.json | 14 +++++----- packages/js/plugins/ethereum/package.json | 6 ++--- packages/js/plugins/file-system/package.json | 4 +-- packages/js/plugins/http/package.json | 10 +++---- packages/js/plugins/ipfs/package.json | 6 ++--- packages/js/plugins/logger/package.json | 4 +-- .../uri-resolvers/ens-resolver/package.json | 10 +++---- .../file-system-resolver/package.json | 6 ++--- .../uri-resolvers/http-resolver/package.json | 4 +-- .../uri-resolvers/ipfs-resolver/package.json | 2 +- packages/js/plugins/ws/package.json | 8 +++--- .../cli/run/run-test-wrapper/package.json | 2 +- 15 files changed, 53 insertions(+), 53 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 66debdf265..afcb3019ec 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -56,7 +56,7 @@ "@polywrap/test-env-js": "0.9.0", "@polywrap/wasm-js": "0.9.0", "@polywrap/wrap-manifest-types-js": "0.9.0", - "@polywrap/uri-resolvers-js": "0.8.0", + "@polywrap/uri-resolvers-js": "0.9.0", "assemblyscript": "0.19.1", "axios": "0.21.2", "chalk": "4.1.0", diff --git a/packages/cli/src/lib/defaults/infra-modules/http/server/package.json b/packages/cli/src/lib/defaults/infra-modules/http/server/package.json index 0619e87241..a2669b48c6 100644 --- a/packages/cli/src/lib/defaults/infra-modules/http/server/package.json +++ b/packages/cli/src/lib/defaults/infra-modules/http/server/package.json @@ -12,7 +12,7 @@ }, "license": "MIT", "dependencies": { - "@polywrap/msgpack-js": "0.8.0", + "@polywrap/msgpack-js": "0.9.0", "@types/multer": "1.4.7", "dotenv": "8.6.0", "express": "4.18.1", diff --git a/packages/js/client/package.json b/packages/js/client/package.json index 0b4e1bc32f..e3e05ef9ee 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -28,7 +28,7 @@ "@polywrap/tracing-js": "0.9.0", "@polywrap/uri-resolvers-js": "0.9.0", "@polywrap/wrap-manifest-types-js": "0.9.0", - "@polywrap/client-config-builder-js": "0.8.0", + "@polywrap/client-config-builder-js": "0.9.0", "graphql": "15.5.0", "yaml": "2.1.3" }, @@ -36,18 +36,18 @@ "@polywrap/os-js": "0.9.0", "@polywrap/test-cases": "0.9.0", "@polywrap/test-env-js": "0.9.0", - "@polywrap/client-config-builder-js": "0.8.0", - "@polywrap/ens-resolver-plugin-js": "0.8.0", - "@polywrap/ethereum-plugin-js": "0.8.0", - "@polywrap/http-plugin-js": "0.8.0", - "@polywrap/http-resolver-plugin-js": "0.8.0", - "@polywrap/ipfs-plugin-js": "0.8.0", - "@polywrap/ipfs-resolver-plugin-js": "0.8.0", - "@polywrap/logger-plugin-js": "0.8.0", - "@polywrap/fs-plugin-js": "0.8.0", - "@polywrap/uri-resolver-extensions-js": "0.8.0", - "@polywrap/fs-resolver-plugin-js": "0.8.0", - "@polywrap/plugin-js": "0.8.0", + "@polywrap/client-config-builder-js": "0.9.0", + "@polywrap/ens-resolver-plugin-js": "0.9.0", + "@polywrap/ethereum-plugin-js": "0.9.0", + "@polywrap/http-plugin-js": "0.9.0", + "@polywrap/http-resolver-plugin-js": "0.9.0", + "@polywrap/ipfs-plugin-js": "0.9.0", + "@polywrap/ipfs-resolver-plugin-js": "0.9.0", + "@polywrap/logger-plugin-js": "0.9.0", + "@polywrap/fs-plugin-js": "0.9.0", + "@polywrap/uri-resolver-extensions-js": "0.9.0", + "@polywrap/fs-resolver-plugin-js": "0.9.0", + "@polywrap/plugin-js": "0.9.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "@types/uuid": "8.3.0", diff --git a/packages/js/plugin/package.json b/packages/js/plugin/package.json index 83d8c5c61f..f082b0be26 100644 --- a/packages/js/plugin/package.json +++ b/packages/js/plugin/package.json @@ -1,7 +1,7 @@ { "name": "@polywrap/plugin-js", "description": "Polywrap plugin core package for plugin wrappers", - "version": "0.8.0", + "version": "0.9.0", "license": "MIT", "repository": { "type": "git", @@ -19,14 +19,14 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/result": "0.8.0", - "@polywrap/core-js": "0.8.0", - "@polywrap/msgpack-js": "0.8.0", - "@polywrap/tracing-js": "0.8.0", - "@polywrap/wrap-manifest-types-js": "0.8.0" + "@polywrap/result": "0.9.0", + "@polywrap/core-js": "0.9.0", + "@polywrap/msgpack-js": "0.9.0", + "@polywrap/tracing-js": "0.9.0", + "@polywrap/wrap-manifest-types-js": "0.9.0" }, "devDependencies": { - "@polywrap/os-js": "0.8.0", + "@polywrap/os-js": "0.9.0", "@types/jest": "26.0.8", "jest": "26.6.3", "rimraf": "3.0.2", diff --git a/packages/js/plugins/ethereum/package.json b/packages/js/plugins/ethereum/package.json index 1197c3e5bc..6bce97b106 100644 --- a/packages/js/plugins/ethereum/package.json +++ b/packages/js/plugins/ethereum/package.json @@ -23,13 +23,13 @@ "@ethersproject/address": "5.0.7", "@ethersproject/providers": "5.0.7", "@polywrap/core-js": "0.9.0", - "@polywrap/plugin-js": "0.8.0", + "@polywrap/plugin-js": "0.9.0", "ethers": "5.0.7" }, "devDependencies": { "@polywrap/client-js": "0.9.0", - "@polywrap/fs-resolver-plugin-js": "0.8.0", - "@polywrap/fs-plugin-js": "0.8.0", + "@polywrap/fs-resolver-plugin-js": "0.9.0", + "@polywrap/fs-plugin-js": "0.9.0", "@polywrap/ens-resolver-plugin-js": "0.9.0", "@polywrap/ipfs-plugin-js": "0.9.0", "@polywrap/test-env-js": "0.9.0", diff --git a/packages/js/plugins/file-system/package.json b/packages/js/plugins/file-system/package.json index d741d881ca..f9b3304a5b 100644 --- a/packages/js/plugins/file-system/package.json +++ b/packages/js/plugins/file-system/package.json @@ -21,14 +21,14 @@ }, "dependencies": { "@polywrap/core-js": "0.9.0", - "@polywrap/plugin-js": "0.8.0" + "@polywrap/plugin-js": "0.9.0" }, "devDependencies": { "@polywrap/client-js": "0.9.0", "@polywrap/ens-resolver-plugin-js": "0.9.0", "@polywrap/ethereum-plugin-js": "0.9.0", "@polywrap/ipfs-plugin-js": "0.9.0", - "@polywrap/uri-resolvers-js": "0.8.0", + "@polywrap/uri-resolvers-js": "0.9.0", "@polywrap/test-cases": "0.9.0", "@polywrap/test-env-js": "0.9.0", "@types/jest": "26.0.8", diff --git a/packages/js/plugins/http/package.json b/packages/js/plugins/http/package.json index e78b0337d2..d1058f1d3b 100644 --- a/packages/js/plugins/http/package.json +++ b/packages/js/plugins/http/package.json @@ -21,15 +21,15 @@ }, "dependencies": { "@polywrap/core-js": "0.9.0", - "@polywrap/plugin-js": "0.8.0", + "@polywrap/plugin-js": "0.9.0", "axios": "0.21.4" }, "devDependencies": { "@polywrap/client-js": "0.9.0", - "@polywrap/uri-resolvers-js": "0.8.0", - "@polywrap/fs-resolver-plugin-js": "0.8.0", - "@polywrap/fs-plugin-js": "0.8.0", - "@polywrap/uri-resolver-extensions-js": "0.8.0", + "@polywrap/uri-resolvers-js": "0.9.0", + "@polywrap/fs-resolver-plugin-js": "0.9.0", + "@polywrap/fs-plugin-js": "0.9.0", + "@polywrap/uri-resolver-extensions-js": "0.9.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/ipfs/package.json b/packages/js/plugins/ipfs/package.json index fbed9e2cb7..8945cb9b04 100644 --- a/packages/js/plugins/ipfs/package.json +++ b/packages/js/plugins/ipfs/package.json @@ -22,15 +22,15 @@ "dependencies": { "@polywrap/core-js": "0.9.0", "@polywrap/ipfs-http-client-lite": "0.3.0", - "@polywrap/plugin-js": "0.8.0", + "@polywrap/plugin-js": "0.9.0", "abort-controller": "3.0.0", "is-ipfs": "1.0.3", "multiformats": "9.7.0" }, "devDependencies": { - "@polywrap/client-js": "0.8.0", + "@polywrap/client-js": "0.9.0", "@polywrap/test-env-js": "0.9.0", - "@polywrap/uri-resolvers-js": "0.8.0", + "@polywrap/uri-resolvers-js": "0.9.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "abort-controller": "3.0.0", diff --git a/packages/js/plugins/logger/package.json b/packages/js/plugins/logger/package.json index 109d19fe4a..4d1dc976d3 100644 --- a/packages/js/plugins/logger/package.json +++ b/packages/js/plugins/logger/package.json @@ -21,11 +21,11 @@ }, "dependencies": { "@polywrap/core-js": "0.9.0", - "@polywrap/plugin-js": "0.8.0" + "@polywrap/plugin-js": "0.9.0" }, "devDependencies": { "@polywrap/client-js": "0.9.0", - "@polywrap/uri-resolvers-js": "0.8.0", + "@polywrap/uri-resolvers-js": "0.9.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/package.json b/packages/js/plugins/uri-resolvers/ens-resolver/package.json index 684dd474ca..8700312a6e 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ens-resolver/package.json @@ -23,14 +23,14 @@ "@ethersproject/address": "5.0.7", "@ethersproject/basex": "5.0.7", "@polywrap/core-js": "0.9.0", - "@polywrap/plugin-js": "0.8.0", + "@polywrap/plugin-js": "0.9.0", "ethers": "5.0.7" }, "devDependencies": { - "@polywrap/client-js": "0.8.0", - "@polywrap/ethereum-plugin-js": "0.8.0", - "@polywrap/ipfs-plugin-js": "0.8.0", - "@polywrap/ipfs-resolver-plugin-js": "0.8.0", + "@polywrap/client-js": "0.9.0", + "@polywrap/ethereum-plugin-js": "0.9.0", + "@polywrap/ipfs-plugin-js": "0.9.0", + "@polywrap/ipfs-resolver-plugin-js": "0.9.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/package.json b/packages/js/plugins/uri-resolvers/file-system-resolver/package.json index 92428f8c7e..5208787c11 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/package.json @@ -21,11 +21,11 @@ }, "dependencies": { "@polywrap/core-js": "0.9.0", - "@polywrap/plugin-js": "0.8.0" + "@polywrap/plugin-js": "0.9.0" }, "devDependencies": { - "@polywrap/client-js": "0.8.0", - "@polywrap/fs-plugin-js": "0.8.0", + "@polywrap/client-js": "0.9.0", + "@polywrap/fs-plugin-js": "0.9.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/uri-resolvers/http-resolver/package.json b/packages/js/plugins/uri-resolvers/http-resolver/package.json index 3c232a1d77..a9c7db76c8 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/http-resolver/package.json @@ -22,11 +22,11 @@ }, "dependencies": { "@polywrap/core-js": "0.9.0", - "@polywrap/plugin-js": "0.8.0", + "@polywrap/plugin-js": "0.9.0", "abort-controller": "3.0.0" }, "devDependencies": { - "@polywrap/plugin-js": "0.8.0", + "@polywrap/plugin-js": "0.9.0", "@polywrap/http-plugin-js": "0.9.0", "@polywrap/polywrap-manifest-types-js": "0.9.0", "@polywrap/test-env-js": "0.9.0", diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json index d77521dd34..983807da52 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json @@ -22,7 +22,7 @@ "dependencies": { "@polywrap/core-js": "0.9.0", "@polywrap/ipfs-http-client-lite": "0.3.0", - "@polywrap/plugin-js": "0.8.0", + "@polywrap/plugin-js": "0.9.0", "abort-controller": "3.0.0", "is-ipfs": "1.0.3" }, diff --git a/packages/js/plugins/ws/package.json b/packages/js/plugins/ws/package.json index 1a7846f1ae..6483913ea2 100644 --- a/packages/js/plugins/ws/package.json +++ b/packages/js/plugins/ws/package.json @@ -21,14 +21,14 @@ }, "dependencies": { "@polywrap/core-js": "0.9.0", - "@polywrap/plugin-js": "0.8.0" + "@polywrap/plugin-js": "0.9.0" }, "devDependencies": { "@polywrap/client-js": "0.9.0", - "@polywrap/uri-resolvers-js": "0.8.0", + "@polywrap/uri-resolvers-js": "0.9.0", "@polywrap/test-env-js": "0.9.0", - "@polywrap/fs-resolver-plugin-js": "0.8.0", - "@polywrap/fs-plugin-js": "0.8.0", + "@polywrap/fs-resolver-plugin-js": "0.9.0", + "@polywrap/fs-plugin-js": "0.9.0", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/test-cases/cases/cli/run/run-test-wrapper/package.json b/packages/test-cases/cases/cli/run/run-test-wrapper/package.json index fa4c02dc87..312bc62a28 100644 --- a/packages/test-cases/cases/cli/run/run-test-wrapper/package.json +++ b/packages/test-cases/cases/cli/run/run-test-wrapper/package.json @@ -7,7 +7,7 @@ "build": "polywrap build" }, "dependencies": { - "@polywrap/wasm-as": "0.8.0" + "@polywrap/wasm-as": "0.9.0" }, "devDependencies": { "assemblyscript": "0.19.5" From a8981e9f63678c7d8ae049db1a1e0845e5e215f7 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Mon, 10 Oct 2022 16:44:35 +0200 Subject: [PATCH 086/126] regenerated yarn lock --- .../assemblyscript/001-sanity/yarn.lock | 2 +- yarn.lock | 150 +++++++++--------- 2 files changed, 76 insertions(+), 76 deletions(-) diff --git a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock index d307a391d3..3e4d9b626d 100644 --- a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock +++ b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock @@ -3,7 +3,7 @@ "@polywrap/wasm-as@../../../../../../../wasm/as": - version "0.8.0" + version "0.9.0" dependencies: "@web3api/assemblyscript-json" "1.2.0" as-bigint "0.5.3" diff --git a/yarn.lock b/yarn.lock index 42a0a2d97d..acc757715e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -124,10 +124,10 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3", "@babel/compat-data@^7.9.0": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151" - integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.19.3", "@babel/compat-data@^7.19.4", "@babel/compat-data@^7.9.0": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.4.tgz#95c86de137bf0317f3a570e1b6e996b427299747" + integrity sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw== "@babel/core@7.9.0": version "7.9.0" @@ -172,12 +172,12 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.19.3", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.3.tgz#d7f4d1300485b4547cb6f94b27d10d237b42bf59" - integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ== +"@babel/generator@^7.19.3", "@babel/generator@^7.19.4", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.4.tgz#60050cf3f0a593d7b2471b4be4f62a56b949237f" + integrity sha512-5T2lY5vXqS+5UEit/5TwcIUeCnwgCljcF8IQRT6XRQPBrvLeq5V8W+URv+GvwoF3FP8tkhp++evVyDzkDGzNmA== dependencies: - "@babel/types" "^7.19.3" + "@babel/types" "^7.19.4" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -328,11 +328,11 @@ "@babel/types" "^7.19.0" "@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7" + integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.19.4" "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": version "7.18.9" @@ -348,10 +348,10 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" @@ -374,13 +374,13 @@ "@babel/types" "^7.19.0" "@babel/helpers@^7.19.0", "@babel/helpers@^7.9.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18" - integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.4.tgz#42154945f87b8148df7203a25c31ba9a73be46c5" + integrity sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw== dependencies: "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.19.4" + "@babel/types" "^7.19.4" "@babel/highlight@^7.18.6", "@babel/highlight@^7.8.3": version "7.18.6" @@ -391,10 +391,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a" - integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3", "@babel/parser@^7.19.4", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.4.tgz#03c4339d2b8971eb3beca5252bafd9b9f79db3dc" + integrity sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -520,14 +520,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.18.9", "@babel/plugin-proposal-object-rest-spread@^7.9.0": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== +"@babel/plugin-proposal-object-rest-spread@^7.19.4", "@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz#a8fc86e8180ff57290c91a75d83fe658189b642d" + integrity sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q== dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/compat-data" "^7.19.4" + "@babel/helper-compilation-targets" "^7.19.3" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.18.8" @@ -752,12 +752,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.18.9", "@babel/plugin-transform-block-scoping@^7.8.3": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== +"@babel/plugin-transform-block-scoping@^7.19.4", "@babel/plugin-transform-block-scoping@^7.8.3": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz#315d70f68ce64426db379a3d830e7ac30be02e9b" + integrity sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-classes@^7.19.0", "@babel/plugin-transform-classes@^7.9.0": version "7.19.0" @@ -781,12 +781,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-destructuring@^7.18.13", "@babel/plugin-transform-destructuring@^7.8.3": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" - integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== +"@babel/plugin-transform-destructuring@^7.19.4", "@babel/plugin-transform-destructuring@^7.8.3": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz#46890722687b9b89e1369ad0bd8dc6c5a3b4319d" + integrity sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": version "7.18.6" @@ -1137,11 +1137,11 @@ semver "^5.5.0" "@babel/preset-env@^7.4.5": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.3.tgz#52cd19abaecb3f176a4ff9cc5e15b7bf06bec754" - integrity sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w== + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.4.tgz#4c91ce2e1f994f717efb4237891c3ad2d808c94b" + integrity sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg== dependencies: - "@babel/compat-data" "^7.19.3" + "@babel/compat-data" "^7.19.4" "@babel/helper-compilation-targets" "^7.19.3" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-option" "^7.18.6" @@ -1156,7 +1156,7 @@ "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-object-rest-spread" "^7.19.4" "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-private-methods" "^7.18.6" @@ -1180,10 +1180,10 @@ "@babel/plugin-transform-arrow-functions" "^7.18.6" "@babel/plugin-transform-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-block-scoping" "^7.19.4" "@babel/plugin-transform-classes" "^7.19.0" "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.13" + "@babel/plugin-transform-destructuring" "^7.19.4" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" @@ -1210,7 +1210,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.19.3" + "@babel/types" "^7.19.4" babel-plugin-polyfill-corejs2 "^0.3.3" babel-plugin-polyfill-corejs3 "^0.6.0" babel-plugin-polyfill-regenerator "^0.4.1" @@ -1261,9 +1261,9 @@ "@babel/plugin-transform-typescript" "^7.9.0" "@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.12.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz#f0cbbe7edda7c4109cd253bb1dee99aba4594ad9" - integrity sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g== + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz#870dbfd9685b3dad5aeb2d00841bb8b6192e3095" + integrity sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ== dependencies: core-js-pure "^3.25.1" regenerator-runtime "^0.13.4" @@ -1276,9 +1276,9 @@ regenerator-runtime "^0.13.4" "@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" - integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.4.tgz#a42f814502ee467d55b38dd1c256f53a7b885c78" + integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA== dependencies: regenerator-runtime "^0.13.4" @@ -1291,28 +1291,28 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.3", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.3.tgz#3a3c5348d4988ba60884e8494b0592b2f15a04b4" - integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.3", "@babel/traverse@^7.19.4", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.4.tgz#f117820e18b1e59448a6c1fa9d0ff08f7ac459a8" + integrity sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" + "@babel/generator" "^7.19.4" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.3" - "@babel/types" "^7.19.3" + "@babel/parser" "^7.19.4" + "@babel/types" "^7.19.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.3.tgz#fc420e6bbe54880bce6779ffaf315f5e43ec9624" - integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw== +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.4.tgz#0dd5c91c573a202d600490a35b33246fed8a41c7" + integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw== dependencies: - "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" @@ -6805,9 +6805,9 @@ default-gateway@^4.2.0: ip-regex "^2.1.0" defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" @@ -17143,9 +17143,9 @@ uint8arrays@^2.0.5, uint8arrays@^2.1.3: multiformats "^9.4.2" uint8arrays@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" - integrity sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog== + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== dependencies: multiformats "^9.4.2" From e6b9d082150f4be25f1e77036a5e2489c0dc1291 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Mon, 10 Oct 2022 16:59:04 +0200 Subject: [PATCH 087/126] included plugin package to core build command --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5f579d2040..d27d3854f1 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,9 @@ "dependencies:install": "cd dependencies && yarn", "preinstall": "yarn dependencies:install", "build": "yarn build:core && yarn build:interfaces && yarn link:schema && yarn build:plugins && yarn build:resolver:plugins && yarn build:config && yarn build:client && yarn build:test-env && yarn build:cli", - "build:core": "lerna run build --no-private --ignore @polywrap/*plugin-js --ignore @polywrap/client-config-builder-js --ignore polywrap --ignore @polywrap/client-js --ignore @polywrap/react --ignore @polywrap/test-env-js --ignore @polywrap/*-interface", + "build:core": "lerna run build --no-private --ignore @polywrap/*-plugin-js --ignore @polywrap/client-config-builder-js --ignore polywrap --ignore @polywrap/client-js --ignore @polywrap/react --ignore @polywrap/test-env-js --ignore @polywrap/*-interface", "build:interfaces": "lerna run build --scope @polywrap/*-interface", - "build:plugins": "lerna run build --scope @polywrap/*plugin-js --ignore @polywrap/*-resolver-plugin-js", + "build:plugins": "lerna run build --scope @polywrap/*-plugin-js --ignore @polywrap/*-resolver-plugin-js", "build:resolver:plugins": "lerna run build --scope @polywrap/*-resolver-plugin-js", "build:config": "lerna run build --scope @polywrap/client-config-builder-js", "build:client": "lerna run build --scope @polywrap/client-js --scope @polywrap/react", From 841e8d7e7322feb8e823dbe984109cbb2b0ce9c9 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Mon, 10 Oct 2022 19:32:04 +0200 Subject: [PATCH 088/126] using from method instead of constructor --- packages/js/client-config-builder/src/ClientConfigBuilder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/client-config-builder/src/ClientConfigBuilder.ts b/packages/js/client-config-builder/src/ClientConfigBuilder.ts index 1f807c2207..851903f11f 100644 --- a/packages/js/client-config-builder/src/ClientConfigBuilder.ts +++ b/packages/js/client-config-builder/src/ClientConfigBuilder.ts @@ -366,7 +366,7 @@ export class ClientConfigBuilder { redirects: this._config.redirects, resolver: resolver ?? - new RecursiveResolver( + RecursiveResolver.from( PackageToWrapperCacheResolver.from( [ new LegacyRedirectsResolver(), From 72ec2ef8c5d0d9821ae24e13e8aa37053c706810 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Mon, 10 Oct 2022 19:32:12 +0200 Subject: [PATCH 089/126] removed uneccessary deps --- packages/js/client/package.json | 7 ++----- packages/js/core/package.json | 8 +------- packages/js/manifests/wrap/package.json | 2 +- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/packages/js/client/package.json b/packages/js/client/package.json index e3e05ef9ee..c0776f64d3 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -20,17 +20,13 @@ "test:watch": "jest --watch --passWithNoTests --verbose --detectOpenHandles" }, "dependencies": { - "@polywrap/asyncify-js": "0.9.0", "@polywrap/core-js": "0.9.0", "@polywrap/msgpack-js": "0.9.0", "@polywrap/result": "0.9.0", - "@polywrap/schema-parse": "0.9.0", "@polywrap/tracing-js": "0.9.0", "@polywrap/uri-resolvers-js": "0.9.0", "@polywrap/wrap-manifest-types-js": "0.9.0", - "@polywrap/client-config-builder-js": "0.9.0", - "graphql": "15.5.0", - "yaml": "2.1.3" + "@polywrap/client-config-builder-js": "0.9.0" }, "devDependencies": { "@polywrap/os-js": "0.9.0", @@ -51,6 +47,7 @@ "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "@types/uuid": "8.3.0", + "yaml": "2.1.3", "bignumber.js": "9.0.2", "jest": "26.6.3", "polywrap": "0.9.0", diff --git a/packages/js/core/package.json b/packages/js/core/package.json index 1a2a2875a4..2ad1095168 100644 --- a/packages/js/core/package.json +++ b/packages/js/core/package.json @@ -19,23 +19,17 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/asyncify-js": "0.9.0", - "@polywrap/msgpack-js": "0.9.0", "@polywrap/result": "0.9.0", "@polywrap/tracing-js": "0.9.0", "@polywrap/wrap-manifest-types-js": "0.9.0", "graphql": "15.5.0", - "graphql-tag": "2.10.4", - "jsonschema": "1.4.0", - "semver": "7.3.5", - "yaml": "2.1.3" + "graphql-tag": "2.10.4" }, "devDependencies": { "@polywrap/os-js": "0.9.0", "@types/jest": "26.0.8", "@types/mustache": "4.0.1", "@types/prettier": "2.6.0", - "@types/semver": "7.3.8", "jest": "26.6.3", "mustache": "4.0.1", "rimraf": "3.0.2", diff --git a/packages/js/manifests/wrap/package.json b/packages/js/manifests/wrap/package.json index 2e1f3b84be..c1b090f8d9 100644 --- a/packages/js/manifests/wrap/package.json +++ b/packages/js/manifests/wrap/package.json @@ -16,7 +16,6 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/msgpack-js": "0.9.0", "json-schema-ref-parser": "9.0.9", "jsonschema": "1.4.0", "semver": "7.3.5" @@ -24,6 +23,7 @@ "devDependencies": { "@polywrap/os-js": "0.9.0", "@polywrap/wrap-manifest-schemas": "0.9.0", + "@polywrap/msgpack-js": "0.9.0", "@types/jest": "26.0.8", "@types/mustache": "4.0.1", "@types/prettier": "2.6.0", From 4c317f0774a81085ccacde6b52a27beffd7a544c Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Mon, 10 Oct 2022 19:32:53 +0200 Subject: [PATCH 090/126] reordered props --- packages/js/client-config-builder/src/CustomClientConfig.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/js/client-config-builder/src/CustomClientConfig.ts b/packages/js/client-config-builder/src/CustomClientConfig.ts index 73999ca74e..97487d12e7 100644 --- a/packages/js/client-config-builder/src/CustomClientConfig.ts +++ b/packages/js/client-config-builder/src/CustomClientConfig.ts @@ -9,9 +9,9 @@ import { import { UriResolverLike } from "@polywrap/uri-resolvers-js"; export type CustomClientConfig = { - readonly redirects: IUriRedirect[]; - readonly interfaces: InterfaceImplementations[]; readonly envs: Env[]; + readonly interfaces: InterfaceImplementations[]; + readonly redirects: IUriRedirect[]; readonly wrappers: IUriWrapper[]; readonly packages: IUriPackage[]; readonly resolvers: UriResolverLike[]; From 7acfdea52fbee3a8f968ca4abd8fafd15eb65230 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 12 Oct 2022 18:47:24 +0200 Subject: [PATCH 091/126] removed unused dependency --- packages/cli/package.json | 1 - yarn.lock | 50 +++++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index afcb3019ec..d928d5e046 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -56,7 +56,6 @@ "@polywrap/test-env-js": "0.9.0", "@polywrap/wasm-js": "0.9.0", "@polywrap/wrap-manifest-types-js": "0.9.0", - "@polywrap/uri-resolvers-js": "0.9.0", "assemblyscript": "0.19.1", "axios": "0.21.2", "chalk": "4.1.0", diff --git a/yarn.lock b/yarn.lock index acc757715e..3774bb798c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -173,9 +173,9 @@ semver "^6.3.0" "@babel/generator@^7.19.3", "@babel/generator@^7.19.4", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.4.tgz#60050cf3f0a593d7b2471b4be4f62a56b949237f" - integrity sha512-5T2lY5vXqS+5UEit/5TwcIUeCnwgCljcF8IQRT6XRQPBrvLeq5V8W+URv+GvwoF3FP8tkhp++evVyDzkDGzNmA== + version "7.19.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.5.tgz#da3f4b301c8086717eee9cab14da91b1fa5dcca7" + integrity sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg== dependencies: "@babel/types" "^7.19.4" "@jridgewell/gen-mapping" "^0.3.2" @@ -3315,9 +3315,9 @@ querystring "^0.2.0" "@sinclair/typebox@^0.24.1": - version "0.24.44" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.44.tgz#0a0aa3bf4a155a678418527342a3ee84bd8caa5c" - integrity sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg== + version "0.24.46" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.46.tgz#57501b58023776dbbae9e25619146286440be34c" + integrity sha512-ng4ut1z2MCBhK/NwDVwIQp3pAUOCs/KNaW3cBxdFB2xTDrOuo1xuNmpr/9HHFhxqIvHrs1NTH3KJg6q+JSy1Kw== "@sinonjs/commons@^1.7.0": version "1.8.3" @@ -3698,9 +3698,9 @@ integrity sha512-wH6Tu9mbiOt0n5EvdoWy0VGQaJMHfLIxY/6wS0xLC7CV1taM6gESEzcYy0ZlWvxxiiljYvfDIvz4hHbUUDRlhw== "@types/node@*": - version "18.8.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.3.tgz#ce750ab4017effa51aed6a7230651778d54e327c" - integrity sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w== + version "18.8.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.4.tgz#54be907698f40de8a45770b48486aa3cbd3adff7" + integrity sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow== "@types/node@12.12.26": version "12.12.26" @@ -6229,11 +6229,9 @@ convert-source-map@^0.3.3: integrity sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg== convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== cookie-signature@1.0.6: version "1.0.6" @@ -7218,9 +7216,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: - version "1.4.276" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.276.tgz#17837b19dafcc43aba885c4689358b298c19b520" - integrity sha512-EpuHPqu8YhonqLBXHoU6hDJCD98FCe6KDoet3/gY1qsQ6usjJoHqBH2YIVs8FXaAtHwVL8Uqa/fsYao/vq9VWQ== + version "1.4.279" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.279.tgz#84267fec806a8b1c5a1daebf726c4e296e5bcdf9" + integrity sha512-xs7vEuSZ84+JsHSTFqqG0TE3i8EAivHomRQZhhcRvsmnjsh5C2KdhwNKf4ZRYtzq75wojpFyqb62m32Oam57wA== elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" @@ -11416,9 +11414,9 @@ jsonfile@^6.0.1: graceful-fs "^4.1.6" jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA== + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" @@ -12189,9 +12187,9 @@ minimist-options@4.1.0: kind-of "^6.0.3" minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== minipass-collect@^1.0.2: version "1.0.2" @@ -12575,9 +12573,9 @@ mz@^2.7.0: thenify-all "^1.0.0" nan@^2.12.1: - version "2.16.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" - integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== nanoid@^3.1.12, nanoid@^3.1.3: version "3.3.4" From 5e613af7d3a043487fc3cec3379dac6ff195b3a0 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 12 Oct 2022 18:47:58 +0200 Subject: [PATCH 092/126] removed unused function --- .../src/lib/option-parsers/client-config.ts | 4 +- .../cli/src/lib/test-env/client-config.ts | 60 +------------------ 2 files changed, 3 insertions(+), 61 deletions(-) diff --git a/packages/cli/src/lib/option-parsers/client-config.ts b/packages/cli/src/lib/option-parsers/client-config.ts index 8e08155869..b40156fb2f 100644 --- a/packages/cli/src/lib/option-parsers/client-config.ts +++ b/packages/cli/src/lib/option-parsers/client-config.ts @@ -1,7 +1,6 @@ import { validateClientConfig } from "../helpers"; import { intlMsg } from "../intl"; import { importTypescriptModule } from "../system"; -import { getTestEnvCustomConfig } from "../test-env"; import { Uri } from "@polywrap/core-js"; import { @@ -9,6 +8,7 @@ import { CustomClientConfig, } from "@polywrap/client-config-builder-js"; import path from "path"; +import { getTestEnvClientConfig } from "../test-env"; export async function parseClientConfigOption( clientConfig: string | undefined @@ -16,7 +16,7 @@ export async function parseClientConfigOption( const builder = new ClientConfigBuilder().addDefaults(); try { - builder.add(getTestEnvCustomConfig()); + builder.add(getTestEnvClientConfig()); } catch (e) { console.error(intlMsg.commands_run_error_noTestEnvFound()); process.exit(1); diff --git a/packages/cli/src/lib/test-env/client-config.ts b/packages/cli/src/lib/test-env/client-config.ts index 1ea7b4838b..803b6fee93 100644 --- a/packages/cli/src/lib/test-env/client-config.ts +++ b/packages/cli/src/lib/test-env/client-config.ts @@ -1,10 +1,7 @@ import { getTestEnvProviders } from "./providers"; import { PolywrapClientConfig } from "@polywrap/client-js"; -import { - defaultIpfsProviders, - CustomClientConfig, -} from "@polywrap/client-config-builder-js"; +import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { ethereumPlugin, @@ -13,65 +10,10 @@ import { } from "@polywrap/ethereum-plugin-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { ensAddresses } from "@polywrap/test-env-js"; -import { Env, IUriPackage, Uri } from "@polywrap/core-js"; export function getTestEnvClientConfig(): Partial { - const providers = getTestEnvProviders(); - const ipfsProvider = providers.ipfsProvider; - const ethProvider = providers.ethProvider; - - if (!ipfsProvider || !ethProvider) { - throw Error("Test environment not found."); - } - - const ensAddress = ensAddresses.ensAddress; - // TODO: move this into its own package, since it's being used everywhere? // maybe have it exported from test-env. - const packages: IUriPackage[] = [ - { - uri: "wrap://ens/ethereum.polywrap.eth", - package: ethereumPlugin({ - connections: new Connections({ - networks: { - testnet: new Connection({ - provider: ethProvider, - }), - }, - }), - }), - }, - { - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }, - { - uri: "wrap://ens/ens-resolver.polywrap.eth", - package: ensResolverPlugin({ - addresses: { - testnet: ensAddress, - }, - }), - }, - ]; - - const envs: Env[] = [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: ipfsProvider, - fallbackProviders: defaultIpfsProviders, - }, - }, - ]; - - return { - packages, - envs, - }; -} - -export function getTestEnvCustomConfig(): Partial> { const providers = getTestEnvProviders(); const ipfsProvider = providers.ipfsProvider; const ethProvider = providers.ethProvider; From 972170ee267cf8567d6bf686aaf4cbb9c7663411 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 12 Oct 2022 18:51:25 +0200 Subject: [PATCH 093/126] removed unused file --- packages/cli/src/lib/helpers/client.ts | 63 -------------------------- packages/cli/src/lib/helpers/index.ts | 1 - 2 files changed, 64 deletions(-) delete mode 100644 packages/cli/src/lib/helpers/client.ts diff --git a/packages/cli/src/lib/helpers/client.ts b/packages/cli/src/lib/helpers/client.ts deleted file mode 100644 index 70ce6023be..0000000000 --- a/packages/cli/src/lib/helpers/client.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { Client, Env, IUriPackage, Uri } from "@polywrap/core-js"; -import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; -import { - ethereumPlugin, - Connection, - Connections, -} from "@polywrap/ethereum-plugin-js"; -import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; -import { defaultIpfsProviders } from "@polywrap/client-config-builder-js"; -import { PolywrapClient } from "@polywrap/client-js"; - -interface SimpleClientConfig { - ensAddress?: string; - ethProvider?: string; - ipfsProvider?: string; -} - -export function getSimpleClient(config: SimpleClientConfig): Client { - const { ensAddress, ethProvider, ipfsProvider } = config; - const plugins: IUriPackage[] = []; - const envs: Env[] = []; - - if (ensAddress) { - plugins.push({ - uri: "wrap://ens/ens-resolver.polywrap.eth", - package: ensResolverPlugin({ - addresses: { - testnet: ensAddress, - }, - }), - }); - } - if (ethProvider) { - plugins.push({ - uri: "wrap://ens/ethereum.polywrap.eth", - package: ethereumPlugin({ - connections: new Connections({ - networks: { - testnet: new Connection({ - provider: ethProvider, - }), - }, - }), - }), - }); - } - if (ipfsProvider) { - plugins.push({ - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }); - - envs.push({ - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: ipfsProvider, - fallbackProviders: defaultIpfsProviders, - }, - }); - } - - return new PolywrapClient({ envs, packages: plugins }); -} diff --git a/packages/cli/src/lib/helpers/index.ts b/packages/cli/src/lib/helpers/index.ts index 9226d360ac..1c524c1700 100644 --- a/packages/cli/src/lib/helpers/index.ts +++ b/packages/cli/src/lib/helpers/index.ts @@ -1,4 +1,3 @@ -export * from "./client"; export * from "./metadata"; export * from "./uuid"; export * from "./validate-client-config"; From 6c33b32ed50f2984bb5537b5533159a3c1911067 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 12 Oct 2022 19:18:06 +0200 Subject: [PATCH 094/126] lint fix --- packages/cli/src/lib/option-parsers/client-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/lib/option-parsers/client-config.ts b/packages/cli/src/lib/option-parsers/client-config.ts index b40156fb2f..590454063d 100644 --- a/packages/cli/src/lib/option-parsers/client-config.ts +++ b/packages/cli/src/lib/option-parsers/client-config.ts @@ -1,6 +1,7 @@ import { validateClientConfig } from "../helpers"; import { intlMsg } from "../intl"; import { importTypescriptModule } from "../system"; +import { getTestEnvClientConfig } from "../test-env"; import { Uri } from "@polywrap/core-js"; import { @@ -8,7 +9,6 @@ import { CustomClientConfig, } from "@polywrap/client-config-builder-js"; import path from "path"; -import { getTestEnvClientConfig } from "../test-env"; export async function parseClientConfigOption( clientConfig: string | undefined From 5fcd91924bf91afafd2f9d7bda1916757147837d Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 12 Oct 2022 19:37:19 +0200 Subject: [PATCH 095/126] using no defaults for ipfs and ens client in tests --- .../helpers/getClientWithEnsAndIpfs.ts | 115 ++++++++++-------- packages/js/client/src/index.ts | 1 + 2 files changed, 67 insertions(+), 49 deletions(-) diff --git a/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts b/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts index bda4d8cab1..a0ce755f07 100644 --- a/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts +++ b/packages/js/client/src/__tests__/helpers/getClientWithEnsAndIpfs.ts @@ -10,6 +10,12 @@ import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; +import { + PackageToWrapperCacheResolver, + RecursiveResolver, + WrapperCache, +} from "@polywrap/uri-resolvers-js"; +import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; export const getClientWithEnsAndIpfs = () => { const connections: Connections = new Connections({ @@ -20,54 +26,65 @@ export const getClientWithEnsAndIpfs = () => { }, defaultNetwork: "testnet", }); - return new PolywrapClient({ - envs: [ - { - uri: "wrap://ens/ipfs.polywrap.eth", - env: { - provider: providers.ipfs, - }, - }, - ], - interfaces: [ - { - interface: coreInterfaceUris.uriResolver, - implementations: [ - "wrap://ens/ipfs-resolver.polywrap.eth", - "wrap://ens/ens-resolver.polywrap.eth", - "wrap://ens/fs-resolver.polywrap.eth", - ], - }, - ], - packages: [ - { - uri: "wrap://ens/ethereum.polywrap.eth", - package: ethereumPlugin({ connections }), - }, - { - uri: "wrap://ens/ens-resolver.polywrap.eth", - package: ensResolverPlugin({ - addresses: { - testnet: ensAddresses.ensAddress, + return new PolywrapClient( + { + envs: [ + { + uri: "wrap://ens/ipfs.polywrap.eth", + env: { + provider: providers.ipfs, }, - }), - }, - { - uri: "wrap://ens/ipfs.polywrap.eth", - package: ipfsPlugin({}), - }, - { - uri: "wrap://ens/ipfs-resolver.polywrap.eth", - package: ipfsResolverPlugin({}), - }, - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - package: fileSystemResolverPlugin({}), - }, - ], - }); + }, + ], + interfaces: [ + { + interface: coreInterfaceUris.uriResolver, + implementations: [ + "wrap://ens/ipfs-resolver.polywrap.eth", + "wrap://ens/ens-resolver.polywrap.eth", + "wrap://ens/fs-resolver.polywrap.eth", + ], + }, + ], + resolver: RecursiveResolver.from( + PackageToWrapperCacheResolver.from( + [ + { + uri: "wrap://ens/ethereum.polywrap.eth", + package: ethereumPlugin({ connections }), + }, + { + uri: "wrap://ens/ens-resolver.polywrap.eth", + package: ensResolverPlugin({ + addresses: { + testnet: ensAddresses.ensAddress, + }, + }), + }, + { + uri: "wrap://ens/ipfs.polywrap.eth", + package: ipfsPlugin({}), + }, + { + uri: "wrap://ens/ipfs-resolver.polywrap.eth", + package: ipfsResolverPlugin({}), + }, + { + uri: "wrap://ens/fs.polywrap.eth", + package: fileSystemPlugin({}), + }, + { + uri: "wrap://ens/fs-resolver.polywrap.eth", + package: fileSystemResolverPlugin({}), + }, + new ExtendableUriResolver(), + ], + new WrapperCache() + ) + ), + }, + { + noDefaults: true, + } + ); }; diff --git a/packages/js/client/src/index.ts b/packages/js/client/src/index.ts index 0c801b801a..311961219f 100644 --- a/packages/js/client/src/index.ts +++ b/packages/js/client/src/index.ts @@ -1,4 +1,5 @@ export * from "./PolywrapClient"; export * from "@polywrap/core-js"; export * from "@polywrap/uri-resolvers-js"; +export * from "@polywrap/uri-resolver-extensions-js"; export * from "@polywrap/client-config-builder-js"; From 7313229de8607efb5b6f88b30329939e8333eda4 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 12 Oct 2022 23:26:33 +0200 Subject: [PATCH 096/126] turned dev dependency into dependency --- packages/js/client/package.json | 6 +-- .../assemblyscript/001-sanity/yarn.lock | 51 +++++++++++++------ yarn.lock | 17 ++++--- 3 files changed, 49 insertions(+), 25 deletions(-) diff --git a/packages/js/client/package.json b/packages/js/client/package.json index f4c7fe4232..6f072b3235 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -20,13 +20,14 @@ "test:watch": "jest --watch --passWithNoTests --verbose --detectOpenHandles" }, "dependencies": { + "@polywrap/wrap-manifest-types-js": "0.9.0", "@polywrap/core-js": "0.9.0", "@polywrap/msgpack-js": "0.9.0", "@polywrap/result": "0.9.0", "@polywrap/tracing-js": "0.9.0", + "@polywrap/client-config-builder-js": "0.9.0", "@polywrap/uri-resolvers-js": "0.9.0", - "@polywrap/wrap-manifest-types-js": "0.9.0", - "@polywrap/client-config-builder-js": "0.9.0" + "@polywrap/uri-resolver-extensions-js": "0.9.0" }, "devDependencies": { "@polywrap/os-js": "0.9.0", @@ -41,7 +42,6 @@ "@polywrap/ipfs-resolver-plugin-js": "0.9.0", "@polywrap/logger-plugin-js": "0.9.0", "@polywrap/fs-plugin-js": "0.9.0", - "@polywrap/uri-resolver-extensions-js": "0.9.0", "@polywrap/fs-resolver-plugin-js": "0.9.0", "@polywrap/plugin-js": "0.9.0", "@types/jest": "26.0.8", diff --git a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock index 3e4d9b626d..2a2c37bb34 100644 --- a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock +++ b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock @@ -32,20 +32,39 @@ as-container@0.6.1: resolved "https://registry.yarnpkg.com/as-container/-/as-container-0.6.1.tgz#94806a91e96b68622c55f301fc04e6339a1228c2" integrity sha512-cgQ7P/dQAGeU2lLhPpinThYfFcUw3HzV8b00CoqV+l5Tsgpl7xhXdoc/2srCyK0um1BVAQwlrEpNTtthzkMF+g== -assemblyscript@0.19.5: - version "0.19.5" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.5.tgz#12f5976c41f6b866dd0d1aad5275dcd358a5d82f" - integrity sha512-mAx7gcwjJI5OSu2RcOlugHFNxKt/rtWn3vyp46cN1+uXb7YSS//rgO044+KKwfxnGvoWj0ClsU0dNt5eWoXF7A== +assemblyscript@0.19.23: + version "0.19.23" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.23.tgz#16ece69f7f302161e2e736a0f6a474e6db72134c" + integrity sha512-fwOQNZVTMga5KRsfY80g7cpOl4PsFQczMwHzdtgoqLXaYhkhavufKb0sB0l3T1DUxpAufA0KNhlbpuuhZUwxMA== dependencies: - binaryen "101.0.0-nightly.20210604" - long "^4.0.0" - -binaryen@101.0.0-nightly.20210604: - version "101.0.0-nightly.20210604" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210604.tgz#3498a0a0c1108f3386b15ca79f1608425057db9e" - integrity sha512-aTgX1JDN8m3tTFK8g9hazJcEOdQl7mK4yVfElkKAh7q+TRUCaea4a2SMLr1z2xZL7s9N4lkrvrBblxRuEPvxWQ== - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + binaryen "102.0.0-nightly.20211028" + long "^5.2.0" + source-map-support "^0.5.20" + +binaryen@102.0.0-nightly.20211028: + version "102.0.0-nightly.20211028" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz#8f1efb0920afd34509e342e37f84313ec936afb2" + integrity sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +long@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.0.tgz#2696dadf4b4da2ce3f6f6b89186085d94d52fd61" + integrity sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w== + +source-map-support@^0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== diff --git a/yarn.lock b/yarn.lock index 36aecaaecd..ebe59e403f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3658,9 +3658,9 @@ integrity sha512-wH6Tu9mbiOt0n5EvdoWy0VGQaJMHfLIxY/6wS0xLC7CV1taM6gESEzcYy0ZlWvxxiiljYvfDIvz4hHbUUDRlhw== "@types/node@*": - version "18.8.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.4.tgz#54be907698f40de8a45770b48486aa3cbd3adff7" - integrity sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow== + version "18.8.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.5.tgz#6a31f820c1077c3f8ce44f9e203e68a176e8f59e" + integrity sha512-Bq7G3AErwe5A/Zki5fdD3O6+0zDChhg671NfPjtIcbtzDNZTv4NPKMRFr7gtYPG7y+B8uTiNK4Ngd9T0FTar6Q== "@types/node@12.12.26": version "12.12.26" @@ -5263,9 +5263,9 @@ buffer-crc32@~0.2.3: integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== buffer-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90" + integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== buffer-from@1.x, buffer-from@^1.0.0: version "1.1.2" @@ -16987,6 +16987,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +typescript@4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.7.tgz#7168032c43d2a2671c95c07812f69523c79590af" + integrity sha512-yi7M4y74SWvYbnazbn8/bmJmX4Zlej39ZOqwG/8dut/MYoSQ119GY9ZFbbGsD4PFZYWxqik/XsP3vk3+W5H3og== + typescript@4.1.6: version "4.1.6" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.6.tgz#1becd85d77567c3c741172339e93ce2e69932138" From c133218c75e0c837fcfaf5f379247e9004b6d528 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Wed, 12 Oct 2022 23:48:49 +0200 Subject: [PATCH 097/126] moved configs to their own files --- packages/js/client/src/PolywrapClient.ts | 25 ++----- .../js/client/src/PolywrapClientConfig.ts | 10 +++ .../js/client/src/PolywrapCoreClientConfig.ts | 8 +++ packages/js/client/src/index.ts | 2 + .../assemblyscript/001-sanity/yarn.lock | 70 ------------------- yarn.lock | 6 +- 6 files changed, 27 insertions(+), 94 deletions(-) create mode 100644 packages/js/client/src/PolywrapClientConfig.ts create mode 100644 packages/js/client/src/PolywrapCoreClientConfig.ts delete mode 100644 packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index 7bf207bf4f..2fe24945de 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -1,9 +1,10 @@ import { UriResolverError } from "./UriResolverError"; +import { PolywrapCoreClientConfig } from "./PolywrapCoreClientConfig"; +import { PolywrapClientConfig } from "./PolywrapClientConfig"; import { Wrapper, Client, - ClientConfig, Env, GetFileOptions, GetImplementationsOptions, @@ -27,10 +28,7 @@ import { QueryResult, InvokeResult, } from "@polywrap/core-js"; -import { - buildCleanUriHistory, - IWrapperCache, -} from "@polywrap/uri-resolvers-js"; +import { buildCleanUriHistory } from "@polywrap/uri-resolvers-js"; import { msgpackEncode, msgpackDecode } from "@polywrap/msgpack-js"; import { DeserializeManifestOptions, @@ -38,22 +36,7 @@ import { } from "@polywrap/wrap-manifest-types-js"; import { Tracer, TracerConfig, TracingLevel } from "@polywrap/tracing-js"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; -import { - ClientConfigBuilder, - CustomClientConfig, -} from "@polywrap/client-config-builder-js"; - -export interface PolywrapClientConfig - extends CustomClientConfig { - readonly wrapperCache?: IWrapperCache; - readonly tracerConfig: Readonly>; -} - -export interface PolywrapCoreClientConfig< - TUri extends Uri | string = Uri | string -> extends ClientConfig { - readonly tracerConfig: Readonly>; -} +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; export class PolywrapClient implements Client { private _config: PolywrapCoreClientConfig; diff --git a/packages/js/client/src/PolywrapClientConfig.ts b/packages/js/client/src/PolywrapClientConfig.ts new file mode 100644 index 0000000000..b9f3075933 --- /dev/null +++ b/packages/js/client/src/PolywrapClientConfig.ts @@ -0,0 +1,10 @@ +import { Uri } from "@polywrap/core-js"; +import { IWrapperCache } from "@polywrap/uri-resolvers-js"; +import { TracerConfig } from "@polywrap/tracing-js"; +import { CustomClientConfig } from "@polywrap/client-config-builder-js"; + +export interface PolywrapClientConfig + extends CustomClientConfig { + readonly wrapperCache?: IWrapperCache; + readonly tracerConfig: Readonly>; +} diff --git a/packages/js/client/src/PolywrapCoreClientConfig.ts b/packages/js/client/src/PolywrapCoreClientConfig.ts new file mode 100644 index 0000000000..a7c0c2cfc9 --- /dev/null +++ b/packages/js/client/src/PolywrapCoreClientConfig.ts @@ -0,0 +1,8 @@ +import { ClientConfig, Uri } from "@polywrap/core-js"; +import { TracerConfig } from "@polywrap/tracing-js"; + +export interface PolywrapCoreClientConfig< + TUri extends Uri | string = Uri | string +> extends ClientConfig { + readonly tracerConfig: Readonly>; +} diff --git a/packages/js/client/src/index.ts b/packages/js/client/src/index.ts index 311961219f..1c56a02e6e 100644 --- a/packages/js/client/src/index.ts +++ b/packages/js/client/src/index.ts @@ -1,4 +1,6 @@ export * from "./PolywrapClient"; +export * from "./PolywrapClientConfig"; +export * from "./PolywrapCoreClientConfig"; export * from "@polywrap/core-js"; export * from "@polywrap/uri-resolvers-js"; export * from "@polywrap/uri-resolver-extensions-js"; diff --git a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock deleted file mode 100644 index 2a2c37bb34..0000000000 --- a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/001-sanity/yarn.lock +++ /dev/null @@ -1,70 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@polywrap/wasm-as@../../../../../../../wasm/as": - version "0.9.0" - dependencies: - "@web3api/assemblyscript-json" "1.2.0" - as-bigint "0.5.3" - as-bignumber "0.2.1" - as-container "0.6.1" - -"@web3api/assemblyscript-json@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@web3api/assemblyscript-json/-/assemblyscript-json-1.2.0.tgz#f01f11f12a66cd1a319d43f12e476307d1ad3da8" - integrity sha512-x+wchJpH1giJzXj3dYs8vh2SKMXepeqVXiaFV/YCtXg4X/KaUnxi0kp5JugbEAyEJurEScH1YuV6IvGhGui/fw== - -as-bigint@0.5.3, as-bigint@^0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/as-bigint/-/as-bigint-0.5.3.tgz#a0647d0b7ce835077aca33115e71eb26a83df8be" - integrity sha512-tg9iTO/vPeovOM5CSk1WxYcsfBd/cd3twhBW5PrpcGUfiSEXlPB69eOxFKvSbZnpuDxBAyQ4YBgEkfnYL89Czw== - -as-bignumber@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/as-bignumber/-/as-bignumber-0.2.1.tgz#6479caca7f24f784b10b3d2633cde457ef9cbc22" - integrity sha512-udKOlFYKSZyuHK7upTczRR8lcXkyPS0DR6NOtP+c3bhM4B2B0VqMBTzqa0hdYG4Zss94zA6UmqpjreEbzNUo4g== - dependencies: - as-bigint "^0.5.1" - -as-container@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/as-container/-/as-container-0.6.1.tgz#94806a91e96b68622c55f301fc04e6339a1228c2" - integrity sha512-cgQ7P/dQAGeU2lLhPpinThYfFcUw3HzV8b00CoqV+l5Tsgpl7xhXdoc/2srCyK0um1BVAQwlrEpNTtthzkMF+g== - -assemblyscript@0.19.23: - version "0.19.23" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.23.tgz#16ece69f7f302161e2e736a0f6a474e6db72134c" - integrity sha512-fwOQNZVTMga5KRsfY80g7cpOl4PsFQczMwHzdtgoqLXaYhkhavufKb0sB0l3T1DUxpAufA0KNhlbpuuhZUwxMA== - dependencies: - binaryen "102.0.0-nightly.20211028" - long "^5.2.0" - source-map-support "^0.5.20" - -binaryen@102.0.0-nightly.20211028: - version "102.0.0-nightly.20211028" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz#8f1efb0920afd34509e342e37f84313ec936afb2" - integrity sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -long@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.0.tgz#2696dadf4b4da2ce3f6f6b89186085d94d52fd61" - integrity sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w== - -source-map-support@^0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== diff --git a/yarn.lock b/yarn.lock index ebe59e403f..58e186ee6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6683,9 +6683,9 @@ decamelize@^1.1.0, decamelize@^1.2.0: integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decimal.js@^10.2.1: - version "10.4.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.1.tgz#be75eeac4a2281aace80c1a8753587c27ef053e7" - integrity sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw== + version "10.4.2" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.2.tgz#0341651d1d997d86065a2ce3a441fbd0d8e8b98e" + integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA== decode-uri-component@^0.2.0: version "0.2.0" From 5dfd6567c00485e6154d9d99246c86099bdde25d Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Thu, 13 Oct 2022 17:08:49 +0200 Subject: [PATCH 098/126] updated package versions --- .../infra-modules/http/server/package.json | 2 +- packages/js/client/package.json | 23 +++++++++---------- packages/js/plugin/package.json | 14 +++++------ packages/js/plugins/http/package.json | 4 ++-- packages/js/plugins/ipfs/package.json | 2 +- packages/js/plugins/logger/package.json | 2 +- .../uri-resolvers/ens-resolver/package.json | 10 ++++---- .../uri-resolvers/ipfs-resolver/package.json | 2 +- .../cli/run/run-test-wrapper/package.json | 2 +- 9 files changed, 30 insertions(+), 31 deletions(-) diff --git a/packages/cli/src/lib/defaults/infra-modules/http/server/package.json b/packages/cli/src/lib/defaults/infra-modules/http/server/package.json index ff8221f76d..974d4970a5 100644 --- a/packages/cli/src/lib/defaults/infra-modules/http/server/package.json +++ b/packages/cli/src/lib/defaults/infra-modules/http/server/package.json @@ -12,7 +12,7 @@ }, "license": "MIT", "dependencies": { - "@polywrap/msgpack-js": "0.9.0", + "@polywrap/msgpack-js": "0.9.1", "@types/multer": "1.4.7", "dotenv": "8.6.0", "express": "4.18.1", diff --git a/packages/js/client/package.json b/packages/js/client/package.json index cd2b83cc01..7adc8d1e3b 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -26,24 +26,23 @@ "@polywrap/result": "0.9.1", "@polywrap/tracing-js": "0.9.1", "@polywrap/client-config-builder-js": "0.9.1", - "@polywrap/wrap-manifest-types-js": "0.9.1", "@polywrap/uri-resolver-extensions-js": "0.9.1" }, "devDependencies": { "@polywrap/os-js": "0.9.1", "@polywrap/test-cases": "0.9.1", "@polywrap/test-env-js": "0.9.1", - "@polywrap/client-config-builder-js": "0.9.0", - "@polywrap/ens-resolver-plugin-js": "0.9.0", - "@polywrap/ethereum-plugin-js": "0.9.0", - "@polywrap/http-plugin-js": "0.9.0", - "@polywrap/http-resolver-plugin-js": "0.9.0", - "@polywrap/ipfs-plugin-js": "0.9.0", - "@polywrap/ipfs-resolver-plugin-js": "0.9.0", - "@polywrap/logger-plugin-js": "0.9.0", - "@polywrap/fs-plugin-js": "0.9.0", - "@polywrap/fs-resolver-plugin-js": "0.9.0", - "@polywrap/plugin-js": "0.9.0", + "@polywrap/client-config-builder-js": "0.9.1", + "@polywrap/ens-resolver-plugin-js": "0.9.1", + "@polywrap/ethereum-plugin-js": "0.9.1", + "@polywrap/http-plugin-js": "0.9.1", + "@polywrap/http-resolver-plugin-js": "0.9.1", + "@polywrap/ipfs-plugin-js": "0.9.1", + "@polywrap/ipfs-resolver-plugin-js": "0.9.1", + "@polywrap/logger-plugin-js": "0.9.1", + "@polywrap/fs-plugin-js": "0.9.1", + "@polywrap/fs-resolver-plugin-js": "0.9.1", + "@polywrap/plugin-js": "0.9.1", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "@types/uuid": "8.3.0", diff --git a/packages/js/plugin/package.json b/packages/js/plugin/package.json index f082b0be26..d4e52bc2d1 100644 --- a/packages/js/plugin/package.json +++ b/packages/js/plugin/package.json @@ -1,7 +1,7 @@ { "name": "@polywrap/plugin-js", "description": "Polywrap plugin core package for plugin wrappers", - "version": "0.9.0", + "version": "0.9.1", "license": "MIT", "repository": { "type": "git", @@ -19,14 +19,14 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/result": "0.9.0", - "@polywrap/core-js": "0.9.0", - "@polywrap/msgpack-js": "0.9.0", - "@polywrap/tracing-js": "0.9.0", - "@polywrap/wrap-manifest-types-js": "0.9.0" + "@polywrap/result": "0.9.1", + "@polywrap/core-js": "0.9.1", + "@polywrap/msgpack-js": "0.9.1", + "@polywrap/tracing-js": "0.9.1", + "@polywrap/wrap-manifest-types-js": "0.9.1" }, "devDependencies": { - "@polywrap/os-js": "0.9.0", + "@polywrap/os-js": "0.9.1", "@types/jest": "26.0.8", "jest": "26.6.3", "rimraf": "3.0.2", diff --git a/packages/js/plugins/http/package.json b/packages/js/plugins/http/package.json index f90846c42f..7ce0792d6b 100644 --- a/packages/js/plugins/http/package.json +++ b/packages/js/plugins/http/package.json @@ -21,7 +21,7 @@ }, "dependencies": { "@polywrap/core-js": "0.9.1", - "@polywrap/plugin-js": "0.9.0", + "@polywrap/plugin-js": "0.9.1", "axios": "0.21.4" }, "devDependencies": { @@ -29,7 +29,7 @@ "@polywrap/uri-resolvers-js": "0.9.1", "@polywrap/fs-resolver-plugin-js": "0.9.1", "@polywrap/fs-plugin-js": "0.9.1", - "@polywrap/uri-resolver-extensions-js": "0.9.0", + "@polywrap/uri-resolver-extensions-js": "0.9.1", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/ipfs/package.json b/packages/js/plugins/ipfs/package.json index 8f9d8ee691..27b4dba794 100644 --- a/packages/js/plugins/ipfs/package.json +++ b/packages/js/plugins/ipfs/package.json @@ -22,7 +22,7 @@ "dependencies": { "@polywrap/core-js": "0.9.1", "@polywrap/ipfs-http-client-lite": "0.3.0", - "@polywrap/plugin-js": "0.9.0", + "@polywrap/plugin-js": "0.9.1", "abort-controller": "3.0.0", "is-ipfs": "1.0.3", "multiformats": "9.7.0" diff --git a/packages/js/plugins/logger/package.json b/packages/js/plugins/logger/package.json index 02565a5b76..73e37c2911 100644 --- a/packages/js/plugins/logger/package.json +++ b/packages/js/plugins/logger/package.json @@ -20,7 +20,7 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/core-js": "0.9.1" + "@polywrap/core-js": "0.9.1", "@polywrap/plugin-js": "0.9.1" }, "devDependencies": { diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/package.json b/packages/js/plugins/uri-resolvers/ens-resolver/package.json index 4bac35df3b..987ac2c433 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ens-resolver/package.json @@ -23,14 +23,14 @@ "@ethersproject/address": "5.0.7", "@ethersproject/basex": "5.0.7", "@polywrap/core-js": "0.9.1", - "@polywrap/plugin-js": "0.9.0", + "@polywrap/plugin-js": "0.9.1", "ethers": "5.0.7" }, "devDependencies": { - "@polywrap/client-js": "0.9.0", - "@polywrap/ethereum-plugin-js": "0.9.0", - "@polywrap/ipfs-plugin-js": "0.9.0", - "@polywrap/ipfs-resolver-plugin-js": "0.9.0", + "@polywrap/client-js": "0.9.1", + "@polywrap/ethereum-plugin-js": "0.9.1", + "@polywrap/ipfs-plugin-js": "0.9.1", + "@polywrap/ipfs-resolver-plugin-js": "0.9.1", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json index 8e29801fe9..aa2aea638e 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json @@ -22,7 +22,7 @@ "dependencies": { "@polywrap/core-js": "0.9.1", "@polywrap/ipfs-http-client-lite": "0.3.0", - "@polywrap/plugin-js": "0.9.0", + "@polywrap/plugin-js": "0.9.1", "abort-controller": "3.0.0", "is-ipfs": "1.0.3" }, diff --git a/packages/test-cases/cases/cli/run/run-test-wrapper/package.json b/packages/test-cases/cases/cli/run/run-test-wrapper/package.json index 7c0a9beb32..68e856cffe 100644 --- a/packages/test-cases/cases/cli/run/run-test-wrapper/package.json +++ b/packages/test-cases/cases/cli/run/run-test-wrapper/package.json @@ -7,7 +7,7 @@ "build": "polywrap build" }, "dependencies": { - "@polywrap/wasm-as": "0.9.0" + "@polywrap/wasm-as": "0.9.1" }, "devDependencies": { "assemblyscript": "0.19.23" From a4a7b969a9156600070b24ce30fe77a00cef24bc Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Thu, 13 Oct 2022 17:31:16 +0200 Subject: [PATCH 099/126] added missing dependency --- packages/js/client/package.json | 1 + yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/js/client/package.json b/packages/js/client/package.json index 7adc8d1e3b..5c810795fa 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -26,6 +26,7 @@ "@polywrap/result": "0.9.1", "@polywrap/tracing-js": "0.9.1", "@polywrap/client-config-builder-js": "0.9.1", + "@polywrap/uri-resolvers-js": "0.9.1", "@polywrap/uri-resolver-extensions-js": "0.9.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 58e186ee6a..7685f3b210 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5506,9 +5506,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: - version "1.0.30001418" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz#5f459215192a024c99e3e3a53aac310fc7cf24e6" - integrity sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg== + version "1.0.30001419" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz#3542722d57d567c8210d5e4d0f9f17336b776457" + integrity sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw== capture-exit@^2.0.0: version "2.0.0" @@ -7136,9 +7136,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: - version "1.4.279" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.279.tgz#84267fec806a8b1c5a1daebf726c4e296e5bcdf9" - integrity sha512-xs7vEuSZ84+JsHSTFqqG0TE3i8EAivHomRQZhhcRvsmnjsh5C2KdhwNKf4ZRYtzq75wojpFyqb62m32Oam57wA== + version "1.4.281" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.281.tgz#8e3c7b6ae65d91aa3e8aa84faa6353e3dc758971" + integrity sha512-yer0w5wCYdFoZytfmbNhwiGI/3cW06+RV7E23ln4490DVMxs7PvYpbsrSmAiBn/V6gode8wvJlST2YfWgvzWIg== elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" From ba36b6e9b4bfd3960bd51865b844557b2839a0df Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Thu, 13 Oct 2022 18:12:57 +0200 Subject: [PATCH 100/126] added plugin-js to plugin template project --- packages/templates/plugin/typescript/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/templates/plugin/typescript/package.json b/packages/templates/plugin/typescript/package.json index de62b85d84..a0db03c5ba 100644 --- a/packages/templates/plugin/typescript/package.json +++ b/packages/templates/plugin/typescript/package.json @@ -12,7 +12,8 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/core-js": "0.9.1" + "@polywrap/core-js": "0.9.1", + "@polywrap/plugin-js": "0.9.1" }, "devDependencies": { "@polywrap/client-js": "0.9.1", From beb156b7def6efcbc24b9023429629c0c796ab3f Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Fri, 14 Oct 2022 11:09:23 +0200 Subject: [PATCH 101/126] chore: update packages to 0.9.2 --- .../infra-modules/http/server/package.json | 2 +- packages/js/plugin/package.json | 14 +++++++------- .../uri-resolvers/ipfs-resolver/package.json | 2 +- .../cases/cli/run/run-test-wrapper/package.json | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/cli/src/lib/defaults/infra-modules/http/server/package.json b/packages/cli/src/lib/defaults/infra-modules/http/server/package.json index 974d4970a5..1ca8d48bf2 100644 --- a/packages/cli/src/lib/defaults/infra-modules/http/server/package.json +++ b/packages/cli/src/lib/defaults/infra-modules/http/server/package.json @@ -12,7 +12,7 @@ }, "license": "MIT", "dependencies": { - "@polywrap/msgpack-js": "0.9.1", + "@polywrap/msgpack-js": "0.9.2", "@types/multer": "1.4.7", "dotenv": "8.6.0", "express": "4.18.1", diff --git a/packages/js/plugin/package.json b/packages/js/plugin/package.json index d4e52bc2d1..d9a65cdc93 100644 --- a/packages/js/plugin/package.json +++ b/packages/js/plugin/package.json @@ -1,7 +1,7 @@ { "name": "@polywrap/plugin-js", "description": "Polywrap plugin core package for plugin wrappers", - "version": "0.9.1", + "version": "0.9.2", "license": "MIT", "repository": { "type": "git", @@ -19,14 +19,14 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/result": "0.9.1", - "@polywrap/core-js": "0.9.1", - "@polywrap/msgpack-js": "0.9.1", - "@polywrap/tracing-js": "0.9.1", - "@polywrap/wrap-manifest-types-js": "0.9.1" + "@polywrap/result": "0.9.2", + "@polywrap/core-js": "0.9.2", + "@polywrap/msgpack-js": "0.9.2", + "@polywrap/tracing-js": "0.9.2", + "@polywrap/wrap-manifest-types-js": "0.9.2" }, "devDependencies": { - "@polywrap/os-js": "0.9.1", + "@polywrap/os-js": "0.9.2", "@types/jest": "26.0.8", "jest": "26.6.3", "rimraf": "3.0.2", diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json index 0f07cd0d38..d36358866a 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json @@ -22,7 +22,7 @@ "dependencies": { "@polywrap/core-js": "0.9.2", "@polywrap/ipfs-http-client-lite": "0.3.0", - "@polywrap/plugin-js": "0.9.1", + "@polywrap/plugin-js": "0.9.2", "abort-controller": "3.0.0", "is-ipfs": "1.0.3" }, diff --git a/packages/test-cases/cases/cli/run/run-test-wrapper/package.json b/packages/test-cases/cases/cli/run/run-test-wrapper/package.json index 68e856cffe..c63cb0c72c 100644 --- a/packages/test-cases/cases/cli/run/run-test-wrapper/package.json +++ b/packages/test-cases/cases/cli/run/run-test-wrapper/package.json @@ -7,7 +7,7 @@ "build": "polywrap build" }, "dependencies": { - "@polywrap/wasm-as": "0.9.1" + "@polywrap/wasm-as": "0.9.2" }, "devDependencies": { "assemblyscript": "0.19.23" From 55cffe69e26e223f3914ac20b36887d468d3321a Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Fri, 14 Oct 2022 11:13:30 +0200 Subject: [PATCH 102/126] chore: remove typescript 4.0.7 --- packages/js/plugin/package.json | 2 +- yarn.lock | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/js/plugin/package.json b/packages/js/plugin/package.json index d9a65cdc93..a0787b5fb3 100644 --- a/packages/js/plugin/package.json +++ b/packages/js/plugin/package.json @@ -32,7 +32,7 @@ "rimraf": "3.0.2", "ts-jest": "26.5.4", "ts-node": "8.10.2", - "typescript": "4.0.7" + "typescript": "4.1.6" }, "publishConfig": { "access": "public" diff --git a/yarn.lock b/yarn.lock index 7685f3b210..b1621ce510 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16987,11 +16987,6 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.7.tgz#7168032c43d2a2671c95c07812f69523c79590af" - integrity sha512-yi7M4y74SWvYbnazbn8/bmJmX4Zlej39ZOqwG/8dut/MYoSQ119GY9ZFbbGsD4PFZYWxqik/XsP3vk3+W5H3og== - typescript@4.1.6: version "4.1.6" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.6.tgz#1becd85d77567c3c741172339e93ce2e69932138" From f71f86ca92c06ac5bcc7e658b0501321b388405d Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Fri, 14 Oct 2022 13:36:20 +0200 Subject: [PATCH 103/126] chore: improve WrapManifest typings in test config.ts --- .../codegen/005-custom-config/config.ts | 24 ++++++++----------- .../010-custom-config/config.ts | 10 +++----- .../wasm/codegen/005-custom-config/config.ts | 3 +-- 3 files changed, 14 insertions(+), 23 deletions(-) diff --git a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts index 5851c3c026..337d73bebe 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts @@ -1,9 +1,7 @@ import { CustomClientConfig } from "@polywrap/client-config-builder-js"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; -import { - latestWrapManifestVersion, - WrapManifest, -} from "@polywrap/wrap-manifest-types-js"; +import { latestWrapManifestVersion } from "@polywrap/wrap-manifest-types-js"; +import { parseSchema } from "@polywrap/schema-parse"; interface Config extends Record { val: number; @@ -29,16 +27,14 @@ const mockPlugin = () => { name: "mock", type: "plugin", version: latestWrapManifestVersion, - schema: ` - type Module { - getData: Int! - setData(value: Int!): Boolean! - deployContract: String! - } - `, - abi: [], - implements: [], - } as WrapManifest); + abi: parseSchema(` + type Module { + getData: Int! + setData(value: Int!): Boolean! + deployContract: String! + } + `) + }); }; export function getCustomConfig(): Partial> { diff --git a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/010-custom-config/config.ts b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/010-custom-config/config.ts index efbd02e953..3b230d7cef 100644 --- a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/010-custom-config/config.ts +++ b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/010-custom-config/config.ts @@ -1,9 +1,6 @@ import { CustomClientConfig } from "@polywrap/client-config-builder-js"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; -import { - latestWrapManifestVersion, - WrapManifest, -} from "@polywrap/wrap-manifest-types-js"; +import { latestWrapManifestVersion } from "@polywrap/wrap-manifest-types-js"; interface Config extends Record { val: number; @@ -117,9 +114,8 @@ const mockPlugin = () => { imports: [], interfaces: [], }, - }, - implements: [], - } as WrapManifest + } + } ); }; diff --git a/packages/test-cases/cases/cli/wasm/codegen/005-custom-config/config.ts b/packages/test-cases/cases/cli/wasm/codegen/005-custom-config/config.ts index 10c787b72c..9178697334 100644 --- a/packages/test-cases/cases/cli/wasm/codegen/005-custom-config/config.ts +++ b/packages/test-cases/cases/cli/wasm/codegen/005-custom-config/config.ts @@ -3,7 +3,6 @@ import { IWrapPackage } from "@polywrap/core-js"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { latestWrapManifestVersion, - WrapManifest, WrapAbi, } from "@polywrap/wrap-manifest-types-js"; @@ -32,7 +31,7 @@ const mockPlugin = (): IWrapPackage => { type: "plugin", version: latestWrapManifestVersion, abi, - } as WrapManifest); + }); }; export function getCustomConfig(): Partial> { From 3a589f875af7e88520fef3494ffa4987fed04c21 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Fri, 14 Oct 2022 14:50:41 +0200 Subject: [PATCH 104/126] fix: remove duplicate dependency in @polywrap/http-resolver-plugin-js --- packages/js/plugins/uri-resolvers/http-resolver/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/js/plugins/uri-resolvers/http-resolver/package.json b/packages/js/plugins/uri-resolvers/http-resolver/package.json index 7c4f7518cc..e368556fc7 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/http-resolver/package.json @@ -26,7 +26,6 @@ "abort-controller": "3.0.0" }, "devDependencies": { - "@polywrap/plugin-js": "0.9.2", "@polywrap/http-plugin-js": "0.9.2", "@polywrap/polywrap-manifest-types-js": "0.9.2", "@polywrap/test-env-js": "0.9.2", From dd9283f027157819088d35392a2b4e9744e63af0 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Fri, 14 Oct 2022 15:01:04 +0200 Subject: [PATCH 105/126] chore: revert ipfs plugin regression --- packages/js/plugins/ipfs/src/index.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/js/plugins/ipfs/src/index.ts b/packages/js/plugins/ipfs/src/index.ts index d47120d9bc..ae38158024 100644 --- a/packages/js/plugins/ipfs/src/index.ts +++ b/packages/js/plugins/ipfs/src/index.ts @@ -109,13 +109,14 @@ export class IpfsPlugin extends Module { ): Promise { const defaultIpfsClient = createIpfsClient(this.env.provider); - if (!options) { - // Default behavior if no options are provided + if (!options?.fallbackProviders) { + // Default behavior if no fallback providers are provided + // Note that options.timeout is already set by getOptions return await execSimple( operation, defaultIpfsClient, this.config.provider, - 0, + options?.timeout ?? 0, func ); } From bb820b3a14c35f18d4631d5b2588c982058ea984 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 14 Oct 2022 21:32:07 +0200 Subject: [PATCH 106/126] fixed explicit cast of PolywrapClientConfig --- packages/js/client/src/PolywrapClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index 2fe24945de..883e4869e1 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -63,7 +63,7 @@ export class PolywrapClient implements Client { this._config = !options?.noDefaults ? this.buildConfigFromPolywrapClientConfig( - config as PolywrapClientConfig + config as PolywrapClientConfig | undefined ) : this.buildConfigFromPolywrapCoreClientConfig( config as PolywrapCoreClientConfig From 583cdc4cc4140688ef159df18102ed76eb1bf36f Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 14 Oct 2022 22:59:04 +0200 Subject: [PATCH 107/126] using full PolywrapCoreClientCon --- packages/js/client/src/PolywrapClient.ts | 7 ++----- yarn.lock | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index 883e4869e1..a85d2ef183 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -45,15 +45,12 @@ export class PolywrapClient implements Client { config?: Partial, options?: { noDefaults?: false } ); - constructor( - config: Partial, - options: { noDefaults: true } - ); + constructor(config: PolywrapCoreClientConfig, options: { noDefaults: true }); constructor( config: | Partial | undefined - | Partial, + | PolywrapCoreClientConfig, options?: { noDefaults?: boolean } ) { try { diff --git a/yarn.lock b/yarn.lock index b1621ce510..beb19a30e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2299,9 +2299,9 @@ integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@^0.3.9": - version "0.3.16" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.16.tgz#a7982f16c18cae02be36274365433e5b49d7b23f" - integrity sha512-LCQ+NeThyJ4k1W2d+vIKdxuSt9R3pQSZ4P92m7EakaYuXcVWbHuT5bjNcqLd4Rdgi6xYWYDvBJZJLZSLanjDcA== + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" @@ -3658,9 +3658,9 @@ integrity sha512-wH6Tu9mbiOt0n5EvdoWy0VGQaJMHfLIxY/6wS0xLC7CV1taM6gESEzcYy0ZlWvxxiiljYvfDIvz4hHbUUDRlhw== "@types/node@*": - version "18.8.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.5.tgz#6a31f820c1077c3f8ce44f9e203e68a176e8f59e" - integrity sha512-Bq7G3AErwe5A/Zki5fdD3O6+0zDChhg671NfPjtIcbtzDNZTv4NPKMRFr7gtYPG7y+B8uTiNK4Ngd9T0FTar6Q== + version "18.11.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.0.tgz#f38c7139247a1d619f6cc6f27b072606af7c289d" + integrity sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w== "@types/node@12.12.26": version "12.12.26" @@ -7136,9 +7136,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: - version "1.4.281" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.281.tgz#8e3c7b6ae65d91aa3e8aa84faa6353e3dc758971" - integrity sha512-yer0w5wCYdFoZytfmbNhwiGI/3cW06+RV7E23ln4490DVMxs7PvYpbsrSmAiBn/V6gode8wvJlST2YfWgvzWIg== + version "1.4.282" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.282.tgz#02af3fd6051e97ac3388a4b11d455bc1ca49838f" + integrity sha512-Dki0WhHNh/br/Xi1vAkueU5mtIc9XLHcMKB6tNfQKk+kPG0TEUjRh5QEMAUbRp30/rYNMFD1zKKvbVzwq/4wmg== elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" @@ -15101,9 +15101,9 @@ regenerator-runtime@^0.11.0: integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + version "0.13.10" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" + integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== regenerator-transform@^0.15.0: version "0.15.0" From 4d52ac5b7a54703fc5f1fe681562c8e6196a645d Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Mon, 17 Oct 2022 13:30:07 +0200 Subject: [PATCH 108/126] optional fields for core client config --- packages/js/client/src/PolywrapClient.ts | 17 ++++++++++------- packages/js/client/src/PolywrapClientConfig.ts | 2 +- .../js/client/src/PolywrapCoreClientConfig.ts | 2 +- packages/js/core/src/types/Client.ts | 12 ++++++------ .../src/ExtendableUriResolver.ts | 4 ++-- .../src/legacy/LegacyRedirectsResolver.ts | 4 +++- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index a85d2ef183..989d2b7127 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -88,17 +88,17 @@ export class PolywrapClient implements Client { } @Tracer.traceMethod("PolywrapClient: getRedirects") - public getRedirects(): readonly IUriRedirect[] { + public getRedirects(): readonly IUriRedirect[] | undefined { return this._config.redirects; } @Tracer.traceMethod("PolywrapClient: getInterfaces") - public getInterfaces(): readonly InterfaceImplementations[] { + public getInterfaces(): readonly InterfaceImplementations[] | undefined { return this._config.interfaces; } @Tracer.traceMethod("PolywrapClient: getEnvs") - public getEnvs(): readonly Env[] { + public getEnvs(): readonly Env[] | undefined { return this._config.envs; } @@ -113,9 +113,12 @@ export class PolywrapClient implements Client { ): Env | undefined { const uriUri = Uri.from(uri); - return this.getEnvs().find((environment) => - Uri.equals(environment.uri, uriUri) - ); + const envs = this.getEnvs(); + if (!envs) { + return undefined; + } + + return envs.find((environment) => Uri.equals(environment.uri, uriUri)); } @Tracer.traceMethod("PolywrapClient: getManifest") @@ -156,7 +159,7 @@ export class PolywrapClient implements Client { const getImplResult = getImplementations( Uri.from(uri), - this.getInterfaces(), + this.getInterfaces() ?? [], applyRedirects ? this.getRedirects() : undefined ); diff --git a/packages/js/client/src/PolywrapClientConfig.ts b/packages/js/client/src/PolywrapClientConfig.ts index b9f3075933..ca875d3d48 100644 --- a/packages/js/client/src/PolywrapClientConfig.ts +++ b/packages/js/client/src/PolywrapClientConfig.ts @@ -6,5 +6,5 @@ import { CustomClientConfig } from "@polywrap/client-config-builder-js"; export interface PolywrapClientConfig extends CustomClientConfig { readonly wrapperCache?: IWrapperCache; - readonly tracerConfig: Readonly>; + readonly tracerConfig?: Readonly>; } diff --git a/packages/js/client/src/PolywrapCoreClientConfig.ts b/packages/js/client/src/PolywrapCoreClientConfig.ts index a7c0c2cfc9..1cc24a17b4 100644 --- a/packages/js/client/src/PolywrapCoreClientConfig.ts +++ b/packages/js/client/src/PolywrapCoreClientConfig.ts @@ -4,5 +4,5 @@ import { TracerConfig } from "@polywrap/tracing-js"; export interface PolywrapCoreClientConfig< TUri extends Uri | string = Uri | string > extends ClientConfig { - readonly tracerConfig: Readonly>; + readonly tracerConfig?: Readonly>; } diff --git a/packages/js/core/src/types/Client.ts b/packages/js/core/src/types/Client.ts index 2d729b9af6..5948a3f9df 100644 --- a/packages/js/core/src/types/Client.ts +++ b/packages/js/core/src/types/Client.ts @@ -14,9 +14,9 @@ import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { Result } from "@polywrap/result"; export interface ClientConfig { - readonly redirects: Readonly[]>; - readonly interfaces: Readonly[]>; - readonly envs: Readonly[]>; + readonly redirects?: Readonly[]>; + readonly interfaces?: Readonly[]>; + readonly envs?: Readonly[]>; readonly resolver: Readonly>; } @@ -40,11 +40,11 @@ export interface Client UriResolverHandler { getConfig(): ClientConfig; - getRedirects(): readonly IUriRedirect[]; + getRedirects(): readonly IUriRedirect[] | undefined; - getInterfaces(): readonly InterfaceImplementations[]; + getInterfaces(): readonly InterfaceImplementations[] | undefined; - getEnvs(): readonly Env[]; + getEnvs(): readonly Env[] | undefined; getEnvByUri(uri: TUri): Env | undefined; diff --git a/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts b/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts index 0a853f624b..4b2f400069 100644 --- a/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts +++ b/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts @@ -33,8 +33,8 @@ export class ExtendableUriResolver extends UriResolverAggregatorBase< ): Promise[], Error>> { const getImplementationsResult = getImplementations( coreInterfaceUris.uriResolver, - client.getInterfaces(), - client.getRedirects() + client.getInterfaces() ?? [], + client.getRedirects() ?? [] ); if (!getImplementationsResult.ok) { diff --git a/packages/js/uri-resolvers/src/legacy/LegacyRedirectsResolver.ts b/packages/js/uri-resolvers/src/legacy/LegacyRedirectsResolver.ts index 3452816a37..ffb2384d3b 100644 --- a/packages/js/uri-resolvers/src/legacy/LegacyRedirectsResolver.ts +++ b/packages/js/uri-resolvers/src/legacy/LegacyRedirectsResolver.ts @@ -9,7 +9,9 @@ export class LegacyRedirectsResolver extends UriResolverAggregator { async (uri: Uri, client: Client) => client .getRedirects() - .map((redirect) => new RedirectResolver(redirect.from, redirect.to)), + ?.map( + (redirect) => new RedirectResolver(redirect.from, redirect.to) + ) ?? [], "LegacyRedirectsResolver" ); } From 6b05ee63f0eeed4c0f133ed0e2043306ce8b264b Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 21 Oct 2022 15:26:41 +0200 Subject: [PATCH 109/126] regenerated yarn lock --- yarn.lock | 173 +++++++++++++++++++++++++----------------------------- 1 file changed, 81 insertions(+), 92 deletions(-) diff --git a/yarn.lock b/yarn.lock index beb19a30e9..bed5bda47a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -152,30 +152,30 @@ source-map "^0.5.0" "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.4.5", "@babel/core@^7.7.5": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" - integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.6.tgz#7122ae4f5c5a37c0946c066149abd8e75f81540f" + integrity sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" + "@babel/generator" "^7.19.6" "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helpers" "^7.19.4" + "@babel/parser" "^7.19.6" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.3" - "@babel/types" "^7.19.3" + "@babel/traverse" "^7.19.6" + "@babel/types" "^7.19.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.19.3", "@babel/generator@^7.19.4", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": - version "7.19.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.5.tgz#da3f4b301c8086717eee9cab14da91b1fa5dcca7" - integrity sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg== +"@babel/generator@^7.19.6", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.6.tgz#9e481a3fe9ca6261c972645ae3904ec0f9b34a1d" + integrity sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA== dependencies: "@babel/types" "^7.19.4" "@jridgewell/gen-mapping" "^0.3.2" @@ -280,19 +280,19 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0", "@babel/helper-module-transforms@^7.9.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" - integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.9.0": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz#6c52cc3ac63b70952d33ee987cbee1c9368b533f" + integrity sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-simple-access" "^7.19.4" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.19.6" + "@babel/types" "^7.19.4" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -327,7 +327,7 @@ "@babel/traverse" "^7.19.1" "@babel/types" "^7.19.0" -"@babel/helper-simple-access@^7.18.6": +"@babel/helper-simple-access@^7.19.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7" integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== @@ -373,7 +373,7 @@ "@babel/traverse" "^7.19.0" "@babel/types" "^7.19.0" -"@babel/helpers@^7.19.0", "@babel/helpers@^7.9.0": +"@babel/helpers@^7.19.4", "@babel/helpers@^7.9.0": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.4.tgz#42154945f87b8148df7203a25c31ba9a73be46c5" integrity sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw== @@ -391,10 +391,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3", "@babel/parser@^7.19.4", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.4.tgz#03c4339d2b8971eb3beca5252bafd9b9f79db3dc" - integrity sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.6", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.6.tgz#b923430cb94f58a7eae8facbffa9efd19130e7f8" + integrity sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -850,34 +850,31 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.18.6", "@babel/plugin-transform-modules-amd@^7.9.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" - integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd" + integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-modules-commonjs@^7.18.6", "@babel/plugin-transform-modules-commonjs@^7.9.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" - integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c" + integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-simple-access" "^7.19.4" "@babel/plugin-transform-modules-systemjs@^7.19.0", "@babel/plugin-transform-modules-systemjs@^7.9.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz#5f20b471284430f02d9c5059d9b9a16d4b085a1f" - integrity sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A== + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d" + integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.0" + "@babel/helper-module-transforms" "^7.19.6" "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6", "@babel/plugin-transform-modules-umd@^7.9.0": version "7.18.6" @@ -960,11 +957,11 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-source@^7.9.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz#06e9ae8a14d2bc19ce6e3c447d842032a50598fc" - integrity sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw== + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" + integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.9.1": version "7.19.0" @@ -1261,9 +1258,9 @@ "@babel/plugin-transform-typescript" "^7.9.0" "@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.12.1": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz#870dbfd9685b3dad5aeb2d00841bb8b6192e3095" - integrity sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ== + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.6.tgz#778471a71d915cf3b955a9201bebabfe924f872a" + integrity sha512-oWNn1ZlGde7b4i/3tnixpH9qI0bOAACiUs+KEES4UUCnsPjVWFlWdLV/iwJuPC2qp3EowbAqsm+0XqNwnwYhxA== dependencies: core-js-pure "^3.25.1" regenerator-runtime "^0.13.4" @@ -1291,23 +1288,23 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.3", "@babel/traverse@^7.19.4", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.4.tgz#f117820e18b1e59448a6c1fa9d0ff08f7ac459a8" - integrity sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.4", "@babel/traverse@^7.19.6", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.6.tgz#7b4c865611df6d99cb131eec2e8ac71656a490dc" + integrity sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.4" + "@babel/generator" "^7.19.6" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.4" + "@babel/parser" "^7.19.6" "@babel/types" "^7.19.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.4.tgz#0dd5c91c573a202d600490a35b33246fed8a41c7" integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw== @@ -1633,9 +1630,9 @@ ws "7.4.6" "@ethersproject/providers@^5.0.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.1.tgz#b0799b616d5579cd1067a8ebf1fc1ec74c1e122c" - integrity sha512-vZveG/DLyo+wk4Ga1yx6jSEHrLPgmTt+dFv0dv8URpVCRf0jVhalps1jq/emN/oXnMRsC7cQgAF32DcXLL7BPQ== + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== dependencies: "@ethersproject/abstract-provider" "^5.7.0" "@ethersproject/abstract-signer" "^5.7.0" @@ -3303,9 +3300,9 @@ querystring "^0.2.0" "@sinclair/typebox@^0.24.1": - version "0.24.46" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.46.tgz#57501b58023776dbbae9e25619146286440be34c" - integrity sha512-ng4ut1z2MCBhK/NwDVwIQp3pAUOCs/KNaW3cBxdFB2xTDrOuo1xuNmpr/9HHFhxqIvHrs1NTH3KJg6q+JSy1Kw== + version "0.24.47" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.47.tgz#530b67163714356f93e82bdb871e7db4b7bc564e" + integrity sha512-J4Xw0xYK4h7eC34MNOPQi6IkNxGRck6n4VJpWDzXIFVTW8I/D43Gf+NfWz/v/7NHlzWOPd3+T4PJ4OqklQ2u7A== "@sinonjs/commons@^1.7.0": version "1.8.3" @@ -3658,9 +3655,9 @@ integrity sha512-wH6Tu9mbiOt0n5EvdoWy0VGQaJMHfLIxY/6wS0xLC7CV1taM6gESEzcYy0ZlWvxxiiljYvfDIvz4hHbUUDRlhw== "@types/node@*": - version "18.11.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.0.tgz#f38c7139247a1d619f6cc6f27b072606af7c289d" - integrity sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w== + version "18.11.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.3.tgz#78a6d7ec962b596fc2d2ec102c4dd3ef073fea6a" + integrity sha512-fNjDQzzOsZeKZu5NATgXUPsaFaTxeRgFXoosrHivTl8RGeV733OLawXsGfEk9a8/tySyZUyiZ6E8LcjPFZ2y1A== "@types/node@12.12.26": version "12.12.26" @@ -4760,13 +4757,6 @@ babel-loader@8.1.0: pify "^4.0.1" schema-utils "^2.6.5" -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-istanbul@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" @@ -5506,9 +5496,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: - version "1.0.30001419" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz#3542722d57d567c8210d5e4d0f9f17336b776457" - integrity sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw== + version "1.0.30001423" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001423.tgz#57176d460aa8cd85ee1a72016b961eb9aca55d91" + integrity sha512-09iwWGOlifvE1XuHokFMP7eR38a0JnajoyL3/i87c8ZjRWRrdKo1fqjNfugfBD0UDBIOz0U+jtNhJ0EPm1VleQ== capture-exit@^2.0.0: version "2.0.0" @@ -7136,9 +7126,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.3.378, electron-to-chromium@^1.4.251: - version "1.4.282" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.282.tgz#02af3fd6051e97ac3388a4b11d455bc1ca49838f" - integrity sha512-Dki0WhHNh/br/Xi1vAkueU5mtIc9XLHcMKB6tNfQKk+kPG0TEUjRh5QEMAUbRp30/rYNMFD1zKKvbVzwq/4wmg== + version "1.4.284" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" @@ -9690,9 +9680,9 @@ is-color-stop@^1.0.0: rgba-regex "^1.0.0" is-core-module@^2.5.0, is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" @@ -11577,9 +11567,9 @@ loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + version "2.0.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.3.tgz#d4b15b8504c63d1fc3f2ade52d41bc8459d6ede1" + integrity sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -17270,15 +17260,14 @@ util@^0.11.0: inherits "2.0.3" util@^0.12.3: - version "0.12.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" - integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: inherits "^2.0.3" is-arguments "^1.0.4" is-generator-function "^1.0.7" is-typed-array "^1.1.3" - safe-buffer "^5.1.2" which-typed-array "^1.1.2" utila@~0.4: From 00f162aa8166f97743556948cf20f9ac81b780f7 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 21 Oct 2022 18:16:50 +0200 Subject: [PATCH 110/126] refactored exec options to have required fields as they are never undefined --- packages/js/plugins/ipfs/src/ExecOptions.ts | 6 +++ packages/js/plugins/ipfs/src/index.ts | 59 +++++++-------------- 2 files changed, 24 insertions(+), 41 deletions(-) create mode 100644 packages/js/plugins/ipfs/src/ExecOptions.ts diff --git a/packages/js/plugins/ipfs/src/ExecOptions.ts b/packages/js/plugins/ipfs/src/ExecOptions.ts new file mode 100644 index 0000000000..e88469b7f0 --- /dev/null +++ b/packages/js/plugins/ipfs/src/ExecOptions.ts @@ -0,0 +1,6 @@ +export type ExecOptions = { + timeout: number; + provider: string; + fallbackProviders: []; + disableParallelRequests: boolean; +}; diff --git a/packages/js/plugins/ipfs/src/index.ts b/packages/js/plugins/ipfs/src/index.ts index ae38158024..652945e88e 100644 --- a/packages/js/plugins/ipfs/src/index.ts +++ b/packages/js/plugins/ipfs/src/index.ts @@ -13,19 +13,20 @@ import { execSimple, execFallbacks } from "./utils/exec"; import { Client } from "@polywrap/core-js"; import createIpfsClient, { IpfsClient } from "@polywrap/ipfs-http-client-lite"; import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; +import { ExecOptions } from "./ExecOptions"; const isNullOrUndefined = (arg: unknown) => { return arg === undefined || arg === null; }; -const getOptions = ( +const getExecOptions = ( args: Ipfs_Options | undefined | null, env: Env -): Ipfs_Options => { +): ExecOptions => { const options = args || {}; if (isNullOrUndefined(options.disableParallelRequests)) { - options.disableParallelRequests = env.disableParallelRequests; + options.disableParallelRequests = !!env.disableParallelRequests; } if (isNullOrUndefined(options.timeout)) { @@ -38,17 +39,17 @@ const getOptions = ( } if (isNullOrUndefined(options.fallbackProviders)) { - options.fallbackProviders = env.fallbackProviders; + options.fallbackProviders = env.fallbackProviders ?? []; } - return options; + return options as ExecOptions; }; export type NoConfig = Record; export class IpfsPlugin extends Module { public async cat(args: Args_cat, _client: Client): Promise { - const options = getOptions(args.options, this.env); + const options = getExecOptions(args.options, this.env); return await this._execWithOptions( "cat", @@ -63,7 +64,7 @@ export class IpfsPlugin extends Module { args: Args_resolve, _client: Client ): Promise { - const options = getOptions(args.options, this.env); + const options = getExecOptions(args.options, this.env); return await this._execWithOptions( "resolve", @@ -79,7 +80,7 @@ export class IpfsPlugin extends Module { } public async addFile(args: Args_addFile): Promise { - const options = getOptions(null, this.env); + const options = getExecOptions(null, this.env); return await this._execWithOptions( "add", @@ -105,50 +106,26 @@ export class IpfsPlugin extends Module { provider: string, options: unknown ) => Promise, - options?: Ipfs_Options + options: ExecOptions ): Promise { - const defaultIpfsClient = createIpfsClient(this.env.provider); + const defaultIpfsClient = createIpfsClient(options.provider); - if (!options?.fallbackProviders) { - // Default behavior if no fallback providers are provided - // Note that options.timeout is already set by getOptions + if (options.fallbackProviders.length === 0) { return await execSimple( operation, defaultIpfsClient, - this.config.provider, - options?.timeout ?? 0, + options.provider, + options.timeout, func ); } - const timeout = options.timeout || 0; - - let providers = [this.env.provider, ...(this.env.fallbackProviders || [])]; - let ipfs = defaultIpfsClient; - let defaultProvider = this.env.provider; - - // Use the provider default override specified - if (options.provider) { - providers = [options.provider, ...providers]; - ipfs = createIpfsClient(options.provider); - defaultProvider = options.provider; - } - - // insert fallback providers before the env providers and fallbacks - if (options.fallbackProviders) { - providers = [ - providers[0], - ...options.fallbackProviders, - ...providers.slice(1), - ]; - } - return await execFallbacks( operation, - ipfs, - defaultProvider, - providers, - timeout, + defaultIpfsClient, + options.provider, + [options.provider, ...options.fallbackProviders], + options.timeout, func, { parallel: !options.disableParallelRequests, From 944a8a95e9e5af498a814cad3e1701676b4888e8 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 21 Oct 2022 18:19:38 +0200 Subject: [PATCH 111/126] lint fix --- packages/js/plugins/ipfs/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/plugins/ipfs/src/index.ts b/packages/js/plugins/ipfs/src/index.ts index 652945e88e..cf60aa016a 100644 --- a/packages/js/plugins/ipfs/src/index.ts +++ b/packages/js/plugins/ipfs/src/index.ts @@ -9,11 +9,11 @@ import { Env, } from "./wrap"; import { execSimple, execFallbacks } from "./utils/exec"; +import { ExecOptions } from "./ExecOptions"; import { Client } from "@polywrap/core-js"; import createIpfsClient, { IpfsClient } from "@polywrap/ipfs-http-client-lite"; import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; -import { ExecOptions } from "./ExecOptions"; const isNullOrUndefined = (arg: unknown) => { return arg === undefined || arg === null; From 86f4a167be3f34d9a3a5334d47932ad99fbcf3cd Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 21 Oct 2022 19:03:39 +0200 Subject: [PATCH 112/126] updated version numbers after merge with remote --- packages/cli/package.json | 1 - .../infra-modules/http/server/package.json | 2 +- .../js/client-config-builder/package.json | 5 +--- packages/js/client/package.json | 28 +++++++++---------- packages/js/plugin/package.json | 14 +++++----- packages/js/plugins/ethereum/package.json | 6 ++-- packages/js/plugins/file-system/package.json | 4 --- packages/js/plugins/http/package.json | 10 +++---- .../uri-resolvers/ens-resolver/package.json | 10 +++---- .../uri-resolvers/http-resolver/package.json | 3 +- .../uri-resolvers/ipfs-resolver/package.json | 2 +- .../templates/plugin/typescript/package.json | 2 +- .../cli/run/run-test-wrapper/package.json | 2 +- 13 files changed, 39 insertions(+), 50 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 6e9599928f..745a0a9656 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -47,7 +47,6 @@ "@polywrap/ens-resolver-plugin-js": "0.9.3", "@polywrap/ethereum-plugin-js": "0.9.3", "@polywrap/ipfs-plugin-js": "0.9.3", - "@polywrap/msgpack-js": "0.9.3", "@polywrap/os-js": "0.9.3", "@polywrap/polywrap-manifest-types-js": "0.9.3", "@polywrap/schema-bind": "0.9.3", diff --git a/packages/cli/src/lib/defaults/infra-modules/http/server/package.json b/packages/cli/src/lib/defaults/infra-modules/http/server/package.json index 1ca8d48bf2..ec1738ed4d 100644 --- a/packages/cli/src/lib/defaults/infra-modules/http/server/package.json +++ b/packages/cli/src/lib/defaults/infra-modules/http/server/package.json @@ -12,7 +12,7 @@ }, "license": "MIT", "dependencies": { - "@polywrap/msgpack-js": "0.9.2", + "@polywrap/msgpack-js": "0.9.3", "@types/multer": "1.4.7", "dotenv": "8.6.0", "express": "4.18.1", diff --git a/packages/js/client-config-builder/package.json b/packages/js/client-config-builder/package.json index e0a015aa7a..ed7c65c320 100644 --- a/packages/js/client-config-builder/package.json +++ b/packages/js/client-config-builder/package.json @@ -29,11 +29,8 @@ "@polywrap/ipfs-plugin-js": "0.9.3", "@polywrap/ipfs-resolver-plugin-js": "0.9.3", "@polywrap/logger-plugin-js": "0.9.3", - "@polywrap/tracing-js": "0.9.3", "@polywrap/uri-resolver-extensions-js": "0.9.3", - "@polywrap/uri-resolvers-js": "0.9.3", - "@polywrap/wasm-js": "0.9.3", - "@polywrap/wrap-manifest-types-js": "0.9.3" + "@polywrap/uri-resolvers-js": "0.9.3" }, "devDependencies": { "@types/jest": "26.0.8", diff --git a/packages/js/client/package.json b/packages/js/client/package.json index 12bb8358e9..9e79ac4813 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -20,32 +20,30 @@ "test:watch": "jest --watch --passWithNoTests --verbose --detectOpenHandles" }, "dependencies": { - "@polywrap/asyncify-js": "0.9.3", - "@polywrap/client-config-builder-js": "0.9.3", "@polywrap/core-js": "0.9.3", "@polywrap/msgpack-js": "0.9.3", "@polywrap/result": "0.9.3", "@polywrap/tracing-js": "0.9.3", - "@polywrap/client-config-builder-js": "0.9.2", + "@polywrap/client-config-builder-js": "0.9.3", "@polywrap/uri-resolvers-js": "0.9.3", "@polywrap/wrap-manifest-types-js": "0.9.3", - "@polywrap/uri-resolver-extensions-js": "0.9.2" + "@polywrap/uri-resolver-extensions-js": "0.9.3" }, "devDependencies": { "@polywrap/os-js": "0.9.3", "@polywrap/test-cases": "0.9.3", "@polywrap/test-env-js": "0.9.3", - "@polywrap/client-config-builder-js": "0.9.2", - "@polywrap/ens-resolver-plugin-js": "0.9.2", - "@polywrap/ethereum-plugin-js": "0.9.2", - "@polywrap/http-plugin-js": "0.9.2", - "@polywrap/http-resolver-plugin-js": "0.9.2", - "@polywrap/ipfs-plugin-js": "0.9.2", - "@polywrap/ipfs-resolver-plugin-js": "0.9.2", - "@polywrap/logger-plugin-js": "0.9.2", - "@polywrap/fs-plugin-js": "0.9.2", - "@polywrap/fs-resolver-plugin-js": "0.9.2", - "@polywrap/plugin-js": "0.9.2", + "@polywrap/client-config-builder-js": "0.9.3", + "@polywrap/ens-resolver-plugin-js": "0.9.3", + "@polywrap/ethereum-plugin-js": "0.9.3", + "@polywrap/http-plugin-js": "0.9.3", + "@polywrap/http-resolver-plugin-js": "0.9.3", + "@polywrap/ipfs-plugin-js": "0.9.3", + "@polywrap/ipfs-resolver-plugin-js": "0.9.3", + "@polywrap/logger-plugin-js": "0.9.3", + "@polywrap/fs-plugin-js": "0.9.3", + "@polywrap/fs-resolver-plugin-js": "0.9.3", + "@polywrap/plugin-js": "0.9.3", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "@types/uuid": "8.3.0", diff --git a/packages/js/plugin/package.json b/packages/js/plugin/package.json index a0787b5fb3..7ade4e4503 100644 --- a/packages/js/plugin/package.json +++ b/packages/js/plugin/package.json @@ -1,7 +1,7 @@ { "name": "@polywrap/plugin-js", "description": "Polywrap plugin core package for plugin wrappers", - "version": "0.9.2", + "version": "0.9.3", "license": "MIT", "repository": { "type": "git", @@ -19,14 +19,14 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/result": "0.9.2", - "@polywrap/core-js": "0.9.2", - "@polywrap/msgpack-js": "0.9.2", - "@polywrap/tracing-js": "0.9.2", - "@polywrap/wrap-manifest-types-js": "0.9.2" + "@polywrap/result": "0.9.3", + "@polywrap/core-js": "0.9.3", + "@polywrap/msgpack-js": "0.9.3", + "@polywrap/tracing-js": "0.9.3", + "@polywrap/wrap-manifest-types-js": "0.9.3" }, "devDependencies": { - "@polywrap/os-js": "0.9.2", + "@polywrap/os-js": "0.9.3", "@types/jest": "26.0.8", "jest": "26.6.3", "rimraf": "3.0.2", diff --git a/packages/js/plugins/ethereum/package.json b/packages/js/plugins/ethereum/package.json index 1f6499203d..b32ca046d1 100644 --- a/packages/js/plugins/ethereum/package.json +++ b/packages/js/plugins/ethereum/package.json @@ -23,13 +23,13 @@ "@ethersproject/address": "5.0.7", "@ethersproject/providers": "5.0.7", "@polywrap/core-js": "0.9.3", - "@polywrap/plugin-js": "0.9.2", + "@polywrap/plugin-js": "0.9.3", "ethers": "5.0.7" }, "devDependencies": { "@polywrap/client-js": "0.9.3", - "@polywrap/fs-resolver-plugin-js": "0.9.2", - "@polywrap/fs-plugin-js": "0.9.2", + "@polywrap/fs-resolver-plugin-js": "0.9.3", + "@polywrap/fs-plugin-js": "0.9.3", "@polywrap/test-env-js": "0.9.3", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", diff --git a/packages/js/plugins/file-system/package.json b/packages/js/plugins/file-system/package.json index cb0dfa6ea0..b953a196f5 100644 --- a/packages/js/plugins/file-system/package.json +++ b/packages/js/plugins/file-system/package.json @@ -25,11 +25,7 @@ }, "devDependencies": { "@polywrap/client-js": "0.9.3", - "@polywrap/ens-resolver-plugin-js": "0.9.3", - "@polywrap/ethereum-plugin-js": "0.9.3", - "@polywrap/ipfs-plugin-js": "0.9.3", "@polywrap/uri-resolvers-js": "0.9.3", - "@polywrap/test-env-js": "0.9.3", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/http/package.json b/packages/js/plugins/http/package.json index 39990ac4d6..d1caf84257 100644 --- a/packages/js/plugins/http/package.json +++ b/packages/js/plugins/http/package.json @@ -21,15 +21,15 @@ }, "dependencies": { "@polywrap/core-js": "0.9.3", - "@polywrap/plugin-js": "0.9.2", + "@polywrap/plugin-js": "0.9.3", "axios": "0.21.4" }, "devDependencies": { "@polywrap/client-js": "0.9.3", - "@polywrap/uri-resolvers-js": "0.9.2", - "@polywrap/fs-resolver-plugin-js": "0.9.2", - "@polywrap/fs-plugin-js": "0.9.2", - "@polywrap/uri-resolver-extensions-js": "0.9.2", + "@polywrap/uri-resolvers-js": "0.9.3", + "@polywrap/fs-resolver-plugin-js": "0.9.3", + "@polywrap/fs-plugin-js": "0.9.3", + "@polywrap/uri-resolver-extensions-js": "0.9.3", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/package.json b/packages/js/plugins/uri-resolvers/ens-resolver/package.json index 9663f134d7..7a840bd9aa 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ens-resolver/package.json @@ -23,14 +23,14 @@ "@ethersproject/address": "5.0.7", "@ethersproject/basex": "5.0.7", "@polywrap/core-js": "0.9.3", - "@polywrap/plugin-js": "0.9.2", + "@polywrap/plugin-js": "0.9.3", "ethers": "5.0.7" }, "devDependencies": { - "@polywrap/client-js": "0.9.2", - "@polywrap/ethereum-plugin-js": "0.9.2", - "@polywrap/ipfs-plugin-js": "0.9.2", - "@polywrap/ipfs-resolver-plugin-js": "0.9.2", + "@polywrap/client-js": "0.9.3", + "@polywrap/ethereum-plugin-js": "0.9.3", + "@polywrap/ipfs-plugin-js": "0.9.3", + "@polywrap/ipfs-resolver-plugin-js": "0.9.3", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", "jest": "26.6.3", diff --git a/packages/js/plugins/uri-resolvers/http-resolver/package.json b/packages/js/plugins/uri-resolvers/http-resolver/package.json index 1ad6351f0f..4dd33bcc0d 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/http-resolver/package.json @@ -22,12 +22,11 @@ }, "dependencies": { "@polywrap/core-js": "0.9.3", - "@polywrap/plugin-js": "0.9.2", + "@polywrap/plugin-js": "0.9.3", "abort-controller": "3.0.0" }, "devDependencies": { "@polywrap/http-plugin-js": "0.9.3", - "@polywrap/polywrap-manifest-types-js": "0.9.3", "@polywrap/test-env-js": "0.9.3", "@types/jest": "26.0.8", "@types/prettier": "2.6.0", diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json index 60f951f374..b86bbd9813 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/package.json @@ -22,7 +22,7 @@ "dependencies": { "@polywrap/core-js": "0.9.3", "@polywrap/ipfs-http-client-lite": "0.3.0", - "@polywrap/plugin-js": "0.9.2", + "@polywrap/plugin-js": "0.9.3", "abort-controller": "3.0.0", "is-ipfs": "1.0.3" }, diff --git a/packages/templates/plugin/typescript/package.json b/packages/templates/plugin/typescript/package.json index 5c0fe9ca2b..8a2a59ed4f 100644 --- a/packages/templates/plugin/typescript/package.json +++ b/packages/templates/plugin/typescript/package.json @@ -12,7 +12,7 @@ "test:watch": "jest --watch --passWithNoTests --verbose" }, "dependencies": { - "@polywrap/core-js": "0.9.3" + "@polywrap/core-js": "0.9.3", "@polywrap/plugin-js": "0.9.3" }, "devDependencies": { diff --git a/packages/test-cases/cases/cli/run/run-test-wrapper/package.json b/packages/test-cases/cases/cli/run/run-test-wrapper/package.json index c63cb0c72c..682883cdd2 100644 --- a/packages/test-cases/cases/cli/run/run-test-wrapper/package.json +++ b/packages/test-cases/cases/cli/run/run-test-wrapper/package.json @@ -7,7 +7,7 @@ "build": "polywrap build" }, "dependencies": { - "@polywrap/wasm-as": "0.9.2" + "@polywrap/wasm-as": "0.9.3" }, "devDependencies": { "assemblyscript": "0.19.23" From edbb71b12c8c3c1113db958652ac36b90be41ecc Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 21 Oct 2022 19:15:59 +0200 Subject: [PATCH 113/126] removed os-js from packages that dont use it --- packages/js/client/package.json | 1 - packages/js/core/package.json | 1 - packages/js/plugin/package.json | 1 - packages/js/uri-resolver-extensions/package.json | 1 - packages/js/uri-resolvers/package.json | 1 - packages/js/wasm/package.json | 1 - 6 files changed, 6 deletions(-) diff --git a/packages/js/client/package.json b/packages/js/client/package.json index 9e79ac4813..bfdac5ad43 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -30,7 +30,6 @@ "@polywrap/uri-resolver-extensions-js": "0.9.3" }, "devDependencies": { - "@polywrap/os-js": "0.9.3", "@polywrap/test-cases": "0.9.3", "@polywrap/test-env-js": "0.9.3", "@polywrap/client-config-builder-js": "0.9.3", diff --git a/packages/js/core/package.json b/packages/js/core/package.json index 5c146b6520..79baf7090b 100644 --- a/packages/js/core/package.json +++ b/packages/js/core/package.json @@ -26,7 +26,6 @@ "graphql-tag": "2.10.4" }, "devDependencies": { - "@polywrap/os-js": "0.9.3", "@types/jest": "26.0.8", "@types/mustache": "4.0.1", "@types/prettier": "2.6.0", diff --git a/packages/js/plugin/package.json b/packages/js/plugin/package.json index 7ade4e4503..47254b5753 100644 --- a/packages/js/plugin/package.json +++ b/packages/js/plugin/package.json @@ -26,7 +26,6 @@ "@polywrap/wrap-manifest-types-js": "0.9.3" }, "devDependencies": { - "@polywrap/os-js": "0.9.3", "@types/jest": "26.0.8", "jest": "26.6.3", "rimraf": "3.0.2", diff --git a/packages/js/uri-resolver-extensions/package.json b/packages/js/uri-resolver-extensions/package.json index baac4298e5..a966782c7f 100644 --- a/packages/js/uri-resolver-extensions/package.json +++ b/packages/js/uri-resolver-extensions/package.json @@ -26,7 +26,6 @@ "@polywrap/wrap-manifest-types-js": "0.9.3" }, "devDependencies": { - "@polywrap/os-js": "0.9.3", "@types/jest": "26.0.8", "jest": "26.6.3", "rimraf": "3.0.2", diff --git a/packages/js/uri-resolvers/package.json b/packages/js/uri-resolvers/package.json index 90e9f43602..709bcdcfd2 100644 --- a/packages/js/uri-resolvers/package.json +++ b/packages/js/uri-resolvers/package.json @@ -24,7 +24,6 @@ "@polywrap/wrap-manifest-types-js": "0.9.3" }, "devDependencies": { - "@polywrap/os-js": "0.9.3", "@types/jest": "26.0.8", "jest": "26.6.3", "rimraf": "3.0.2", diff --git a/packages/js/wasm/package.json b/packages/js/wasm/package.json index d450f58aaa..8dbb4abb65 100644 --- a/packages/js/wasm/package.json +++ b/packages/js/wasm/package.json @@ -27,7 +27,6 @@ "@polywrap/wrap-manifest-types-js": "0.9.3" }, "devDependencies": { - "@polywrap/os-js": "0.9.3", "@types/jest": "26.0.8", "jest": "26.6.3", "rimraf": "3.0.2", From c8b5875d3497d1daf4604e1bcbca77f2b82b0544 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 21 Oct 2022 19:24:23 +0200 Subject: [PATCH 114/126] moved comment out of method --- packages/js/client/src/PolywrapClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index 5d358aecfa..01c0f90aff 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -81,12 +81,12 @@ export class PolywrapClient implements Client { } } - public getConfig(): PolywrapCoreClientConfig { /** * Returns the configuration used to instantiate the client * * @returns an immutable Polywrap client config */ + public getConfig(): PolywrapCoreClientConfig { return this._config; } From 9630e0284251f695d32b18637e334f02124859b0 Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 21 Oct 2022 20:59:28 +0200 Subject: [PATCH 115/126] renaming client and client config as core types --- packages/cli/src/lib/workflow/JobRunner.ts | 4 +- .../src/ClientConfigBuilder.ts | 4 +- .../__tests__/client-config-builder.spec.ts | 4 +- packages/js/client/src/PolywrapClient.ts | 4 +- .../js/client/src/PolywrapCoreClientConfig.ts | 4 +- .../src/__tests__/e2e/memory-storage.ts | 19 ++- .../js/client/src/__tests__/e2e/test-cases.ts | 103 ++++++++------- .../src/types/{Client.ts => CoreClient.ts} | 8 +- packages/js/core/src/types/index.ts | 2 +- .../core/src/uri-resolution/IUriResolver.ts | 4 +- .../js/core/src/utils/getEnvFromUriHistory.ts | 4 +- packages/js/plugin/src/PluginMethod.ts | 4 +- packages/js/plugin/src/PluginModule.ts | 4 +- packages/js/plugin/src/PluginWrapper.ts | 4 +- .../src/utils/PluginModuleWithMethods.ts | 4 +- packages/js/plugins/ethereum/src/index.ts | 70 ++++++----- packages/js/plugins/file-system/src/index.ts | 19 +-- .../http/src/__tests__/unit/index.test.ts | 10 +- packages/js/plugins/http/src/index.ts | 6 +- .../js/plugins/ipfs/src/__tests__/e2e.spec.ts | 9 +- packages/js/plugins/ipfs/src/index.ts | 6 +- .../uri-resolvers/ens-resolver/src/index.ts | 8 +- .../file-system-resolver/src/index.ts | 9 +- .../uri-resolvers/http-resolver/src/index.ts | 6 +- .../uri-resolvers/ipfs-resolver/src/index.ts | 6 +- .../plugins/ws/src/__tests__/e2e/e2e.spec.ts | 4 +- .../ws/src/__tests__/e2e/integration.spec.ts | 23 ++-- packages/js/plugins/ws/src/index.ts | 21 ++-- .../src/ExtendableUriResolver.ts | 11 +- .../src/ResolverExtensionLoader.ts | 9 +- .../src/UriResolverExtensionFileReader.ts | 4 +- .../src/UriResolverWrapper.ts | 6 +- .../src/aggregator/UriResolverAggregator.ts | 10 +- .../aggregator/UriResolverAggregatorBase.ts | 8 +- .../cache/PackageToWrapperCacheResolver.ts | 4 +- .../src/helpers/RecursiveResolver.ts | 6 +- .../src/helpers/ResolverWithHistory.ts | 6 +- .../src/helpers/ResolverWithLoopGuard.ts | 4 +- .../uri-resolvers/src/helpers/UriResolver.ts | 4 +- .../src/legacy/LegacyRedirectsResolver.ts | 4 +- .../src/static/StaticResolver.ts | 7 +- packages/js/wasm/src/WasmWrapper.ts | 4 +- packages/js/wasm/src/imports.ts | 4 +- .../app/templates/types-ts.mustache | 4 +- .../plugin/templates/index-ts.mustache | 2 +- .../plugin/templates/module-ts.mustache | 4 +- .../plugin/templates/types-ts.mustache | 8 +- .../assemblyscript/src/__tests__/utils.ts | 14 ++- .../cases/bind/sanity/output/app-ts/types.ts | 18 +-- .../bind/sanity/output/plugin-ts/index.ts | 2 +- .../bind/sanity/output/plugin-ts/module.ts | 21 +--- .../bind/sanity/output/plugin-ts/types.ts | 31 +++-- .../codegen/001-sanity/expected/wrap/index.ts | 2 +- .../001-sanity/expected/wrap/module.ts | 14 +-- .../codegen/001-sanity/expected/wrap/types.ts | 118 +++++++++--------- .../002-single-module/expected/wrap/index.ts | 2 +- .../002-single-module/expected/wrap/module.ts | 12 +- .../002-single-module/expected/wrap/types.ts | 118 +++++++++--------- .../codegen/003-env/expected/wrap/index.ts | 2 +- .../codegen/003-env/expected/wrap/module.ts | 12 +- .../codegen/003-env/expected/wrap/types.ts | 2 +- .../expected/wrap/index.ts | 2 +- .../expected/wrap/module.ts | 12 +- .../expected/wrap/types.ts | 2 +- .../005-custom-config/expected/wrap/index.ts | 2 +- .../005-custom-config/expected/wrap/module.ts | 14 +-- .../005-custom-config/expected/wrap/types.ts | 118 +++++++++--------- .../expected/wrap/index.ts | 2 +- .../expected/wrap/module.ts | 14 +-- .../expected/wrap/types.ts | 118 +++++++++--------- 70 files changed, 561 insertions(+), 573 deletions(-) rename packages/js/core/src/types/{Client.ts => CoreClient.ts} (91%) diff --git a/packages/cli/src/lib/workflow/JobRunner.ts b/packages/cli/src/lib/workflow/JobRunner.ts index e1bd95d3e2..3cc736ec25 100644 --- a/packages/cli/src/lib/workflow/JobRunner.ts +++ b/packages/cli/src/lib/workflow/JobRunner.ts @@ -1,7 +1,7 @@ import { JobResult, Status, Step } from "./types"; import { PolywrapClient } from "@polywrap/client-js"; -import { Client, MaybeAsync, Uri } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync, Uri } from "@polywrap/core-js"; import { WorkflowJobs } from "@polywrap/polywrap-manifest-types-js"; import { ClientConfigBuilder, @@ -10,7 +10,7 @@ import { export class JobRunner { private jobOutput: Map; - private client: Client; + private client: CoreClient; constructor( private clientConfig: Partial>, diff --git a/packages/js/client-config-builder/src/ClientConfigBuilder.ts b/packages/js/client-config-builder/src/ClientConfigBuilder.ts index 851903f11f..9cfa984b6b 100644 --- a/packages/js/client-config-builder/src/ClientConfigBuilder.ts +++ b/packages/js/client-config-builder/src/ClientConfigBuilder.ts @@ -2,7 +2,7 @@ import { getDefaultConfig } from "./bundles"; import { CustomClientConfig } from "./CustomClientConfig"; import { - ClientConfig, + CoreClientConfig, Uri, IUriResolver, IUriPackage, @@ -359,7 +359,7 @@ export class ClientConfigBuilder { buildDefault( wrapperCache?: IWrapperCache, resolver?: IUriResolver - ): ClientConfig { + ): CoreClientConfig { return { envs: this._config.envs, interfaces: this._config.interfaces, diff --git a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts index 231892d122..c27ffa4c28 100644 --- a/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts +++ b/packages/js/client-config-builder/src/__tests__/client-config-builder.spec.ts @@ -1,6 +1,6 @@ import { ClientConfigBuilder } from "../ClientConfigBuilder"; import { - Client, + CoreClient, Env, InterfaceImplementations, Uri, @@ -22,7 +22,7 @@ class NamedUriResolver implements IUriResolver { } tryResolveUri( uri: Uri, - client: Client + client: CoreClient ): Promise> { throw new Error("Method not implemented."); } diff --git a/packages/js/client/src/PolywrapClient.ts b/packages/js/client/src/PolywrapClient.ts index 01c0f90aff..274ca06047 100644 --- a/packages/js/client/src/PolywrapClient.ts +++ b/packages/js/client/src/PolywrapClient.ts @@ -4,7 +4,7 @@ import { PolywrapClientConfig } from "./PolywrapClientConfig"; import { Wrapper, - Client, + CoreClient, Env, GetFileOptions, GetImplementationsOptions, @@ -38,7 +38,7 @@ import { Tracer, TracerConfig, TracingLevel } from "@polywrap/tracing-js"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; -export class PolywrapClient implements Client { +export class PolywrapClient implements CoreClient { private _config: PolywrapCoreClientConfig; /** diff --git a/packages/js/client/src/PolywrapCoreClientConfig.ts b/packages/js/client/src/PolywrapCoreClientConfig.ts index 1cc24a17b4..aa5baf913c 100644 --- a/packages/js/client/src/PolywrapCoreClientConfig.ts +++ b/packages/js/client/src/PolywrapCoreClientConfig.ts @@ -1,8 +1,8 @@ -import { ClientConfig, Uri } from "@polywrap/core-js"; +import { CoreClientConfig, Uri } from "@polywrap/core-js"; import { TracerConfig } from "@polywrap/tracing-js"; export interface PolywrapCoreClientConfig< TUri extends Uri | string = Uri | string -> extends ClientConfig { +> extends CoreClientConfig { readonly tracerConfig?: Readonly>; } diff --git a/packages/js/client/src/__tests__/e2e/memory-storage.ts b/packages/js/client/src/__tests__/e2e/memory-storage.ts index 403dda6b45..0e09637aed 100644 --- a/packages/js/client/src/__tests__/e2e/memory-storage.ts +++ b/packages/js/client/src/__tests__/e2e/memory-storage.ts @@ -1,5 +1,9 @@ -import { Client } from "@polywrap/core-js"; -import { PluginFactory, PluginModule, PluginPackage } from "@polywrap/plugin-js"; +import { CoreClient } from "@polywrap/core-js"; +import { + PluginFactory, + PluginModule, + PluginPackage, +} from "@polywrap/plugin-js"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; type NoConfig = Record; @@ -11,13 +15,16 @@ function sleep(ms: number) { export const makeMemoryStoragePlugin: PluginFactory = () => { class MemoryStoragePlugin extends PluginModule { private _value: number; - - async getData(_: {}, _client: Client): Promise { + + async getData(_: {}, _client: CoreClient): Promise { await sleep(50); return this._value; } - - async setData(args: { value: number }, _client: Client): Promise { + + async setData( + args: { value: number }, + _client: CoreClient + ): Promise { await sleep(50); this._value = args.value; return true; diff --git a/packages/js/client/src/__tests__/e2e/test-cases.ts b/packages/js/client/src/__tests__/e2e/test-cases.ts index e625046a50..eb01cfd1ff 100644 --- a/packages/js/client/src/__tests__/e2e/test-cases.ts +++ b/packages/js/client/src/__tests__/e2e/test-cases.ts @@ -1,9 +1,9 @@ -import { Client, Uri } from "../../"; +import { CoreClient, Uri } from "../../"; import { BigNumber } from "bignumber.js"; import { ErrResult } from "../utils/resultTypes"; export const runAsyncifyTest = async ( - client: Client, + client: CoreClient, wrapperUri: string ) => { const subsequentInvokes = await client.invoke({ @@ -112,15 +112,13 @@ export const runAsyncifyTest = async ( }, }); - if (!setDataWithManyStructuredArgs.ok) fail(setDataWithManyStructuredArgs.error); + if (!setDataWithManyStructuredArgs.ok) + fail(setDataWithManyStructuredArgs.error); expect(setDataWithManyStructuredArgs.value).toBeTruthy(); expect(setDataWithManyStructuredArgs.value).toBe(true); }; -export const runBigIntTypeTest = async ( - client: Client, - uri: string -) => { +export const runBigIntTypeTest = async (client: CoreClient, uri: string) => { { const response = await client.invoke({ uri, @@ -166,10 +164,7 @@ export const runBigIntTypeTest = async ( } }; -export const runBigNumberTypeTest = async ( - client: Client, - uri: string -) => { +export const runBigNumberTypeTest = async (client: CoreClient, uri: string) => { { const response = await client.invoke({ uri, @@ -217,7 +212,7 @@ export const runBigNumberTypeTest = async ( } }; -export const runBytesTypeTest = async (client: Client, uri: string) => { +export const runBytesTypeTest = async (client: CoreClient, uri: string) => { const response = await client.invoke({ uri, method: "bytesMethod", @@ -235,7 +230,7 @@ export const runBytesTypeTest = async (client: Client, uri: string) => { ); }; -export const runEnumTypesTest = async (client: Client, uri: string) => { +export const runEnumTypesTest = async (client: CoreClient, uri: string) => { let method1a = await client.invoke({ uri, method: "method1", @@ -292,11 +287,13 @@ export const runEnumTypesTest = async (client: Client, uri: string) => { }; export const runImplementationsTest = async ( - client: Client, + client: CoreClient, interfaceUri: string, implementationUri: string ) => { - const implResult = client.getImplementations(interfaceUri, { applyRedirects: false }); + const implResult = client.getImplementations(interfaceUri, { + applyRedirects: false, + }); if (!implResult.ok) fail(implResult.error); expect(implResult.value).toEqual([new Uri(implementationUri).uri]); @@ -322,7 +319,10 @@ export const runImplementationsTest = async ( }), ]); - const okResults = results.filter((x) => x.ok) as { ok: true, value: unknown }[]; + const okResults = results.filter((x) => x.ok) as { + ok: true; + value: unknown; + }[]; expect(okResults.length).toEqual(results.length); expect(okResults[0].value).toEqual({ uint8: 1, @@ -332,13 +332,15 @@ export const runImplementationsTest = async ( }; export const runGetImplementationsTest = async ( - client: Client, + client: CoreClient, aggregatorUri: string, interfaceUri: string, implementationUri: string ) => { let implUri = new Uri(implementationUri); - const implResult = client.getImplementations(interfaceUri, { applyRedirects: false }); + const implResult = client.getImplementations(interfaceUri, { + applyRedirects: false, + }); if (!implResult.ok) fail(implResult.error); expect(implResult.value).toEqual([implUri.uri]); @@ -364,10 +366,7 @@ export const runGetImplementationsTest = async ( expect(moduleMethodResult.value).toEqual("Test String 2"); }; -export const runInvalidTypesTest = async ( - client: Client, - uri: string -) => { +export const runInvalidTypesTest = async (client: CoreClient, uri: string) => { let invalidBoolIntSent = await client.invoke({ uri, method: "boolMethod", @@ -375,7 +374,7 @@ export const runInvalidTypesTest = async ( arg: 10, }, }); - invalidBoolIntSent = invalidBoolIntSent as { ok: false, error: Error }; + invalidBoolIntSent = invalidBoolIntSent as { ok: false; error: Error }; expect(invalidBoolIntSent.error).toBeTruthy(); expect(invalidBoolIntSent.error?.message).toMatch( /Property must be of type 'bool'. Found 'int'./ @@ -438,7 +437,11 @@ export const runInvalidTypesTest = async ( ); }; -export const runJsonTypeTest = async (client: Client, uri: string, testReserved: boolean = false) => { +export const runJsonTypeTest = async ( + client: CoreClient, + uri: string, + testReserved: boolean = false +) => { type Json = string; const value = JSON.stringify({ foo: "bar", bar: "bar" }); const parseResponse = await client.invoke({ @@ -465,7 +468,7 @@ export const runJsonTypeTest = async (client: Client, uri: string, testReserved: }, }); - if(!stringifyResponse.ok) fail(stringifyResponse.error); + if (!stringifyResponse.ok) fail(stringifyResponse.error); expect(stringifyResponse.value).toEqual(values.join("")); const object = { @@ -502,22 +505,25 @@ export const runJsonTypeTest = async (client: Client, uri: string, testReserved: if (testReserved) { const reserved = { const: "hello", if: true }; - const parseReservedResponse = await client.invoke<{ const: string; if: boolean }>({ + const parseReservedResponse = await client.invoke<{ + const: string; + if: boolean; + }>({ uri, method: "parseReserved", args: { - json: JSON.stringify(reserved) + json: JSON.stringify(reserved), }, }); if (!parseReservedResponse.ok) fail(parseReservedResponse.error); expect(parseReservedResponse.value).toEqual(reserved); - + const stringifyReservedResponse = await client.invoke({ uri, method: "stringifyReserved", args: { - reserved + reserved, }, }); @@ -526,10 +532,7 @@ export const runJsonTypeTest = async (client: Client, uri: string, testReserved: } }; -export const runLargeTypesTest = async ( - client: Client, - uri: string -) => { +export const runLargeTypesTest = async (client: CoreClient, uri: string) => { const largeStr = new Array(5000).join("polywrap "); const largeBytes = new Uint8Array(Buffer.from(largeStr)); const largeStrArray = []; @@ -563,10 +566,7 @@ export const runLargeTypesTest = async ( }); }; -export const runNumberTypesTest = async ( - client: Client, - uri: string -) => { +export const runNumberTypesTest = async (client: CoreClient, uri: string) => { let i8Underflow = await client.invoke({ uri, method: "i8Method", @@ -653,10 +653,7 @@ export const runNumberTypesTest = async ( ); }; -export const runObjectTypesTest = async ( - client: Client, - uri: string -) => { +export const runObjectTypesTest = async (client: CoreClient, uri: string) => { const method1a = await client.invoke({ uri, method: "method1", @@ -806,7 +803,7 @@ export const runObjectTypesTest = async ( }); }; -export const runMapTypeTest = async (client: Client, uri: string) => { +export const runMapTypeTest = async (client: CoreClient, uri: string) => { const mapClass = new Map().set("Hello", 1).set("Heyo", 50); const nestedMapClass = new Map>().set( "Nested", @@ -901,7 +898,7 @@ export const runMapTypeTest = async (client: Client, uri: string) => { }; export const runSimpleStorageTest = async ( - client: Client, + client: CoreClient, wrapperUri: string ) => { const deploy = await client.invoke({ @@ -951,7 +948,7 @@ export const runSimpleStorageTest = async ( }; export const runSimpleEnvTest = async ( - client: Client, + client: CoreClient, wrapperUri: string ) => { const getEnvResult = await client.invoke({ @@ -973,7 +970,7 @@ export const runSimpleEnvTest = async ( args: { arg: "not set", }, - env: { } + env: {}, }); getEnvNotSetResult = getEnvNotSetResult as ErrResult; expect(getEnvNotSetResult.error).toBeTruthy(); @@ -999,7 +996,7 @@ export const runSimpleEnvTest = async ( }; export const runComplexEnvs = async ( - client: Client, + client: CoreClient, wrapperUri: string ) => { const methodRequireEnvResult = await client.invoke({ @@ -1065,7 +1062,8 @@ export const runComplexEnvs = async ( arg: "string", }, }); - if (!methodRequireEnvModuleTimeResult.ok) fail(methodRequireEnvModuleTimeResult.error); + if (!methodRequireEnvModuleTimeResult.ok) + fail(methodRequireEnvModuleTimeResult.error); expect(methodRequireEnvModuleTimeResult.value).toEqual({ str: "string", optFilledStr: "optional string", @@ -1099,7 +1097,7 @@ export const runComplexEnvs = async ( bool: true, en: "FIRST", array: [32, 23], - } + }, }); if (!mockUpdatedEnvResult.ok) fail(mockUpdatedEnvResult.error); expect(mockUpdatedEnvResult.value).toEqual({ @@ -1120,17 +1118,14 @@ export const runComplexEnvs = async ( }); }; -export const runSubinvokeTest = async ( - client: PolywrapClient, - uri: string, -) => { +export const runSubinvokeTest = async (client: PolywrapClient, uri: string) => { { const response = await client.invoke({ uri, method: "add", args: { a: 1, - b: 2 + b: 2, }, }); @@ -1138,4 +1133,4 @@ export const runSubinvokeTest = async ( expect(response.value).toBeTruthy(); expect(response.value).toEqual(3); } -}; \ No newline at end of file +}; diff --git a/packages/js/core/src/types/Client.ts b/packages/js/core/src/types/CoreClient.ts similarity index 91% rename from packages/js/core/src/types/Client.ts rename to packages/js/core/src/types/CoreClient.ts index 5948a3f9df..f6a72cd853 100644 --- a/packages/js/core/src/types/Client.ts +++ b/packages/js/core/src/types/CoreClient.ts @@ -6,14 +6,14 @@ import { Uri, InterfaceImplementations, Env, -} from "./"; +} from "."; import { IUriResolver } from "../uri-resolution"; import { UriResolverHandler } from "./UriResolver"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { Result } from "@polywrap/result"; -export interface ClientConfig { +export interface CoreClientConfig { readonly redirects?: Readonly[]>; readonly interfaces?: Readonly[]>; readonly envs?: Readonly[]>; @@ -33,12 +33,12 @@ export interface GetImplementationsOptions { applyRedirects?: boolean; } -export interface Client +export interface CoreClient extends Invoker, QueryHandler, SubscriptionHandler, UriResolverHandler { - getConfig(): ClientConfig; + getConfig(): CoreClientConfig; getRedirects(): readonly IUriRedirect[] | undefined; diff --git a/packages/js/core/src/types/index.ts b/packages/js/core/src/types/index.ts index 99cef6b5ac..462080bc83 100644 --- a/packages/js/core/src/types/index.ts +++ b/packages/js/core/src/types/index.ts @@ -1,5 +1,5 @@ export * from "./Wrapper"; -export * from "./Client"; +export * from "./CoreClient"; export * from "./Invoke"; export * from "./MaybeAsync"; export * from "./Query"; diff --git a/packages/js/core/src/uri-resolution/IUriResolver.ts b/packages/js/core/src/uri-resolution/IUriResolver.ts index 0a2aea76ae..f714219241 100644 --- a/packages/js/core/src/uri-resolution/IUriResolver.ts +++ b/packages/js/core/src/uri-resolution/IUriResolver.ts @@ -1,4 +1,4 @@ -import { Uri, Client } from ".."; +import { Uri, CoreClient } from ".."; import { IUriResolutionContext } from "./IUriResolutionContext"; import { UriPackageOrWrapper } from "./UriPackageOrWrapper"; @@ -7,7 +7,7 @@ import { Result } from "@polywrap/result"; export interface IUriResolver { tryResolveUri( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise>; } diff --git a/packages/js/core/src/utils/getEnvFromUriHistory.ts b/packages/js/core/src/utils/getEnvFromUriHistory.ts index d128bcbeb4..6266e5475a 100644 --- a/packages/js/core/src/utils/getEnvFromUriHistory.ts +++ b/packages/js/core/src/utils/getEnvFromUriHistory.ts @@ -1,8 +1,8 @@ -import { Uri, Client, Env } from "../types"; +import { Uri, CoreClient, Env } from "../types"; export const getEnvFromUriHistory = ( uriHistory: Uri[], - client: Client + client: CoreClient ): Env | undefined => { for (const uri of uriHistory) { const env = client.getEnvByUri(uri); diff --git a/packages/js/plugin/src/PluginMethod.ts b/packages/js/plugin/src/PluginMethod.ts index 8138d06599..0e4fd77675 100644 --- a/packages/js/plugin/src/PluginMethod.ts +++ b/packages/js/plugin/src/PluginMethod.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { Client, MaybeAsync } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync } from "@polywrap/core-js"; /** * Invocable plugin method. @@ -12,4 +12,4 @@ import { Client, MaybeAsync } from "@polywrap/core-js"; export type PluginMethod< TArgs extends Record = Record, TResult = unknown -> = (args: TArgs, client: Client) => MaybeAsync; +> = (args: TArgs, client: CoreClient) => MaybeAsync; diff --git a/packages/js/plugin/src/PluginModule.ts b/packages/js/plugin/src/PluginModule.ts index e86e645d43..739f0ff7f3 100644 --- a/packages/js/plugin/src/PluginModule.ts +++ b/packages/js/plugin/src/PluginModule.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ import { PluginMethod } from "./PluginMethod"; -import { Client } from "@polywrap/core-js"; +import { CoreClient } from "@polywrap/core-js"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; export abstract class PluginModule< @@ -33,7 +33,7 @@ export abstract class PluginModule< >( method: string, args: TArgs, - client: Client + client: CoreClient ): Promise> { const fn = this.getMethod(method); diff --git a/packages/js/plugin/src/PluginWrapper.ts b/packages/js/plugin/src/PluginWrapper.ts index 4f62aa172e..b1540953e4 100644 --- a/packages/js/plugin/src/PluginWrapper.ts +++ b/packages/js/plugin/src/PluginWrapper.ts @@ -2,7 +2,7 @@ import { PluginModule } from "./PluginModule"; import { Wrapper, - Client, + CoreClient, InvokeOptions, InvocableResult, Uri, @@ -42,7 +42,7 @@ export class PluginWrapper implements Wrapper { @Tracer.traceMethod("PluginWrapper: invoke", TracingLevel.High) public async invoke( options: InvokeOptions, - client: Client + client: CoreClient ): Promise> { Tracer.setAttribute( "label", diff --git a/packages/js/plugin/src/utils/PluginModuleWithMethods.ts b/packages/js/plugin/src/utils/PluginModuleWithMethods.ts index 2add3f36dd..665e264fff 100644 --- a/packages/js/plugin/src/utils/PluginModuleWithMethods.ts +++ b/packages/js/plugin/src/utils/PluginModuleWithMethods.ts @@ -4,7 +4,7 @@ import { PluginMethod } from "../PluginMethod"; import { PluginModule } from "../PluginModule"; import { GetPluginMethodsFunc } from "./GetPluginMethodsFunc"; -import { Client } from "@polywrap/core-js"; +import { CoreClient } from "@polywrap/core-js"; import { Result, ResultOk } from "@polywrap/result"; export class PluginModuleWithMethods< @@ -20,7 +20,7 @@ export class PluginModuleWithMethods< >( method: string, args: TArgs, - client: Client + client: CoreClient ): Promise> { const fn = this.getMethod(method); diff --git a/packages/js/plugins/ethereum/src/index.ts b/packages/js/plugins/ethereum/src/index.ts index dc559b1d29..a6f95bb920 100644 --- a/packages/js/plugins/ethereum/src/index.ts +++ b/packages/js/plugins/ethereum/src/index.ts @@ -1,5 +1,5 @@ import { - Client, + CoreClient, Module, Args_callContractView, Args_callContractStatic, @@ -64,7 +64,7 @@ export class EthereumPlugin extends Module { async callContractView( args: Args_callContractView, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); const abi = constructAbi(args.method); @@ -76,7 +76,7 @@ export class EthereumPlugin extends Module { async callContractStatic( args: Args_callContractStatic, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); const abi = constructAbi(args.method); @@ -110,7 +110,10 @@ export class EthereumPlugin extends Module { } } - async getBalance(args: Args_getBalance, _client: Client): Promise { + async getBalance( + args: Args_getBalance, + _client: CoreClient + ): Promise { const connection = await this._getConnection(args.connection); return ( await connection @@ -121,14 +124,14 @@ export class EthereumPlugin extends Module { async encodeParams( args: Args_encodeParams, - _client: Client + _client: CoreClient ): Promise { return defaultAbiCoder.encode(args.types, parseArgs(args.values)); } async encodeFunction( args: Args_encodeFunction, - _client: Client + _client: CoreClient ): Promise { const functionInterface = ethers.Contract.getInterface([args.method]); return functionInterface.encodeFunctionData( @@ -139,28 +142,28 @@ export class EthereumPlugin extends Module { async solidityPack( args: Args_solidityPack, - _client: Client + _client: CoreClient ): Promise { return ethers.utils.solidityPack(args.types, parseArgs(args.values)); } async solidityKeccak256( args: Args_solidityKeccak256, - _client: Client + _client: CoreClient ): Promise { return ethers.utils.solidityKeccak256(args.types, parseArgs(args.values)); } async soliditySha256( args: Args_soliditySha256, - _client: Client + _client: CoreClient ): Promise { return ethers.utils.soliditySha256(args.types, parseArgs(args.values)); } async getSignerAddress( args: Args_getSignerAddress, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); return await connection.getSigner().getAddress(); @@ -168,7 +171,7 @@ export class EthereumPlugin extends Module { async getSignerBalance( args: Args_getSignerBalance, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); return ( @@ -178,7 +181,7 @@ export class EthereumPlugin extends Module { async getSignerTransactionCount( args: Args_getSignerTransactionCount, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); return ( @@ -188,14 +191,17 @@ export class EthereumPlugin extends Module { ).toString(); } - async getGasPrice(args: Args_getGasPrice, _client: Client): Promise { + async getGasPrice( + args: Args_getGasPrice, + _client: CoreClient + ): Promise { const connection = await this._getConnection(args.connection); return (await connection.getSigner().getGasPrice()).toString(); } async estimateTransactionGas( args: Args_estimateTransactionGas, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); return ( @@ -205,7 +211,7 @@ export class EthereumPlugin extends Module { async estimateContractCallGas( args: Args_estimateContractCallGas, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); const abi = constructAbi(args.method); @@ -227,7 +233,7 @@ export class EthereumPlugin extends Module { async checkAddress( args: Args_checkAddress, - _client: Client + _client: CoreClient ): Promise { let address = args.address; @@ -248,19 +254,19 @@ export class EthereumPlugin extends Module { } } - async toWei(args: Args_toWei, _client: Client): Promise { + async toWei(args: Args_toWei, _client: CoreClient): Promise { const weiAmount = ethers.utils.parseEther(args.eth); return weiAmount.toString(); } - async toEth(args: Args_toEth, _client: Client): Promise { + async toEth(args: Args_toEth, _client: CoreClient): Promise { const etherAmount = ethers.utils.formatEther(args.wei); return etherAmount.toString(); } async waitForEvent( args: Args_waitForEvent, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); const abi = constructAbi(args.event); @@ -293,7 +299,7 @@ export class EthereumPlugin extends Module { async awaitTransaction( args: Args_awaitTransaction, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); const provider = connection.getProvider(); @@ -307,7 +313,10 @@ export class EthereumPlugin extends Module { return Mapping.toTxReceipt(res); } - async getNetwork(args: Args_getNetwork, _client: Client): Promise { + async getNetwork( + args: Args_getNetwork, + _client: CoreClient + ): Promise { const connection = await this._getConnection(args.connection); const provider = connection.getProvider(); const network = await provider.getNetwork(); @@ -320,7 +329,7 @@ export class EthereumPlugin extends Module { async requestAccounts( args: Args_requestAccounts, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); const provider = connection.getProvider(); @@ -329,7 +338,7 @@ export class EthereumPlugin extends Module { public async callContractMethod( args: Args_callContractMethod, - _client: Client + _client: CoreClient ): Promise { const res = await this._callContractMethod(args); return Mapping.toTxResponse(res); @@ -337,7 +346,7 @@ export class EthereumPlugin extends Module { public async callContractMethodAndWait( args: Args_callContractMethodAndWait, - _client: Client + _client: CoreClient ): Promise { const response = await this._callContractMethod(args); const res = await response.wait(); @@ -346,7 +355,7 @@ export class EthereumPlugin extends Module { public async sendTransaction( args: Args_sendTransaction, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); const signer = connection.getSigner(); @@ -356,7 +365,7 @@ export class EthereumPlugin extends Module { public async sendTransactionAndWait( args: Args_sendTransactionAndWait, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); const signer = connection.getSigner(); @@ -369,7 +378,7 @@ export class EthereumPlugin extends Module { public async deployContract( args: Args_deployContract, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); const signer = connection.getSigner(); @@ -382,13 +391,16 @@ export class EthereumPlugin extends Module { public async signMessage( args: Args_signMessage, - _client: Client + _client: CoreClient ): Promise { const connection = await this._getConnection(args.connection); return await connection.getSigner().signMessage(args.message); } - public async sendRPC(args: Args_sendRPC, _client: Client): Promise { + public async sendRPC( + args: Args_sendRPC, + _client: CoreClient + ): Promise { const connection = await this._getConnection(args.connection); const provider = connection.getProvider(); const response = await provider.send(args.method, args.params); diff --git a/packages/js/plugins/file-system/src/index.ts b/packages/js/plugins/file-system/src/index.ts index fbb948f088..0f02710860 100644 --- a/packages/js/plugins/file-system/src/index.ts +++ b/packages/js/plugins/file-system/src/index.ts @@ -1,5 +1,5 @@ import { - Client, + CoreClient, Module, manifest, Args_readFile, @@ -18,7 +18,10 @@ import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; type NoConfig = Record; export class FileSystemPlugin extends Module { - async readFile(args: Args_readFile, _client: Client): Promise { + async readFile( + args: Args_readFile, + _client: CoreClient + ): Promise { return fs.promises .readFile(args.path) .then((buffer) => new Uint8Array(buffer)); @@ -26,27 +29,27 @@ export class FileSystemPlugin extends Module { async readFileAsString( args: Args_readFileAsString, - _client: Client + _client: CoreClient ): Promise { return fs.promises.readFile(args.path, { encoding: fileSystemEncodingToBufferEncoding(args.encoding), }); } - async exists(args: Args_exists, _client: Client): Promise { + async exists(args: Args_exists, _client: CoreClient): Promise { return fs.existsSync(args.path); } async writeFile( args: Args_writeFile, - _client: Client + _client: CoreClient ): Promise { await fs.promises.writeFile(args.path, Buffer.from(args.data)); return true; } - async mkdir(args: Args_mkdir, _client: Client): Promise { + async mkdir(args: Args_mkdir, _client: CoreClient): Promise { await fs.promises.mkdir(args.path, { recursive: args.recursive ?? false, }); @@ -54,7 +57,7 @@ export class FileSystemPlugin extends Module { return true; } - async rm(args: Args_rm, _client: Client): Promise { + async rm(args: Args_rm, _client: CoreClient): Promise { await fs.promises.rm(args.path, { recursive: args.recursive ?? false, force: args.force ?? false, @@ -63,7 +66,7 @@ export class FileSystemPlugin extends Module { return true; } - async rmdir(args: Args_rmdir, _client: Client): Promise { + async rmdir(args: Args_rmdir, _client: CoreClient): Promise { await fs.promises.rmdir(args.path); return true; diff --git a/packages/js/plugins/http/src/__tests__/unit/index.test.ts b/packages/js/plugins/http/src/__tests__/unit/index.test.ts index 43a9afa90d..2157ccc202 100644 --- a/packages/js/plugins/http/src/__tests__/unit/index.test.ts +++ b/packages/js/plugins/http/src/__tests__/unit/index.test.ts @@ -1,5 +1,5 @@ import { HttpPlugin } from "../.."; -import { Http_ResponseTypeEnum, Client } from "../../wrap"; +import { Http_ResponseTypeEnum, CoreClient } from "../../wrap"; import axios, { AxiosResponse, AxiosRequestConfig } from "axios"; @@ -42,7 +42,7 @@ describe("test http plugin", () => { responseType: Http_ResponseTypeEnum.TEXT, }, }, - {} as Client + {} as CoreClient ); expect(mockedAxios.get).lastCalledWith("/api/test", { @@ -85,7 +85,7 @@ describe("test http plugin", () => { responseType: "BINARY", }, }, - {} as Client + {} as CoreClient ); expect(mockedAxios.get).lastCalledWith("/api/test", { @@ -138,7 +138,7 @@ describe("test http plugin", () => { responseType: "TEXT", }, }, - {} as Client + {} as CoreClient ); expect(mockedAxios.post).lastCalledWith("/api/test", "{request: 1001}", { @@ -182,7 +182,7 @@ describe("test http plugin", () => { responseType: "BINARY", }, }, - {} as Client + {} as CoreClient ); expect(mockedAxios.post).lastCalledWith("/api/test", "{request: 1001}", { diff --git a/packages/js/plugins/http/src/index.ts b/packages/js/plugins/http/src/index.ts index e9d79dc315..ce1b573d42 100644 --- a/packages/js/plugins/http/src/index.ts +++ b/packages/js/plugins/http/src/index.ts @@ -1,5 +1,5 @@ import { - Client, + CoreClient, Module, Args_get, Args_post, @@ -16,7 +16,7 @@ type NoConfig = Record; export class HttpPlugin extends Module { public async get( args: Args_get, - _client: Client + _client: CoreClient ): Promise { const response = await axios.get( args.url, @@ -27,7 +27,7 @@ export class HttpPlugin extends Module { public async post( args: Args_post, - _client: Client + _client: CoreClient ): Promise { const response = await axios.post( args.url, diff --git a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts index 5c037591a0..9f6d647522 100644 --- a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts @@ -6,17 +6,20 @@ import { } from "@polywrap/test-env-js"; import { Ipfs_Module } from "../wrap"; -import { Client } from "@polywrap/core-js"; +import { CoreClient } from "@polywrap/core-js"; import { ResultOk } from "@polywrap/result"; import { PolywrapClient } from "@polywrap/client-js"; -import createIpfsClient, { IpfsClient, IpfsFileInfo } from "@polywrap/ipfs-http-client-lite"; +import createIpfsClient, { + IpfsClient, + IpfsFileInfo, +} from "@polywrap/ipfs-http-client-lite"; import { UriResolver } from "@polywrap/uri-resolvers-js"; import { ipfsPlugin } from ".."; jest.setTimeout(300000); describe("IPFS Plugin", () => { - let client: Client; + let client: CoreClient; let ipfs: IpfsClient; const sampleFileTextContents = "Hello World!"; diff --git a/packages/js/plugins/ipfs/src/index.ts b/packages/js/plugins/ipfs/src/index.ts index ae38158024..597ee14f2b 100644 --- a/packages/js/plugins/ipfs/src/index.ts +++ b/packages/js/plugins/ipfs/src/index.ts @@ -10,7 +10,7 @@ import { } from "./wrap"; import { execSimple, execFallbacks } from "./utils/exec"; -import { Client } from "@polywrap/core-js"; +import { CoreClient } from "@polywrap/core-js"; import createIpfsClient, { IpfsClient } from "@polywrap/ipfs-http-client-lite"; import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; @@ -47,7 +47,7 @@ const getOptions = ( export type NoConfig = Record; export class IpfsPlugin extends Module { - public async cat(args: Args_cat, _client: Client): Promise { + public async cat(args: Args_cat, _client: CoreClient): Promise { const options = getOptions(args.options, this.env); return await this._execWithOptions( @@ -61,7 +61,7 @@ export class IpfsPlugin extends Module { public async resolve( args: Args_resolve, - _client: Client + _client: CoreClient ): Promise { const options = getOptions(args.options, this.env); diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts index e081af3f76..53f6c37c06 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/ens-resolver/src/index.ts @@ -1,5 +1,5 @@ import { - Client, + CoreClient, Module, Args_tryResolveUri, Args_getFile, @@ -38,7 +38,7 @@ export class EnsResolverPlugin extends Module { async tryResolveUri( args: Args_tryResolveUri, - client: Client + client: CoreClient ): Promise { if (args.authority !== "ens") { return null; @@ -63,11 +63,11 @@ export class EnsResolverPlugin extends Module { return { uri: null, manifest: null }; } - getFile(_args: Args_getFile, _client: Client): Bytes | null { + getFile(_args: Args_getFile, _client: CoreClient): Bytes | null { return null; } - async ensToCID(domain: string, client: Client): Promise { + async ensToCID(domain: string, client: CoreClient): Promise { const ensAbi = { resolver: "function resolver(bytes32 node) external view returns (address)", diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts index 42803f4c14..d497102c08 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/src/index.ts @@ -1,6 +1,6 @@ import { Bytes, - Client, + CoreClient, FileSystem_Module, Args_getFile, Args_tryResolveUri, @@ -17,7 +17,7 @@ type NoConfig = Record; export class FileSystemResolverPlugin extends Module { async tryResolveUri( args: Args_tryResolveUri, - _client: Client + _client: CoreClient ): Promise { if (args.authority !== "fs" && args.authority !== "file") { return null; @@ -52,7 +52,10 @@ export class FileSystemResolverPlugin extends Module { return { uri: null, manifest }; } - async getFile(args: Args_getFile, _client: Client): Promise { + async getFile( + args: Args_getFile, + _client: CoreClient + ): Promise { try { const fileResult = await FileSystem_Module.readFile( { path: args.path }, diff --git a/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts index 8c13313d57..e8b684a834 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/http-resolver/src/index.ts @@ -2,7 +2,7 @@ import { Args_getFile, Args_tryResolveUri, Bytes, - Client, + CoreClient, Http_Module, manifest, Module, @@ -17,7 +17,7 @@ export class HttpResolverPlugin extends Module { // uri-resolver.core.polywrap.eth public async tryResolveUri( args: Args_tryResolveUri, - _client: Client + _client: CoreClient ): Promise { if (args.authority !== "http" && args.authority !== "https") { return null; @@ -55,7 +55,7 @@ export class HttpResolverPlugin extends Module { public async getFile( args: Args_getFile, - client: Client + client: CoreClient ): Promise { try { const resolveResult = await Http_Module.get( diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts index 63f727fb4f..840ee85ea1 100644 --- a/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/index.ts @@ -2,7 +2,7 @@ import { Args_getFile, Args_tryResolveUri, Bytes, - Client, + CoreClient, Ipfs_Module, manifest, Module, @@ -18,7 +18,7 @@ export class IpfsResolverPlugin extends Module { // uri-resolver.core.polywrap.eth public async tryResolveUri( args: Args_tryResolveUri, - _client: Client + _client: CoreClient ): Promise { if (args.authority !== "ipfs") { return null; @@ -58,7 +58,7 @@ export class IpfsResolverPlugin extends Module { public async getFile( args: Args_getFile, - client: Client + client: CoreClient ): Promise { try { let provider: string | undefined = undefined; diff --git a/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts index bc38a0fe70..e9dba64183 100644 --- a/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/ws/src/__tests__/e2e/e2e.spec.ts @@ -3,7 +3,7 @@ import { Message } from "../../wrap"; import WS from "jest-websocket-mock"; import { PolywrapClient } from "@polywrap/client-js" -import { Client } from "@polywrap/core-js"; +import { CoreClient } from "@polywrap/core-js"; import { UriResolver } from "@polywrap/uri-resolvers-js"; import { PluginPackage } from "@polywrap/plugin-js"; @@ -138,7 +138,7 @@ describe("WebSocket plugin", () => { setup(); const callbackPlugin = PluginPackage.from(() => ({ - callback(args: { data: string }, _client: Client): void { + callback(args: { data: string }, _client: CoreClient): void { msgs.push(args.data); }, })); diff --git a/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts b/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts index 7cb17a83aa..0fc1c90cde 100644 --- a/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts +++ b/packages/js/plugins/ws/src/__tests__/e2e/integration.spec.ts @@ -1,4 +1,4 @@ -import { Client } from "@polywrap/core-js"; +import { CoreClient } from "@polywrap/core-js"; import { buildWrapper } from "@polywrap/test-env-js"; import WS from "jest-websocket-mock"; import { PluginPackage } from "@polywrap/plugin-js"; @@ -8,7 +8,7 @@ jest.setTimeout(360000); describe("e2e tests for WsPlugin", () => { describe("integration", () => { - let client: Client; + let client: CoreClient; let server: WS; const wrapperPath = `${__dirname}/integration`; @@ -46,15 +46,17 @@ describe("e2e tests for WsPlugin", () => { let msgs: string[] = []; const memoryPlugin = PluginPackage.from(() => ({ - callback(args: { data: string }, _client: Client): void { + callback(args: { data: string }, _client: CoreClient): void { msgs.push(args.data); }, })); - client = getClient([{ - uri: "wrap://ens/memory.polywrap.eth", - package: memoryPlugin, - }]); + client = getClient([ + { + uri: "wrap://ens/memory.polywrap.eth", + package: memoryPlugin, + }, + ]); await client.invoke({ uri, @@ -83,11 +85,14 @@ describe("e2e tests for WsPlugin", () => { let value: Record = {}; const memoryPlugin = PluginPackage.from(() => ({ - set(args: { key: string; value: string }, _client: Client): boolean { + set( + args: { key: string; value: string }, + _client: CoreClient + ): boolean { value[args.key] = args.value; return true; }, - get(args: { key: string }, _client: Client): string | null { + get(args: { key: string }, _client: CoreClient): string | null { return value[args.key] ?? null; }, })); diff --git a/packages/js/plugins/ws/src/index.ts b/packages/js/plugins/ws/src/index.ts index 8576c010b8..9eac814330 100644 --- a/packages/js/plugins/ws/src/index.ts +++ b/packages/js/plugins/ws/src/index.ts @@ -1,5 +1,5 @@ import { - Client, + CoreClient, Module, Message, Callback, @@ -24,7 +24,7 @@ export class WsPlugin extends Module { private _caches: Record = {}; private _mutex = true; - public async open(args: Args_open, _client: Client): Promise { + public async open(args: Args_open, _client: CoreClient): Promise { const id = this._sockets.length; const socket = new WebSocket(args.url); this._sockets.push(socket); @@ -40,7 +40,7 @@ export class WsPlugin extends Module { }); } - public async close(args: Args_close, _client: Client): Promise { + public async close(args: Args_close, _client: CoreClient): Promise { this._sockets[args.id].close(); return await new Promise((resolve) => { this._sockets[args.id].onclose = () => { @@ -49,12 +49,12 @@ export class WsPlugin extends Module { }); } - public send(args: Args_send, _client: Client): boolean { + public send(args: Args_send, _client: CoreClient): boolean { this._sockets[args.id].send(args.message); return true; } - public addCallback(args: Args_addCallback, _client: Client): boolean { + public addCallback(args: Args_addCallback, _client: CoreClient): boolean { const callbackId = this._callbackId(args.callback); this._callbacks[callbackId] = async (msg) => { await _client.invoke<{ callback: boolean }>({ @@ -70,7 +70,10 @@ export class WsPlugin extends Module { return true; } - public removeCallback(args: Args_removeCallback, _client: Client): boolean { + public removeCallback( + args: Args_removeCallback, + _client: CoreClient + ): boolean { const callbackId = this._callbackId(args.callback); this._sockets[args.id].removeEventListener( "message", @@ -79,7 +82,7 @@ export class WsPlugin extends Module { return true; } - public addCache(args: Args_addCache, _client: Client): boolean { + public addCache(args: Args_addCache, _client: CoreClient): boolean { const callback = { uri: args.id.toString(), method: "cache" }; const callbackId = this._callbackId(callback); this._caches[args.id] = []; @@ -103,7 +106,7 @@ export class WsPlugin extends Module { return true; } - public removeCache(args: Args_removeCache, _client: Client): boolean { + public removeCache(args: Args_removeCache, _client: CoreClient): boolean { const callback = { uri: args.id.toString(), method: "cache" }; const callbackId = this._callbackId(callback); this._sockets[args.id].removeEventListener( @@ -115,7 +118,7 @@ export class WsPlugin extends Module { public async receive( args: Args_receive, - _client: Client + _client: CoreClient ): Promise { return await new Promise((resolve) => { let interval: ReturnType; diff --git a/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts b/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts index 4b2f400069..27fba53da5 100644 --- a/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts +++ b/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts @@ -2,7 +2,7 @@ import { UriResolverWrapper } from "./UriResolverWrapper"; import { Uri, - Client, + CoreClient, IUriResolver, getImplementations, coreInterfaceUris, @@ -15,10 +15,7 @@ import { UriResolutionResult, } from "@polywrap/uri-resolvers-js"; -export class ExtendableUriResolver extends UriResolverAggregatorBase< - Error, - Error -> { +export class ExtendableUriResolver extends UriResolverAggregatorBase { private readonly resolverName: string; constructor(resolverName?: string) { @@ -28,7 +25,7 @@ export class ExtendableUriResolver extends UriResolverAggregatorBase< async getUriResolvers( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise[], Error>> { const getImplementationsResult = getImplementations( @@ -52,7 +49,7 @@ export class ExtendableUriResolver extends UriResolverAggregatorBase< async tryResolveUri( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise> { const result = await this.getUriResolvers(uri, client, resolutionContext); diff --git a/packages/js/uri-resolver-extensions/src/ResolverExtensionLoader.ts b/packages/js/uri-resolver-extensions/src/ResolverExtensionLoader.ts index efc2c12d6e..bdb9caa397 100644 --- a/packages/js/uri-resolver-extensions/src/ResolverExtensionLoader.ts +++ b/packages/js/uri-resolver-extensions/src/ResolverExtensionLoader.ts @@ -1,10 +1,15 @@ -import { Uri, Client, Wrapper, IUriResolutionContext } from "@polywrap/core-js"; +import { + Uri, + CoreClient, + Wrapper, + IUriResolutionContext, +} from "@polywrap/core-js"; import { Result, ResultErr, ResultOk } from "@polywrap/result"; export const loadResolverExtension = async ( currentUri: Uri, resolverExtensionUri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise> => { const result = await client.tryResolveUri({ diff --git a/packages/js/uri-resolver-extensions/src/UriResolverExtensionFileReader.ts b/packages/js/uri-resolver-extensions/src/UriResolverExtensionFileReader.ts index 4152a907c6..b367d8df4d 100644 --- a/packages/js/uri-resolver-extensions/src/UriResolverExtensionFileReader.ts +++ b/packages/js/uri-resolver-extensions/src/UriResolverExtensionFileReader.ts @@ -1,5 +1,5 @@ import { - Client, + CoreClient, combinePaths, InvokeOptions, InvokeResult, @@ -14,7 +14,7 @@ export class UriResolverExtensionFileReader implements IFileReader { constructor( private readonly resolverExtensionUri: Uri, private readonly wrapperUri: Uri, - private readonly client: Client + private readonly client: CoreClient ) {} async readFile(filePath: string): Promise> { diff --git a/packages/js/uri-resolver-extensions/src/UriResolverWrapper.ts b/packages/js/uri-resolver-extensions/src/UriResolverWrapper.ts index f9ef84f963..ba7ed50958 100644 --- a/packages/js/uri-resolver-extensions/src/UriResolverWrapper.ts +++ b/packages/js/uri-resolver-extensions/src/UriResolverWrapper.ts @@ -3,7 +3,7 @@ import { loadResolverExtension } from "./ResolverExtensionLoader"; import { Uri, - Client, + CoreClient, UriResolverInterface, IUriResolutionContext, UriPackageOrWrapper, @@ -26,7 +26,7 @@ export class UriResolverWrapper extends ResolverWithHistory { protected async _tryResolveUri( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise> { const result = await tryResolveUriWithImplementation( @@ -60,7 +60,7 @@ export class UriResolverWrapper extends ResolverWithHistory { const tryResolveUriWithImplementation = async ( uri: Uri, implementationUri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise< Result diff --git a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts index 87caf7d7bf..dc7123501b 100644 --- a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts +++ b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregator.ts @@ -2,16 +2,16 @@ import { UriResolverAggregatorBase } from "./UriResolverAggregatorBase"; import { UriResolver, UriResolverLike } from "../helpers"; import { Result, ResultOk } from "@polywrap/result"; -import { IUriResolver, Uri, Client } from "@polywrap/core-js"; +import { IUriResolver, Uri, CoreClient } from "@polywrap/core-js"; export type GetResolversFunc = ( uri: Uri, - client: Client + client: CoreClient ) => Promise[]>; export type GetResolversWithErrorFunc = ( uri: Uri, - client: Client + client: CoreClient ) => Promise[], TError>>; export class UriResolverAggregator< @@ -27,7 +27,7 @@ export class UriResolverAggregator< constructor( resolvers: ( uri: Uri, - client: Client + client: CoreClient ) => Promise[], TGetResolversError>>, resolverName?: string ); @@ -49,7 +49,7 @@ export class UriResolverAggregator< async getUriResolvers( uri: Uri, - client: Client + client: CoreClient ): Promise[], TGetResolversError>> { if (Array.isArray(this.resolvers)) { return ResultOk(this.resolvers); diff --git a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts index e5c526579c..7247fd0523 100644 --- a/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts +++ b/packages/js/uri-resolvers/src/aggregator/UriResolverAggregatorBase.ts @@ -3,7 +3,7 @@ import { UriResolutionResult } from "../helpers"; import { IUriResolver, Uri, - Client, + CoreClient, IUriResolutionContext, UriPackageOrWrapper, } from "@polywrap/core-js"; @@ -15,13 +15,13 @@ export abstract class UriResolverAggregatorBase< > implements IUriResolver { abstract getUriResolvers( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise[], TGetResolversError>>; async tryResolveUri( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise< Result @@ -53,7 +53,7 @@ export abstract class UriResolverAggregatorBase< protected async tryResolveUriWithResolvers( uri: Uri, - client: Client, + client: CoreClient, resolvers: IUriResolver[], resolutionContext: IUriResolutionContext ): Promise> { diff --git a/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts b/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts index 615f9ba99e..ca7198aa51 100644 --- a/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts +++ b/packages/js/uri-resolvers/src/cache/PackageToWrapperCacheResolver.ts @@ -4,7 +4,7 @@ import { UriResolver, UriResolutionResult, UriResolverLike } from "../helpers"; import { IUriResolver, Uri, - Client, + CoreClient, IUriResolutionContext, UriPackageOrWrapper, } from "@polywrap/core-js"; @@ -41,7 +41,7 @@ export class PackageToWrapperCacheResolver async tryResolveUri( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise> { const wrapper = await this.cache.get(uri); diff --git a/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts b/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts index e4117f4179..eb46c971b9 100644 --- a/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts +++ b/packages/js/uri-resolvers/src/helpers/RecursiveResolver.ts @@ -7,7 +7,7 @@ import { Result } from "@polywrap/result"; import { IUriResolver, Uri, - Client, + CoreClient, IUriResolutionContext, UriPackageOrWrapper, } from "@polywrap/core-js"; @@ -24,7 +24,7 @@ export class RecursiveResolver async tryResolveUri( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise> { if (resolutionContext.isResolving(uri)) { @@ -56,7 +56,7 @@ export class RecursiveResolver private async tryResolveAgainIfRedirect( result: Result, uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise> { if (result.ok && result.value.type === "uri") { diff --git a/packages/js/uri-resolvers/src/helpers/ResolverWithHistory.ts b/packages/js/uri-resolvers/src/helpers/ResolverWithHistory.ts index 09f4394b02..d435589d35 100644 --- a/packages/js/uri-resolvers/src/helpers/ResolverWithHistory.ts +++ b/packages/js/uri-resolvers/src/helpers/ResolverWithHistory.ts @@ -1,7 +1,7 @@ import { IUriResolver, Uri, - Client, + CoreClient, IUriResolutionContext, UriPackageOrWrapper, } from "@polywrap/core-js"; @@ -11,7 +11,7 @@ export abstract class ResolverWithHistory implements IUriResolver { async tryResolveUri( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise> { const result = await this._tryResolveUri(uri, client, resolutionContext); @@ -32,7 +32,7 @@ export abstract class ResolverWithHistory protected abstract _tryResolveUri( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise>; } diff --git a/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts b/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts index 2e55cf131d..9ea8ea8697 100644 --- a/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts +++ b/packages/js/uri-resolvers/src/helpers/ResolverWithLoopGuard.ts @@ -6,7 +6,7 @@ import { UriResolver } from "./UriResolver"; import { IUriResolver, Uri, - Client, + CoreClient, IUriResolutionContext, UriPackageOrWrapper, } from "@polywrap/core-js"; @@ -26,7 +26,7 @@ export class ResolverWithLoopGuard async tryResolveUri( uri: Uri, - client: Client, + client: CoreClient, resolutionContext: IUriResolutionContext ): Promise> { if (resolutionContext.isResolving(uri)) { diff --git a/packages/js/uri-resolvers/src/helpers/UriResolver.ts b/packages/js/uri-resolvers/src/helpers/UriResolver.ts index c26994e152..f9b55411bc 100644 --- a/packages/js/uri-resolvers/src/helpers/UriResolver.ts +++ b/packages/js/uri-resolvers/src/helpers/UriResolver.ts @@ -8,7 +8,7 @@ import { Result } from "@polywrap/result"; import { IUriResolver, Uri, - Client, + CoreClient, IUriRedirect, IUriPackage, IUriWrapper, @@ -30,7 +30,7 @@ export class UriResolver { return new UriResolverAggregator( resolverLike as ( uri: Uri, - client: Client + client: CoreClient ) => Promise>, resolverName ) as IUriResolver; diff --git a/packages/js/uri-resolvers/src/legacy/LegacyRedirectsResolver.ts b/packages/js/uri-resolvers/src/legacy/LegacyRedirectsResolver.ts index ffb2384d3b..216b1e96c3 100644 --- a/packages/js/uri-resolvers/src/legacy/LegacyRedirectsResolver.ts +++ b/packages/js/uri-resolvers/src/legacy/LegacyRedirectsResolver.ts @@ -1,12 +1,12 @@ import { RedirectResolver } from ".."; import { UriResolverAggregator } from ".."; -import { Uri, Client } from "@polywrap/core-js"; +import { Uri, CoreClient } from "@polywrap/core-js"; export class LegacyRedirectsResolver extends UriResolverAggregator { constructor() { super( - async (uri: Uri, client: Client) => + async (uri: Uri, client: CoreClient) => client .getRedirects() ?.map( diff --git a/packages/js/uri-resolvers/src/static/StaticResolver.ts b/packages/js/uri-resolvers/src/static/StaticResolver.ts index 34163642da..0ec59c350d 100644 --- a/packages/js/uri-resolvers/src/static/StaticResolver.ts +++ b/packages/js/uri-resolvers/src/static/StaticResolver.ts @@ -1,7 +1,7 @@ import { UriResolutionResult, UriResolverLike } from "../helpers"; import { - Client, + CoreClient, IUriResolutionContext, IUriResolver, Uri, @@ -12,8 +12,7 @@ import { } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; -export class StaticResolver - implements IUriResolver { +export class StaticResolver implements IUriResolver { constructor(public uriMap: Map) {} static from( @@ -71,7 +70,7 @@ export class StaticResolver async tryResolveUri( uri: Uri, - _: Client, + _: CoreClient, resolutionContext: IUriResolutionContext ): Promise> { const uriPackageOrWrapper = this.uriMap.get(uri.uri); diff --git a/packages/js/wasm/src/WasmWrapper.ts b/packages/js/wasm/src/WasmWrapper.ts index 84bab85961..1cb83f16d0 100644 --- a/packages/js/wasm/src/WasmWrapper.ts +++ b/packages/js/wasm/src/WasmWrapper.ts @@ -13,7 +13,7 @@ import { Wrapper, Uri, InvokeOptions, - Client, + CoreClient, InvocableResult, isBuffer, GetFileOptions, @@ -139,7 +139,7 @@ export class WasmWrapper implements Wrapper { @Tracer.traceMethod("WasmWrapper: invoke", TracingLevel.High) public async invoke( options: InvokeOptions, - client: Client + client: CoreClient ): Promise> { Tracer.setAttribute( "label", diff --git a/packages/js/wasm/src/imports.ts b/packages/js/wasm/src/imports.ts index 0ec6338fe2..4cecf0ae82 100644 --- a/packages/js/wasm/src/imports.ts +++ b/packages/js/wasm/src/imports.ts @@ -5,10 +5,10 @@ import { readBytes, readString, writeBytes, writeString } from "./buffer"; import { State } from "./WasmWrapper"; import { msgpackEncode } from "@polywrap/msgpack-js"; -import { Client } from "@polywrap/core-js"; +import { CoreClient } from "@polywrap/core-js"; export const createImports = (config: { - client: Client; + client: CoreClient; memory: WebAssembly.Memory; state: State; abort: (message: string) => never; diff --git a/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache b/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache index f02416fdc8..280ace82ea 100644 --- a/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache +++ b/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache @@ -3,7 +3,7 @@ import * as Types from "./"; // @ts-ignore import { - Client, + CoreClient, InvokeResult } from "@polywrap/core-js"; @@ -100,7 +100,7 @@ export const {{type}} = { {{#methods}} {{name}}: async ( args: {{parent.type}}_Args_{{name}}, - client: Client, + client: CoreClient, uri: string = "{{parent.uri}}" ): Promise> => { return client.invoke<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>({ diff --git a/packages/schema/bind/src/bindings/typescript/plugin/templates/index-ts.mustache b/packages/schema/bind/src/bindings/typescript/plugin/templates/index-ts.mustache index 315871f96d..4f5ca809d5 100644 --- a/packages/schema/bind/src/bindings/typescript/plugin/templates/index-ts.mustache +++ b/packages/schema/bind/src/bindings/typescript/plugin/templates/index-ts.mustache @@ -5,4 +5,4 @@ export * from "./wrap.info"; export * from "./module"; export * from "./types"; -export { Client } from "@polywrap/core-js"; +export { CoreClient } from "@polywrap/core-js"; diff --git a/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache b/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache index 9c65a304bc..c51297e089 100644 --- a/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache +++ b/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache @@ -3,7 +3,7 @@ import * as Types from "./types"; -import { Client, MaybeAsync } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync } from "@polywrap/core-js"; import { PluginModule } from "@polywrap/plugin-js"; {{#moduleType}} {{#methods}} @@ -27,7 +27,7 @@ export abstract class Module< abstract {{name}}( args: Args_{{name}}, - client: Client + client: CoreClient ): MaybeAsync<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>; {{/methods}} {{/moduleType}} diff --git a/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache b/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache index fe7452afe4..00dc85df95 100644 --- a/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache +++ b/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache @@ -6,7 +6,7 @@ import * as Types from "./"; // @ts-ignore import { - Client,{{#interfaceTypes.length}} + CoreClient,{{#interfaceTypes.length}} Result,{{/interfaceTypes.length}} InvokeResult } from "@polywrap/core-js"; @@ -112,7 +112,7 @@ export const {{type}} = { {{#methods}} {{name}}: async ( args: {{parent.type}}_Args_{{name}}, - client: Client + client: CoreClient ): Promise> => { return client.invoke<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>({ uri: "{{parent.uri}}", @@ -137,7 +137,7 @@ export class {{#detectKeyword}}{{type}}{{/detectKeyword}} { {{#methods}} public async {{name}} ( args: {{parent.type}}_Args_{{name}}, - client: Client + client: CoreClient ): Promise> { return client.invoke<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>({ uri: this.uri, @@ -163,7 +163,7 @@ export class {{#detectKeyword}}{{namespace}}{{/detectKeyword}} { {{#capabilities}} {{#getImplementations}} {{#enabled}} - public static getImplementations(client: Client): Result { + public static getImplementations(client: CoreClient): Result { return client.getImplementations(this.uri, {}); } {{/enabled}} diff --git a/packages/templates/wasm/assemblyscript/src/__tests__/utils.ts b/packages/templates/wasm/assemblyscript/src/__tests__/utils.ts index 9db483949d..d57390c992 100644 --- a/packages/templates/wasm/assemblyscript/src/__tests__/utils.ts +++ b/packages/templates/wasm/assemblyscript/src/__tests__/utils.ts @@ -1,13 +1,17 @@ -import { ClientConfig } from "@polywrap/client-js"; +import { CoreClientConfig } from "@polywrap/client-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; -import { Connection, Connections, ethereumPlugin } from "@polywrap/ethereum-plugin-js"; +import { + Connection, + Connections, + ethereumPlugin, +} from "@polywrap/ethereum-plugin-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; export function getPlugins( ethereum: string, ipfs: string, ensAddress: string -): Partial { +): Partial { return { redirects: [], plugins: [ @@ -25,7 +29,7 @@ export function getPlugins( connections: new Connections({ networks: { testnet: new Connection({ provider: ethereum }), - mainnet: new Connection({ provider: "http://localhost:8546", }), + mainnet: new Connection({ provider: "http://localhost:8546" }), }, defaultNetwork: "testnet", }), @@ -33,4 +37,4 @@ export function getPlugins( }, ], }; -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/bind/sanity/output/app-ts/types.ts b/packages/test-cases/cases/bind/sanity/output/app-ts/types.ts index 03a1469314..28617e361e 100644 --- a/packages/test-cases/cases/bind/sanity/output/app-ts/types.ts +++ b/packages/test-cases/cases/bind/sanity/output/app-ts/types.ts @@ -3,7 +3,7 @@ import * as Types from "./"; // @ts-ignore import { - Client, + CoreClient, InvokeResult } from "@polywrap/core-js"; @@ -185,39 +185,39 @@ interface TestImport_Module_Args_returnsArrayOfEnums { export const TestImport_Module = { importedMethod: async ( args: TestImport_Module_Args_importedMethod, - client: Client, + client: CoreClient, uri: string = "testimport.uri.eth" ): Promise> => { return client.invoke({ uri, method: "importedMethod", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, anotherMethod: async ( args: TestImport_Module_Args_anotherMethod, - client: Client, + client: CoreClient, uri: string = "testimport.uri.eth" ): Promise> => { return client.invoke({ uri, method: "anotherMethod", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, returnsArrayOfEnums: async ( args: TestImport_Module_Args_returnsArrayOfEnums, - client: Client, + client: CoreClient, uri: string = "testimport.uri.eth" ): Promise>> => { return client.invoke>({ uri, method: "returnsArrayOfEnums", - args: args as unknown as Record + args: (args as unknown) as Record, }); - } -} + }, +}; /// Imported Modules END /// diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/index.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/index.ts index 315871f96d..4f5ca809d5 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/index.ts @@ -5,4 +5,4 @@ export * from "./wrap.info"; export * from "./module"; export * from "./types"; -export { Client } from "@polywrap/core-js"; +export { CoreClient } from "@polywrap/core-js"; diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts index cb81a0a55b..aa0c37e5ea 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts @@ -3,7 +3,7 @@ import * as Types from "./types"; -import { Client, MaybeAsync } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync } from "@polywrap/core-js"; import { PluginModule } from "@polywrap/plugin-js"; export interface Args_moduleMethod { @@ -38,30 +38,21 @@ export interface Args_if { if: Types._else; } -export abstract class Module< - TConfig -> extends PluginModule< - TConfig, - Types.Env -> { - +export abstract class Module extends PluginModule { abstract moduleMethod( args: Args_moduleMethod, - client: Client + client: CoreClient ): MaybeAsync; abstract objectMethod( args: Args_objectMethod, - client: Client + client: CoreClient ): MaybeAsync; abstract optionalEnvMethod( args: Args_optionalEnvMethod, - client: Client + client: CoreClient ): MaybeAsync; - abstract if( - args: Args_if, - client: Client - ): MaybeAsync; + abstract if(args: Args_if, client: CoreClient): MaybeAsync; } diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts index 451dffce31..cdcdb4485f 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts @@ -5,11 +5,7 @@ import * as Types from "./"; // @ts-ignore -import { - Client, - Result, - InvokeResult -} from "@polywrap/core-js"; +import { CoreClient, Result, InvokeResult } from "@polywrap/core-js"; export type UInt = number; export type UInt8 = number; @@ -199,39 +195,38 @@ interface TestImport_Module_Args_returnsArrayOfEnums { export class TestImport_Module { public static interfaceUri: string = "testimport.uri.eth"; - constructor(public uri: string) { - } + constructor(public uri: string) {} - public async importedMethod ( + public async importedMethod( args: TestImport_Module_Args_importedMethod, - client: Client + client: CoreClient ): Promise> { return client.invoke({ uri: this.uri, method: "importedMethod", - args: args as unknown as Record + args: (args as unknown) as Record, }); } - public async anotherMethod ( + public async anotherMethod( args: TestImport_Module_Args_anotherMethod, - client: Client + client: CoreClient ): Promise> { return client.invoke({ uri: this.uri, method: "anotherMethod", - args: args as unknown as Record + args: (args as unknown) as Record, }); } - public async returnsArrayOfEnums ( + public async returnsArrayOfEnums( args: TestImport_Module_Args_returnsArrayOfEnums, - client: Client + client: CoreClient ): Promise>> { return client.invoke>({ uri: this.uri, method: "returnsArrayOfEnums", - args: args as unknown as Record + args: (args as unknown) as Record, }); } } @@ -241,7 +236,9 @@ export class TestImport_Module { export class TestImport { static uri: string = "testimport.uri.eth"; - public static getImplementations(client: Client): Result { + public static getImplementations( + client: CoreClient + ): Result { return client.getImplementations(this.uri, {}); } } diff --git a/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/index.ts b/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/index.ts index 315871f96d..4f5ca809d5 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/index.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/index.ts @@ -5,4 +5,4 @@ export * from "./wrap.info"; export * from "./module"; export * from "./types"; -export { Client } from "@polywrap/core-js"; +export { CoreClient } from "@polywrap/core-js"; diff --git a/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/module.ts index d80585a809..d08b1a1fda 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/module.ts @@ -3,7 +3,7 @@ import * as Types from "./types"; -import { Client, MaybeAsync } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync } from "@polywrap/core-js"; import { PluginModule } from "@polywrap/plugin-js"; export interface Args_methodOne { @@ -15,20 +15,14 @@ export interface Args_methodTwo { arg: Types.UInt32; } -export abstract class Module< - TConfig -> extends PluginModule< - TConfig, - Types.Env -> { - +export abstract class Module extends PluginModule { abstract methodOne( args: Args_methodOne, - client: Client + client: CoreClient ): MaybeAsync; abstract methodTwo( args: Args_methodTwo, - client: Client + client: CoreClient ): MaybeAsync; } diff --git a/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/types.ts b/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/types.ts index 3172a4e4b0..75ae05ea60 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/types.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/types.ts @@ -6,7 +6,7 @@ import * as Types from "./"; // @ts-ignore import { - Client, + CoreClient, InvokeResult } from "@polywrap/core-js"; @@ -346,311 +346,311 @@ interface Ethereum_Module_Args_sendRPC { export const Ethereum_Module = { callContractView: async ( args: Ethereum_Module_Args_callContractView, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractView", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractStatic: async ( args: Ethereum_Module_Args_callContractStatic, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractStatic", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getBalance: async ( args: Ethereum_Module_Args_getBalance, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getBalance", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, encodeParams: async ( args: Ethereum_Module_Args_encodeParams, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "encodeParams", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, encodeFunction: async ( args: Ethereum_Module_Args_encodeFunction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "encodeFunction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, solidityPack: async ( args: Ethereum_Module_Args_solidityPack, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "solidityPack", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, solidityKeccak256: async ( args: Ethereum_Module_Args_solidityKeccak256, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "solidityKeccak256", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, soliditySha256: async ( args: Ethereum_Module_Args_soliditySha256, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "soliditySha256", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerAddress: async ( args: Ethereum_Module_Args_getSignerAddress, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerAddress", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerBalance: async ( args: Ethereum_Module_Args_getSignerBalance, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerBalance", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerTransactionCount: async ( args: Ethereum_Module_Args_getSignerTransactionCount, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerTransactionCount", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getGasPrice: async ( args: Ethereum_Module_Args_getGasPrice, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getGasPrice", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, estimateTransactionGas: async ( args: Ethereum_Module_Args_estimateTransactionGas, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "estimateTransactionGas", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, estimateContractCallGas: async ( args: Ethereum_Module_Args_estimateContractCallGas, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "estimateContractCallGas", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, checkAddress: async ( args: Ethereum_Module_Args_checkAddress, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "checkAddress", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, toWei: async ( args: Ethereum_Module_Args_toWei, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "toWei", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, toEth: async ( args: Ethereum_Module_Args_toEth, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "toEth", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, awaitTransaction: async ( args: Ethereum_Module_Args_awaitTransaction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "awaitTransaction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, waitForEvent: async ( args: Ethereum_Module_Args_waitForEvent, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "waitForEvent", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getNetwork: async ( args: Ethereum_Module_Args_getNetwork, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getNetwork", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, requestAccounts: async ( args: Ethereum_Module_Args_requestAccounts, - client: Client + client: CoreClient ): Promise>> => { return client.invoke>({ uri: "ens/ethereum.polywrap.eth", method: "requestAccounts", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractMethod: async ( args: Ethereum_Module_Args_callContractMethod, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractMethod", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractMethodAndWait: async ( args: Ethereum_Module_Args_callContractMethodAndWait, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractMethodAndWait", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendTransaction: async ( args: Ethereum_Module_Args_sendTransaction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendTransaction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendTransactionAndWait: async ( args: Ethereum_Module_Args_sendTransactionAndWait, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendTransactionAndWait", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, deployContract: async ( args: Ethereum_Module_Args_deployContract, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "deployContract", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, signMessage: async ( args: Ethereum_Module_Args_signMessage, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "signMessage", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendRPC: async ( args: Ethereum_Module_Args_sendRPC, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendRPC", - args: args as unknown as Record + args: (args as unknown) as Record, }); - } -} + }, +}; /// Imported Modules END /// diff --git a/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/index.ts b/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/index.ts index 315871f96d..4f5ca809d5 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/index.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/index.ts @@ -5,4 +5,4 @@ export * from "./wrap.info"; export * from "./module"; export * from "./types"; -export { Client } from "@polywrap/core-js"; +export { CoreClient } from "@polywrap/core-js"; diff --git a/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/module.ts index f9668a2f3e..0643894c24 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/module.ts @@ -3,7 +3,7 @@ import * as Types from "./types"; -import { Client, MaybeAsync } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync } from "@polywrap/core-js"; import { PluginModule } from "@polywrap/plugin-js"; export interface Args_method { @@ -11,15 +11,9 @@ export interface Args_method { optStr?: Types.String | null; } -export abstract class Module< - TConfig -> extends PluginModule< - TConfig, - Types.Env -> { - +export abstract class Module extends PluginModule { abstract method( args: Args_method, - client: Client + client: CoreClient ): MaybeAsync; } diff --git a/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/types.ts b/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/types.ts index 3172a4e4b0..75ae05ea60 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/types.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/types.ts @@ -6,7 +6,7 @@ import * as Types from "./"; // @ts-ignore import { - Client, + CoreClient, InvokeResult } from "@polywrap/core-js"; @@ -346,311 +346,311 @@ interface Ethereum_Module_Args_sendRPC { export const Ethereum_Module = { callContractView: async ( args: Ethereum_Module_Args_callContractView, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractView", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractStatic: async ( args: Ethereum_Module_Args_callContractStatic, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractStatic", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getBalance: async ( args: Ethereum_Module_Args_getBalance, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getBalance", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, encodeParams: async ( args: Ethereum_Module_Args_encodeParams, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "encodeParams", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, encodeFunction: async ( args: Ethereum_Module_Args_encodeFunction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "encodeFunction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, solidityPack: async ( args: Ethereum_Module_Args_solidityPack, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "solidityPack", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, solidityKeccak256: async ( args: Ethereum_Module_Args_solidityKeccak256, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "solidityKeccak256", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, soliditySha256: async ( args: Ethereum_Module_Args_soliditySha256, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "soliditySha256", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerAddress: async ( args: Ethereum_Module_Args_getSignerAddress, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerAddress", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerBalance: async ( args: Ethereum_Module_Args_getSignerBalance, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerBalance", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerTransactionCount: async ( args: Ethereum_Module_Args_getSignerTransactionCount, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerTransactionCount", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getGasPrice: async ( args: Ethereum_Module_Args_getGasPrice, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getGasPrice", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, estimateTransactionGas: async ( args: Ethereum_Module_Args_estimateTransactionGas, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "estimateTransactionGas", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, estimateContractCallGas: async ( args: Ethereum_Module_Args_estimateContractCallGas, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "estimateContractCallGas", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, checkAddress: async ( args: Ethereum_Module_Args_checkAddress, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "checkAddress", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, toWei: async ( args: Ethereum_Module_Args_toWei, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "toWei", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, toEth: async ( args: Ethereum_Module_Args_toEth, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "toEth", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, awaitTransaction: async ( args: Ethereum_Module_Args_awaitTransaction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "awaitTransaction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, waitForEvent: async ( args: Ethereum_Module_Args_waitForEvent, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "waitForEvent", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getNetwork: async ( args: Ethereum_Module_Args_getNetwork, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getNetwork", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, requestAccounts: async ( args: Ethereum_Module_Args_requestAccounts, - client: Client + client: CoreClient ): Promise>> => { return client.invoke>({ uri: "ens/ethereum.polywrap.eth", method: "requestAccounts", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractMethod: async ( args: Ethereum_Module_Args_callContractMethod, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractMethod", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractMethodAndWait: async ( args: Ethereum_Module_Args_callContractMethodAndWait, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractMethodAndWait", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendTransaction: async ( args: Ethereum_Module_Args_sendTransaction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendTransaction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendTransactionAndWait: async ( args: Ethereum_Module_Args_sendTransactionAndWait, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendTransactionAndWait", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, deployContract: async ( args: Ethereum_Module_Args_deployContract, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "deployContract", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, signMessage: async ( args: Ethereum_Module_Args_signMessage, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "signMessage", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendRPC: async ( args: Ethereum_Module_Args_sendRPC, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendRPC", - args: args as unknown as Record + args: (args as unknown) as Record, }); - } -} + }, +}; /// Imported Modules END /// diff --git a/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/index.ts b/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/index.ts index 315871f96d..4f5ca809d5 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/index.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/index.ts @@ -5,4 +5,4 @@ export * from "./wrap.info"; export * from "./module"; export * from "./types"; -export { Client } from "@polywrap/core-js"; +export { CoreClient } from "@polywrap/core-js"; diff --git a/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/module.ts index a2294ddca8..437a2407c2 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/module.ts @@ -3,22 +3,16 @@ import * as Types from "./types"; -import { Client, MaybeAsync } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync } from "@polywrap/core-js"; import { PluginModule } from "@polywrap/plugin-js"; export interface Args_method { str: Types.String; } -export abstract class Module< - TConfig -> extends PluginModule< - TConfig, - Types.Env -> { - +export abstract class Module extends PluginModule { abstract method( args: Args_method, - client: Client + client: CoreClient ): MaybeAsync; } diff --git a/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/types.ts b/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/types.ts index 6dbf11884a..3ee39fd838 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/types.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/003-env/expected/wrap/types.ts @@ -6,7 +6,7 @@ import * as Types from "./"; // @ts-ignore import { - Client, + CoreClient, InvokeResult } from "@polywrap/core-js"; diff --git a/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/index.ts b/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/index.ts index 315871f96d..4f5ca809d5 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/index.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/index.ts @@ -5,4 +5,4 @@ export * from "./wrap.info"; export * from "./module"; export * from "./types"; -export { Client } from "@polywrap/core-js"; +export { CoreClient } from "@polywrap/core-js"; diff --git a/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/module.ts index a2294ddca8..437a2407c2 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/module.ts @@ -3,22 +3,16 @@ import * as Types from "./types"; -import { Client, MaybeAsync } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync } from "@polywrap/core-js"; import { PluginModule } from "@polywrap/plugin-js"; export interface Args_method { str: Types.String; } -export abstract class Module< - TConfig -> extends PluginModule< - TConfig, - Types.Env -> { - +export abstract class Module extends PluginModule { abstract method( args: Args_method, - client: Client + client: CoreClient ): MaybeAsync; } diff --git a/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/types.ts b/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/types.ts index fee545ff08..a2a3e3bb29 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/types.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/004-env-sanitization/expected/wrap/types.ts @@ -6,7 +6,7 @@ import * as Types from "./"; // @ts-ignore import { - Client, + CoreClient, InvokeResult } from "@polywrap/core-js"; diff --git a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/index.ts b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/index.ts index 315871f96d..4f5ca809d5 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/index.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/index.ts @@ -5,4 +5,4 @@ export * from "./wrap.info"; export * from "./module"; export * from "./types"; -export { Client } from "@polywrap/core-js"; +export { CoreClient } from "@polywrap/core-js"; diff --git a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/module.ts index d80585a809..d08b1a1fda 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/module.ts @@ -3,7 +3,7 @@ import * as Types from "./types"; -import { Client, MaybeAsync } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync } from "@polywrap/core-js"; import { PluginModule } from "@polywrap/plugin-js"; export interface Args_methodOne { @@ -15,20 +15,14 @@ export interface Args_methodTwo { arg: Types.UInt32; } -export abstract class Module< - TConfig -> extends PluginModule< - TConfig, - Types.Env -> { - +export abstract class Module extends PluginModule { abstract methodOne( args: Args_methodOne, - client: Client + client: CoreClient ): MaybeAsync; abstract methodTwo( args: Args_methodTwo, - client: Client + client: CoreClient ): MaybeAsync; } diff --git a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/types.ts b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/types.ts index 3172a4e4b0..75ae05ea60 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/types.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/types.ts @@ -6,7 +6,7 @@ import * as Types from "./"; // @ts-ignore import { - Client, + CoreClient, InvokeResult } from "@polywrap/core-js"; @@ -346,311 +346,311 @@ interface Ethereum_Module_Args_sendRPC { export const Ethereum_Module = { callContractView: async ( args: Ethereum_Module_Args_callContractView, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractView", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractStatic: async ( args: Ethereum_Module_Args_callContractStatic, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractStatic", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getBalance: async ( args: Ethereum_Module_Args_getBalance, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getBalance", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, encodeParams: async ( args: Ethereum_Module_Args_encodeParams, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "encodeParams", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, encodeFunction: async ( args: Ethereum_Module_Args_encodeFunction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "encodeFunction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, solidityPack: async ( args: Ethereum_Module_Args_solidityPack, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "solidityPack", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, solidityKeccak256: async ( args: Ethereum_Module_Args_solidityKeccak256, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "solidityKeccak256", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, soliditySha256: async ( args: Ethereum_Module_Args_soliditySha256, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "soliditySha256", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerAddress: async ( args: Ethereum_Module_Args_getSignerAddress, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerAddress", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerBalance: async ( args: Ethereum_Module_Args_getSignerBalance, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerBalance", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerTransactionCount: async ( args: Ethereum_Module_Args_getSignerTransactionCount, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerTransactionCount", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getGasPrice: async ( args: Ethereum_Module_Args_getGasPrice, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getGasPrice", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, estimateTransactionGas: async ( args: Ethereum_Module_Args_estimateTransactionGas, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "estimateTransactionGas", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, estimateContractCallGas: async ( args: Ethereum_Module_Args_estimateContractCallGas, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "estimateContractCallGas", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, checkAddress: async ( args: Ethereum_Module_Args_checkAddress, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "checkAddress", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, toWei: async ( args: Ethereum_Module_Args_toWei, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "toWei", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, toEth: async ( args: Ethereum_Module_Args_toEth, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "toEth", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, awaitTransaction: async ( args: Ethereum_Module_Args_awaitTransaction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "awaitTransaction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, waitForEvent: async ( args: Ethereum_Module_Args_waitForEvent, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "waitForEvent", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getNetwork: async ( args: Ethereum_Module_Args_getNetwork, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getNetwork", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, requestAccounts: async ( args: Ethereum_Module_Args_requestAccounts, - client: Client + client: CoreClient ): Promise>> => { return client.invoke>({ uri: "ens/ethereum.polywrap.eth", method: "requestAccounts", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractMethod: async ( args: Ethereum_Module_Args_callContractMethod, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractMethod", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractMethodAndWait: async ( args: Ethereum_Module_Args_callContractMethodAndWait, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractMethodAndWait", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendTransaction: async ( args: Ethereum_Module_Args_sendTransaction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendTransaction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendTransactionAndWait: async ( args: Ethereum_Module_Args_sendTransactionAndWait, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendTransactionAndWait", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, deployContract: async ( args: Ethereum_Module_Args_deployContract, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "deployContract", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, signMessage: async ( args: Ethereum_Module_Args_signMessage, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "signMessage", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendRPC: async ( args: Ethereum_Module_Args_sendRPC, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendRPC", - args: args as unknown as Record + args: (args as unknown) as Record, }); - } -} + }, +}; /// Imported Modules END /// diff --git a/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/index.ts b/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/index.ts index 315871f96d..4f5ca809d5 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/index.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/index.ts @@ -5,4 +5,4 @@ export * from "./wrap.info"; export * from "./module"; export * from "./types"; -export { Client } from "@polywrap/core-js"; +export { CoreClient } from "@polywrap/core-js"; diff --git a/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/module.ts b/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/module.ts index d80585a809..d08b1a1fda 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/module.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/module.ts @@ -3,7 +3,7 @@ import * as Types from "./types"; -import { Client, MaybeAsync } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync } from "@polywrap/core-js"; import { PluginModule } from "@polywrap/plugin-js"; export interface Args_methodOne { @@ -15,20 +15,14 @@ export interface Args_methodTwo { arg: Types.UInt32; } -export abstract class Module< - TConfig -> extends PluginModule< - TConfig, - Types.Env -> { - +export abstract class Module extends PluginModule { abstract methodOne( args: Args_methodOne, - client: Client + client: CoreClient ): MaybeAsync; abstract methodTwo( args: Args_methodTwo, - client: Client + client: CoreClient ): MaybeAsync; } diff --git a/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/types.ts b/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/types.ts index 3172a4e4b0..75ae05ea60 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/types.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/types.ts @@ -6,7 +6,7 @@ import * as Types from "./"; // @ts-ignore import { - Client, + CoreClient, InvokeResult } from "@polywrap/core-js"; @@ -346,311 +346,311 @@ interface Ethereum_Module_Args_sendRPC { export const Ethereum_Module = { callContractView: async ( args: Ethereum_Module_Args_callContractView, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractView", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractStatic: async ( args: Ethereum_Module_Args_callContractStatic, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractStatic", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getBalance: async ( args: Ethereum_Module_Args_getBalance, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getBalance", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, encodeParams: async ( args: Ethereum_Module_Args_encodeParams, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "encodeParams", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, encodeFunction: async ( args: Ethereum_Module_Args_encodeFunction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "encodeFunction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, solidityPack: async ( args: Ethereum_Module_Args_solidityPack, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "solidityPack", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, solidityKeccak256: async ( args: Ethereum_Module_Args_solidityKeccak256, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "solidityKeccak256", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, soliditySha256: async ( args: Ethereum_Module_Args_soliditySha256, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "soliditySha256", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerAddress: async ( args: Ethereum_Module_Args_getSignerAddress, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerAddress", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerBalance: async ( args: Ethereum_Module_Args_getSignerBalance, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerBalance", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getSignerTransactionCount: async ( args: Ethereum_Module_Args_getSignerTransactionCount, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getSignerTransactionCount", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getGasPrice: async ( args: Ethereum_Module_Args_getGasPrice, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getGasPrice", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, estimateTransactionGas: async ( args: Ethereum_Module_Args_estimateTransactionGas, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "estimateTransactionGas", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, estimateContractCallGas: async ( args: Ethereum_Module_Args_estimateContractCallGas, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "estimateContractCallGas", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, checkAddress: async ( args: Ethereum_Module_Args_checkAddress, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "checkAddress", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, toWei: async ( args: Ethereum_Module_Args_toWei, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "toWei", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, toEth: async ( args: Ethereum_Module_Args_toEth, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "toEth", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, awaitTransaction: async ( args: Ethereum_Module_Args_awaitTransaction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "awaitTransaction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, waitForEvent: async ( args: Ethereum_Module_Args_waitForEvent, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "waitForEvent", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, getNetwork: async ( args: Ethereum_Module_Args_getNetwork, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "getNetwork", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, requestAccounts: async ( args: Ethereum_Module_Args_requestAccounts, - client: Client + client: CoreClient ): Promise>> => { return client.invoke>({ uri: "ens/ethereum.polywrap.eth", method: "requestAccounts", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractMethod: async ( args: Ethereum_Module_Args_callContractMethod, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractMethod", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, callContractMethodAndWait: async ( args: Ethereum_Module_Args_callContractMethodAndWait, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "callContractMethodAndWait", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendTransaction: async ( args: Ethereum_Module_Args_sendTransaction, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendTransaction", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendTransactionAndWait: async ( args: Ethereum_Module_Args_sendTransactionAndWait, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendTransactionAndWait", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, deployContract: async ( args: Ethereum_Module_Args_deployContract, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "deployContract", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, signMessage: async ( args: Ethereum_Module_Args_signMessage, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "signMessage", - args: args as unknown as Record + args: (args as unknown) as Record, }); }, sendRPC: async ( args: Ethereum_Module_Args_sendRPC, - client: Client + client: CoreClient ): Promise> => { return client.invoke({ uri: "ens/ethereum.polywrap.eth", method: "sendRPC", - args: args as unknown as Record + args: (args as unknown) as Record, }); - } -} + }, +}; /// Imported Modules END /// From 1b420bad6059c6bf05b945e01e04856351fb9a9e Mon Sep 17 00:00:00 2001 From: Jure Bogunovic Date: Fri, 21 Oct 2022 21:31:08 +0200 Subject: [PATCH 116/126] renamed custom client config to client con fig --- packages/cli/src/__tests__/unit/jobrunner.spec.ts | 4 ++-- packages/cli/src/commands/build.ts | 4 ++-- packages/cli/src/commands/codegen.ts | 4 ++-- packages/cli/src/commands/docgen.ts | 4 ++-- packages/cli/src/commands/run.ts | 4 ++-- packages/cli/src/lib/helpers/validate-client-config.ts | 4 ++-- packages/cli/src/lib/option-parsers/client-config.ts | 4 ++-- packages/cli/src/lib/workflow/JobRunner.ts | 4 ++-- packages/cli/src/lib/workflow/types.ts | 4 ++-- .../src/{CustomClientConfig.ts => ClientConfig.ts} | 2 +- .../js/client-config-builder/src/ClientConfigBuilder.ts | 8 ++++---- .../client-config-builder/src/bundles/getDefaultConfig.ts | 4 ++-- packages/js/client-config-builder/src/index.ts | 2 +- packages/js/client/src/PolywrapClientConfig.ts | 4 ++-- packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts | 4 ++-- .../ethereum/src/__tests__/helpers/getDefaultConfig.ts | 4 ++-- .../cases/cli/app/codegen/004-custom-config/config.ts | 4 ++-- .../cases/cli/docgen/002-custom-config/config.ts | 4 ++-- .../cases/cli/plugin/codegen/005-custom-config/config.ts | 4 ++-- .../test-cases/cases/cli/run/008-custom-config/config.ts | 4 ++-- .../build-cmd/assemblyscript/010-custom-config/config.ts | 4 ++-- .../cases/cli/wasm/codegen/005-custom-config/config.ts | 4 ++-- 22 files changed, 44 insertions(+), 44 deletions(-) rename packages/js/client-config-builder/src/{CustomClientConfig.ts => ClientConfig.ts} (87%) diff --git a/packages/cli/src/__tests__/unit/jobrunner.spec.ts b/packages/cli/src/__tests__/unit/jobrunner.spec.ts index 43b775c373..7d7e94a548 100644 --- a/packages/cli/src/__tests__/unit/jobrunner.spec.ts +++ b/packages/cli/src/__tests__/unit/jobrunner.spec.ts @@ -3,13 +3,13 @@ import { buildWrapper } from "@polywrap/test-env-js"; import { testCases } from "./jobrunner-test-cases"; import { JobRunner } from "../../lib"; import path from "path"; -import { ClientConfigBuilder, CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfigBuilder, ClientConfig } from "@polywrap/client-config-builder-js"; import { Uri } from "@polywrap/core-js"; jest.setTimeout(200000); describe("workflow JobRunner", () => { - let defaultConfig: CustomClientConfig; + let defaultConfig: ClientConfig; beforeAll(async () => { await buildWrapper( diff --git a/packages/cli/src/commands/build.ts b/packages/cli/src/commands/build.ts index f3e915586c..bc01146137 100644 --- a/packages/cli/src/commands/build.ts +++ b/packages/cli/src/commands/build.ts @@ -27,7 +27,7 @@ import path from "path"; import readline from "readline"; import { PolywrapClient, Uri } from "@polywrap/client-js"; import { PolywrapManifest } from "@polywrap/polywrap-manifest-types-js"; -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; const defaultOutputDir = "./build"; const defaultStrategy = SupportedStrategies.VM; @@ -38,7 +38,7 @@ const pathStr = intlMsg.commands_build_options_o_path(); type BuildCommandOptions = { manifestFile: string; outputDir: string; - clientConfig: Partial>; + clientConfig: Partial>; codegen: boolean; // defaults to true watch?: boolean; strategy: SupportedStrategies; diff --git a/packages/cli/src/commands/codegen.ts b/packages/cli/src/commands/codegen.ts index b274a20719..c818d6bad9 100644 --- a/packages/cli/src/commands/codegen.ts +++ b/packages/cli/src/commands/codegen.ts @@ -21,7 +21,7 @@ import { ScriptCodegenerator } from "../lib/codegen/ScriptCodeGenerator"; import { PolywrapClient, Uri } from "@polywrap/client-js"; import path from "path"; import fs from "fs"; -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; const defaultCodegenDir = "./src/wrap"; const defaultPublishDir = "./build"; @@ -34,7 +34,7 @@ type CodegenCommandOptions = { codegenDir: string; publishDir: string; script?: string; - clientConfig: Partial>; + clientConfig: Partial>; verbose?: boolean; quiet?: boolean; logFile?: string; diff --git a/packages/cli/src/commands/docgen.ts b/packages/cli/src/commands/docgen.ts index cef8dd2e71..04d0f867ae 100644 --- a/packages/cli/src/commands/docgen.ts +++ b/packages/cli/src/commands/docgen.ts @@ -20,7 +20,7 @@ import { ScriptCodegenerator } from "../lib/codegen/ScriptCodeGenerator"; import { PolywrapClient, Uri } from "@polywrap/client-js"; import chalk from "chalk"; import { Argument } from "commander"; -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; const commandToPathMap: Record = { schema: schemaScriptPath, @@ -36,7 +36,7 @@ const pathStr = intlMsg.commands_codegen_options_o_path(); type DocgenCommandOptions = { manifestFile: string; docgenDir: string; - clientConfig: Partial>; + clientConfig: Partial>; imports: boolean; verbose?: boolean; quiet?: boolean; diff --git a/packages/cli/src/commands/run.ts b/packages/cli/src/commands/run.ts index c99bfa24e3..6333c3d7fe 100644 --- a/packages/cli/src/commands/run.ts +++ b/packages/cli/src/commands/run.ts @@ -22,10 +22,10 @@ import { Uri } from "@polywrap/client-js"; import path from "path"; import yaml from "yaml"; import fs from "fs"; -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; type WorkflowCommandOptions = { - clientConfig: Partial>; + clientConfig: Partial>; manifest: string; jobs?: string[]; validationScript?: string; diff --git a/packages/cli/src/lib/helpers/validate-client-config.ts b/packages/cli/src/lib/helpers/validate-client-config.ts index 9e3ba5ed55..af7952fe30 100644 --- a/packages/cli/src/lib/helpers/validate-client-config.ts +++ b/packages/cli/src/lib/helpers/validate-client-config.ts @@ -6,7 +6,7 @@ import { IUriRedirect, Uri, } from "@polywrap/client-js"; -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; export function validateRedirects( redirects: readonly IUriRedirect[] @@ -122,7 +122,7 @@ export function validateEnvs( } export function validateClientConfig( - config: Partial> + config: Partial> ): void { if (!config || typeof config !== "object") { throw new Error(intlMsg.commands_run_error_clientConfigNotObject()); diff --git a/packages/cli/src/lib/option-parsers/client-config.ts b/packages/cli/src/lib/option-parsers/client-config.ts index 590454063d..3b7064abe6 100644 --- a/packages/cli/src/lib/option-parsers/client-config.ts +++ b/packages/cli/src/lib/option-parsers/client-config.ts @@ -6,13 +6,13 @@ import { getTestEnvClientConfig } from "../test-env"; import { Uri } from "@polywrap/core-js"; import { ClientConfigBuilder, - CustomClientConfig, + ClientConfig, } from "@polywrap/client-config-builder-js"; import path from "path"; export async function parseClientConfigOption( clientConfig: string | undefined -): Promise>> { +): Promise>> { const builder = new ClientConfigBuilder().addDefaults(); try { diff --git a/packages/cli/src/lib/workflow/JobRunner.ts b/packages/cli/src/lib/workflow/JobRunner.ts index 3cc736ec25..3ec01973a3 100644 --- a/packages/cli/src/lib/workflow/JobRunner.ts +++ b/packages/cli/src/lib/workflow/JobRunner.ts @@ -5,7 +5,7 @@ import { CoreClient, MaybeAsync, Uri } from "@polywrap/core-js"; import { WorkflowJobs } from "@polywrap/polywrap-manifest-types-js"; import { ClientConfigBuilder, - CustomClientConfig, + ClientConfig, } from "@polywrap/client-config-builder-js"; export class JobRunner { @@ -13,7 +13,7 @@ export class JobRunner { private client: CoreClient; constructor( - private clientConfig: Partial>, + private clientConfig: Partial>, private onExecution?: (id: string, JobResult: JobResult) => MaybeAsync ) { this.jobOutput = new Map(); diff --git a/packages/cli/src/lib/workflow/types.ts b/packages/cli/src/lib/workflow/types.ts index 52ba95057c..90201501d4 100644 --- a/packages/cli/src/lib/workflow/types.ts +++ b/packages/cli/src/lib/workflow/types.ts @@ -1,4 +1,4 @@ -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; import { Uri } from "@polywrap/core-js"; export interface Step { @@ -7,7 +7,7 @@ export interface Step { args?: { [k: string]: unknown; }; - config?: CustomClientConfig; + config?: ClientConfig; } export enum Status { diff --git a/packages/js/client-config-builder/src/CustomClientConfig.ts b/packages/js/client-config-builder/src/ClientConfig.ts similarity index 87% rename from packages/js/client-config-builder/src/CustomClientConfig.ts rename to packages/js/client-config-builder/src/ClientConfig.ts index 97487d12e7..ada14f129c 100644 --- a/packages/js/client-config-builder/src/CustomClientConfig.ts +++ b/packages/js/client-config-builder/src/ClientConfig.ts @@ -8,7 +8,7 @@ import { } from "@polywrap/core-js"; import { UriResolverLike } from "@polywrap/uri-resolvers-js"; -export type CustomClientConfig = { +export type ClientConfig = { readonly envs: Env[]; readonly interfaces: InterfaceImplementations[]; readonly redirects: IUriRedirect[]; diff --git a/packages/js/client-config-builder/src/ClientConfigBuilder.ts b/packages/js/client-config-builder/src/ClientConfigBuilder.ts index 9cfa984b6b..fde7520b57 100644 --- a/packages/js/client-config-builder/src/ClientConfigBuilder.ts +++ b/packages/js/client-config-builder/src/ClientConfigBuilder.ts @@ -1,5 +1,5 @@ import { getDefaultConfig } from "./bundles"; -import { CustomClientConfig } from "./CustomClientConfig"; +import { ClientConfig } from "./ClientConfig"; import { CoreClientConfig, @@ -22,7 +22,7 @@ import { import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; export class ClientConfigBuilder { - private _config: CustomClientConfig = { + private _config: ClientConfig = { envs: [], interfaces: [], redirects: [], @@ -31,7 +31,7 @@ export class ClientConfigBuilder { resolvers: [], }; - add(config: Partial>): ClientConfigBuilder { + add(config: Partial>): ClientConfigBuilder { if (config.envs) { this.addEnvs(config.envs); } @@ -352,7 +352,7 @@ export class ClientConfigBuilder { return this; } - build(): CustomClientConfig { + build(): ClientConfig { return this._config; } diff --git a/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts b/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts index f2074b999a..3706b4a263 100644 --- a/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts +++ b/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts @@ -1,4 +1,4 @@ -import { CustomClientConfig } from "../CustomClientConfig"; +import { ClientConfig } from "../ClientConfig"; import { IUriPackage, Uri } from "@polywrap/core-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; @@ -15,7 +15,7 @@ import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; import { loggerPlugin } from "@polywrap/logger-plugin-js"; import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; -export const getDefaultConfig = (): CustomClientConfig => { +export const getDefaultConfig = (): ClientConfig => { return { envs: [ { diff --git a/packages/js/client-config-builder/src/index.ts b/packages/js/client-config-builder/src/index.ts index 14e4fd55cf..ce72c63807 100644 --- a/packages/js/client-config-builder/src/index.ts +++ b/packages/js/client-config-builder/src/index.ts @@ -1,3 +1,3 @@ export * from "./ClientConfigBuilder"; -export * from "./CustomClientConfig"; +export * from "./ClientConfig"; export * from "./bundles"; diff --git a/packages/js/client/src/PolywrapClientConfig.ts b/packages/js/client/src/PolywrapClientConfig.ts index ca875d3d48..d20f424276 100644 --- a/packages/js/client/src/PolywrapClientConfig.ts +++ b/packages/js/client/src/PolywrapClientConfig.ts @@ -1,10 +1,10 @@ import { Uri } from "@polywrap/core-js"; import { IWrapperCache } from "@polywrap/uri-resolvers-js"; import { TracerConfig } from "@polywrap/tracing-js"; -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; export interface PolywrapClientConfig - extends CustomClientConfig { + extends ClientConfig { readonly wrapperCache?: IWrapperCache; readonly tracerConfig?: Readonly>; } diff --git a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts index 9fa4851674..b93a5ab56f 100644 --- a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts @@ -2,7 +2,7 @@ import * as Schema from "../wrap"; import { PolywrapClient, Uri } from "@polywrap/client-js"; -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; import { initTestEnvironment, stopTestEnvironment, @@ -52,7 +52,7 @@ describe("Ethereum Plugin", () => { let ensAddress: string; let resolverAddress: string; let registrarAddress: string; - let defaultConfig: Partial>; + let defaultConfig: Partial>; let viewMethodsAddress: string; const signer = "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1"; diff --git a/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts b/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts index 77c06db332..e7382166dd 100644 --- a/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts +++ b/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts @@ -5,12 +5,12 @@ import { ethereumPlugin, Connections } from "../.."; import { providers } from "@polywrap/test-env-js"; import { defaultIpfsProviders, - CustomClientConfig, + ClientConfig, } from "@polywrap/client-config-builder-js"; export const getDefaultConfig = ( connections: Connections -): Partial> => { +): Partial> => { return { envs: [ { diff --git a/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts b/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts index eff24d7c27..aaf921f218 100644 --- a/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts +++ b/packages/test-cases/cases/cli/app/codegen/004-custom-config/config.ts @@ -1,6 +1,6 @@ import { ClientConfigBuilder, - CustomClientConfig, + ClientConfig, } from "@polywrap/client-config-builder-js"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { @@ -31,7 +31,7 @@ const mockPlugin = () => { return PluginPackage.from(new MockPlugin({ val: 0 }), mockPluginManifest); }; -export function getCustomConfig(): Partial> { +export function getCustomConfig(): Partial> { return { packages: [ { diff --git a/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts b/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts index 593dae0647..6306d59d75 100644 --- a/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts +++ b/packages/test-cases/cases/cli/docgen/002-custom-config/config.ts @@ -1,4 +1,4 @@ -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { latestWrapManifestVersion, @@ -28,7 +28,7 @@ const mockPlugin = () => { return PluginPackage.from(new MockPlugin({ val: 0 }), mockPluginManifest); }; -export function getCustomConfig(): Partial> { +export function getCustomConfig(): Partial> { return { packages: [ { diff --git a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts index 337d73bebe..0513b0a80e 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/config.ts @@ -1,4 +1,4 @@ -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { latestWrapManifestVersion } from "@polywrap/wrap-manifest-types-js"; import { parseSchema } from "@polywrap/schema-parse"; @@ -37,7 +37,7 @@ const mockPlugin = () => { }); }; -export function getCustomConfig(): Partial> { +export function getCustomConfig(): Partial> { return { packages: [ { diff --git a/packages/test-cases/cases/cli/run/008-custom-config/config.ts b/packages/test-cases/cases/cli/run/008-custom-config/config.ts index 40537beefc..8071702486 100644 --- a/packages/test-cases/cases/cli/run/008-custom-config/config.ts +++ b/packages/test-cases/cases/cli/run/008-custom-config/config.ts @@ -1,7 +1,7 @@ -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; import path from "path"; -export function getCustomConfig(): Partial> { +export function getCustomConfig(): Partial> { const wrapperPath = path.join(__dirname, "..", "run-test-wrapper"); const wrapperUri = `fs/${path.resolve(wrapperPath)}/build`; return { diff --git a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/010-custom-config/config.ts b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/010-custom-config/config.ts index 3b230d7cef..d61dd5a11c 100644 --- a/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/010-custom-config/config.ts +++ b/packages/test-cases/cases/cli/wasm/build-cmd/assemblyscript/010-custom-config/config.ts @@ -1,4 +1,4 @@ -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { latestWrapManifestVersion } from "@polywrap/wrap-manifest-types-js"; @@ -119,7 +119,7 @@ const mockPlugin = () => { ); }; -export function getCustomConfig(): Partial> { +export function getCustomConfig(): Partial> { return { packages: [ { diff --git a/packages/test-cases/cases/cli/wasm/codegen/005-custom-config/config.ts b/packages/test-cases/cases/cli/wasm/codegen/005-custom-config/config.ts index 9178697334..db89960cfb 100644 --- a/packages/test-cases/cases/cli/wasm/codegen/005-custom-config/config.ts +++ b/packages/test-cases/cases/cli/wasm/codegen/005-custom-config/config.ts @@ -1,4 +1,4 @@ -import { CustomClientConfig } from "@polywrap/client-config-builder-js"; +import { ClientConfig } from "@polywrap/client-config-builder-js"; import { IWrapPackage } from "@polywrap/core-js"; import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; import { @@ -34,7 +34,7 @@ const mockPlugin = (): IWrapPackage => { }); }; -export function getCustomConfig(): Partial> { +export function getCustomConfig(): Partial> { return { packages: [ { From 4b4da403c7967a7113578549bae5c8eb37977097 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 24 Oct 2022 16:36:40 +0200 Subject: [PATCH 117/126] chore: improve ExecOptions typing --- packages/js/plugins/ipfs/src/ExecOptions.ts | 2 +- .../js/plugins/ipfs/src/getExecOptions.ts | 25 ++++++++++++++ packages/js/plugins/ipfs/src/index.ts | 33 +------------------ 3 files changed, 27 insertions(+), 33 deletions(-) create mode 100644 packages/js/plugins/ipfs/src/getExecOptions.ts diff --git a/packages/js/plugins/ipfs/src/ExecOptions.ts b/packages/js/plugins/ipfs/src/ExecOptions.ts index e88469b7f0..edb1f4753e 100644 --- a/packages/js/plugins/ipfs/src/ExecOptions.ts +++ b/packages/js/plugins/ipfs/src/ExecOptions.ts @@ -1,6 +1,6 @@ export type ExecOptions = { timeout: number; provider: string; - fallbackProviders: []; + fallbackProviders: string[]; disableParallelRequests: boolean; }; diff --git a/packages/js/plugins/ipfs/src/getExecOptions.ts b/packages/js/plugins/ipfs/src/getExecOptions.ts new file mode 100644 index 0000000000..2ef64ff2fa --- /dev/null +++ b/packages/js/plugins/ipfs/src/getExecOptions.ts @@ -0,0 +1,25 @@ +import { ExecOptions } from "./ExecOptions"; +import { Ipfs_Options, Env } from "./wrap"; + +export function getExecOptions( + args: Ipfs_Options | undefined | null, + env: Env +): ExecOptions { + const defaultOptions: ExecOptions = { + disableParallelRequests: false, + timeout: 5000, + provider: env.provider, + fallbackProviders: [] + }; + + return { + disableParallelRequests: + args?.disableParallelRequests ?? defaultOptions.disableParallelRequests, + timeout: + args?.timeout ?? defaultOptions.timeout, + provider: + args?.provider ?? defaultOptions.provider, + fallbackProviders: + args?.fallbackProviders ?? defaultOptions.fallbackProviders + }; +} diff --git a/packages/js/plugins/ipfs/src/index.ts b/packages/js/plugins/ipfs/src/index.ts index cf60aa016a..c6f0c5074f 100644 --- a/packages/js/plugins/ipfs/src/index.ts +++ b/packages/js/plugins/ipfs/src/index.ts @@ -4,47 +4,16 @@ import { Args_addFile, Args_cat, Ipfs_ResolveResult, - Ipfs_Options, manifest, - Env, } from "./wrap"; import { execSimple, execFallbacks } from "./utils/exec"; import { ExecOptions } from "./ExecOptions"; +import { getExecOptions } from "./getExecOptions"; import { Client } from "@polywrap/core-js"; import createIpfsClient, { IpfsClient } from "@polywrap/ipfs-http-client-lite"; import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; -const isNullOrUndefined = (arg: unknown) => { - return arg === undefined || arg === null; -}; - -const getExecOptions = ( - args: Ipfs_Options | undefined | null, - env: Env -): ExecOptions => { - const options = args || {}; - - if (isNullOrUndefined(options.disableParallelRequests)) { - options.disableParallelRequests = !!env.disableParallelRequests; - } - - if (isNullOrUndefined(options.timeout)) { - // Default to a 5000ms timeout when none is provided - options.timeout = env.timeout ?? 5000; - } - - if (isNullOrUndefined(options.provider)) { - options.provider = env.provider; - } - - if (isNullOrUndefined(options.fallbackProviders)) { - options.fallbackProviders = env.fallbackProviders ?? []; - } - - return options as ExecOptions; -}; - export type NoConfig = Record; export class IpfsPlugin extends Module { From a18ffbbe4cb549be29e6ebacb1d4246fbe5e99ef Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 24 Oct 2022 17:03:49 +0200 Subject: [PATCH 118/126] chore: add ClientConfig template argument default --- packages/cli/src/__tests__/unit/jobrunner.spec.ts | 3 +-- packages/cli/src/commands/build.ts | 4 ++-- packages/cli/src/commands/codegen.ts | 4 ++-- packages/cli/src/commands/docgen.ts | 4 ++-- packages/cli/src/commands/run.ts | 3 +-- packages/cli/src/lib/helpers/validate-client-config.ts | 2 +- packages/cli/src/lib/workflow/JobRunner.ts | 4 ++-- packages/cli/src/lib/workflow/types.ts | 2 +- packages/js/client-config-builder/src/ClientConfig.ts | 4 +++- packages/js/client-config-builder/src/ClientConfigBuilder.ts | 2 +- packages/js/core/src/types/CoreClient.ts | 4 +++- packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts | 4 ++-- .../ethereum/src/__tests__/helpers/getDefaultConfig.ts | 4 ++-- packages/js/plugins/ipfs/src/ExecOptions.ts | 4 ++-- 14 files changed, 25 insertions(+), 23 deletions(-) diff --git a/packages/cli/src/__tests__/unit/jobrunner.spec.ts b/packages/cli/src/__tests__/unit/jobrunner.spec.ts index 7d7e94a548..9ab4116b48 100644 --- a/packages/cli/src/__tests__/unit/jobrunner.spec.ts +++ b/packages/cli/src/__tests__/unit/jobrunner.spec.ts @@ -4,12 +4,11 @@ import { testCases } from "./jobrunner-test-cases"; import { JobRunner } from "../../lib"; import path from "path"; import { ClientConfigBuilder, ClientConfig } from "@polywrap/client-config-builder-js"; -import { Uri } from "@polywrap/core-js"; jest.setTimeout(200000); describe("workflow JobRunner", () => { - let defaultConfig: ClientConfig; + let defaultConfig: ClientConfig; beforeAll(async () => { await buildWrapper( diff --git a/packages/cli/src/commands/build.ts b/packages/cli/src/commands/build.ts index bc01146137..1dd9bd818c 100644 --- a/packages/cli/src/commands/build.ts +++ b/packages/cli/src/commands/build.ts @@ -25,7 +25,7 @@ import { import path from "path"; import readline from "readline"; -import { PolywrapClient, Uri } from "@polywrap/client-js"; +import { PolywrapClient } from "@polywrap/client-js"; import { PolywrapManifest } from "@polywrap/polywrap-manifest-types-js"; import { ClientConfig } from "@polywrap/client-config-builder-js"; @@ -38,7 +38,7 @@ const pathStr = intlMsg.commands_build_options_o_path(); type BuildCommandOptions = { manifestFile: string; outputDir: string; - clientConfig: Partial>; + clientConfig: Partial; codegen: boolean; // defaults to true watch?: boolean; strategy: SupportedStrategies; diff --git a/packages/cli/src/commands/codegen.ts b/packages/cli/src/commands/codegen.ts index c818d6bad9..49e4d9bced 100644 --- a/packages/cli/src/commands/codegen.ts +++ b/packages/cli/src/commands/codegen.ts @@ -18,7 +18,7 @@ import { } from "../lib"; import { ScriptCodegenerator } from "../lib/codegen/ScriptCodeGenerator"; -import { PolywrapClient, Uri } from "@polywrap/client-js"; +import { PolywrapClient } from "@polywrap/client-js"; import path from "path"; import fs from "fs"; import { ClientConfig } from "@polywrap/client-config-builder-js"; @@ -34,7 +34,7 @@ type CodegenCommandOptions = { codegenDir: string; publishDir: string; script?: string; - clientConfig: Partial>; + clientConfig: Partial; verbose?: boolean; quiet?: boolean; logFile?: string; diff --git a/packages/cli/src/commands/docgen.ts b/packages/cli/src/commands/docgen.ts index 04d0f867ae..d9eb1d2e4e 100644 --- a/packages/cli/src/commands/docgen.ts +++ b/packages/cli/src/commands/docgen.ts @@ -17,7 +17,7 @@ import { scriptPath as jsdocScriptPath } from "../lib/docgen/jsdoc"; import { scriptPath as schemaScriptPath } from "../lib/docgen/schema"; import { ScriptCodegenerator } from "../lib/codegen/ScriptCodeGenerator"; -import { PolywrapClient, Uri } from "@polywrap/client-js"; +import { PolywrapClient } from "@polywrap/client-js"; import chalk from "chalk"; import { Argument } from "commander"; import { ClientConfig } from "@polywrap/client-config-builder-js"; @@ -36,7 +36,7 @@ const pathStr = intlMsg.commands_codegen_options_o_path(); type DocgenCommandOptions = { manifestFile: string; docgenDir: string; - clientConfig: Partial>; + clientConfig: Partial; imports: boolean; verbose?: boolean; quiet?: boolean; diff --git a/packages/cli/src/commands/run.ts b/packages/cli/src/commands/run.ts index 6333c3d7fe..faa9322b48 100644 --- a/packages/cli/src/commands/run.ts +++ b/packages/cli/src/commands/run.ts @@ -18,14 +18,13 @@ import { } from "../lib"; import { createLogger } from "./utils/createLogger"; -import { Uri } from "@polywrap/client-js"; import path from "path"; import yaml from "yaml"; import fs from "fs"; import { ClientConfig } from "@polywrap/client-config-builder-js"; type WorkflowCommandOptions = { - clientConfig: Partial>; + clientConfig: Partial; manifest: string; jobs?: string[]; validationScript?: string; diff --git a/packages/cli/src/lib/helpers/validate-client-config.ts b/packages/cli/src/lib/helpers/validate-client-config.ts index af7952fe30..3453849402 100644 --- a/packages/cli/src/lib/helpers/validate-client-config.ts +++ b/packages/cli/src/lib/helpers/validate-client-config.ts @@ -122,7 +122,7 @@ export function validateEnvs( } export function validateClientConfig( - config: Partial> + config: Partial ): void { if (!config || typeof config !== "object") { throw new Error(intlMsg.commands_run_error_clientConfigNotObject()); diff --git a/packages/cli/src/lib/workflow/JobRunner.ts b/packages/cli/src/lib/workflow/JobRunner.ts index 3ec01973a3..a1734c4ecb 100644 --- a/packages/cli/src/lib/workflow/JobRunner.ts +++ b/packages/cli/src/lib/workflow/JobRunner.ts @@ -1,7 +1,7 @@ import { JobResult, Status, Step } from "./types"; import { PolywrapClient } from "@polywrap/client-js"; -import { CoreClient, MaybeAsync, Uri } from "@polywrap/core-js"; +import { CoreClient, MaybeAsync } from "@polywrap/core-js"; import { WorkflowJobs } from "@polywrap/polywrap-manifest-types-js"; import { ClientConfigBuilder, @@ -13,7 +13,7 @@ export class JobRunner { private client: CoreClient; constructor( - private clientConfig: Partial>, + private clientConfig: Partial, private onExecution?: (id: string, JobResult: JobResult) => MaybeAsync ) { this.jobOutput = new Map(); diff --git a/packages/cli/src/lib/workflow/types.ts b/packages/cli/src/lib/workflow/types.ts index 90201501d4..e554b33ef9 100644 --- a/packages/cli/src/lib/workflow/types.ts +++ b/packages/cli/src/lib/workflow/types.ts @@ -7,7 +7,7 @@ export interface Step { args?: { [k: string]: unknown; }; - config?: ClientConfig; + config?: ClientConfig; } export enum Status { diff --git a/packages/js/client-config-builder/src/ClientConfig.ts b/packages/js/client-config-builder/src/ClientConfig.ts index ada14f129c..8079bf1bd8 100644 --- a/packages/js/client-config-builder/src/ClientConfig.ts +++ b/packages/js/client-config-builder/src/ClientConfig.ts @@ -8,7 +8,9 @@ import { } from "@polywrap/core-js"; import { UriResolverLike } from "@polywrap/uri-resolvers-js"; -export type ClientConfig = { +export interface ClientConfig< + TUri extends Uri | string = Uri | string +> { readonly envs: Env[]; readonly interfaces: InterfaceImplementations[]; readonly redirects: IUriRedirect[]; diff --git a/packages/js/client-config-builder/src/ClientConfigBuilder.ts b/packages/js/client-config-builder/src/ClientConfigBuilder.ts index fde7520b57..c5d53bc829 100644 --- a/packages/js/client-config-builder/src/ClientConfigBuilder.ts +++ b/packages/js/client-config-builder/src/ClientConfigBuilder.ts @@ -31,7 +31,7 @@ export class ClientConfigBuilder { resolvers: [], }; - add(config: Partial>): ClientConfigBuilder { + add(config: Partial): ClientConfigBuilder { if (config.envs) { this.addEnvs(config.envs); } diff --git a/packages/js/core/src/types/CoreClient.ts b/packages/js/core/src/types/CoreClient.ts index f6a72cd853..eabcb95369 100644 --- a/packages/js/core/src/types/CoreClient.ts +++ b/packages/js/core/src/types/CoreClient.ts @@ -13,7 +13,9 @@ import { UriResolverHandler } from "./UriResolver"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { Result } from "@polywrap/result"; -export interface CoreClientConfig { +export interface CoreClientConfig< + TUri extends Uri | string = Uri | string +> { readonly redirects?: Readonly[]>; readonly interfaces?: Readonly[]>; readonly envs?: Readonly[]>; diff --git a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts index b93a5ab56f..92e0820ec0 100644 --- a/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ethereum/src/__tests__/e2e.spec.ts @@ -1,7 +1,7 @@ import * as Schema from "../wrap"; -import { PolywrapClient, Uri } from "@polywrap/client-js"; +import { PolywrapClient } from "@polywrap/client-js"; import { ClientConfig } from "@polywrap/client-config-builder-js"; import { initTestEnvironment, @@ -52,7 +52,7 @@ describe("Ethereum Plugin", () => { let ensAddress: string; let resolverAddress: string; let registrarAddress: string; - let defaultConfig: Partial>; + let defaultConfig: Partial; let viewMethodsAddress: string; const signer = "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1"; diff --git a/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts b/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts index e7382166dd..dc37a50259 100644 --- a/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts +++ b/packages/js/plugins/ethereum/src/__tests__/helpers/getDefaultConfig.ts @@ -1,4 +1,4 @@ -import { coreInterfaceUris, Uri } from "@polywrap/core-js"; +import { coreInterfaceUris } from "@polywrap/core-js"; import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; import { ethereumPlugin, Connections } from "../.."; @@ -10,7 +10,7 @@ import { export const getDefaultConfig = ( connections: Connections -): Partial> => { +): Partial => { return { envs: [ { diff --git a/packages/js/plugins/ipfs/src/ExecOptions.ts b/packages/js/plugins/ipfs/src/ExecOptions.ts index edb1f4753e..d6a075c23b 100644 --- a/packages/js/plugins/ipfs/src/ExecOptions.ts +++ b/packages/js/plugins/ipfs/src/ExecOptions.ts @@ -1,6 +1,6 @@ -export type ExecOptions = { +export interface ExecOptions { timeout: number; provider: string; fallbackProviders: string[]; disableParallelRequests: boolean; -}; +} From 3cd206810cf0308ad05a3ae8b42e92a86474e372 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 24 Oct 2022 17:06:31 +0200 Subject: [PATCH 119/126] chore: lint fix --- packages/cli/src/lib/helpers/validate-client-config.ts | 4 +--- packages/js/client-config-builder/src/ClientConfig.ts | 6 ++---- packages/js/core/src/types/CoreClient.ts | 4 +--- packages/js/plugins/ipfs/src/getExecOptions.ts | 10 ++++------ .../src/ExtendableUriResolver.ts | 5 ++++- packages/js/uri-resolvers/src/static/StaticResolver.ts | 3 ++- 6 files changed, 14 insertions(+), 18 deletions(-) diff --git a/packages/cli/src/lib/helpers/validate-client-config.ts b/packages/cli/src/lib/helpers/validate-client-config.ts index 3453849402..1a42c9d4a6 100644 --- a/packages/cli/src/lib/helpers/validate-client-config.ts +++ b/packages/cli/src/lib/helpers/validate-client-config.ts @@ -121,9 +121,7 @@ export function validateEnvs( } } -export function validateClientConfig( - config: Partial -): void { +export function validateClientConfig(config: Partial): void { if (!config || typeof config !== "object") { throw new Error(intlMsg.commands_run_error_clientConfigNotObject()); } diff --git a/packages/js/client-config-builder/src/ClientConfig.ts b/packages/js/client-config-builder/src/ClientConfig.ts index 8079bf1bd8..bb6593efd5 100644 --- a/packages/js/client-config-builder/src/ClientConfig.ts +++ b/packages/js/client-config-builder/src/ClientConfig.ts @@ -8,13 +8,11 @@ import { } from "@polywrap/core-js"; import { UriResolverLike } from "@polywrap/uri-resolvers-js"; -export interface ClientConfig< - TUri extends Uri | string = Uri | string -> { +export interface ClientConfig { readonly envs: Env[]; readonly interfaces: InterfaceImplementations[]; readonly redirects: IUriRedirect[]; readonly wrappers: IUriWrapper[]; readonly packages: IUriPackage[]; readonly resolvers: UriResolverLike[]; -}; +} diff --git a/packages/js/core/src/types/CoreClient.ts b/packages/js/core/src/types/CoreClient.ts index eabcb95369..da9e739f72 100644 --- a/packages/js/core/src/types/CoreClient.ts +++ b/packages/js/core/src/types/CoreClient.ts @@ -13,9 +13,7 @@ import { UriResolverHandler } from "./UriResolver"; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { Result } from "@polywrap/result"; -export interface CoreClientConfig< - TUri extends Uri | string = Uri | string -> { +export interface CoreClientConfig { readonly redirects?: Readonly[]>; readonly interfaces?: Readonly[]>; readonly envs?: Readonly[]>; diff --git a/packages/js/plugins/ipfs/src/getExecOptions.ts b/packages/js/plugins/ipfs/src/getExecOptions.ts index 2ef64ff2fa..b5d62cb877 100644 --- a/packages/js/plugins/ipfs/src/getExecOptions.ts +++ b/packages/js/plugins/ipfs/src/getExecOptions.ts @@ -9,17 +9,15 @@ export function getExecOptions( disableParallelRequests: false, timeout: 5000, provider: env.provider, - fallbackProviders: [] + fallbackProviders: [], }; return { disableParallelRequests: args?.disableParallelRequests ?? defaultOptions.disableParallelRequests, - timeout: - args?.timeout ?? defaultOptions.timeout, - provider: - args?.provider ?? defaultOptions.provider, + timeout: args?.timeout ?? defaultOptions.timeout, + provider: args?.provider ?? defaultOptions.provider, fallbackProviders: - args?.fallbackProviders ?? defaultOptions.fallbackProviders + args?.fallbackProviders ?? defaultOptions.fallbackProviders, }; } diff --git a/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts b/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts index 27fba53da5..27e04e2e62 100644 --- a/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts +++ b/packages/js/uri-resolver-extensions/src/ExtendableUriResolver.ts @@ -15,7 +15,10 @@ import { UriResolutionResult, } from "@polywrap/uri-resolvers-js"; -export class ExtendableUriResolver extends UriResolverAggregatorBase { +export class ExtendableUriResolver extends UriResolverAggregatorBase< + Error, + Error +> { private readonly resolverName: string; constructor(resolverName?: string) { diff --git a/packages/js/uri-resolvers/src/static/StaticResolver.ts b/packages/js/uri-resolvers/src/static/StaticResolver.ts index 0ec59c350d..52a550dbaa 100644 --- a/packages/js/uri-resolvers/src/static/StaticResolver.ts +++ b/packages/js/uri-resolvers/src/static/StaticResolver.ts @@ -12,7 +12,8 @@ import { } from "@polywrap/core-js"; import { Result } from "@polywrap/result"; -export class StaticResolver implements IUriResolver { +export class StaticResolver + implements IUriResolver { constructor(public uriMap: Map) {} static from( From a6e9c367d65155596b2816d166477a6ac1008ba3 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 24 Oct 2022 17:19:05 +0200 Subject: [PATCH 120/126] chore: fix IPFS plugin tests --- packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts | 1 + packages/js/plugins/ipfs/src/getExecOptions.ts | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts index 9f6d647522..b38febc227 100644 --- a/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts +++ b/packages/js/plugins/ipfs/src/__tests__/e2e.spec.ts @@ -137,6 +137,7 @@ describe("IPFS Plugin", () => { let result = await Promise.race([catPromise, racePromise]); expect(result).toBeTruthy(); + expect(result.ok).toBeFalsy(); result = result as { ok: false; error: Error | undefined }; expect(result.error).toBeTruthy(); expect(result.error?.stack).toMatch("Timeout has been reached"); diff --git a/packages/js/plugins/ipfs/src/getExecOptions.ts b/packages/js/plugins/ipfs/src/getExecOptions.ts index b5d62cb877..27b35641fa 100644 --- a/packages/js/plugins/ipfs/src/getExecOptions.ts +++ b/packages/js/plugins/ipfs/src/getExecOptions.ts @@ -6,10 +6,10 @@ export function getExecOptions( env: Env ): ExecOptions { const defaultOptions: ExecOptions = { - disableParallelRequests: false, - timeout: 5000, + disableParallelRequests: env.disableParallelRequests ?? false, + timeout: env.timeout ?? 5000, provider: env.provider, - fallbackProviders: [], + fallbackProviders: env.fallbackProviders ?? [], }; return { @@ -18,6 +18,8 @@ export function getExecOptions( timeout: args?.timeout ?? defaultOptions.timeout, provider: args?.provider ?? defaultOptions.provider, fallbackProviders: - args?.fallbackProviders ?? defaultOptions.fallbackProviders, + args?.fallbackProviders ? + [...args.fallbackProviders, ...defaultOptions.fallbackProviders] : + defaultOptions.fallbackProviders, }; } From de5918dd53bd67496a7c1b5c32d0a1d801950394 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 24 Oct 2022 17:29:06 +0200 Subject: [PATCH 121/126] chore: lint fix --- packages/js/plugins/ipfs/src/getExecOptions.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/js/plugins/ipfs/src/getExecOptions.ts b/packages/js/plugins/ipfs/src/getExecOptions.ts index 27b35641fa..1b72a5f84e 100644 --- a/packages/js/plugins/ipfs/src/getExecOptions.ts +++ b/packages/js/plugins/ipfs/src/getExecOptions.ts @@ -17,9 +17,8 @@ export function getExecOptions( args?.disableParallelRequests ?? defaultOptions.disableParallelRequests, timeout: args?.timeout ?? defaultOptions.timeout, provider: args?.provider ?? defaultOptions.provider, - fallbackProviders: - args?.fallbackProviders ? - [...args.fallbackProviders, ...defaultOptions.fallbackProviders] : - defaultOptions.fallbackProviders, + fallbackProviders: args?.fallbackProviders + ? [...args.fallbackProviders, ...defaultOptions.fallbackProviders] + : defaultOptions.fallbackProviders, }; } From f2e75e6d0977b9b2416c825748cbf7681ef78d05 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 24 Oct 2022 17:44:44 +0200 Subject: [PATCH 122/126] chore: fix tests --- .../build-strategies/strategies/DockerImageStrategy.ts | 9 +++++++-- .../bindings/typescript/app/templates/types-ts.mustache | 2 +- .../typescript/plugin/templates/types-ts.mustache | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/lib/build-strategies/strategies/DockerImageStrategy.ts b/packages/cli/src/lib/build-strategies/strategies/DockerImageStrategy.ts index ea6dd12a85..4f134eb469 100644 --- a/packages/cli/src/lib/build-strategies/strategies/DockerImageStrategy.ts +++ b/packages/cli/src/lib/build-strategies/strategies/DockerImageStrategy.ts @@ -266,7 +266,10 @@ export class DockerImageBuildStrategy extends BuildStrategy { } await runCommand( `docker buildx build -f ${dockerfile} -t ${imageName} ${rootDir} ${cacheFrom} ${cacheTo} --output=type=docker`, - this.project.logger + this.project.logger, + undefined, + undefined, + true ); } else { await runCommand( @@ -277,7 +280,9 @@ export class DockerImageBuildStrategy extends BuildStrategy { : { // eslint-disable-next-line @typescript-eslint/naming-convention DOCKER_BUILDKIT: "true", - } + }, + undefined, + true ); } diff --git a/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache b/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache index 280ace82ea..ec03d190d2 100644 --- a/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache +++ b/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache @@ -106,7 +106,7 @@ export const {{type}} = { return client.invoke<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>({ uri, method: "{{name}}", - args: args as unknown as Record + args: (args as unknown) as Record }); }{{^last}},{{/last}} {{^last}} diff --git a/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache b/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache index 00dc85df95..8552ac4bc1 100644 --- a/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache +++ b/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache @@ -117,7 +117,7 @@ export const {{type}} = { return client.invoke<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>({ uri: "{{parent.uri}}", method: "{{name}}", - args: args as unknown as Record + args: (args as unknown) as Record }); }{{^last}},{{/last}} {{^last}} @@ -142,7 +142,7 @@ export class {{#detectKeyword}}{{type}}{{/detectKeyword}} { return client.invoke<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>({ uri: this.uri, method: "{{name}}", - args: args as unknown as Record + args: (args as unknown) as Record }); } {{^last}} From 08baff399f930d9ae21f598fa3cb10726bfbdd94 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 24 Oct 2022 17:51:39 +0200 Subject: [PATCH 123/126] chore: fix wasm-as tests --- packages/js/client/src/__tests__/e2e/test-cases.ts | 2 +- packages/js/client/src/__tests__/e2e/wasm-as.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/js/client/src/__tests__/e2e/test-cases.ts b/packages/js/client/src/__tests__/e2e/test-cases.ts index eb01cfd1ff..696f29f388 100644 --- a/packages/js/client/src/__tests__/e2e/test-cases.ts +++ b/packages/js/client/src/__tests__/e2e/test-cases.ts @@ -1118,7 +1118,7 @@ export const runComplexEnvs = async ( }); }; -export const runSubinvokeTest = async (client: PolywrapClient, uri: string) => { +export const runSubinvokeTest = async (client: CoreClient, uri: string) => { { const response = await client.invoke({ uri, diff --git a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts index 27c9377705..f650f4fc92 100644 --- a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts +++ b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts @@ -49,7 +49,7 @@ describe("wasm-as test cases", () => { await buildWrapper(subwrapperPath); await buildWrapper(wrapperPath); - const client = await getClient({ + const client = new PolywrapClient({ redirects: [ { from: "ens/add.eth", From 8106329059f907bff7004b36aedfe3599db44ff5 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 24 Oct 2022 19:16:31 +0200 Subject: [PATCH 124/126] fix: interface-impls js client test --- .../src/__tests__/core/interface-impls.spec.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/js/client/src/__tests__/core/interface-impls.spec.ts b/packages/js/client/src/__tests__/core/interface-impls.spec.ts index 475cd71695..fbafdfde59 100644 --- a/packages/js/client/src/__tests__/core/interface-impls.spec.ts +++ b/packages/js/client/src/__tests__/core/interface-impls.spec.ts @@ -19,6 +19,10 @@ describe("interface-impls", () => { implementations: [implementation1Uri, implementation2Uri], }, ], + resolver: UriResolver.from({ + from: "uri/foo", + to: "uri/bar" + }) }, { noDefaults: true } ); @@ -144,8 +148,7 @@ describe("interface-impls", () => { ], }); - const interfaces = client - .getInterfaces() + const interfaces = (client.getInterfaces() || []) .filter((x) => x.interface.uri === interfaceUri); expect(interfaces.length).toEqual(1); @@ -175,8 +178,7 @@ describe("interface-impls", () => { ], }); - const interfaces = client - .getInterfaces() + const interfaces = (client.getInterfaces() || []) .filter((x) => x.interface.uri === interfaceUri); expect(interfaces.length).toEqual(1); @@ -186,7 +188,7 @@ describe("interface-impls", () => { const defaultClientConfig = builder.addDefaults().buildDefault(); expect(implementationUris).toEqual([ - ...defaultClientConfig.interfaces.find( + ...(defaultClientConfig.interfaces || []).find( (x) => x.interface.uri === interfaceUri )!.implementations, new Uri(implementationUri1), From 03247bb9c1a884d1dcb7da10e8ce8d0976138ab4 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 24 Oct 2022 20:45:10 +0200 Subject: [PATCH 125/126] fix: schema-bind tests --- .../typescript/app/templates/types-ts.mustache | 4 ++-- .../typescript/plugin/templates/module-ts.mustache | 11 ++++------- .../typescript/plugin/templates/types-ts.mustache | 13 +++++++------ .../cases/bind/sanity/output/app-ts/types.ts | 2 +- .../cases/bind/sanity/output/plugin-ts/module.ts | 5 ++++- .../cases/bind/sanity/output/plugin-ts/types.ts | 6 +++++- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache b/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache index ec03d190d2..bc03dca396 100644 --- a/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache +++ b/packages/schema/bind/src/bindings/typescript/app/templates/types-ts.mustache @@ -106,14 +106,14 @@ export const {{type}} = { return client.invoke<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>({ uri, method: "{{name}}", - args: (args as unknown) as Record + args: (args as unknown) as Record, }); }{{^last}},{{/last}} {{^last}} {{/last}} {{/methods}} -} +}; {{/importedModuleTypes}} /// Imported Modules END /// diff --git a/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache b/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache index c51297e089..dac08c0e51 100644 --- a/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache +++ b/packages/schema/bind/src/bindings/typescript/plugin/templates/module-ts.mustache @@ -16,19 +16,16 @@ export interface Args_{{name}} { {{/methods}} {{/moduleType}} -export abstract class Module< - TConfig -> extends PluginModule< - TConfig{{#envType}}, - Types.Env{{/envType}} -> { +export abstract class Module extends PluginModule { {{#moduleType}} {{#methods}} - abstract {{name}}( args: Args_{{name}}, client: CoreClient ): MaybeAsync<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>; + {{^last}} + + {{/last}} {{/methods}} {{/moduleType}} } diff --git a/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache b/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache index 8552ac4bc1..e7eb717357 100644 --- a/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache +++ b/packages/schema/bind/src/bindings/typescript/plugin/templates/types-ts.mustache @@ -117,7 +117,7 @@ export const {{type}} = { return client.invoke<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>({ uri: "{{parent.uri}}", method: "{{name}}", - args: (args as unknown) as Record + args: (args as unknown) as Record, }); }{{^last}},{{/last}} {{^last}} @@ -131,18 +131,17 @@ export const {{type}} = { export class {{#detectKeyword}}{{type}}{{/detectKeyword}} { public static interfaceUri: string = "{{uri}}"; - constructor(public uri: string) { - } + constructor(public uri: string) {} {{#methods}} - public async {{name}} ( + public async {{name}}( args: {{parent.type}}_Args_{{name}}, client: CoreClient ): Promise> { return client.invoke<{{#return}}{{#toTypescript}}{{toGraphQLType}}{{/toTypescript}}{{/return}}>({ uri: this.uri, method: "{{name}}", - args: (args as unknown) as Record + args: (args as unknown) as Record, }); } {{^last}} @@ -163,7 +162,9 @@ export class {{#detectKeyword}}{{namespace}}{{/detectKeyword}} { {{#capabilities}} {{#getImplementations}} {{#enabled}} - public static getImplementations(client: CoreClient): Result { + public static getImplementations( + client: CoreClient + ): Result { return client.getImplementations(this.uri, {}); } {{/enabled}} diff --git a/packages/test-cases/cases/bind/sanity/output/app-ts/types.ts b/packages/test-cases/cases/bind/sanity/output/app-ts/types.ts index 28617e361e..df0a780c98 100644 --- a/packages/test-cases/cases/bind/sanity/output/app-ts/types.ts +++ b/packages/test-cases/cases/bind/sanity/output/app-ts/types.ts @@ -217,7 +217,7 @@ export const TestImport_Module = { method: "returnsArrayOfEnums", args: (args as unknown) as Record, }); - }, + } }; /// Imported Modules END /// diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts index aa0c37e5ea..50b99303d6 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/module.ts @@ -54,5 +54,8 @@ export abstract class Module extends PluginModule { client: CoreClient ): MaybeAsync; - abstract if(args: Args_if, client: CoreClient): MaybeAsync; + abstract if( + args: Args_if, + client: CoreClient + ): MaybeAsync; } diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts index cdcdb4485f..ee8e1a9efc 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts @@ -5,7 +5,11 @@ import * as Types from "./"; // @ts-ignore -import { CoreClient, Result, InvokeResult } from "@polywrap/core-js"; +import { + CoreClient, + Result, + InvokeResult +} from "@polywrap/core-js"; export type UInt = number; export type UInt8 = number; From 05bfbd309d7f442b1847c5cb38cd1e484e78086c Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 24 Oct 2022 20:50:22 +0200 Subject: [PATCH 126/126] fix: cli plugin codegen tests --- .../cli/plugin/codegen/001-sanity/expected/wrap/types.ts | 4 ++-- .../plugin/codegen/002-single-module/expected/wrap/types.ts | 4 ++-- .../plugin/codegen/005-custom-config/expected/wrap/types.ts | 4 ++-- .../codegen/006-custom-manifest-file/expected/wrap/types.ts | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/types.ts b/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/types.ts index 75ae05ea60..e2cef98b68 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/types.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/001-sanity/expected/wrap/types.ts @@ -650,7 +650,7 @@ export const Ethereum_Module = { method: "sendRPC", args: (args as unknown) as Record, }); - }, -}; + } +} /// Imported Modules END /// diff --git a/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/types.ts b/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/types.ts index 75ae05ea60..e2cef98b68 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/types.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/002-single-module/expected/wrap/types.ts @@ -650,7 +650,7 @@ export const Ethereum_Module = { method: "sendRPC", args: (args as unknown) as Record, }); - }, -}; + } +} /// Imported Modules END /// diff --git a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/types.ts b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/types.ts index 75ae05ea60..e2cef98b68 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/types.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/005-custom-config/expected/wrap/types.ts @@ -650,7 +650,7 @@ export const Ethereum_Module = { method: "sendRPC", args: (args as unknown) as Record, }); - }, -}; + } +} /// Imported Modules END /// diff --git a/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/types.ts b/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/types.ts index 75ae05ea60..e2cef98b68 100644 --- a/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/types.ts +++ b/packages/test-cases/cases/cli/plugin/codegen/006-custom-manifest-file/expected/wrap/types.ts @@ -650,7 +650,7 @@ export const Ethereum_Module = { method: "sendRPC", args: (args as unknown) as Record, }); - }, -}; + } +} /// Imported Modules END ///