diff --git a/.github/workflows/ci-javascript.yaml b/.github/workflows/ci-javascript.yaml index 775f5a53eb..83f9211ada 100644 --- a/.github/workflows/ci-javascript.yaml +++ b/.github/workflows/ci-javascript.yaml @@ -1,6 +1,6 @@ name: CI-Javascript -on: +on: push: branches: - origin @@ -44,9 +44,37 @@ jobs: - name: Build run: yarn build + Check-Changed-Folders: + runs-on: ubuntu-latest + outputs: + should-generate: ${{ env.should-generate }} + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Check changed files + id: changed-files + uses: tj-actions/changed-files@v35 + with: + files: | + packages/cli/* + packages/schema/* + packages/wasm/* + - id: set-output + run: echo "should-generate=${{steps.changed-files.outputs.any_changed}}" >> $GITHUB_ENV + + Generate-Test-Wrappers: + needs: Check-Changed-Folders + if: ${{ needs.Check-Changed-Folders.outputs.should-generate == 'true' }} + uses: ./.github/workflows/generate-modified-test-wrappers.yaml + with: + cli-path: /toolchain/packages/cli + wasm-path: /toolchain/packages/wasm + Test-Core: runs-on: ubuntu-latest + needs: Generate-Test-Wrappers timeout-minutes: 60 + if: ${{ always() }} steps: - name: Checkout repository uses: actions/checkout@v2 @@ -87,11 +115,24 @@ jobs: - name: Build run: yarn build + - name: Get updated wrappers + uses: actions/download-artifact@v2 + id: get-wrappers + with: + name: wrappers + + - name: If wrappers exists, update them + if: steps.get-wrappers.outputs.exists == 'true' + run: rm -rf packages/test-cases/wrappers | + mv wrappers packages/test-cases/wrappers + - name: Test run: yarn test:core Test-Plugins: runs-on: ubuntu-latest + needs: Generate-Test-Wrappers + if: ${{ always() }} timeout-minutes: 60 steps: - name: Checkout repository @@ -123,11 +164,24 @@ jobs: - name: Build run: yarn build + - name: Get updated wrappers + uses: actions/download-artifact@v2 + id: get-wrappers + with: + name: wrappers + + - name: If wrappers exists, update them + if: steps.get-wrappers.outputs.exists == 'true' + run: rm -rf packages/test-cases/wrappers | + mv wrappers packages/test-cases/wrappers + - name: Test run: yarn test:plugins Test-Client: runs-on: ubuntu-latest + needs: Generate-Test-Wrappers + if: ${{ always() }} timeout-minutes: 60 steps: - name: Checkout repository @@ -159,11 +213,24 @@ jobs: - name: Build run: yarn build + - name: Get updated wrappers + uses: actions/download-artifact@v2 + id: get-wrappers + with: + name: wrappers + + - name: If wrappers exists, update them + if: steps.get-wrappers.outputs.exists == 'true' + run: rm -rf packages/test-cases/wrappers | + mv wrappers packages/test-cases/wrappers + - name: Test run: yarn test:client Test-Cli: runs-on: ubuntu-latest + needs: Generate-Test-Wrappers + if: ${{ always() }} timeout-minutes: 60 steps: - name: Checkout repository @@ -184,7 +251,7 @@ jobs: - name: Install cue lang run: go install cuelang.org/go/cmd/cue@latest - + - name: Check if cue is installed run: cue version @@ -205,6 +272,17 @@ jobs: - name: Build run: yarn build + - name: Get updated wrappers + uses: actions/download-artifact@v2 + id: get-wrappers + with: + name: wrappers + + - name: If wrappers exists, update them + if: steps.get-wrappers.outputs.exists == 'true' + run: rm -rf packages/test-cases/wrappers | + mv wrappers packages/test-cases/wrappers + - name: Test run: yarn test:cli diff --git a/.github/workflows/ci-rust.yaml b/.github/workflows/ci-rust.yaml index f0b22d579f..889908ed4c 100644 --- a/.github/workflows/ci-rust.yaml +++ b/.github/workflows/ci-rust.yaml @@ -56,8 +56,36 @@ jobs: working-directory: ./packages/wasm/rs run: cargo doc --workspace --no-deps + Check-Changed-Folders: + runs-on: ubuntu-latest + outputs: + should-generate: ${{ env.should-generate }} + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Check changed files + id: changed-files + uses: tj-actions/changed-files@v35 + with: + files: | + packages/cli/* + packages/schema/* + packages/wasm/* + - id: set-output + run: echo "should-generate=${{steps.changed-files.outputs.any_changed}}" >> $GITHUB_ENV + + Generate-Test-Wrappers: + needs: Check-Changed-Folders + if: ${{ needs.Check-Changed-Folders.outputs.should-generate == 'true' }} + uses: ./.github/workflows/generate-modified-test-wrappers.yaml + with: + cli-path: /toolchain/packages/cli + wasm-path: /toolchain/packages/wasm + Test-Cases: + needs: Generate-Test-Wrappers runs-on: ubuntu-latest + if: ${{ always() }} steps: - name: Checkout repository uses: actions/checkout@v2 @@ -88,12 +116,26 @@ jobs: - name: Build run: yarn build + + - name: Get updated wrappers + uses: actions/download-artifact@v2 + id: get-wrappers + with: + name: wrappers + + - name: If wrappers exists, update them + if: steps.get-wrappers.outputs.exists == 'true' + run: rm -rf packages/test-cases/wrappers | + mv wrappers packages/test-cases/wrappers + - name: Test run: yarn test:rust working-directory: ./packages/js/client Test-Cli: runs-on: ubuntu-latest + needs: Generate-Test-Wrappers + if: ${{ always() }} steps: - name: Checkout repository uses: actions/checkout@v2 @@ -124,6 +166,17 @@ jobs: - name: Build run: yarn build + - name: Get updated wrappers + uses: actions/download-artifact@v2 + id: get-wrappers + with: + name: wrappers + + - name: If wrappers exists, update them + if: steps.get-wrappers.outputs.exists == 'true' + run: rm -rf packages/test-cases/wrappers | + mv wrappers packages/test-cases/wrappers + - name: Test run: yarn test:rust working-directory: ./packages/cli diff --git a/.github/workflows/generate-modified-test-wrappers.yaml b/.github/workflows/generate-modified-test-wrappers.yaml new file mode 100644 index 0000000000..52b149f422 --- /dev/null +++ b/.github/workflows/generate-modified-test-wrappers.yaml @@ -0,0 +1,91 @@ +name: generate-wrappers + +on: + workflow_call: + inputs: + cli-path: + required: false + type: string + wasm-path: + required: false + type: string + +jobs: + generate_wrappers: + name: Generate wrappers + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + with: + repository: polywrap/wasm-test-harness + ref: ${{ github.event.pull_request.head.ref }} + fetch-depth: 0 + + - name: Checkout Repository + uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.ref }} + path: toolchain + fetch-depth: 0 + + - name: Read .nvmrc + run: echo ::set-output name=NVMRC::$(cat .nvmrc) + id: nvm + working-directory: ./toolchain + + - name: Setup Node.js + uses: actions/setup-node@master + with: + node-version: '${{ steps.nvm.outputs.NVMRC }}' + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + + - uses: actions/cache@v2 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install dependencies + run: yarn install --nonInteractive --frozen-lockfile --prefer-offline + working-directory: ./toolchain + + - name: Build toolchain + run: yarn build + working-directory: ./toolchain + + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + override: true + + - uses: actions/cache@v2 + with: + path: | + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/ + ./target/ + key: cargo-${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + cargo-${{ runner.os }}-${{ github.job }} + + - name: Set environment variable + if: ${{ inputs.cli-path }} + run: echo "POLYWRAP_CLI_PATH=${{ github.workspace }}/${{ inputs.cli-path }}" >> $GITHUB_ENV + + - name: Set environment variable + if: ${{ inputs.wasm-path }} + run: echo "POLYWRAP_WASM_PATH=${{ github.workspace }}/${{ inputs.wasm-path }}" >> $GITHUB_ENV + + - name: Run wrappers build + run: cargo run -- -w + + - uses: actions/upload-artifact@v3 + with: + name: wrappers + path: ./wrappers \ No newline at end of file diff --git a/.gitignore b/.gitignore index a7f975fdd7..7ef1c6c6dc 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ bin pkg wasm-pack.log .env +packages/test-cases/cases/wrappers \ No newline at end of file diff --git a/DEV_GUIDELINES.md b/DEV_GUIDELINES.md index 31d89f300e..bf25ffc89b 100644 --- a/DEV_GUIDELINES.md +++ b/DEV_GUIDELINES.md @@ -43,6 +43,14 @@ Some tests rely on validating `stdout` for which Cue is used. If you need to run You can install Cue by following the instructions found [here](https://cuelang.org/docs/install/). +In the test-cases directory, you can find the `wrappers` folder, which is auto generated from the releases of the +[WASM Test Harness](https://github.com/polywrap/wasm-test-harness), check the `fetchWrappers` function from the [test-cases package](./packages/test-cases/index.ts). These tests are used mostly for client tests, if you would like to +modify them, [follow the development guide of the wasm test harness](https://github.com/polywrap/wasm-test-harness#build--contribute). + +If any PR modifies `packages/wasm`, `packages/cli` or `packages/schema`, it will try to generate wrappers on CI based on the changes +introduced on the PR (You can check the workflow in detail [here](https://github.com/polywrap/wasm-test-harness/blob/master/.github/workflows/generate-wrappers.yaml#L14)). +For this, a new branch in the Test Harness need to be opened **with the same name** of the base branch from the PR + ## Branches Currently, there are 2 active branches with configured branch policies: diff --git a/package.json b/package.json index 993307a4da..bdb4a5fe36 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,9 @@ "reset": "yarn clean && yarn && yarn build", "clean": "npx rimraf ./**/node_modules ./**/yarn.lock ./**/build ./**/coverage ./**/.polywrap", "dependencies:install": "cd dependencies && yarn", + "test-wrappers:install": "lerna run generate:wrappers --scope @polywrap/test-cases", "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:core:client && 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:core:client && yarn build:client && yarn build:test-env && yarn build:cli && yarn test-wrappers:install", "build:core": "lerna run build --no-private --ignore @polywrap/*-plugin-js --ignore @polywrap/client-config-builder-js --ignore polywrap --ignore @polywrap/core-client-js --ignore @polywrap/client-js --ignore @polywrap/test-env-js --ignore @polywrap/*-interface --ignore @polywrap/cli-js", "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/cli/src/__tests__/unit/jobrunner-test-cases.ts b/packages/cli/src/__tests__/unit/jobrunner-test-cases.ts index 2e5c892f2a..0e4a933642 100644 --- a/packages/cli/src/__tests__/unit/jobrunner-test-cases.ts +++ b/packages/cli/src/__tests__/unit/jobrunner-test-cases.ts @@ -14,7 +14,7 @@ export const testCases: WorkflowTestCase[] = [ { name: "simple workflow", workflow: { - name: "simpleCalculator", + name: "simpleInvoke", format: "0.1", __type: "PolywrapWorkflow", jobs: { @@ -23,14 +23,15 @@ export const testCases: WorkflowTestCase[] = [ { uri: `fs/${path.join( GetPathToTestWrappers(), - "wasm-as", - "simple-calculator", - "build" + "subinvoke", + "00-subinvoke", + "implementations", + "as" )}`, method: "add", args: { - a: 12, - b: 8, + a: 1, + b: 1, }, }, ], @@ -42,7 +43,7 @@ export const testCases: WorkflowTestCase[] = [ case "ops.0": { expect(jobResult.status).toBe(Status.SUCCEED); expect(jobResult.error).toBeFalsy(); - expect(jobResult.data).toBe(20); + expect(jobResult.data).toBe(2); break; } default: { @@ -54,7 +55,7 @@ export const testCases: WorkflowTestCase[] = [ { name: "simple workflow with output propagation", workflow: { - name: "simpleCalculator", + name: "simpleInvokeDifferentImplementations", format: "0.1", __type: "PolywrapWorkflow", jobs: { @@ -63,27 +64,29 @@ export const testCases: WorkflowTestCase[] = [ { uri: `fs/${path.join( GetPathToTestWrappers(), - "wasm-as", - "simple-calculator", - "build" + "subinvoke", + "00-subinvoke", + "implementations", + "as" )}`, method: "add", args: { - a: 12, - b: 8, + a: 1, + b: 1, }, }, { uri: `fs/${path.join( GetPathToTestWrappers(), - "wasm-as", - "simple-calculator", - "build" + "subinvoke", + "00-subinvoke", + "implementations", + "rs" )}`, - method: "sub", + method: "add", args: { a: "$ops.0.data", - b: 5, + b: 1, }, }, ], @@ -95,13 +98,13 @@ export const testCases: WorkflowTestCase[] = [ case "ops.0": { expect(jobResult.status).toBe(Status.SUCCEED); expect(jobResult.error).toBeFalsy(); - expect(jobResult.data).toBe(20); + expect(jobResult.data).toBe(2); break; } case "ops.1": { expect(jobResult.status).toBe(Status.SUCCEED); expect(jobResult.error).toBeFalsy(); - expect(jobResult.data).toBe(15); + expect(jobResult.data).toBe(3); break; } default: { @@ -113,7 +116,7 @@ export const testCases: WorkflowTestCase[] = [ { name: "workflow with subJobs and output propagation", workflow: { - name: "simpleCalculator", + name: "simpleInvokeDifferentImplementations", format: "0.1", __type: "PolywrapWorkflow", jobs: { @@ -122,27 +125,29 @@ export const testCases: WorkflowTestCase[] = [ { uri: `fs/${path.join( GetPathToTestWrappers(), - "wasm-as", - "simple-calculator", - "build" + "subinvoke", + "00-subinvoke", + "implementations", + "rs" )}`, - method: "add", // 20 + method: "add", // 2 args: { - a: 12, - b: 8, + a: 1, + b: 1, }, }, { uri: `fs/${path.join( GetPathToTestWrappers(), - "wasm-as", - "simple-calculator", - "build" + "subinvoke", + "00-subinvoke", + "implementations", + "rs" )}`, - method: "sub", // 15 + method: "add", // 3 args: { - a: "$ops.0.data", // 20 - b: 5, + a: "$ops.0.data", // 2 + b: 1, }, }, ], @@ -152,14 +157,15 @@ export const testCases: WorkflowTestCase[] = [ { uri: `fs/${path.join( GetPathToTestWrappers(), - "wasm-as", - "simple-calculator", - "build" + "subinvoke", + "01-invoke", + "implementations", + "rs" )}`, - method: "sub", // 5 + method: "addAndIncrement", // 6 args: { - a: "$ops.0.data", // 20 - b: "$ops.1.data", // 15 + a: "$ops.0.data", // 2 + b: "$ops.1.data", // 3 }, }, ], @@ -173,19 +179,19 @@ export const testCases: WorkflowTestCase[] = [ case "ops.0": { expect(jobResult.status).toBe(Status.SUCCEED); expect(jobResult.error).toBeFalsy(); - expect(jobResult.data).toBe(20); + expect(jobResult.data).toBe(2); break; } case "ops.1": { expect(jobResult.status).toBe(Status.SUCCEED); expect(jobResult.error).toBeFalsy(); - expect(jobResult.data).toBe(15); + expect(jobResult.data).toBe(3); break; } case "ops.subOps.0": { expect(jobResult.status).toBe(Status.SUCCEED); expect(jobResult.error).toBeFalsy(); - expect(jobResult.data).toBe(5); + expect(jobResult.data).toBe(6); break; } default: { diff --git a/packages/cli/src/__tests__/unit/jobrunner.spec.ts b/packages/cli/src/__tests__/unit/jobrunner.spec.ts index 3be9489901..fb141f3ab1 100644 --- a/packages/cli/src/__tests__/unit/jobrunner.spec.ts +++ b/packages/cli/src/__tests__/unit/jobrunner.spec.ts @@ -1,12 +1,8 @@ +import path from "path"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { buildWrapper } from "@polywrap/test-env-js"; +import { ClientConfigBuilder, IClientConfigBuilder } from "@polywrap/client-config-builder-js"; import { testCases } from "./jobrunner-test-cases"; import { JobRunner } from "../../lib"; -import path from "path"; -import { - ClientConfigBuilder, - IClientConfigBuilder, -} from "@polywrap/client-config-builder-js"; jest.setTimeout(200000); @@ -14,10 +10,25 @@ describe("workflow JobRunner", () => { let configBuilder: IClientConfigBuilder; beforeAll(async () => { - await buildWrapper( - path.join(GetPathToTestWrappers(), "wasm-as", "simple-calculator") - ); - configBuilder = new ClientConfigBuilder().addDefaults(); + configBuilder = new ClientConfigBuilder(); + const subinvokeUri = `fs/${path.join( + GetPathToTestWrappers(), + "subinvoke", + "00-subinvoke", + "implementations", + "rs" + )}` + + const invokeUri = `fs/${path.join( + GetPathToTestWrappers(), + "subinvoke", + "01-invoke", + "implementations", + "rs" + )}` + + configBuilder.addRedirect("ens/imported-invoke.eth", invokeUri).addRedirect("ens/imported-subinvoke.eth", subinvokeUri); + configBuilder.addDefaults(); }); for (const testCase of testCases) { diff --git a/packages/js/client/jest.config.js b/packages/js/client/jest.config.js index 1efef92c88..b99d42000f 100644 --- a/packages/js/client/jest.config.js +++ b/packages/js/client/jest.config.js @@ -3,7 +3,7 @@ module.exports = { preset: 'ts-jest', testEnvironment: 'node', testMatch: ["**/?(*.)+(spec|test).[jt]s?(x)"], - modulePathIgnorePatterns: ["\\./src/__tests__/e2e/wasm-rs\\.spec\\.ts", "\\.polywrap"], + modulePathIgnorePatterns: ["./src/__tests__/e2e/helpers.ts", "\\.polywrap"], globals: { 'ts-jest': { diagnostics: false diff --git a/packages/js/client/jest.rs.config.js b/packages/js/client/jest.rs.config.js deleted file mode 100644 index ab61ae9761..0000000000 --- a/packages/js/client/jest.rs.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - ...require("./jest.config"), - testMatch: ["**/wasm-rs.spec.ts"], - modulePathIgnorePatterns: [], -}; diff --git a/packages/js/client/package.json b/packages/js/client/package.json index 2f1ff3bca9..d8742a90db 100644 --- a/packages/js/client/package.json +++ b/packages/js/client/package.json @@ -17,7 +17,7 @@ "lint": "eslint --color -c ../../../.eslintrc.js src/", "test": "jest --passWithNoTests --runInBand --verbose=true --detectOpenHandles --forceExit", "test:ci": "jest --passWithNoTests --runInBand --verbose --detectOpenHandles --forceExit", - "test:rust": "jest --passWithNoTests --runInBand --verbose --detectOpenHandles --forceExit --config ./jest.rs.config.js", + "test:rust": "jest --passWithNoTests --runInBand --verbose --detectOpenHandles --forceExit -t 'client <-> wrappers .* rs'", "test:watch": "jest --watch --passWithNoTests --verbose --detectOpenHandles", "build:snippets": "tsc --project ./examples/tsconfig.examples.json", "build:readme": "yarn doc-snippets combine" diff --git a/packages/js/client/src/__tests__/core/embedded-package.spec.ts b/packages/js/client/src/__tests__/core/embedded-package.spec.ts index a9af218b45..d1c510a41c 100644 --- a/packages/js/client/src/__tests__/core/embedded-package.spec.ts +++ b/packages/js/client/src/__tests__/core/embedded-package.spec.ts @@ -1,6 +1,5 @@ import fs from "fs"; import path from "path"; -import { buildWrapper } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { InMemoryFileReader, WasmPackage } from "@polywrap/wasm-js"; import { IWrapPackage, Uri } from "@polywrap/core-js"; @@ -9,46 +8,43 @@ import { PolywrapClient } from "../../PolywrapClient"; jest.setTimeout(200000); -const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; -const simpleWrapperUri = new Uri(`fs/${simpleWrapperPath}/build`); +const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; +const wrapperUri = new Uri(`fs/${wrapperPath}`); describe("Embedded package", () => { - beforeAll(async () => { - await buildWrapper(simpleWrapperPath); - }); - it("can invoke an embedded package", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) let wrapPackage = WasmPackage.from(manifestBuffer, wasmModuleBuffer); const client = new PolywrapClient({ packages: [ { - uri: simpleWrapperUri, + uri: wrapperUri, package: wrapPackage } ] }); - const result = await client.invoke({ - uri: simpleWrapperUri.uri, - method: "simpleMethod", + const result = await client.invoke({ + uri: wrapperUri.uri, + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, }); if (!result.ok) fail(result.error); expect(result.value).toBeTruthy(); - expect(typeof result.value).toBe("string"); - expect(result.value).toEqual("test"); + expect(typeof result.value).toBe("number"); + expect(result.value).toEqual(2); }); it("can get a file from wrapper", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -66,8 +62,8 @@ describe("Embedded package", () => { }); it("can add embedded wrapper through file reader", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -89,8 +85,8 @@ describe("Embedded package", () => { }); it("can add embedded wrapper with async wrap manifest", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -112,8 +108,8 @@ describe("Embedded package", () => { }); it("can add embedded wrapper with async wasm module", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -137,15 +133,15 @@ const testEmbeddedPackageWithFile = async (wrapPackage: IWrapPackage, filePath: const client = new PolywrapClient({ packages: [ { - uri: simpleWrapperUri, + uri: wrapperUri, package: wrapPackage } ] }); const expectedManifest = - await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.info`); - const receivedManifestResult = await client.getFile(simpleWrapperUri, { + await fs.promises.readFile(`${wrapperPath}/wrap.info`); + const receivedManifestResult = await client.getFile(wrapperUri, { path: "wrap.info", }); if (!receivedManifestResult.ok) fail(receivedManifestResult.error); @@ -153,15 +149,15 @@ const testEmbeddedPackageWithFile = async (wrapPackage: IWrapPackage, filePath: expect(receivedManifest).toEqual(expectedManifest); const expectedWasmModule = - await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.wasm`); - const receivedWasmModuleResult = await client.getFile(simpleWrapperUri, { + await fs.promises.readFile(`${wrapperPath}/wrap.wasm`); + const receivedWasmModuleResult = await client.getFile(wrapperUri, { path: "wrap.wasm", }); if (!receivedWasmModuleResult.ok) fail(receivedWasmModuleResult.error); const receivedWasmModule = receivedWasmModuleResult.value as Uint8Array; expect(receivedWasmModule).toEqual(expectedWasmModule); - const receivedHelloFileResult = await client.getFile(simpleWrapperUri, { + const receivedHelloFileResult = await client.getFile(wrapperUri, { path: filePath, encoding: "utf-8", }); diff --git a/packages/js/client/src/__tests__/core/embedded-wrapper.spec.ts b/packages/js/client/src/__tests__/core/embedded-wrapper.spec.ts index 2e2c44247a..1743fbbb1f 100644 --- a/packages/js/client/src/__tests__/core/embedded-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/embedded-wrapper.spec.ts @@ -1,6 +1,5 @@ import fs from "fs"; import path from "path"; -import { buildWrapper } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { WasmWrapper, InMemoryFileReader } from "@polywrap/wasm-js"; import { Uri, Wrapper } from "@polywrap/core-js"; @@ -9,17 +8,13 @@ import { PolywrapClient } from "../../PolywrapClient"; jest.setTimeout(200000); -const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; -const simpleWrapperUri = new Uri(`fs/${simpleWrapperPath}/build`); +const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; +const simpleWrapperUri = new Uri(`fs/${wrapperPath}`); describe("Embedded wrapper", () => { - beforeAll(async () => { - await buildWrapper(simpleWrapperPath); - }); - it("can invoke an embedded wrapper", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) let wrapper: Wrapper = await WasmWrapper.from(manifestBuffer, wasmModuleBuffer); @@ -34,21 +29,22 @@ describe("Embedded wrapper", () => { const result = await client.invoke({ uri: simpleWrapperUri.uri, - method: "simpleMethod", + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, }); if (!result.ok) fail(result.error); expect(result.value).toBeTruthy(); - expect(typeof result.value).toBe("string"); - expect(result.value).toEqual("test"); + expect(typeof result.value).toBe("number"); + expect(result.value).toEqual(2); }); it("can get a file from wrapper", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -66,8 +62,8 @@ describe("Embedded wrapper", () => { }); it("can add embedded wrapper through file reader", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -89,8 +85,8 @@ describe("Embedded wrapper", () => { }); it("can add embedded wrapper with async wrap manifest", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -112,8 +108,8 @@ describe("Embedded wrapper", () => { }); it("can add embedded wrapper with async wasm module", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -144,7 +140,7 @@ const testEmbeddedWrapperWithFile = async (wrapper: WasmWrapper, filePath: strin }); const expectedManifest = - await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.info`); + await fs.promises.readFile(`${wrapperPath}/wrap.info`); const receivedManifestResult = await client.getFile(simpleWrapperUri, { path: "wrap.info", }); @@ -153,7 +149,7 @@ const testEmbeddedWrapperWithFile = async (wrapper: WasmWrapper, filePath: strin expect(receivedManifest).toEqual(expectedManifest); const expectedWasmModule = - await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.wasm`); + await fs.promises.readFile(`${wrapperPath}/wrap.wasm`); const receivedWasmModuleResult = await client.getFile(simpleWrapperUri, { path: "wrap.wasm", }); diff --git a/packages/js/client/src/__tests__/core/error-structure.spec.ts b/packages/js/client/src/__tests__/core/error-structure.spec.ts index b4cfa10503..777aa1c1ac 100644 --- a/packages/js/client/src/__tests__/core/error-structure.spec.ts +++ b/packages/js/client/src/__tests__/core/error-structure.spec.ts @@ -1,70 +1,43 @@ +import fs from "fs"; +import path from "path"; +import { Uri } from "@polywrap/core-js"; + import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { Uri, PolywrapClient } from "../.."; -import { buildWrapper } from "@polywrap/test-env-js"; +import { PolywrapClient } from "../.."; import { WrapError, WrapErrorCode } from "@polywrap/core-js"; -import { mockPluginRegistration } from "../helpers/mockPluginRegistration"; -import { defaultInterfaces } from "@polywrap/client-config-builder-js"; +import { incompatiblePlugin, mockPluginRegistration } from "../helpers"; +import { msgpackDecode, msgpackEncode } from "@polywrap/msgpack-js"; +import { + ClientConfigBuilder, + defaultInterfaces, +} from "@polywrap/client-config-builder-js"; jest.setTimeout(660000); -// AS -const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; -const simpleWrapperUri = new Uri(`fs/${simpleWrapperPath}/build`); - -const subinvokeErrorWrapperPath = `${GetPathToTestWrappers()}/wasm-as/subinvoke-error/invoke`; -const subinvokeErrorWrapperUri = new Uri(`fs/${subinvokeErrorWrapperPath}/build`); - -const badMathWrapperPath = `${GetPathToTestWrappers()}/wasm-as/subinvoke-error/0-subinvoke`; -const badMathWrapperUri = new Uri(`fs/${badMathWrapperPath}/build`); - -const badUtilWrapperPath = `${GetPathToTestWrappers()}/wasm-as/subinvoke-error/1-subinvoke`; -const badUtilWrapperUri = new Uri(`fs/${badUtilWrapperPath}/build`); - -const incompatibleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple-deprecated`; -const incompatibleWrapperUri = new Uri(`fs/${incompatibleWrapperPath}`); +const asSubinvokeWrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; +const asSubinvokeWrapperUri = new Uri(`fs/${asSubinvokeWrapperPath}`); -// RS -const invalidTypesWrapperRSPath = `${GetPathToTestWrappers()}/wasm-rs/invalid-types`; -const invalidTypesWrapperRSUri = new Uri(`fs/${invalidTypesWrapperRSPath}/build`); +const asInvokeWrapperPath = `${GetPathToTestWrappers()}/subinvoke/01-invoke/implementations/as`; +const asInvokeWrapperUri = new Uri(`fs/${asInvokeWrapperPath}`); -const subinvokeErrorWrapperRSPath = `${GetPathToTestWrappers()}/wasm-rs/subinvoke-error/invoke`; -const subinvokeErrorWrapperRSUri = new Uri(`fs/${subinvokeErrorWrapperRSPath}/build`); +const asConsumerWrapperPath = `${GetPathToTestWrappers()}/subinvoke/02-consumer/implementations/as`; +const asConsumerWrapperUri = new Uri(`fs/${asConsumerWrapperPath}`); -const badMathWrapperRSPath = `${GetPathToTestWrappers()}/wasm-rs/subinvoke-error/0-subinvoke`; -const badMathWrapperRSUri = new Uri(`fs/${badMathWrapperRSPath}/build`); +const rsSubinvokeWrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/rs`; +const rsSubinvokeWrapperUri = new Uri(`fs/${rsSubinvokeWrapperPath}`); -const badUtilWrapperRSPath = `${GetPathToTestWrappers()}/wasm-rs/subinvoke-error/1-subinvoke`; -const badUtilWrapperRSUri = new Uri(`fs/${badUtilWrapperRSPath}/build`); +const rsInvokeWrapperPath = `${GetPathToTestWrappers()}/subinvoke/01-invoke/implementations/rs`; +const rsInvokeWrapperUri = new Uri(`fs/${rsInvokeWrapperPath}`); +const rsConsumerWrapperPath = `${GetPathToTestWrappers()}/subinvoke/02-consumer/implementations/rs`; +const rsConsumerWrapperUri = new Uri(`fs/${rsConsumerWrapperPath}`); describe("Error structure", () => { - - describe("Wasm wrapper - AS", () => { - let client: PolywrapClient; - - beforeAll(async () => { - await buildWrapper(simpleWrapperPath); - await buildWrapper(badUtilWrapperPath); - await buildWrapper(badMathWrapperPath); - await buildWrapper(subinvokeErrorWrapperPath); - - client = new PolywrapClient({ - redirects: [ - { - from: Uri.from("ens/bad-math.eth"), - to: badMathWrapperUri, - }, - { - from: Uri.from("ens/bad-util.eth"), - to: badUtilWrapperUri, - } - ] - }) - }); - + describe("URI resolution", () => { + let client = new PolywrapClient(); test("Invoke a wrapper that is not found", async () => { const result = await client.invoke({ - uri: simpleWrapperUri.uri + "-not-found", + uri: asSubinvokeWrapperUri.uri + "-not-found", method: "simpleMethod", args: { arg: "test", @@ -76,18 +49,23 @@ describe("Error structure", () => { expect(result.error?.name).toEqual("WrapError"); expect(result.error?.code).toEqual(WrapErrorCode.URI_NOT_FOUND); - expect(result.error?.reason.startsWith("Unable to find URI ")).toBeTruthy(); - expect(result.error?.uri.endsWith("packages/test-cases/cases/wrappers/wasm-as/simple/build-not-found")).toBeTruthy(); + expect( + result.error?.reason.startsWith("Unable to find URI ") + ).toBeTruthy(); + expect( + result.error?.uri.endsWith( + "packages/test-cases/cases/wrappers/subinvoke/00-subinvoke/implementations/as-not-found" + ) + ).toBeTruthy(); expect(result.error?.resolutionStack).toBeTruthy(); }); test("Subinvoke a wrapper that is not found", async () => { const result = await client.invoke({ - uri: subinvokeErrorWrapperUri.uri, - method: "subWrapperNotFound", + uri: asConsumerWrapperUri.uri, + method: "throwError", args: { - a: 1, - b: 1, + a: "Hey", }, }); @@ -96,354 +74,500 @@ describe("Error structure", () => { expect(result.error?.name).toEqual("WrapError"); expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(result.error?.reason.startsWith("SubInvocation exception encountered")).toBeTruthy(); - expect(result.error?.uri.endsWith("packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/build")).toBeTruthy(); - expect(result.error?.method).toEqual("subWrapperNotFound"); - expect(result.error?.args).toEqual("{\n \"a\": 1,\n \"b\": 1\n}"); - expect(result.error?.source).toEqual({ file: "~lib/@polywrap/wasm-as/containers/Result.ts", row: 171, col: 13 }); + expect( + result.error?.reason.startsWith("SubInvocation exception encountered") + ).toBeTruthy(); + expect( + result.error?.uri.endsWith( + "packages/test-cases/cases/wrappers/subinvoke/02-consumer/implementations/as" + ) + ).toBeTruthy(); + expect(result.error?.method).toEqual("throwError"); + expect(result.error?.args).toEqual('{\n "a": "Hey"\n}'); + expect(result.error?.source).toEqual({ + file: "~lib/@polywrap/wasm-as/containers/Result.ts", + row: 171, + col: 13, + }); expect(result.error?.innerError instanceof WrapError).toBeTruthy(); const prev = result.error?.innerError as WrapError; expect(prev.name).toEqual("WrapError"); expect(prev.code).toEqual(WrapErrorCode.URI_NOT_FOUND); - expect(prev.reason).toEqual("Unable to find URI wrap://ens/not-found.eth."); - expect(prev.uri).toEqual("wrap://ens/not-found.eth"); + expect(prev.reason).toEqual( + "Unable to find URI wrap://ens/imported-invoke.eth." + ); + expect(prev.uri).toEqual("wrap://ens/imported-invoke.eth"); expect(prev.resolutionStack).toBeTruthy(); }); - test("Invoke a wrapper with malformed arguments", async () => { - const result = await client.invoke({ - uri: simpleWrapperUri.uri, - method: "simpleMethod", - args: { - arg: 3, - }, + describe("Wasm wrapper - Assemblyscript", () => { + let client = new PolywrapClient(); + test("Invoke a wrapper with malformed arguments", async () => { + const result = await client.invoke({ + uri: asSubinvokeWrapperUri.uri, + method: "add", + args: { + a: "1", + b: 1, + }, + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual( + WrapErrorCode.WRAPPER_INVOKE_ABORTED + ); + expect(result.error?.reason.startsWith("__wrap_abort:")).toBeTruthy(); + expect( + result.error?.uri.endsWith( + "packages/test-cases/cases/wrappers/subinvoke/00-subinvoke/implementations/as" + ) + ).toBeTruthy(); + expect(result.error?.method).toEqual("add"); + expect(result.error?.args).toEqual('{\n "a": "1",\n "b": 1\n}'); + expect(result.error?.source).toEqual({ + file: "~lib/@polywrap/wasm-as/msgpack/ReadDecoder.ts", + row: 547, + col: 9, + }); }); - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(result.error?.reason.startsWith("__wrap_abort:")).toBeTruthy(); - expect(result.error?.uri.endsWith("packages/test-cases/cases/wrappers/wasm-as/simple/build")).toBeTruthy(); - expect(result.error?.method).toEqual("simpleMethod"); - expect(result.error?.args).toEqual("{\n \"arg\": 3\n}"); - expect(result.error?.source).toEqual({ file: "~lib/@polywrap/wasm-as/msgpack/ReadDecoder.ts", row: 167, col: 5 }); - }); - - test("Invoke a wrapper method that doesn't exist", async () => { - const result = await client.invoke({ - uri: simpleWrapperUri.uri, - method: "complexMethod", - args: { - arg: "test", - }, + test("Invoke a wrapper method that doesn't exist", async () => { + const result = await client.invoke({ + uri: asSubinvokeWrapperUri.uri, + method: "notExistingMethod", + args: { + arg: "test", + }, + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_FAIL); + expect( + result.error?.reason.startsWith("Could not find invoke function") + ).toBeTruthy(); + expect( + result.error?.uri.endsWith( + "packages/test-cases/cases/wrappers/subinvoke/00-subinvoke/implementations/as" + ) + ).toBeTruthy(); + expect(result.error?.method).toEqual("notExistingMethod"); + expect(result.error?.args).toEqual('{\n "arg": "test"\n}'); + expect( + result.error + ?.toString() + .split(WrapErrorCode.WRAPPER_INVOKE_FAIL.valueOf().toString()) + .length + ).toEqual(2); + expect(result.error?.innerError).toBeUndefined(); }); - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_FAIL); - expect(result.error?.reason.startsWith("Could not find invoke function")).toBeTruthy(); - expect(result.error?.uri.endsWith("packages/test-cases/cases/wrappers/wasm-as/simple/build")).toBeTruthy(); - expect(result.error?.method).toEqual("complexMethod"); - expect(result.error?.args).toEqual("{\n \"arg\": \"test\"\n}"); - expect(result.error?.toString().split( - WrapErrorCode.WRAPPER_INVOKE_FAIL.valueOf().toString() - ).length).toEqual(2); - expect(result.error?.innerError).toBeUndefined(); - }); - - test("Subinvoke error two layers deep", async () => { - const result = await client.invoke({ - uri: subinvokeErrorWrapperUri.uri, - method: "throwsInTwoSubinvokeLayers", - args: { - a: 1, - b: 1, - }, + test("Subinvoke error two layers deep", async () => { + client = new PolywrapClient({ + redirects: [ + { + from: Uri.from("ens/imported-invoke.eth"), + to: asInvokeWrapperUri, + }, + { + from: Uri.from("ens/imported-subinvoke.eth"), + to: asSubinvokeWrapperUri, + }, + ], + }); + const result = await client.invoke({ + uri: asConsumerWrapperUri.uri, + method: "throwError", + args: { + a: "Hey", + }, + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual( + WrapErrorCode.WRAPPER_INVOKE_ABORTED + ); + expect( + result.error?.reason.startsWith("SubInvocation exception encountered") + ).toBeTruthy(); + expect( + result.error?.uri.endsWith( + "packages/test-cases/cases/wrappers/subinvoke/02-consumer/implementations/as" + ) + ).toBeTruthy(); + expect(result.error?.method).toEqual("throwError"); + expect(result.error?.args).toEqual('{\n "a": "Hey"\n}'); + expect(result.error?.source).toEqual({ + file: "~lib/@polywrap/wasm-as/containers/Result.ts", + row: 171, + col: 13, + }); + + expect(result.error?.innerError instanceof WrapError).toBeTruthy(); + const prev = result.error?.innerError as WrapError; + expect(prev.name).toEqual("WrapError"); + expect(prev.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); + expect( + prev.reason.startsWith("SubInvocation exception encountered") + ).toBeTruthy(); + expect(prev.uri).toEqual("wrap://ens/imported-invoke.eth"); + expect(prev.method).toEqual("invokeThrowError"); + expect(prev.args).toEqual( + '{\n "0": 129,\n "1": 161,\n "2": 97,\n "3": 163,\n "4": 72,\n "5": 101,\n "6": 121\n}' + ); + expect(prev.source).toEqual({ + file: "~lib/@polywrap/wasm-as/containers/Result.ts", + row: 171, + col: 13, + }); + + expect(prev.innerError instanceof WrapError).toBeTruthy(); + const prevOfPrev = prev.innerError as WrapError; + expect(prevOfPrev.name).toEqual("WrapError"); + expect(prevOfPrev.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); + expect(prevOfPrev.reason).toEqual("__wrap_abort: Hey"); + expect( + prevOfPrev.uri.endsWith("wrap://ens/imported-subinvoke.eth") + ).toBeTruthy(); + expect(prevOfPrev.method).toEqual("subinvokeThrowError"); + expect(prev.args).toEqual( + '{\n "0": 129,\n "1": 161,\n "2": 97,\n "3": 163,\n "4": 72,\n "5": 101,\n "6": 121\n}' + ); + expect(prevOfPrev.source).toEqual({ + file: "src/index.ts", + row: 8, + col: 5, + }); }); - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(result.error?.reason.startsWith("SubInvocation exception encountered")).toBeTruthy(); - expect(result.error?.uri.endsWith("packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/build")).toBeTruthy(); - expect(result.error?.method).toEqual("throwsInTwoSubinvokeLayers"); - expect(result.error?.args).toEqual("{\n \"a\": 1,\n \"b\": 1\n}"); - expect(result.error?.source).toEqual({ file: "~lib/@polywrap/wasm-as/containers/Result.ts", row: 171, col: 13 }); - - expect(result.error?.innerError instanceof WrapError).toBeTruthy(); - const prev = result.error?.innerError as WrapError; - expect(prev.name).toEqual("WrapError"); - expect(prev.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(prev.reason.startsWith("SubInvocation exception encountered")).toBeTruthy(); - expect(prev.uri).toEqual("wrap://ens/bad-math.eth"); - expect(prev.method).toEqual("subInvokeWillThrow"); - expect(prev.args).toEqual("{\n \"0\": 130,\n \"1\": 161,\n \"2\": 97,\n \"3\": 1,\n \"4\": 161,\n \"5\": 98,\n \"6\": 1\n}"); - expect(prev.source).toEqual({ file: "~lib/@polywrap/wasm-as/containers/Result.ts", row: 171, col: 13 }); - - expect(prev.innerError instanceof WrapError).toBeTruthy(); - const prevOfPrev = prev.innerError as WrapError; - expect(prevOfPrev.name).toEqual("WrapError"); - expect(prevOfPrev.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(prevOfPrev.reason).toEqual("__wrap_abort: I threw an error!"); - expect(prevOfPrev.uri.endsWith("wrap://ens/bad-util.eth")).toBeTruthy(); - expect(prevOfPrev.method).toEqual("iThrow"); - expect(prevOfPrev.args).toEqual("{\n \"0\": 129,\n \"1\": 161,\n \"2\": 97,\n \"3\": 0\n}"); - expect(prevOfPrev.source).toEqual({ file: "src/index.ts", row: 5, col: 5 }); - }); - - test("Invoke a wrapper of incompatible version", async () => { - const result = await client.invoke({ - uri: incompatibleWrapperUri.uri, - method: "simpleMethod", - args: { - arg: "test", - }, + describe("Incompatible version invocation", () => { + beforeAll(async () => { + const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; + const manifestBuffer = fs.readFileSync( + path.join(wrapperPath, "wrap.info") + ); + const wasmModuleBuffer = fs.readFileSync( + path.join(wrapperPath, "wrap.wasm") + ); + + fs.mkdirSync("tmp"); + const manifest: Record = (await msgpackDecode( + manifestBuffer + )) as Record; + manifest.version = "0.0.0.5" as any; + const modifiedManifestBuffer = msgpackEncode(manifest, false); + fs.writeFileSync("tmp/wrap.info", modifiedManifestBuffer); + fs.writeFileSync("tmp/wrap.wasm", wasmModuleBuffer); + }); + test("Invoke a wrapper with incompatible version", async () => { + const client = new PolywrapClient(); + const result = await client.invoke({ + uri: "wrap://fs/tmp", + method: "simpleMethod", + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual(WrapErrorCode.URI_RESOLVER_ERROR); + expect(result.error?.uri.endsWith("tmp")).toBeTruthy(); + expect(result.error?.resolutionStack).toBeDefined(); + expect(`${result.error?.cause}`).toContain( + `Unrecognized WrapManifest schema version "0.0.0.5"` + ); + }); + + test.skip("Invoke a plugin with incompatible version", async () => { + const builder = new ClientConfigBuilder(); + const config = builder + .addPackage("wrap://ens/plugin.eth", incompatiblePlugin()) + .build(); + const client = new PolywrapClient(config); + const result = await client.invoke({ + uri: "wrap://ens/plugin.eth", + method: "getData", + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual(WrapErrorCode.URI_RESOLVER_ERROR); + expect(result.error?.uri.endsWith("plugin.eth")).toBeTruthy(); + expect(result.error?.resolutionStack).toBeDefined(); + expect(`${result.error?.cause}`).toContain( + `Unrecognized WrapManifest schema version "0.0.0.5"` + ); + }); + + afterAll(() => { + fs.rmdirSync("tmp", { recursive: true }); + }); }); - - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.URI_RESOLVER_ERROR); - expect(result.error?.uri.endsWith("packages/test-cases/cases/wrappers/wasm-as/simple-deprecated")).toBeTruthy(); - expect(result.error?.resolutionStack).toBeDefined(); - expect(`${result.error?.cause}`).toContain(`Unrecognized WrapManifest schema version "0.0.1"`); }); - }); - - describe("Wasm wrapper - RS", () => { - let client: PolywrapClient; - - beforeAll(async () => { - await buildWrapper(invalidTypesWrapperRSPath); - await buildWrapper(badUtilWrapperRSPath); - await buildWrapper(badMathWrapperRSPath); - await buildWrapper(subinvokeErrorWrapperRSPath); - client = new PolywrapClient({ - redirects: [ - { - from: Uri.from("ens/bad-math.eth"), - to: badMathWrapperRSUri, + describe("Wasm wrapper - Rust", () => { + let client = new PolywrapClient(); + test("Invoke a wrapper with malformed arguments", async () => { + const result = await client.invoke({ + uri: rsSubinvokeWrapperUri.uri, + method: "add", + args: { + a: "1", + b: 1, }, - { - from: Uri.from("ens/bad-util.eth"), - to: badUtilWrapperRSUri, - } - ] - }) - }); - - test("Subinvoke a wrapper that is not found", async () => { - const result = await client.invoke({ - uri: subinvokeErrorWrapperRSUri.uri, - method: "subWrapperNotFound", - args: { - a: 1, - b: 1, - }, - }); - - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(result.error?.reason.startsWith("SubInvocation exception encountered")).toBeTruthy(); - expect(result.error?.uri.endsWith("packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/build")).toBeTruthy(); - expect(result.error?.method).toEqual("subWrapperNotFound"); - expect(result.error?.args).toEqual("{\n \"a\": 1,\n \"b\": 1\n}"); - expect(result.error?.source).toEqual({ file: "src/lib.rs", row: 17, col: 57 }); - - expect(result.error?.innerError instanceof WrapError).toBeTruthy(); - const prev = result.error?.innerError as WrapError; - expect(prev.name).toEqual("WrapError"); - expect(prev.code).toEqual(WrapErrorCode.URI_NOT_FOUND); - expect(prev.reason).toEqual("Unable to find URI wrap://ens/not-found.eth."); - expect(prev.uri).toEqual("wrap://ens/not-found.eth"); - expect(prev.resolutionStack).toBeTruthy(); - }); - - test("Invoke a wrapper with malformed arguments", async () => { - const result = await client.invoke({ - uri: invalidTypesWrapperRSUri.uri, - method: "boolMethod", - args: { - arg: 3, - }, + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual( + WrapErrorCode.WRAPPER_INVOKE_ABORTED + ); + expect(result.error?.reason.startsWith("__wrap_abort:")).toBeTruthy(); + expect( + result.error?.uri.endsWith( + "packages/test-cases/cases/wrappers/subinvoke/00-subinvoke/implementations/rs" + ) + ).toBeTruthy(); + expect(result.error?.method).toEqual("add"); + expect(result.error?.args).toEqual('{\n "a": "1",\n "b": 1\n}'); + expect(result.error?.source).toEqual({ + file: "src/wrap/module/wrapped.rs", + row: 27, + col: 13, + }); }); - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(result.error?.reason.startsWith("__wrap_abort:")).toBeTruthy(); - expect(result.error?.uri.endsWith("packages/test-cases/cases/wrappers/wasm-rs/invalid-types/build")).toBeTruthy(); - expect(result.error?.method).toEqual("boolMethod"); - expect(result.error?.args).toEqual("{\n \"arg\": 3\n}"); - expect(result.error?.source).toEqual({ file: "src/wrap/module/wrapped.rs", row: 38, col: 13 }); - }); - - test("Invoke a wrapper method that doesn't exist", async () => { - const result = await client.invoke({ - uri: invalidTypesWrapperRSUri.uri, - method: "complexMethod", - args: { - arg: "test", - }, + test("Invoke a wrapper method that doesn't exist", async () => { + const result = await client.invoke({ + uri: rsSubinvokeWrapperUri.uri, + method: "notExistingMethod", + args: { + arg: "test", + }, + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_FAIL); + expect( + result.error?.reason.startsWith("Could not find invoke function") + ).toBeTruthy(); + expect( + result.error?.uri.endsWith( + "packages/test-cases/cases/wrappers/subinvoke/00-subinvoke/implementations/rs" + ) + ).toBeTruthy(); + expect(result.error?.method).toEqual("notExistingMethod"); + expect(result.error?.args).toEqual('{\n "arg": "test"\n}'); + expect( + result.error + ?.toString() + .split(WrapErrorCode.WRAPPER_INVOKE_FAIL.valueOf().toString()) + .length + ).toEqual(2); + expect(result.error?.innerError).toBeUndefined(); }); - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_FAIL); - expect(result.error?.reason.startsWith("Could not find invoke function")).toBeTruthy(); - expect(result.error?.uri.endsWith("packages/test-cases/cases/wrappers/wasm-rs/invalid-types/build")).toBeTruthy(); - expect(result.error?.method).toEqual("complexMethod"); - expect(result.error?.args).toEqual("{\n \"arg\": \"test\"\n}"); - expect(result.error?.toString().split( - WrapErrorCode.WRAPPER_INVOKE_FAIL.valueOf().toString() - ).length).toEqual(2); - expect(result.error?.innerError).toBeUndefined(); - }); - - test("Subinvoke error two layers deep", async () => { - const result = await client.invoke({ - uri: subinvokeErrorWrapperRSUri.uri, - method: "throwsInTwoSubinvokeLayers", - args: { - a: 1, - b: 1, - }, + test("Subinvoke error two layers deep", async () => { + client = new PolywrapClient({ + redirects: [ + { + from: Uri.from("ens/imported-invoke.eth"), + to: rsInvokeWrapperUri, + }, + { + from: Uri.from("ens/imported-subinvoke.eth"), + to: rsSubinvokeWrapperUri, + }, + ], + }); + const result = await client.invoke({ + uri: rsConsumerWrapperUri.uri, + method: "throwError", + args: { + a: "Hey", + }, + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual( + WrapErrorCode.WRAPPER_INVOKE_ABORTED + ); + expect( + result.error?.reason.startsWith("SubInvocation exception encountered") + ).toBeTruthy(); + expect( + result.error?.uri.endsWith( + "packages/test-cases/cases/wrappers/subinvoke/02-consumer/implementations/rs" + ) + ).toBeTruthy(); + expect(result.error?.method).toEqual("throwError"); + expect(result.error?.args).toEqual('{\n "a": "Hey"\n}'); + expect(result.error?.source).toEqual({ + file: "src/lib.rs", + row: 10, + col: 117, + }); + + expect(result.error?.innerError instanceof WrapError).toBeTruthy(); + const prev = result.error?.innerError as WrapError; + expect(prev.name).toEqual("WrapError"); + expect(prev.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); + expect( + prev.reason.startsWith("SubInvocation exception encountered") + ).toBeTruthy(); + expect(prev.uri).toEqual("wrap://ens/imported-invoke.eth"); + expect(prev.method).toEqual("invokeThrowError"); + expect(prev.args).toEqual( + '{\n "0": 129,\n "1": 161,\n "2": 97,\n "3": 163,\n "4": 72,\n "5": 101,\n "6": 121\n}' + ); + expect(prev.source).toEqual({ file: "src/lib.rs", row: 10, col: 129 }); + + expect(prev.innerError instanceof WrapError).toBeTruthy(); + const prevOfPrev = prev.innerError as WrapError; + expect(prevOfPrev.name).toEqual("WrapError"); + expect(prevOfPrev.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); + expect(prevOfPrev.reason).toEqual("__wrap_abort: Hey"); + expect( + prevOfPrev.uri.endsWith("wrap://ens/imported-subinvoke.eth") + ).toBeTruthy(); + expect(prevOfPrev.method).toEqual("subinvokeThrowError"); + expect(prevOfPrev.args).toEqual( + '{\n "0": 129,\n "1": 161,\n "2": 97,\n "3": 163,\n "4": 72,\n "5": 101,\n "6": 121\n}' + ); + expect(prevOfPrev.source).toEqual({ + file: "src/lib.rs", + row: 9, + col: 5, + }); }); - - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(result.error?.reason.startsWith("SubInvocation exception encountered")).toBeTruthy(); - expect(result.error?.uri.endsWith("packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/build")).toBeTruthy(); - expect(result.error?.method).toEqual("throwsInTwoSubinvokeLayers"); - expect(result.error?.args).toEqual("{\n \"a\": 1,\n \"b\": 1\n}"); - expect(result.error?.source).toEqual({ file: "src/lib.rs", row: 9, col: 56 }); - - expect(result.error?.innerError instanceof WrapError).toBeTruthy(); - const prev = result.error?.innerError as WrapError; - expect(prev.name).toEqual("WrapError"); - expect(prev.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(prev.reason.startsWith("SubInvocation exception encountered")).toBeTruthy(); - expect(prev.uri).toEqual("wrap://ens/bad-math.eth"); - expect(prev.method).toEqual("subInvokeWillThrow"); - expect(prev.args).toEqual("{\n \"0\": 130,\n \"1\": 161,\n \"2\": 97,\n \"3\": 1,\n \"4\": 161,\n \"5\": 98,\n \"6\": 1\n}"); - expect(prev.source).toEqual({ file: "src/lib.rs", row: 5, col: 75 }); - - expect(prev.innerError instanceof WrapError).toBeTruthy(); - const prevOfPrev = prev.innerError as WrapError; - expect(prevOfPrev.name).toEqual("WrapError"); - expect(prevOfPrev.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(prevOfPrev.reason).toEqual("__wrap_abort: I threw an error!"); - expect(prevOfPrev.uri.endsWith("wrap://ens/bad-util.eth")).toBeTruthy(); - expect(prevOfPrev.method).toEqual("iThrow"); - expect(prevOfPrev.args).toEqual("{\n \"0\": 129,\n \"1\": 161,\n \"2\": 97,\n \"3\": 0\n}"); - expect(prevOfPrev.source).toEqual({ file: "src/lib.rs", row: 6, col: 5 }); }); - }); - describe("Plugin wrapper", () => { - let client: PolywrapClient; - - beforeAll(async () => { - client = new PolywrapClient({ + describe("Plugin wrapper", () => { + const client = new PolywrapClient({ packages: [mockPluginRegistration("plugin/mock")], - }) - }); - - test("Invoke a plugin wrapper with malformed args", async () => { - const result = await client.invoke({ - uri: defaultInterfaces.fileSystem, - method: "readFile", - args: { - pathh: "packages/js/client/src/__tests__/core/index.ts", - }, }); - - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(result.error?.reason).toEqual("The \"path\" argument must be of type string or an instance of Buffer or URL. Received undefined"); - expect(result.error?.uri).toEqual(defaultInterfaces.fileSystem); - expect(result.error?.method).toEqual("readFile"); - expect(result.error?.args).toContain("{\n \"pathh\": \"packages/js/client/src/__tests__/core/index.ts\"\n}"); - expect(result.error?.source).toEqual({ file: "node:internal/fs/promises", row: 450, col: 10 }); - }); - - test("Invoke a plugin wrapper with a method that doesn't exist", async () => { - const result = await client.invoke({ - uri: defaultInterfaces.fileSystem, - method: "readFileNotFound", - args: { - path: __dirname + "/index.ts", - }, + test("Invoke a plugin wrapper with malformed args", async () => { + const result = await client.invoke({ + uri: defaultInterfaces.fileSystem, + method: "readFile", + args: { + pathh: "packages/js/client/src/__tests__/core/index.ts", + }, + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual( + WrapErrorCode.WRAPPER_INVOKE_ABORTED + ); + expect(result.error?.reason).toEqual( + 'The "path" argument must be of type string or an instance of Buffer or URL. Received undefined' + ); + expect(result.error?.uri).toEqual(defaultInterfaces.fileSystem); + expect(result.error?.method).toEqual("readFile"); + expect(result.error?.args).toContain( + '{\n "pathh": "packages/js/client/src/__tests__/core/index.ts"\n}' + ); + expect(result.error?.source).toEqual({ + file: "node:internal/fs/promises", + row: 450, + col: 10, + }); }); - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_METHOD_NOT_FOUND); - expect(result.error?.reason.startsWith("Plugin missing method ")).toBeTruthy(); - expect(result.error?.uri).toEqual(defaultInterfaces.fileSystem); - expect(result.error?.method).toEqual("readFileNotFound"); - }); - - test("Invoke a plugin wrapper that throws explicitly", async () => { - const result = await client.invoke({ - uri: "wrap://plugin/mock", - method: "methodThatThrows", + test("Invoke a plugin wrapper with a method that doesn't exist", async () => { + const result = await client.invoke({ + uri: defaultInterfaces.fileSystem, + method: "readFileNotFound", + args: { + path: __dirname + "/index.ts", + }, + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual( + WrapErrorCode.WRAPPER_METHOD_NOT_FOUND + ); + expect( + result.error?.reason.startsWith("Plugin missing method ") + ).toBeTruthy(); + expect(result.error?.uri).toEqual(defaultInterfaces.fileSystem); + expect(result.error?.method).toEqual("readFileNotFound"); }); - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(result.error?.reason).toEqual("I'm throwing!"); - expect(result.error?.uri).toEqual("wrap://plugin/mock"); - expect(result.error?.source?.file?.endsWith("packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts")).toBeTruthy(); - expect(result.error?.source?.row).toEqual(13); - expect(result.error?.source?.col).toEqual(17); - }); - - test("Invoke a plugin wrapper that throws unexpectedly", async () => { - const result = await client.invoke({ - uri: defaultInterfaces.fileSystem, - method: "readFile", - args: { - path: "./this/path/does/not/exist.ts", - }, + test("Invoke a plugin wrapper that throws explicitly", async () => { + const result = await client.invoke({ + uri: "wrap://plugin/mock", + method: "methodThatThrows", + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual( + WrapErrorCode.WRAPPER_INVOKE_ABORTED + ); + expect(result.error?.reason).toEqual("I'm throwing!"); + expect(result.error?.uri).toEqual("wrap://plugin/mock"); + expect( + result.error?.source?.file?.endsWith( + "packages/js/client/src/__tests__/helpers.ts" + ) + ).toBeTruthy(); + expect(result.error?.source?.row).toEqual(50); + expect(result.error?.source?.col).toEqual(17); }); - expect(result.ok).toBeFalsy(); - if (result.ok) throw Error("should never happen"); - - expect(result.error?.name).toEqual("WrapError"); - expect(result.error?.code).toEqual(WrapErrorCode.WRAPPER_INVOKE_ABORTED); - expect(result.error?.reason.startsWith("ENOENT: no such file or directory")).toBeTruthy(); - expect(result.error?.uri).toEqual(defaultInterfaces.fileSystem); - expect(result.error?.method).toEqual("readFile"); - expect(result.error?.args).toEqual("{\n \"path\": \"./this/path/does/not/exist.ts\"\n}"); + test("Invoke a plugin wrapper that throws unexpectedly", async () => { + const result = await client.invoke({ + uri: defaultInterfaces.fileSystem, + method: "readFile", + args: { + path: "./this/path/does/not/exist.ts", + }, + }); + + expect(result.ok).toBeFalsy(); + if (result.ok) throw Error("should never happen"); + + expect(result.error?.name).toEqual("WrapError"); + expect(result.error?.code).toEqual( + WrapErrorCode.WRAPPER_INVOKE_ABORTED + ); + expect( + result.error?.reason.startsWith("ENOENT: no such file or directory") + ).toBeTruthy(); + expect(result.error?.uri).toEqual(defaultInterfaces.fileSystem); + expect(result.error?.method).toEqual("readFile"); + expect(result.error?.args).toEqual( + '{\n "path": "./this/path/does/not/exist.ts"\n}' + ); + }); }); }); }); diff --git a/packages/js/client/src/__tests__/core/interface-impls.spec.ts b/packages/js/client/src/__tests__/core/interface-impls.spec.ts deleted file mode 100644 index 454b7ad656..0000000000 --- a/packages/js/client/src/__tests__/core/interface-impls.spec.ts +++ /dev/null @@ -1,317 +0,0 @@ -import { ExtendableUriResolver, Uri, PolywrapClient } from "../.."; -import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; -import { UriResolver } from "@polywrap/uri-resolvers-js"; -import { mockPluginRegistration } from "../helpers/mockPluginRegistration"; - -jest.setTimeout(200000); - -describe("interface-impls", () => { - it("should register interface implementations successfully", async () => { - const interfaceUri = Uri.from("wrap://ens/some-interface1.eth"); - const implementation1Uri = Uri.from("wrap://ens/some-implementation1.eth"); - const implementation2Uri = Uri.from("wrap://ens/some-implementation2.eth"); - - const client = new PolywrapClient( - { - interfaces: [ - { - interface: interfaceUri, - implementations: [implementation1Uri, implementation2Uri], - }, - ], - resolver: UriResolver.from({ - from: Uri.from("uri/foo"), - to: Uri.from("uri/bar") - }) - }, - { noDefaults: true } - ); - - const interfaces = client.getInterfaces(); - - expect(interfaces).toEqual([ - { - interface: interfaceUri, - implementations: [ - implementation1Uri, - implementation2Uri, - ], - }, - ]); - - const implementations = await client.getImplementations(interfaceUri, { - applyResolution: false, - }); - - if (!implementations.ok) fail(implementations.error); - expect(implementations.value).toEqual([ - implementation1Uri, - implementation2Uri, - ]); - }); - - it("should get all implementations of interface", async () => { - const interface1Uri = Uri.from("wrap://ens/some-interface1.eth"); - const interface2Uri = Uri.from("wrap://ens/some-interface2.eth"); - const interface3Uri = Uri.from("wrap://ens/some-interface3.eth"); - - const implementation1Uri = Uri.from("wrap://ens/some-implementation.eth"); - const implementation2Uri = Uri.from("wrap://ens/some-implementation2.eth"); - const implementation3Uri = Uri.from("wrap://ens/some-implementation3.eth"); - const implementation4Uri = Uri.from("wrap://ens/some-implementation4.eth"); - - const client = new PolywrapClient( - { - resolver: UriResolver.from([ - { - from: interface1Uri, - to: interface2Uri, - }, - { - from: implementation1Uri, - to: implementation2Uri, - }, - { - from: implementation2Uri, - to: implementation3Uri, - }, - mockPluginRegistration(implementation4Uri), - ]), - interfaces: [ - { - interface: interface1Uri, - implementations: [implementation1Uri, implementation2Uri], - }, - { - interface: interface2Uri, - implementations: [implementation3Uri], - }, - { - interface: interface3Uri, - implementations: [implementation3Uri, implementation4Uri], - }, - ], - }, - { - noDefaults: true, - } - ); - - const implementations1 = await client.getImplementations(interface1Uri, { - applyResolution: true, - }); - const implementations2 = await client.getImplementations(interface2Uri, { - applyResolution: true, - }); - const implementations3 = await client.getImplementations(interface3Uri, { - applyResolution: true, - }); - - if (!implementations1.ok) fail(implementations1.error); - expect(implementations1.value).toEqual([ - implementation1Uri, - implementation2Uri, - implementation3Uri, - ]); - - if (!implementations2.ok) fail(implementations2.error); - expect(implementations2.value).toEqual([ - implementation1Uri, - implementation2Uri, - implementation3Uri, - ]); - - if (!implementations3.ok) fail(implementations3.error); - expect(implementations3.value).toEqual([ - implementation3Uri, - implementation4Uri, - ]); - }); - - it("should merge user-defined interface implementations with each other", async () => { - const interfaceUri = Uri.from("wrap://ens/interface.eth"); - const implementationUri1 = Uri.from("wrap://ens/implementation1.eth"); - const implementationUri2 = Uri.from("wrap://ens/implementation2.eth"); - - const client = new PolywrapClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri1], - }, - { - interface: interfaceUri, - implementations: [implementationUri2], - }, - ], - }); - - const interfaces = (client.getInterfaces() || []) - .filter((x) => x.interface.uri === interfaceUri.uri); - expect(interfaces.length).toEqual(1); - - const implementationUris = interfaces[0].implementations; - - expect(implementationUris).toEqual([ - implementationUri1, - implementationUri2, - ]); - }); - - it("should merge user-defined interface implementations with defaults", async () => { - const interfaceUri = ExtendableUriResolver.extInterfaceUri; - const implementationUri1 = Uri.from("wrap://ens/implementation1.eth"); - const implementationUri2 = Uri.from("wrap://ens/implementation2.eth"); - - const client = new PolywrapClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri1], - }, - { - interface: interfaceUri, - implementations: [implementationUri2], - }, - ], - }); - - const interfaces = (client.getInterfaces() || []) - .filter((x) => x.interface.uri === interfaceUri.uri); - expect(interfaces.length).toEqual(1); - - const implementationUris = interfaces[0].implementations; - - const builder = new ClientConfigBuilder(); - const defaultClientConfig = builder.addDefaults().build(); - - expect(implementationUris).toEqual([ - ...(defaultClientConfig.interfaces || []).find( - (x) => x.interface.uri === interfaceUri.uri - )!.implementations, - implementationUri1, - implementationUri2, - ]); - }); - - test("get implementations - do not return plugins that are not explicitly registered", async () => { - const interfaceUri = "wrap://ens/some-interface.eth"; - - const implementation1Uri = "wrap://ens/some-implementation1.eth"; - const implementation2Uri = "wrap://ens/some-implementation2.eth"; - - const client = new PolywrapClient( - { - resolver: UriResolver.from([ - mockPluginRegistration(implementation1Uri), - ]), - interfaces: [ - { - interface: interfaceUri, - implementations: [implementation2Uri], - }, - ], - }, - { - noDefaults: true, - } - ); - - const getImplementationsResult = await client.getImplementations( - new Uri(interfaceUri), - { applyResolution: true } - ); - - if (!getImplementationsResult.ok) fail(getImplementationsResult.error); - expect(getImplementationsResult.value).toEqual([ - new Uri(implementation2Uri), - ]); - }); - - test("get implementations - return implementations for plugins which don't have interface stated in manifest", async () => { - const interfaceUri = "wrap://ens/some-interface.eth"; - - const implementation1Uri = "wrap://ens/some-implementation1.eth"; - const implementation2Uri = "wrap://ens/some-implementation2.eth"; - - const client = new PolywrapClient( - { - resolver: UriResolver.from([ - mockPluginRegistration(implementation1Uri), - ]), - interfaces: [ - { - interface: interfaceUri, - implementations: [implementation1Uri, implementation2Uri], - }, - ], - }, - { noDefaults: true } - ); - - const getImplementationsResult = await client.getImplementations( - new Uri(interfaceUri), - { applyResolution: true } - ); - - if (!getImplementationsResult.ok) fail(getImplementationsResult.error); - expect(getImplementationsResult.value).toEqual([ - new Uri(implementation1Uri), - new Uri(implementation2Uri), - ]); - }); - - test("getImplementations - pass string or Uri", async () => { - const oldInterfaceUri = Uri.from("ens/old.eth"); - const newInterfaceUri = Uri.from("ens/new.eth"); - - const implementation1Uri = Uri.from("wrap://ens/some-implementation1.eth"); - const implementation2Uri = Uri.from("wrap://ens/some-implementation2.eth"); - - const client = new PolywrapClient({ - redirects: [ - { - from: oldInterfaceUri, - to: newInterfaceUri, - }, - ], - interfaces: [ - { - interface: oldInterfaceUri, - implementations: [implementation1Uri], - }, - { - interface: newInterfaceUri, - implementations: [implementation2Uri], - }, - ], - }); - - let result = await client.getImplementations(oldInterfaceUri, { - applyResolution: false, - }); - if (!result.ok) fail(result.error); - expect(result.value).toEqual([implementation1Uri]); - - result = await client.getImplementations(oldInterfaceUri, { - applyResolution: true, - }); - if (!result.ok) fail(result.error); - expect(result.value).toEqual([implementation1Uri, implementation2Uri]); - - let result2 = await client.getImplementations(oldInterfaceUri, { - applyResolution: false, - }); - if (!result2.ok) fail(result2.error); - expect(result2.value).toEqual([implementation1Uri]); - - result2 = await client.getImplementations(oldInterfaceUri, { - applyResolution: true, - }); - if (!result2.ok) fail(result2.error); - expect(result2.value).toEqual([ - implementation1Uri, - implementation2Uri, - ]); - }); -}); diff --git a/packages/js/client/src/__tests__/core/sanity.spec.ts b/packages/js/client/src/__tests__/core/sanity.spec.ts index 9778060fc2..2b54959e6f 100644 --- a/packages/js/client/src/__tests__/core/sanity.spec.ts +++ b/packages/js/client/src/__tests__/core/sanity.spec.ts @@ -6,8 +6,8 @@ import { } from "../.."; import fs from "fs"; +import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { IUriPackage, IUriRedirect } from "@polywrap/core-js"; -import { buildWrapper } from "@polywrap/test-env-js"; import { ResultErr } from "@polywrap/result"; import { StaticResolver, UriResolverLike } from "@polywrap/uri-resolvers-js"; import { WasmPackage } from "@polywrap/wasm-js"; @@ -58,20 +58,17 @@ describe("sanity", () => { }); test("validate requested uri is available", async () => { - const fooPath = `${__dirname}/../utils/validate/wrapper-a`; - const greetingPath = `${__dirname}/../utils/validate/wrapper-b`; - const modifiedFooPath = `${__dirname}/../utils/validate/wrapper-c` - const fooUri = `ens/foo.eth`; - const greetingUri = `ens/greeting.eth`; - const modifiedFooUri = `ens/foo-modified.eth`; + const subinvokeUri = Uri.from("ens/imported-subinvoke.eth"); + const invokeUri = Uri.from("ens/imported-invoke.eth"); + const consumerUri = Uri.from("ens/consumer.eth"); const getPackage = async (name: string) => { const manifest = await fs.promises.readFile( - `${__dirname}/../utils/validate/${name}/build/wrap.info` + `${GetPathToTestWrappers()}/subinvoke/${name}/implementations/as/wrap.info` ); const wasmModule = await fs.promises.readFile( - `${__dirname}/../utils/validate/${name}/build/wrap.wasm` + `${GetPathToTestWrappers()}/subinvoke/${name}/implementations/as/wrap.wasm` ); return WasmPackage.from(manifest, wasmModule) } @@ -86,17 +83,16 @@ describe("sanity", () => { envs: undefined } - await buildWrapper(fooPath); let client = new PolywrapClient(config as PolywrapCoreClientConfig, { noDefaults: true }); - let result = await client.validate(fooUri, {}); + let result = await client.validate(subinvokeUri, {}); expect(result.ok).toBeFalsy(); let resultError = (result as { error: Error }).error; expect(resultError).toBeTruthy(); expect(resultError.message).toContain("Error resolving URI"); let fooPackage: IUriPackage = { - uri: Uri.from(fooUri), - package: await getPackage("wrapper-a") + uri: subinvokeUri, + package: await getPackage("00-subinvoke") } let resolvers: UriResolverLike[] = [ fooPackage ] @@ -107,11 +103,11 @@ describe("sanity", () => { }; client = new PolywrapClient(config as PolywrapCoreClientConfig, { noDefaults: true }); - result = await client.validate(fooUri, {}); + result = await client.validate(subinvokeUri, {}); expect(result.ok).toBeTruthy(); - result = await client.validate(greetingUri, { + result = await client.validate(invokeUri, { recursive: true }) resultError = (result as { error: Error }).error; @@ -119,11 +115,9 @@ describe("sanity", () => { expect(resultError).toBeTruthy(); expect(resultError.message).toContain("Unable to find URI"); - await buildWrapper(greetingPath); - let modifiedFooWrapper: IUriPackage = { - uri: Uri.from(greetingUri), - package: await getPackage("wrapper-b") + uri: invokeUri, + package: await getPackage("01-invoke") }; resolvers.push(modifiedFooWrapper); staticResolver = StaticResolver.from(resolvers); @@ -131,16 +125,15 @@ describe("sanity", () => { (config as Record).resolver = staticResolver; client = new PolywrapClient(config as PolywrapCoreClientConfig, { noDefaults: true }); - result = await client.validate(greetingUri, { + result = await client.validate(invokeUri, { recursive: true }) expect(result.ok).toBeTruthy() - await buildWrapper(modifiedFooPath); - let redirectUri: IUriRedirect = { - from: Uri.from(fooUri), - to: Uri.from(modifiedFooUri) + let redirectUri: IUriRedirect = { + from: subinvokeUri, + to: consumerUri }; resolvers.push(redirectUri); @@ -149,7 +142,7 @@ describe("sanity", () => { (config as Record).resolver = staticResolver; client = new PolywrapClient(config as PolywrapCoreClientConfig, { noDefaults: true }); - result = await client.validate(greetingUri, { + result = await client.validate(invokeUri, { abi: true }) diff --git a/packages/js/client/src/__tests__/core/type-test-cases.ts b/packages/js/client/src/__tests__/core/type-test-cases.ts new file mode 100644 index 0000000000..57cfc9a18f --- /dev/null +++ b/packages/js/client/src/__tests__/core/type-test-cases.ts @@ -0,0 +1,811 @@ +import { memoryStoragePlugin, ErrResult } from "../helpers"; +import { PolywrapClient } from "../../PolywrapClient"; + +import BigNumber from "bignumber.js"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { GetPathToTestWrappers } from "@polywrap/test-cases"; + +export const typeTestCases = (implementation: string) => { + describe("types test cases", () => { + test(`asyncify ${implementation}`, async () => { + const builder = new ClientConfigBuilder(); + builder.addDefaults().addPackage( + "wrap://ens/memory-storage.polywrap.eth", + memoryStoragePlugin() + ); + const client = new PolywrapClient(builder.build()); + + const uri = `fs/${GetPathToTestWrappers()}/asyncify/implementations/${implementation}`; + const subsequentInvokes = await client.invoke({ + uri: uri, + method: "subsequentInvokes", + args: { + numberOfTimes: 40, + }, + }); + + const expected = Array.from(new Array(40), (_, index) => + index.toString() + ); + + if (!subsequentInvokes.ok) fail(subsequentInvokes.error); + expect(subsequentInvokes.value).toBeTruthy(); + expect(subsequentInvokes.value).toEqual(expected); + + const localVarMethod = await client.invoke({ + uri, + method: "localVarMethod", + }); + + if (!localVarMethod.ok) fail(localVarMethod.error); + expect(localVarMethod.value).toBeTruthy(); + expect(localVarMethod.value).toEqual(true); + + const globalVarMethod = await client.invoke({ + uri, + method: "globalVarMethod", + }); + + if (!globalVarMethod.ok) fail(globalVarMethod.error); + expect(globalVarMethod.value).toBeTruthy(); + expect(globalVarMethod.value).toEqual(true); + + const largeStr = new Array(10000).join("polywrap "); + const setDataWithLargeArgs = await client.invoke({ + uri, + method: "setDataWithLargeArgs", + args: { + value: largeStr, + }, + }); + + if (!setDataWithLargeArgs.ok) fail(setDataWithLargeArgs.error); + expect(setDataWithLargeArgs.value).toBeTruthy(); + expect(setDataWithLargeArgs.value).toEqual(largeStr); + + const setDataWithManyArgs = await client.invoke({ + uri, + method: "setDataWithManyArgs", + args: { + valueA: "polywrap a", + valueB: "polywrap b", + valueC: "polywrap c", + valueD: "polywrap d", + valueE: "polywrap e", + valueF: "polywrap f", + valueG: "polywrap g", + valueH: "polywrap h", + valueI: "polywrap i", + valueJ: "polywrap j", + valueK: "polywrap k", + valueL: "polywrap l", + }, + }); + + if (!setDataWithManyArgs.ok) fail(setDataWithManyArgs.error); + expect(setDataWithManyArgs.value).toBeTruthy(); + expect(setDataWithManyArgs.value).toEqual( + "polywrap apolywrap bpolywrap cpolywrap dpolywrap epolywrap fpolywrap gpolywrap hpolywrap ipolywrap jpolywrap kpolywrap l" + ); + + const createObj = (i: number) => { + return { + propA: `a-${i}`, + propB: `b-${i}`, + propC: `c-${i}`, + propD: `d-${i}`, + propE: `e-${i}`, + propF: `f-${i}`, + propG: `g-${i}`, + propH: `h-${i}`, + propI: `i-${i}`, + propJ: `j-${i}`, + propK: `k-${i}`, + propL: `l-${i}`, + }; + }; + + const setDataWithManyStructuredArgs = await client.invoke({ + uri, + method: "setDataWithManyStructuredArgs", + args: { + valueA: createObj(1), + valueB: createObj(2), + valueC: createObj(3), + valueD: createObj(4), + valueE: createObj(5), + valueF: createObj(6), + valueG: createObj(7), + valueH: createObj(8), + valueI: createObj(9), + valueJ: createObj(10), + valueK: createObj(11), + valueL: createObj(12), + }, + }); + + if (!setDataWithManyStructuredArgs.ok) + fail(setDataWithManyStructuredArgs.error); + expect(setDataWithManyStructuredArgs.value).toBeTruthy(); + expect(setDataWithManyStructuredArgs.value).toBe(true); + }); + + test(`bigint-type ${implementation}`, async () => { + const uri = `fs/${GetPathToTestWrappers()}/bigint-type/implementations/${implementation}`; + const client = new PolywrapClient(); + let response = await client.invoke({ + uri, + method: "method", + args: { + arg1: "123456789123456789", + obj: { + prop1: "987654321987654321", + }, + }, + }); + let result = BigInt("123456789123456789") * BigInt("987654321987654321"); + if (!response.ok) fail(response.error); + expect(response.value).toBeTruthy(); + expect(response.value).toEqual(result.toString()); + + response = await client.invoke({ + uri, + method: "method", + args: { + arg1: "123456789123456789", + arg2: "123456789123456789123456789123456789", + obj: { + prop1: "987654321987654321", + prop2: "987654321987654321987654321987654321", + }, + }, + }); + + result = + BigInt("123456789123456789") * + BigInt("123456789123456789123456789123456789") * + BigInt("987654321987654321") * + BigInt("987654321987654321987654321987654321"); + + if (!response.ok) fail(response.error); + expect(response.value).toBeTruthy(); + expect(response.value).toEqual(result.toString()); + }); + + test(`bignumber-type ${implementation}`, async () => { + const uri = `fs/${GetPathToTestWrappers()}/bignumber-type/implementations/${implementation}`; + const client = new PolywrapClient(); + let response = await client.invoke({ + uri, + method: "method", + args: { + arg1: "1234.56789123456789", + obj: { + prop1: "98.7654321987654321", + }, + }, + }); + + let arg1 = new BigNumber("1234.56789123456789"); + let prop1 = new BigNumber("98.7654321987654321"); + let result = arg1.times(prop1); + + if (!response.ok) fail(response.error); + expect(response.value).toBeTruthy(); + expect(response.value).toEqual(result.toFixed()); + + response = await client.invoke({ + uri, + method: "method", + args: { + arg1: "1234567.89123456789", + arg2: "123456789123.456789123456789123456789", + obj: { + prop1: "987654.321987654321", + prop2: "987.654321987654321987654321987654321", + }, + }, + }); + + arg1 = new BigNumber("1234567.89123456789"); + const arg2 = new BigNumber("123456789123.456789123456789123456789"); + prop1 = new BigNumber("987654.321987654321"); + const prop2 = new BigNumber("987.654321987654321987654321987654321"); + result = arg1.times(arg2).times(prop1).times(prop2); + + if (!response.ok) fail(response.error); + expect(response.value).toBeTruthy(); + expect(response.value).toEqual(result.toFixed()); + }); + + test(`bytes-type ${implementation}`, async () => { + const uri = `fs/${GetPathToTestWrappers()}/bytes-type/implementations/${implementation}`; + const client = new PolywrapClient(); + const response = await client.invoke({ + uri, + method: "bytesMethod", + args: { + arg: { + prop: Buffer.from("Argument Value"), + }, + }, + }); + + if (!response.ok) fail(response.error); + expect(response.value).toBeTruthy(); + expect(response.value).toEqual( + new TextEncoder().encode("Argument Value Sanity!") + ); + }); + + test(`enum-type ${implementation}`, async () => { + const uri = `fs/${GetPathToTestWrappers()}/enum-type/implementations/${implementation}`; + const client = new PolywrapClient(); + + let method1a = await client.invoke({ + uri, + method: "method1", + args: { + en: 5, + }, + }); + + method1a = method1a as ErrResult; + expect(method1a.error).toBeTruthy(); + expect(method1a.error?.message).toMatch( + /__wrap_abort: Invalid value for enum 'SanityEnum': 5/gm + ); + + const method1b = await client.invoke({ + uri, + method: "method1", + args: { + en: 2, + optEnum: 1, + }, + }); + + if (!method1b.ok) fail(method1b.error); + expect(method1b.value).toBeTruthy(); + expect(method1b.value).toEqual(2); + + let method1c = await client.invoke({ + uri, + method: "method1", + args: { + en: 1, + optEnum: "INVALID", + }, + }); + + method1c = method1c as ErrResult; + expect(method1c.error).toBeTruthy(); + expect(method1c.error?.message).toMatch( + /__wrap_abort: Invalid key for enum 'SanityEnum': INVALID/gm + ); + + const method2a = await client.invoke({ + uri, + method: "method2", + args: { + enumArray: ["OPTION1", 0, "OPTION3"], + }, + }); + + if (!method2a.ok) fail(method2a.error); + expect(method2a.value).toBeTruthy(); + expect(method2a.value).toEqual([0, 0, 2]); + }); + + test(`invalid-types ${implementation}`, async () => { + const uri = `fs/${GetPathToTestWrappers()}/invalid-type/implementations/${implementation}`; + const client = new PolywrapClient(); + let invalidBoolIntSent = await client.invoke({ + uri, + method: "boolMethod", + args: { + arg: 10, + }, + }); + invalidBoolIntSent = invalidBoolIntSent as ErrResult; + expect(invalidBoolIntSent.error).toBeTruthy(); + expect(invalidBoolIntSent.error?.message).toMatch( + /Property must be of type 'bool'. Found 'int'./ + ); + + let invalidIntBoolSent = await client.invoke({ + uri, + method: "intMethod", + args: { + arg: true, + }, + }); + invalidIntBoolSent = invalidIntBoolSent as ErrResult; + expect(invalidIntBoolSent.error).toBeTruthy(); + expect(invalidIntBoolSent.error?.message).toMatch( + /Property must be of type 'int'. Found 'bool'./ + ); + + let invalidUIntArraySent = await client.invoke({ + uri, + method: "uIntMethod", + args: { + arg: [10], + }, + }); + invalidUIntArraySent = invalidUIntArraySent as ErrResult; + expect(invalidUIntArraySent.error).toBeTruthy(); + expect(invalidUIntArraySent.error?.message).toMatch( + /Property must be of type 'uint'. Found 'array'./ + ); + + let invalidBytesFloatSent = await client.invoke({ + uri, + method: "bytesMethod", + args: { + arg: 10.15, + }, + }); + + invalidBytesFloatSent = invalidBytesFloatSent as ErrResult; + expect(invalidBytesFloatSent.error).toBeTruthy(); + expect(invalidBytesFloatSent.error?.message).toMatch( + /Property must be of type 'bytes'. Found 'float64'./ + ); + + let invalidArrayMapSent = await client.invoke({ + uri, + method: "arrayMethod", + args: { + arg: { + prop: "prop", + }, + }, + }); + + invalidArrayMapSent = invalidArrayMapSent as ErrResult; + expect(invalidArrayMapSent.error).toBeTruthy(); + expect(invalidArrayMapSent.error?.message).toMatch( + /Property must be of type 'array'. Found 'map'./ + ); + }); + + test(`json-type ${implementation}`, async () => { + const uri = `fs/${GetPathToTestWrappers()}/json-type/implementations/${implementation}`; + const client = new PolywrapClient(); + type Json = string; + const value = JSON.stringify({ foo: "bar", bar: "bar" }); + const parseResponse = await client.invoke({ + uri, + method: "parse", + args: { + value, + }, + }); + + if (!parseResponse.ok) fail(parseResponse.error); + expect(parseResponse.value).toEqual(value); + + const values = [ + JSON.stringify({ bar: "foo" }), + JSON.stringify({ baz: "fuz" }), + ]; + + const stringifyResponse = await client.invoke({ + uri, + method: "stringify", + args: { + values, + }, + }); + + if (!stringifyResponse.ok) fail(stringifyResponse.error); + expect(stringifyResponse.value).toEqual(values.join("")); + + const object = { + jsonA: JSON.stringify({ foo: "bar" }), + jsonB: JSON.stringify({ fuz: "baz" }), + }; + + const stringifyObjectResponse = await client.invoke({ + uri, + method: "stringifyObject", + args: { + object, + }, + }); + + if (!stringifyObjectResponse.ok) fail(stringifyObjectResponse.error); + expect(stringifyObjectResponse.value).toEqual( + object.jsonA + object.jsonB + ); + + const json = { + valueA: 5, + valueB: "foo", + valueC: true, + }; + + const methodJSONResponse = await client.invoke({ + uri, + method: "methodJSON", + args: json, + }); + + if (!methodJSONResponse.ok) fail(methodJSONResponse.error); + const methodJSONResult = JSON.stringify(json); + expect(methodJSONResponse.value).toEqual(methodJSONResult); + + // @TODO: Remove this once https://github.com/polywrap/toolchain/issues/633 is implemented & tested + if (implementation === "rs") { + const reserved = { const: "hello", if: true }; + const parseReservedResponse = await client.invoke<{ + const: string; + if: boolean; + }>({ + uri, + method: "parseReserved", + args: { + 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, + }, + }); + + if (!stringifyReservedResponse.ok) + fail(stringifyReservedResponse.error); + expect(stringifyReservedResponse.value).toEqual( + JSON.stringify(reserved) + ); + } + }); + + test(`numbers-type ${implementation}`, async () => { + const uri = `fs/${GetPathToTestWrappers()}/numbers-type/implementations/${implementation}`; + const client = new PolywrapClient(); + let i8Underflow = await client.invoke({ + uri, + method: "i8Method", + args: { + first: -129, // min i8 = -128 + second: 10, + }, + }); + + i8Underflow = i8Underflow as ErrResult; + expect(i8Underflow.error).toBeTruthy(); + expect(i8Underflow.error?.message).toMatch( + /integer overflow: value = -129; bits = 8/ + ); + + let u8Overflow = await client.invoke({ + uri, + method: "u8Method", + args: { + first: 256, // max u8 = 255 + second: 10, + }, + }); + u8Overflow = u8Overflow as ErrResult; + expect(u8Overflow.error).toBeTruthy(); + expect(u8Overflow.error?.message).toMatch( + /unsigned integer overflow: value = 256; bits = 8/ + ); + + let i16Underflow = await client.invoke({ + uri, + method: "i16Method", + args: { + first: -32769, // min i16 = -32768 + second: 10, + }, + }); + i16Underflow = i16Underflow as ErrResult; + expect(i16Underflow.error).toBeTruthy(); + expect(i16Underflow.error?.message).toMatch( + /integer overflow: value = -32769; bits = 16/ + ); + + let u16Overflow = await client.invoke({ + uri, + method: "u16Method", + args: { + first: 65536, // max u16 = 65535 + second: 10, + }, + }); + u16Overflow = u16Overflow as ErrResult; + expect(u16Overflow.error).toBeTruthy(); + expect(u16Overflow.error?.message).toMatch( + /unsigned integer overflow: value = 65536; bits = 16/ + ); + + let i32Underflow = await client.invoke({ + uri, + method: "i32Method", + args: { + first: -2147483649, // min i32 = -2147483648 + second: 10, + }, + }); + i32Underflow = i32Underflow as ErrResult; + expect(i32Underflow.error).toBeTruthy(); + expect(i32Underflow.error?.message).toMatch( + /integer overflow: value = -2147483649; bits = 32/ + ); + + let u32Overflow = await client.invoke({ + uri, + method: "u32Method", + args: { + first: 4294967296, // max u32 = 4294967295 + second: 10, + }, + }); + u32Overflow = u32Overflow as ErrResult; + expect(u32Overflow.error).toBeTruthy(); + expect(u32Overflow.error?.message).toMatch( + /unsigned integer overflow: value = 4294967296; bits = 32/ + ); + }); + + test(`object-type ${implementation}`, async () => { + const uri = `fs/${GetPathToTestWrappers()}/object-type/implementations/${implementation}`; + const client = new PolywrapClient(); + const method1a = await client.invoke({ + uri, + method: "method1", + args: { + arg1: { + prop: "arg1 prop", + nested: { + prop: "arg1 nested prop", + }, + }, + }, + }); + + if (!method1a.ok) fail(method1a.error); + expect(method1a.value).toBeTruthy(); + expect(method1a.value).toEqual([ + { + prop: "arg1 prop", + nested: { + prop: "arg1 nested prop", + }, + }, + { + prop: "", + nested: { + prop: "", + }, + }, + ]); + + const method1b = await client.invoke({ + uri, + method: "method1", + args: { + arg1: { + prop: "arg1 prop", + nested: { + prop: "arg1 nested prop", + }, + }, + arg2: { + prop: "arg2 prop", + circular: { + prop: "arg2 circular prop", + }, + }, + }, + }); + + if (!method1b.ok) fail(method1b.error); + expect(method1b.value).toBeTruthy(); + expect(method1b.value).toEqual([ + { + prop: "arg1 prop", + nested: { + prop: "arg1 nested prop", + }, + }, + { + prop: "arg2 prop", + nested: { + prop: "arg2 circular prop", + }, + }, + ]); + + const method2a = await client.invoke({ + uri, + method: "method2", + args: { + arg: { + prop: "arg prop", + nested: { + prop: "arg nested prop", + }, + }, + }, + }); + + if (!method2a.ok) fail(method2a.error); + expect(method2a.value).toBeTruthy(); + expect(method2a.value).toEqual({ + prop: "arg prop", + nested: { + prop: "arg nested prop", + }, + }); + + const method2b = await client.invoke({ + uri, + method: "method2", + args: { + arg: { + prop: "null", + nested: { + prop: "arg nested prop", + }, + }, + }, + }); + + if (!method2b.ok) fail(method2b.error); + expect(method2b.value).toEqual(null); + + const method3 = await client.invoke({ + uri, + method: "method3", + args: { + arg: { + prop: "arg prop", + nested: { + prop: "arg nested prop", + }, + }, + }, + }); + + if (!method3.ok) fail(method3.error); + expect(method3.value).toBeTruthy(); + expect(method3.value).toEqual([ + null, + { + prop: "arg prop", + nested: { + prop: "arg nested prop", + }, + }, + ]); + + const method5 = await client.invoke({ + uri, + method: "method5", + args: { + arg: { + prop: [49, 50, 51, 52], + }, + }, + }); + + if (!method5.ok) fail(method5.error); + expect(method5.value).toBeTruthy(); + expect(method5.value).toEqual({ + prop: "1234", + nested: { + prop: "nested prop", + }, + }); + }); + + test(`map-type ${implementation}`, async () => { + const uri = `fs/${GetPathToTestWrappers()}/map-type/implementations/${implementation}`; + const client = new PolywrapClient(); + const mapClass = new Map() + .set("Hello", 1) + .set("Heyo", 50); + const nestedMapClass = new Map>().set( + "Nested", + mapClass + ); + const mapRecord: Record = { + Hello: 1, + Heyo: 50, + }; + const nestedMapRecord: Record> = { + Nested: mapRecord, + }; + + const returnMapResponse1 = await client.invoke>({ + uri, + method: "returnMap", + args: { + map: mapClass, + }, + }); + if (!returnMapResponse1.ok) fail(returnMapResponse1.error); + expect(returnMapResponse1.value).toEqual(mapClass); + + const returnMapResponse2 = await client.invoke>({ + uri, + method: "returnMap", + args: { + map: mapRecord, + }, + }); + if (!returnMapResponse2.ok) fail(returnMapResponse2.error); + expect(returnMapResponse2.value).toEqual(mapClass); + + const getKeyResponse1 = await client.invoke({ + uri, + method: "getKey", + args: { + foo: { + map: mapClass, + nestedMap: nestedMapClass, + }, + key: "Hello", + }, + }); + if (!getKeyResponse1.ok) fail(getKeyResponse1.error); + expect(getKeyResponse1.value).toEqual(mapClass.get("Hello")); + + const getKeyResponse2 = await client.invoke({ + uri, + method: "getKey", + args: { + foo: { + map: mapRecord, + nestedMap: nestedMapRecord, + }, + key: "Heyo", + }, + }); + if (!getKeyResponse2.ok) fail(getKeyResponse2.error); + expect(getKeyResponse2.value).toEqual(mapRecord.Heyo); + + const returnCustomMap = await client.invoke<{ + map: Map; + nestedMap: Map>; + }>({ + uri, + method: "returnCustomMap", + args: { + foo: { + map: mapRecord, + nestedMap: nestedMapClass, + }, + }, + }); + if (!returnCustomMap.ok) fail(returnCustomMap.error); + expect(returnCustomMap.value).toEqual({ + map: mapClass, + nestedMap: nestedMapClass, + }); + + const returnNestedMap = await client.invoke< + Map> + >({ + uri, + method: "returnNestedMap", + args: { + foo: nestedMapClass, + }, + }); + if (!returnNestedMap.ok) fail(returnNestedMap.error); + expect(returnNestedMap.value).toEqual(nestedMapClass); + }); + }); +}; 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 5a33de9b00..978e25a470 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 @@ -1,9 +1,9 @@ [ - "wrap://simple/$root-wrapper-dir/simple/build => PackageToWrapperCacheResolver => uri (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => PackageToWrapperCacheResolver => uri (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://simple/$root-wrapper-dir/simple/build => UriResolverAggregator => uri (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => UriResolverAggregator => uri (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://simple/$root-wrapper-dir/simple/build => ExtendableUriResolver => uri (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ExtendableUriResolver => uri (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver => wrapper (wrap://package/ipfs-resolver)", [ @@ -44,33 +44,33 @@ ] ] ], - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)", [ - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)", [ - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ipfs-resolver)", "wrap://package/ens-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ens-resolver)", "wrap://package/fs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/fs-resolver)", - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)" + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)" ] ] ], - "wrap://simple/$root-wrapper-dir/simple/build => ResolverExtension (wrap://file/$root-wrapper-dir/simple-fs-resolver/build) => uri (wrap://file/$root-wrapper-dir/simple/build)" + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ResolverExtension (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs) => uri (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)" ] ] ], - "wrap://file/$root-wrapper-dir/simple/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://file/$root-wrapper-dir/simple/build => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://file/$root-wrapper-dir/simple/build => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ipfs-resolver)", "wrap://package/ens-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ens-resolver)", "wrap://package/fs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/fs-resolver)", - "wrap://file/$root-wrapper-dir/simple/build => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/simple/build)" + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)" ] ] ] 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 a7e58b3e6c..64aaaf073b 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 @@ -1,9 +1,9 @@ [ - "wrap://file/$root-wrapper-dir/simple/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://file/$root-wrapper-dir/simple/build => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://file/$root-wrapper-dir/simple/build => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver => wrapper (wrap://package/ipfs-resolver)", [ @@ -26,7 +26,7 @@ "wrap://package/fs-resolver => StaticResolver - Package (wrap://package/fs-resolver) => package (wrap://package/fs-resolver)" ] ], - "wrap://file/$root-wrapper-dir/simple/build => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/simple/build)" + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)" ] ] ] diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 2.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 2.json index 2ed4d3d609..7a826c551e 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 2.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve cache - 2.json @@ -1,3 +1,3 @@ [ - "wrap://file/$root-wrapper-dir/simple/build => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://file/$root-wrapper-dir/simple/build)" + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)" ] \ 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 d8d972272b..2ca261f08d 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 @@ -1,9 +1,9 @@ [ - "wrap://simple/$root-wrapper-dir/simple/build => PackageToWrapperCacheResolver => uri (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => PackageToWrapperCacheResolver => uri (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://simple/$root-wrapper-dir/simple/build => UriResolverAggregator => uri (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => UriResolverAggregator => uri (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://simple/$root-wrapper-dir/simple/build => ExtendableUriResolver => uri (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ExtendableUriResolver => uri (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver => wrapper (wrap://package/ipfs-resolver)", [ @@ -44,33 +44,33 @@ ] ] ], - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)", [ - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)", [ - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ipfs-resolver)", "wrap://package/ens-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ens-resolver)", "wrap://package/fs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/fs-resolver)", - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)" + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)" ] ] ], - "wrap://simple/$root-wrapper-dir/simple/build => ResolverExtension (wrap://file/$root-wrapper-dir/simple-fs-resolver/build) => uri (wrap://file/$root-wrapper-dir/simple/build)" + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ResolverExtension (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs) => uri (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)" ] ] ], - "wrap://file/$root-wrapper-dir/simple/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://file/$root-wrapper-dir/simple/build => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://file/$root-wrapper-dir/simple/build => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/simple/build)", + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ipfs-resolver)", "wrap://package/ens-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ens-resolver)", "wrap://package/fs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/fs-resolver)", - "wrap://file/$root-wrapper-dir/simple/build => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/simple/build)" + "wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)" ] ] ] diff --git a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 2.json b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 2.json index 26ded39662..32b533ce3e 100644 --- a/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 2.json +++ b/packages/js/client/src/__tests__/core/uri-resolution/histories/can resolve previously cached URI after redirecting by a URI resolver extension - 2.json @@ -1,32 +1,32 @@ [ - "wrap://simple-redirect/$root-wrapper-dir/simple/build => PackageToWrapperCacheResolver => uri (wrap://simple/$root-wrapper-dir/simple/build)", + "wrap://custom-authority/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => PackageToWrapperCacheResolver => uri (wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://simple-redirect/$root-wrapper-dir/simple/build => UriResolverAggregator => uri (wrap://simple/$root-wrapper-dir/simple/build)", + "wrap://custom-authority/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => UriResolverAggregator => uri (wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://simple-redirect/$root-wrapper-dir/simple/build => ExtendableUriResolver => uri (wrap://simple/$root-wrapper-dir/simple/build)", + "wrap://custom-authority/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ExtendableUriResolver => uri (wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ipfs-resolver)", "wrap://package/ens-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ens-resolver)", "wrap://package/fs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/fs-resolver)", "wrap://package/http-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/http-resolver)", "wrap://ipfs/QmbqeVAhSzTtSmdVjrPMK42pX1sFs8t5MUB741T7nxSs1p => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://ipfs/QmbqeVAhSzTtSmdVjrPMK42pX1sFs8t5MUB741T7nxSs1p)", - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", - "wrap://file/$root-wrapper-dir/simple-redirect-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-redirect-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)", + "wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as)", [ - "wrap://file/$root-wrapper-dir/simple-redirect-resolver/build => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/simple-redirect-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as)", [ - "wrap://file/$root-wrapper-dir/simple-redirect-resolver/build => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/simple-redirect-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ipfs-resolver)", "wrap://package/ens-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ens-resolver)", "wrap://package/fs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/fs-resolver)", - "wrap://file/$root-wrapper-dir/simple-redirect-resolver/build => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/simple-redirect-resolver/build)" + "wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as)" ] ] ], - "wrap://simple-redirect/$root-wrapper-dir/simple/build => ResolverExtension (wrap://file/$root-wrapper-dir/simple-redirect-resolver/build) => uri (wrap://simple/$root-wrapper-dir/simple/build)" + "wrap://custom-authority/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ResolverExtension (wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as) => uri (wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)" ] ] ], - "wrap://simple/$root-wrapper-dir/simple/build => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://simple/$root-wrapper-dir/simple/build)" + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)" ] \ No newline at end of file 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 8999bd254e..0bf7dbe63e 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 @@ -1,9 +1,9 @@ [ - "wrap://simple-redirect/$root-wrapper-dir/simple/build => PackageToWrapperCacheResolver => uri (wrap://simple/$root-wrapper-dir/simple/build)", + "wrap://custom-authority/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => PackageToWrapperCacheResolver => uri (wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://simple-redirect/$root-wrapper-dir/simple/build => UriResolverAggregator => uri (wrap://simple/$root-wrapper-dir/simple/build)", + "wrap://custom-authority/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => UriResolverAggregator => uri (wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ - "wrap://simple-redirect/$root-wrapper-dir/simple/build => ExtendableUriResolver => uri (wrap://simple/$root-wrapper-dir/simple/build)", + "wrap://custom-authority/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ExtendableUriResolver => uri (wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver => wrapper (wrap://package/ipfs-resolver)", [ @@ -44,41 +44,41 @@ ] ] ], - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)", [ - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)", [ - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ipfs-resolver)", "wrap://package/ens-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ens-resolver)", "wrap://package/fs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/fs-resolver)", - "wrap://file/$root-wrapper-dir/simple-fs-resolver/build => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/simple-fs-resolver/build)" + "wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/resolver/02-fs/implementations/rs)" ] ] ], - "wrap://file/$root-wrapper-dir/simple-redirect-resolver/build => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/simple-redirect-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as => PackageToWrapperCacheResolver => wrapper (wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as)", [ - "wrap://file/$root-wrapper-dir/simple-redirect-resolver/build => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/simple-redirect-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as => UriResolverAggregator => package (wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as)", [ - "wrap://file/$root-wrapper-dir/simple-redirect-resolver/build => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/simple-redirect-resolver/build)", + "wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as => ExtendableUriResolver => package (wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as)", [ "wrap://package/ipfs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ipfs-resolver)", "wrap://package/ens-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/ens-resolver)", "wrap://package/fs-resolver => PackageToWrapperCacheResolver (Cache) => wrapper (wrap://package/fs-resolver)", - "wrap://file/$root-wrapper-dir/simple-redirect-resolver/build => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/simple-redirect-resolver/build)" + "wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as => ResolverExtension (wrap://package/fs-resolver) => package (wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as)" ] ] ], - "wrap://simple-redirect/$root-wrapper-dir/simple/build => ResolverExtension (wrap://file/$root-wrapper-dir/simple-redirect-resolver/build) => uri (wrap://simple/$root-wrapper-dir/simple/build)" + "wrap://custom-authority/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => ResolverExtension (wrap://file/$root-wrapper-dir/resolver/01-redirect/implementations/as) => uri (wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as)" ] ] ], - "wrap://simple/$root-wrapper-dir/simple/build => PackageToWrapperCacheResolver => uri (wrap://ens/redirect.eth)", + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => PackageToWrapperCacheResolver => uri (wrap://ens/redirect.eth)", [ - "wrap://simple/$root-wrapper-dir/simple/build => UriResolverAggregator => uri (wrap://ens/redirect.eth)", + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => UriResolverAggregator => uri (wrap://ens/redirect.eth)", [ - "wrap://simple/$root-wrapper-dir/simple/build => StaticResolver - Redirect (wrap://simple/$root-wrapper-dir/simple/build - wrap://ens/redirect.eth) => uri (wrap://ens/redirect.eth)" + "wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as => StaticResolver - Redirect (wrap://custom-fs/$root-wrapper-dir/subinvoke/00-subinvoke/implementations/as - wrap://ens/redirect.eth) => uri (wrap://ens/redirect.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 5514f97908..22857afe3d 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,4 +1,3 @@ -import { buildWrapper } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { Uri, @@ -14,22 +13,21 @@ import { } from "@polywrap/uri-resolvers-js"; import fs from "fs"; import { Result } from "@polywrap/result"; -import { mockPluginRegistration } from "../../helpers/mockPluginRegistration"; +import { mockPluginRegistration } from "../../helpers"; import { PolywrapClient, ExtendableUriResolver } from "../../../"; -jest.setTimeout(300000); +jest.setTimeout(200000); +const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; +const wrapperUri = new Uri(`wrap://file/${wrapperPath}`); -const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; -const wrapperUri = new Uri(`wrap://file/${wrapperPath}/build`); - -const simpleFsResolverWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple-fs-resolver`; -const simpleFsResolverWrapperUri = new Uri( - `wrap://file/${simpleFsResolverWrapperPath}/build` +const simpleRedirectResolverWrapperPath = `${GetPathToTestWrappers()}/resolver/01-redirect/implementations/as`; +const simpleRedirectResolverWrapperUri = new Uri( + `wrap://file/${simpleRedirectResolverWrapperPath}` ); -const simpleRedirectResolverWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple-redirect-resolver`; -const simpleRedirectResolverWrapperUri = new Uri( - `wrap://file/${simpleRedirectResolverWrapperPath}/build` +const fsRedirectResolverWrapperPath = `${GetPathToTestWrappers()}/resolver/02-fs/implementations/rs`; +const fsRedirectResolverWrapperUri = new Uri( + `wrap://file/${fsRedirectResolverWrapperPath}` ); const expectResultWithHistory = async ( @@ -60,7 +58,7 @@ const expectHistory = async ( const receivedCleanHistory = replaceAll( JSON.stringify(buildCleanUriHistory(receivedHistory), null, 2), - `${GetPathToTestWrappers()}/wasm-as`, + `${GetPathToTestWrappers()}`, "$root-wrapper-dir" ); @@ -105,14 +103,6 @@ function replaceAll(str: string, strToReplace: string, replaceStr: string) { } describe("URI resolution", () => { - beforeAll(async () => { - await Promise.all([ - buildWrapper(wrapperPath), - buildWrapper(simpleFsResolverWrapperPath), - buildWrapper(simpleRedirectResolverWrapperPath) - ]); - }); - it("sanity", async () => { const uri = new Uri("ens/uri.eth"); @@ -198,12 +188,12 @@ describe("URI resolution", () => { interfaces: [ { interface: ExtendableUriResolver.extInterfaceUri, - implementations: [simpleFsResolverWrapperUri], + implementations: [fsRedirectResolverWrapperUri], }, ], }); - const sourceUri = new Uri(`simple/${wrapperPath}/build`); + const sourceUri = new Uri(`custom-fs/${wrapperPath}`); const redirectedUri = wrapperUri; const resolutionContext = new UriResolutionContext(); @@ -266,15 +256,15 @@ describe("URI resolution", () => { { interface: ExtendableUriResolver.extInterfaceUri, implementations: [ - simpleFsResolverWrapperUri, + fsRedirectResolverWrapperUri, simpleRedirectResolverWrapperUri, ], }, ], }); - const sourceUri = new Uri(`simple-redirect/${wrapperPath}/build`); - const redirectedUri = new Uri(`simple/${wrapperPath}/build`); + const sourceUri = new Uri(`custom-authority/${wrapperPath}`); + const redirectedUri = new Uri(`custom-fs/${wrapperPath}`); const finalUri = wrapperUri; const resolutionContext1 = new UriResolutionContext(); @@ -312,8 +302,8 @@ describe("URI resolution", () => { it("restarts URI resolution after URI resolver extension redirect", async () => { // Testing that the URI resolution process restarts after a URI resolver extension redirect - const sourceUri = new Uri(`simple-redirect/${wrapperPath}/build`); - const resolverRedirectUri = new Uri(`simple/${wrapperPath}/build`); + const sourceUri = new Uri(`custom-authority/${wrapperPath}`); + const resolverRedirectUri = new Uri(`custom-fs/${wrapperPath}`); const finalRedirectedUri = new Uri(`ens/redirect.eth`); const client = new PolywrapClient({ redirects: [ @@ -326,7 +316,7 @@ describe("URI resolution", () => { { interface: ExtendableUriResolver.extInterfaceUri, implementations: [ - simpleFsResolverWrapperUri, + fsRedirectResolverWrapperUri, simpleRedirectResolverWrapperUri, ], }, 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 bcf3f163e1..ea915a1551 100644 --- a/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts +++ b/packages/js/client/src/__tests__/core/wasm-wrapper.spec.ts @@ -1,4 +1,3 @@ -import { buildWrapper } from "@polywrap/test-env-js"; import { msgpackDecode } from "@polywrap/msgpack-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import fs from "fs"; @@ -6,23 +5,18 @@ import { Uri, PolywrapClient, IWrapPackage } from "../.."; import { WrapManifest } from "@polywrap/wrap-manifest-types-js"; import { PluginModule, PluginPackage } from "@polywrap/plugin-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"; +import { mockPluginRegistration, ErrResult } from "../helpers"; jest.setTimeout(200000); -const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; -const simpleWrapperUri = new Uri(`fs/${simpleWrapperPath}/build`); +const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/rs`; +const wrapperUri = new Uri(`fs/${wrapperPath}`); describe("wasm-wrapper", () => { - beforeAll(async () => { - await buildWrapper(simpleWrapperPath); - }); - const mockPlugin = (): IWrapPackage => { class MockPlugin extends PluginModule<{}> { - simpleMethod(_: unknown): string { + add(_: unknown): string { return "plugin response"; } } @@ -32,59 +26,63 @@ describe("wasm-wrapper", () => { test("can invoke with string URI", async () => { const client = new PolywrapClient(); - const result = await client.invoke({ - uri: simpleWrapperUri.uri, - method: "simpleMethod", + const result = await client.invoke({ + uri: wrapperUri.uri, + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, }); if (!result.ok) fail(result.error); expect(result.value).toBeTruthy(); - expect(typeof result.value).toBe("string"); - expect(result.value).toEqual("test"); + expect(typeof result.value).toBe("number"); + expect(result.value).toEqual(2); }); test("can invoke with typed URI", async () => { const client = new PolywrapClient(); - const result = await client.invoke({ - uri: simpleWrapperUri, - method: "simpleMethod", + const result = await client.invoke({ + uri: wrapperUri, + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, }); if (!result.ok) fail(result.error); expect(result.value).toBeTruthy(); - expect(typeof result.value).toBe("string"); - expect(result.value).toEqual("test"); + expect(typeof result.value).toBe("number"); + expect(result.value).toEqual(2); }); test("invoke with decode defaulted to true works as expected", async () => { const client = new PolywrapClient(); - const result = await client.invoke({ - uri: simpleWrapperUri.uri, - method: "simpleMethod", + const result = await client.invoke({ + uri: wrapperUri.uri, + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, }); if (!result.ok) fail(result.error); expect(result.value).toBeTruthy(); - expect(typeof result.value).toBe("string"); - expect(result.value).toEqual("test"); + expect(typeof result.value).toBe("number"); + expect(result.value).toEqual(2); }); test("invoke with decode set to false works as expected", async () => { const client = new PolywrapClient(); const result = await client.invoke({ - uri: simpleWrapperUri, - method: "simpleMethod", + uri: wrapperUri, + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, encodeResult: true, }); @@ -92,14 +90,14 @@ describe("wasm-wrapper", () => { if (!result.ok) fail(result.error); expect(result.value).toBeTruthy(); expect(result.value instanceof Uint8Array).toBeTruthy(); - expect(msgpackDecode(result.value as Uint8Array)).toEqual("test"); + expect(msgpackDecode(result.value as Uint8Array)).toEqual(2); }); it("should invoke wrapper with custom redirects", async () => { const client = new PolywrapClient({ redirects: [ { - from: simpleWrapperUri.uri, + from: wrapperUri.uri, to: "wrap://ens/mock.polywrap.eth", }, ], @@ -112,10 +110,11 @@ describe("wasm-wrapper", () => { }); const result = await client.invoke({ - uri: simpleWrapperUri, - method: "simpleMethod", + uri: wrapperUri, + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, }); @@ -132,19 +131,20 @@ describe("wasm-wrapper", () => { const client = new PolywrapClient(builder.build()); const clientResult = await client.invoke({ - uri: simpleWrapperUri.uri, - method: "simpleMethod", + uri: wrapperUri.uri, + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, }); if (!clientResult.ok) fail(clientResult.error); expect(clientResult.value).toBeTruthy(); - expect(clientResult.value).toEqual("test"); + expect(clientResult.value).toEqual(2); const redirects = { - [simpleWrapperUri.uri]: "wrap://ens/mock.polywrap.eth", + [wrapperUri.uri]: "wrap://ens/mock.polywrap.eth", }; builder = builder.add({ redirects }); @@ -152,10 +152,11 @@ describe("wasm-wrapper", () => { const newClient = new PolywrapClient(builder.build()); const newClientResult = await newClient.invoke({ - uri: simpleWrapperUri.uri, - method: "simpleMethod", + uri: wrapperUri.uri, + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, }); @@ -168,10 +169,10 @@ describe("wasm-wrapper", () => { const client = new PolywrapClient(); const expectedManifest = new Uint8Array( - await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.info`) + await fs.promises.readFile(`${wrapperPath}/wrap.info`) ); - const receivedManifestResult = await client.getFile(simpleWrapperUri, { + const receivedManifestResult = await client.getFile(wrapperUri, { path: "./wrap.info", }); if (!receivedManifestResult.ok) fail(receivedManifestResult.error); @@ -180,10 +181,10 @@ describe("wasm-wrapper", () => { expect(receivedManifest).toEqual(expectedManifest); const expectedWasmModule = new Uint8Array( - await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.wasm`) + await fs.promises.readFile(`${wrapperPath}/wrap.wasm`) ); - const receivedWasmModuleResult = await client.getFile(simpleWrapperUri, { + const receivedWasmModuleResult = await client.getFile(wrapperUri, { path: "./wrap.wasm", }); if (!receivedWasmModuleResult.ok) fail(receivedWasmModuleResult.error); diff --git a/packages/js/client/src/__tests__/core/wrap-features/env-case.ts b/packages/js/client/src/__tests__/core/wrap-features/env-case.ts new file mode 100644 index 0000000000..6f401de3d3 --- /dev/null +++ b/packages/js/client/src/__tests__/core/wrap-features/env-case.ts @@ -0,0 +1,233 @@ +import { PluginPackage } from "@polywrap/plugin-js"; +import { RecursiveResolver } from "@polywrap/uri-resolvers-js"; +import { GetPathToTestWrappers } from "@polywrap/test-cases"; +import { PolywrapClient } from "../../../PolywrapClient"; +import { mockPluginRegistration } from "../../helpers"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { Uri } from "@polywrap/core-js"; + +jest.setTimeout(200000); + +export const envTestCases = (implementation: string) => { + describe("env", () => { + test(implementation, async () => { + const externalWrapperPath = `${GetPathToTestWrappers()}/env-type/00-external/implementations/${implementation}`; + const { uri: externalWrapperUri } = Uri.from(`file/${externalWrapperPath}`); + + const wrapperPath = `${GetPathToTestWrappers()}/env-type/01-main/implementations/${implementation}`; + const { uri: wrapperUri } = Uri.from(`file/${wrapperPath}`); + + const envs = { + [wrapperUri]: { + object: { + prop: "object string", + }, + str: "string", + optFilledStr: "optional string", + number: 10, + bool: true, + en: "FIRST", + array: [32, 23], + }, + [externalWrapperUri]: { + externalArray: [1, 2, 3], + externalString: "iamexternal", + }, + }; + + const builder = new ClientConfigBuilder(); + builder + .addDefaults() + .addEnvs(envs) + .addRedirect("ens/external-env.polywrap.eth", externalWrapperUri); + const client = new PolywrapClient(builder.build()); + const methodRequireEnvResult = await client.invoke({ + uri: wrapperUri, + method: "methodRequireEnv", + args: { + arg: "string", + }, + }); + if (!methodRequireEnvResult.ok) fail(methodRequireEnvResult.error); + expect(methodRequireEnvResult.value).toEqual({ + str: "string", + optFilledStr: "optional string", + optStr: null, + number: 10, + optNumber: null, + bool: true, + optBool: null, + object: { + prop: "object string", + }, + optObject: null, + en: 0, + optEnum: null, + array: [32, 23], + }); + + const subinvokeEnvMethodResult = await client.invoke({ + uri: wrapperUri, + method: "subinvokeEnvMethod", + args: { + arg: "string", + }, + }); + if (!subinvokeEnvMethodResult.ok) fail(subinvokeEnvMethodResult.error); + expect(subinvokeEnvMethodResult.value).toEqual({ + local: { + str: "string", + optFilledStr: "optional string", + optStr: null, + number: 10, + optNumber: null, + bool: true, + optBool: null, + object: { + prop: "object string", + }, + optObject: null, + en: 0, + optEnum: null, + array: [32, 23], + }, + external: { + externalArray: [1, 2, 3], + externalString: "iamexternal", + }, + }); + + const methodRequireEnvModuleTimeResult = await client.invoke({ + uri: wrapperUri, + method: "methodRequireEnv", + args: { + arg: "string", + }, + }); + if (!methodRequireEnvModuleTimeResult.ok) + fail(methodRequireEnvModuleTimeResult.error); + expect(methodRequireEnvModuleTimeResult.value).toEqual({ + str: "string", + optFilledStr: "optional string", + optStr: null, + number: 10, + optNumber: null, + bool: true, + optBool: null, + object: { + prop: "object string", + }, + optObject: null, + en: 0, + optEnum: null, + array: [32, 23], + }); + + const mockUpdatedEnvResult = await client.invoke({ + uri: wrapperUri, + method: "methodRequireEnv", + args: { + arg: "string", + }, + env: { + object: { + prop: "object another string", + }, + str: "another string", + optFilledStr: "optional string", + number: 10, + bool: true, + en: "FIRST", + array: [32, 23], + }, + }); + if (!mockUpdatedEnvResult.ok) fail(mockUpdatedEnvResult.error); + expect(mockUpdatedEnvResult.value).toEqual({ + str: "another string", + optFilledStr: "optional string", + optStr: null, + number: 10, + optNumber: null, + bool: true, + optBool: null, + object: { + prop: "object another string", + }, + optObject: null, + en: 0, + optEnum: null, + array: [32, 23], + }); + }); + }); + + describe("env client types", () => { + test("plugin env types", async () => { + const implementationUri = "wrap://ens/some-implementation.eth"; + const envPackage = mockPluginRegistration(implementationUri).package; + const client = new PolywrapClient( + { + resolver: RecursiveResolver.from({ + uri: Uri.from(implementationUri), + package: envPackage, + }), + envs: [ + { + uri: implementationUri, + env: { + arg1: "10", + }, + }, + ], + }, + { noDefaults: true } + ); + + 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"; + type MockPackage = { a: number } & Record; + const client = new PolywrapClient( + { + resolver: RecursiveResolver.from([ + { + uri: Uri.from(implementationUri), + package: PluginPackage.from((module) => ({ + mockEnv: (): MockPackage => { + return module.env; + }, + })), + }, + ]), + envs: [ + { + uri: implementationUri, + env: { + arg1: "10", + }, + }, + ], + }, + { noDefaults: true } + ); + + 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" }); + }); + }); +}; diff --git a/packages/js/client/src/__tests__/core/wrap-features/interface-implementation-case.ts b/packages/js/client/src/__tests__/core/wrap-features/interface-implementation-case.ts new file mode 100644 index 0000000000..197f357e88 --- /dev/null +++ b/packages/js/client/src/__tests__/core/wrap-features/interface-implementation-case.ts @@ -0,0 +1,363 @@ +import { ExtendableUriResolver, Uri, PolywrapClient } from "../../../index"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { UriResolver } from "@polywrap/uri-resolvers-js"; +import { mockPluginRegistration } from "../../helpers"; +import { GetPathToTestWrappers } from "@polywrap/test-cases"; + +jest.setTimeout(200000); + +export const interfaceInvokeCase = (implementation: string) => { + describe("interface invoke", () => { + test(`invoke wrappers ${implementation}`, async () => { + const interfaceUri = "wrap://ens/interface.eth"; + const implementationPath = `${GetPathToTestWrappers()}/interface-invoke/01-implementation/implementations/${implementation}`; + const implementationUri = `fs/${implementationPath}`; + + const client = new PolywrapClient({ + interfaces: [ + { + interface: interfaceUri, + implementations: [implementationUri], + }, + ], + }); + + const wrapperPath = `${GetPathToTestWrappers()}/interface-invoke/02-wrapper/implementations/${implementation}`; + const wrapperUri = `fs/${wrapperPath}`; + + const result = await client.invoke({ + uri: wrapperUri, + method: "moduleMethod", + args: { + arg: { + uint8: 1, + str: "Test String 1", + }, + }, + }); + + if (!result.ok) fail(result.error); + expect(result.value).toBeTruthy(); + expect(result.value).toEqual({ + uint8: 1, + str: "Test String 1", + }); + }); + }); + + describe("interface-implementations", () => { + it("should register interface implementations successfully", async () => { + const interfaceUri = "wrap://ens/some-interface1.eth"; + const implementation1Uri = "wrap://ens/some-implementation1.eth"; + const implementation2Uri = "wrap://ens/some-implementation2.eth"; + + const client = new PolywrapClient( + { + interfaces: [ + { + interface: interfaceUri, + implementations: [implementation1Uri, implementation2Uri], + }, + ], + resolver: UriResolver.from({ + from: Uri.from("uri/foo"), + to: Uri.from("uri/bar"), + }), + }, + { noDefaults: true } + ); + + const interfaces = client.getInterfaces(); + + expect(interfaces).toEqual([ + { + interface: new Uri(interfaceUri), + implementations: [ + new Uri(implementation1Uri), + new Uri(implementation2Uri), + ], + }, + ]); + + const implementations = await client.getImplementations(interfaceUri, { + applyResolution: false, + }); + + if (!implementations.ok) fail(implementations.error); + expect(implementations.value).toEqual([ + Uri.from(implementation1Uri), + Uri.from(implementation2Uri), + ]); + }); + + it("should get all implementations of interface", async () => { + const interface1Uri = "wrap://ens/some-interface1.eth"; + const interface2Uri = "wrap://ens/some-interface2.eth"; + const interface3Uri = "wrap://ens/some-interface3.eth"; + + const implementation1Uri = "wrap://ens/some-implementation.eth"; + const implementation2Uri = "wrap://ens/some-implementation2.eth"; + const implementation3Uri = "wrap://ens/some-implementation3.eth"; + const implementation4Uri = "wrap://ens/some-implementation4.eth"; + + const client = new PolywrapClient( + { + resolver: UriResolver.from([ + { + from: Uri.from(interface1Uri), + to: Uri.from(interface2Uri), + }, + { + from: Uri.from(implementation1Uri), + to: Uri.from(implementation2Uri), + }, + { + from: Uri.from(implementation2Uri), + to: Uri.from(implementation3Uri), + }, + mockPluginRegistration(implementation4Uri), + ]), + interfaces: [ + { + interface: interface1Uri, + implementations: [implementation1Uri, implementation2Uri], + }, + { + interface: interface2Uri, + implementations: [implementation3Uri], + }, + { + interface: interface3Uri, + implementations: [implementation3Uri, implementation4Uri], + }, + ], + }, + { + noDefaults: true, + } + ); + + const implementations1 = await client.getImplementations(interface1Uri, { + applyResolution: true, + }); + const implementations2 = await client.getImplementations(interface2Uri, { + applyResolution: true, + }); + const implementations3 = await client.getImplementations(interface3Uri, { + applyResolution: true, + }); + + if (!implementations1.ok) fail(implementations1.error); + expect(implementations1.value).toEqual([ + Uri.from(implementation1Uri), + Uri.from(implementation2Uri), + Uri.from(implementation3Uri), + ]); + + if (!implementations2.ok) fail(implementations2.error); + expect(implementations2.value).toEqual([ + Uri.from(implementation1Uri), + Uri.from(implementation2Uri), + Uri.from(implementation3Uri), + ]); + + if (!implementations3.ok) fail(implementations3.error); + expect(implementations3.value).toEqual([ + Uri.from(implementation3Uri), + Uri.from(implementation4Uri), + ]); + }); + + it("should merge user-defined interface implementations with each other", async () => { + const interfaceUri = "wrap://ens/interface.eth"; + 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 interfaces = (client.getInterfaces() || []).filter( + (x) => x.interface.uri === interfaceUri + ); + expect(interfaces.length).toEqual(1); + + const implementationUris = interfaces[0].implementations; + + expect(implementationUris).toEqual([ + new Uri(implementationUri1), + new Uri(implementationUri2), + ]); + }); + + it("should merge user-defined interface implementations with defaults", async () => { + const interfaceUri = ExtendableUriResolver.extInterfaceUri; + const implementationUri1 = "wrap://ens/implementation1.eth"; + const implementationUri2 = "wrap://ens/implementation2.eth"; + + const client = new PolywrapClient({ + interfaces: [ + { + interface: interfaceUri, + implementations: [Uri.from(implementationUri1)], + }, + { + interface: interfaceUri, + implementations: [Uri.from(implementationUri2)], + }, + ], + }); + + const interfaces = (client.getInterfaces() || []).filter( + (x) => x.interface.uri === interfaceUri.uri + ); + expect(interfaces.length).toEqual(1); + + const implementationUris = interfaces[0].implementations; + + const builder = new ClientConfigBuilder(); + const defaultClientConfig = builder.addDefaults().build(); + + expect(implementationUris).toEqual([ + ...(defaultClientConfig.interfaces || []).find( + (x) => x.interface.uri === interfaceUri.uri + )!.implementations, + new Uri(implementationUri1), + new Uri(implementationUri2), + ]); + }); + + test("get implementations - do not return plugins that are not explicitly registered", async () => { + const interfaceUri = "wrap://ens/some-interface.eth"; + + const implementation1Uri = "wrap://ens/some-implementation1.eth"; + const implementation2Uri = "wrap://ens/some-implementation2.eth"; + + const client = new PolywrapClient( + { + resolver: UriResolver.from([ + mockPluginRegistration(implementation1Uri), + ]), + interfaces: [ + { + interface: interfaceUri, + implementations: [implementation2Uri], + }, + ], + }, + { + noDefaults: true, + } + ); + + const getImplementationsResult = await client.getImplementations( + new Uri(interfaceUri), + { applyResolution: true } + ); + + if (!getImplementationsResult.ok) fail(getImplementationsResult.error); + expect(getImplementationsResult.value).toEqual([ + new Uri(implementation2Uri), + ]); + }); + + test("get implementations - return implementations for plugins which don't have interface stated in manifest", async () => { + const interfaceUri = "wrap://ens/some-interface.eth"; + + const implementation1Uri = "wrap://ens/some-implementation1.eth"; + const implementation2Uri = "wrap://ens/some-implementation2.eth"; + + const client = new PolywrapClient( + { + resolver: UriResolver.from([ + mockPluginRegistration(implementation1Uri), + ]), + interfaces: [ + { + interface: interfaceUri, + implementations: [implementation1Uri, implementation2Uri], + }, + ], + }, + { noDefaults: true } + ); + + const getImplementationsResult = await client.getImplementations( + new Uri(interfaceUri), + { applyResolution: true } + ); + + if (!getImplementationsResult.ok) fail(getImplementationsResult.error); + expect(getImplementationsResult.value).toEqual([ + new Uri(implementation1Uri), + new Uri(implementation2Uri), + ]); + }); + + test("getImplementations - pass string or Uri", async () => { + const oldInterfaceUri = "ens/old.eth"; + const newInterfaceUri = "ens/new.eth"; + + const implementation1Uri = "wrap://ens/some-implementation1.eth"; + const implementation2Uri = "wrap://ens/some-implementation2.eth"; + + const client = new PolywrapClient({ + redirects: [ + { + from: oldInterfaceUri, + to: newInterfaceUri, + }, + ], + interfaces: [ + { + interface: oldInterfaceUri, + implementations: [implementation1Uri], + }, + { + interface: newInterfaceUri, + implementations: [implementation2Uri], + }, + ], + }); + + let result = await client.getImplementations(oldInterfaceUri, { + applyResolution: false, + }); + if (!result.ok) fail(result.error); + expect(result.value).toEqual([Uri.from(implementation1Uri)]); + + result = await client.getImplementations(oldInterfaceUri, { + applyResolution: true, + }); + if (!result.ok) fail(result.error); + expect(result.value).toEqual([ + Uri.from(implementation1Uri), + Uri.from(implementation2Uri), + ]); + + let result2 = await client.getImplementations(new Uri(oldInterfaceUri), { + applyResolution: false, + }); + if (!result2.ok) fail(result2.error); + expect(result2.value).toEqual([new Uri(implementation1Uri)]); + + result2 = await client.getImplementations(new Uri(oldInterfaceUri), { + applyResolution: true, + }); + if (!result2.ok) fail(result2.error); + expect(result2.value).toEqual([ + new Uri(implementation1Uri), + new Uri(implementation2Uri), + ]); + }); + }); +}; diff --git a/packages/js/client/src/__tests__/core/wrap-features/subinvoke-case.ts b/packages/js/client/src/__tests__/core/wrap-features/subinvoke-case.ts new file mode 100644 index 0000000000..7fdbe38ef1 --- /dev/null +++ b/packages/js/client/src/__tests__/core/wrap-features/subinvoke-case.ts @@ -0,0 +1,30 @@ +import { GetPathToTestWrappers } from "@polywrap/test-cases"; +import { ClientConfigBuilder } from "@polywrap/client-config-builder-js"; +import { PolywrapClient } from "../../../PolywrapClient"; + +export const subinvokeCase = (implementation: string) => { + describe("wrapper subinvocation", () => { + test(implementation, async () => { + const subinvokeUri = `file/${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/${implementation}`; + const wrapperUri = `file/${GetPathToTestWrappers()}/subinvoke/01-invoke/implementations/${implementation}`; + + const builder = new ClientConfigBuilder(); + builder.addDefaults().addRedirect("ens/imported-subinvoke.eth", subinvokeUri); + + const client = new PolywrapClient(builder.build()); + + const response = await client.invoke({ + uri: wrapperUri, + method: "addAndIncrement", + args: { + a: 1, + b: 1, + }, + }); + + if (!response.ok) fail(response.error); + expect(response.value).toBeTruthy(); + expect(response.value).toEqual(3); + }); + }); +}; diff --git a/packages/js/client/src/__tests__/e2e.spec.ts b/packages/js/client/src/__tests__/e2e.spec.ts new file mode 100644 index 0000000000..1158a1f4ad --- /dev/null +++ b/packages/js/client/src/__tests__/e2e.spec.ts @@ -0,0 +1,12 @@ +import { typeTestCases } from "./core/type-test-cases"; +import { subinvokeCase } from "./core/wrap-features/subinvoke-case"; +import { envTestCases } from "./core/wrap-features/env-case"; +import { interfaceInvokeCase } from "./core/wrap-features/interface-implementation-case"; + +export const supportedImplementations = ["as", "rs"]; +describe.each(supportedImplementations)("client <-> wrappers end to end", (i) => { + typeTestCases(i) + subinvokeCase(i) + envTestCases(i) + interfaceInvokeCase(i) +}) \ No newline at end of file diff --git a/packages/js/client/src/__tests__/e2e/env.spec.ts b/packages/js/client/src/__tests__/e2e/env.spec.ts deleted file mode 100644 index a74c829ec4..0000000000 --- a/packages/js/client/src/__tests__/e2e/env.spec.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { Uri } from "@polywrap/core-js"; -import { PluginModule, PluginPackage } from "@polywrap/plugin-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 = () => { - class MockEnvPlugin extends PluginModule<{}, MockEnv> { - mockEnv(): MockEnv { - return this.env; - } - } - - return new PluginPackage(new MockEnvPlugin({}), {} as WrapManifest); - }; - - describe("env client types", () => { - test("plugin env types", async () => { - const implementationUri = Uri.from("wrap://ens/some-implementation.eth"); - const envPlugin = mockEnvPlugin(); - const client = new PolywrapClient( - { - resolver: RecursiveResolver.from([ - { - uri: implementationUri, - package: envPlugin, - }, - { from: Uri.from("ens/hello.eth"), to: implementationUri }, - ]), - envs: [ - { - uri: Uri.from("ens/hello.eth"), - env: { - arg1: "10", - }, - }, - ], - }, - { noDefaults: true } - ); - - const mockEnv = await client.invoke({ - uri: Uri.from("ens/hello.eth"), - 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 = Uri.from("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", - }, - }, - ], - }, - { noDefaults: true } - ); - - 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" }); - }); - }); -}); diff --git a/packages/js/client/src/__tests__/e2e/memory-storage.ts b/packages/js/client/src/__tests__/e2e/memory-storage.ts deleted file mode 100644 index 0e09637aed..0000000000 --- a/packages/js/client/src/__tests__/e2e/memory-storage.ts +++ /dev/null @@ -1,35 +0,0 @@ -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; - -function sleep(ms: number) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -export const makeMemoryStoragePlugin: PluginFactory = () => { - class MemoryStoragePlugin extends PluginModule { - private _value: number; - - async getData(_: {}, _client: CoreClient): Promise { - await sleep(50); - return this._value; - } - - async setData( - args: { value: number }, - _client: CoreClient - ): Promise { - await sleep(50); - this._value = args.value; - return true; - } - } - - 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 deleted file mode 100644 index b168e4037f..0000000000 --- a/packages/js/client/src/__tests__/e2e/test-cases.ts +++ /dev/null @@ -1,1136 +0,0 @@ -import { PolywrapClient, Uri } from "../../"; -import { BigNumber } from "bignumber.js"; -import { ErrResult } from "../utils/resultTypes"; - -export const runAsyncifyTest = async ( - client: PolywrapClient, - wrapperUri: string -) => { - const subsequentInvokes = await client.invoke({ - uri: wrapperUri, - method: "subsequentInvokes", - args: { - numberOfTimes: 40, - }, - }); - - const expected = Array.from(new Array(40), (_, index) => index.toString()); - - if (!subsequentInvokes.ok) fail(subsequentInvokes.error); - expect(subsequentInvokes.value).toBeTruthy(); - expect(subsequentInvokes.value).toEqual(expected); - - const localVarMethod = await client.invoke({ - uri: wrapperUri, - method: "localVarMethod", - }); - - if (!localVarMethod.ok) fail(localVarMethod.error); - expect(localVarMethod.value).toBeTruthy(); - expect(localVarMethod.value).toEqual(true); - - const globalVarMethod = await client.invoke({ - uri: wrapperUri, - method: "globalVarMethod", - }); - - if (!globalVarMethod.ok) fail(globalVarMethod.error); - expect(globalVarMethod.value).toBeTruthy(); - expect(globalVarMethod.value).toEqual(true); - - const largeStr = new Array(10000).join("polywrap "); - const setDataWithLargeArgs = await client.invoke({ - uri: wrapperUri, - method: "setDataWithLargeArgs", - args: { - value: largeStr, - }, - }); - - if (!setDataWithLargeArgs.ok) fail(setDataWithLargeArgs.error); - expect(setDataWithLargeArgs.value).toBeTruthy(); - expect(setDataWithLargeArgs.value).toEqual(largeStr); - - const setDataWithManyArgs = await client.invoke({ - uri: wrapperUri, - method: "setDataWithManyArgs", - args: { - valueA: "polywrap a", - valueB: "polywrap b", - valueC: "polywrap c", - valueD: "polywrap d", - valueE: "polywrap e", - valueF: "polywrap f", - valueG: "polywrap g", - valueH: "polywrap h", - valueI: "polywrap i", - valueJ: "polywrap j", - valueK: "polywrap k", - valueL: "polywrap l", - }, - }); - - if (!setDataWithManyArgs.ok) fail(setDataWithManyArgs.error); - expect(setDataWithManyArgs.value).toBeTruthy(); - expect(setDataWithManyArgs.value).toEqual( - "polywrap apolywrap bpolywrap cpolywrap dpolywrap epolywrap fpolywrap gpolywrap hpolywrap ipolywrap jpolywrap kpolywrap l" - ); - - const createObj = (i: number) => { - return { - propA: `a-${i}`, - propB: `b-${i}`, - propC: `c-${i}`, - propD: `d-${i}`, - propE: `e-${i}`, - propF: `f-${i}`, - propG: `g-${i}`, - propH: `h-${i}`, - propI: `i-${i}`, - propJ: `j-${i}`, - propK: `k-${i}`, - propL: `l-${i}`, - }; - }; - - const setDataWithManyStructuredArgs = await client.invoke({ - uri: wrapperUri, - method: "setDataWithManyStructuredArgs", - args: { - valueA: createObj(1), - valueB: createObj(2), - valueC: createObj(3), - valueD: createObj(4), - valueE: createObj(5), - valueF: createObj(6), - valueG: createObj(7), - valueH: createObj(8), - valueI: createObj(9), - valueJ: createObj(10), - valueK: createObj(11), - valueL: createObj(12), - }, - }); - - if (!setDataWithManyStructuredArgs.ok) - fail(setDataWithManyStructuredArgs.error); - expect(setDataWithManyStructuredArgs.value).toBeTruthy(); - expect(setDataWithManyStructuredArgs.value).toBe(true); -}; - -export const runBigIntTypeTest = async (client: PolywrapClient, uri: string) => { - { - const response = await client.invoke({ - uri, - method: "method", - args: { - arg1: "123456789123456789", - obj: { - prop1: "987654321987654321", - }, - }, - }); - - const result = BigInt("123456789123456789") * BigInt("987654321987654321"); - - if (!response.ok) fail(response.error); - expect(response.value).toBeTruthy(); - expect(response.value).toEqual(result.toString()); - } - - { - const response = await client.invoke({ - uri, - method: "method", - args: { - arg1: "123456789123456789", - arg2: "123456789123456789123456789123456789", - obj: { - prop1: "987654321987654321", - prop2: "987654321987654321987654321987654321", - }, - }, - }); - - const result = - BigInt("123456789123456789") * - BigInt("123456789123456789123456789123456789") * - BigInt("987654321987654321") * - BigInt("987654321987654321987654321987654321"); - - if (!response.ok) fail(response.error); - expect(response.value).toBeTruthy(); - expect(response.value).toEqual(result.toString()); - } -}; - -export const runBigNumberTypeTest = async (client: PolywrapClient, uri: string) => { - { - const response = await client.invoke({ - uri, - method: "method", - args: { - arg1: "1234.56789123456789", - obj: { - prop1: "98.7654321987654321", - }, - }, - }); - - const arg1 = new BigNumber("1234.56789123456789"); - const prop1 = new BigNumber("98.7654321987654321"); - const result = arg1.times(prop1); - - if (!response.ok) fail(response.error); - expect(response.value).toBeTruthy(); - expect(response.value).toEqual(result.toFixed()); - } - - { - const response = await client.invoke({ - uri, - method: "method", - args: { - arg1: "1234567.89123456789", - arg2: "123456789123.456789123456789123456789", - obj: { - prop1: "987654.321987654321", - prop2: "987.654321987654321987654321987654321", - }, - }, - }); - - const arg1 = new BigNumber("1234567.89123456789"); - const arg2 = new BigNumber("123456789123.456789123456789123456789"); - const prop1 = new BigNumber("987654.321987654321"); - const prop2 = new BigNumber("987.654321987654321987654321987654321"); - const result = arg1.times(arg2).times(prop1).times(prop2); - - if (!response.ok) fail(response.error); - expect(response.value).toBeTruthy(); - expect(response.value).toEqual(result.toFixed()); - } -}; - -export const runBytesTypeTest = async (client: PolywrapClient, uri: string) => { - const response = await client.invoke({ - uri, - method: "bytesMethod", - args: { - arg: { - prop: Buffer.from("Argument Value"), - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeTruthy(); - expect(response.value).toEqual( - new TextEncoder().encode("Argument Value Sanity!") - ); -}; - -export const runEnumTypesTest = async (client: PolywrapClient, uri: string) => { - let method1a = await client.invoke({ - uri, - method: "method1", - args: { - en: 5, - }, - }); - - method1a = method1a as ErrResult; - expect(method1a.error).toBeTruthy(); - expect(method1a.error?.message).toMatch( - /__wrap_abort: Invalid value for enum 'SanityEnum': 5/gm - ); - - const method1b = await client.invoke({ - uri, - method: "method1", - args: { - en: 2, - optEnum: 1, - }, - }); - - if (!method1b.ok) fail(method1b.error); - expect(method1b.value).toBeTruthy(); - expect(method1b.value).toEqual(2); - - let method1c = await client.invoke({ - uri, - method: "method1", - args: { - en: 1, - optEnum: "INVALID", - }, - }); - - method1c = method1c as ErrResult; - expect(method1c.error).toBeTruthy(); - expect(method1c.error?.message).toMatch( - /__wrap_abort: Invalid key for enum 'SanityEnum': INVALID/gm - ); - - const method2a = await client.invoke({ - uri, - method: "method2", - args: { - enumArray: ["OPTION1", 0, "OPTION3"], - }, - }); - - if (!method2a.ok) fail(method2a.error); - expect(method2a.value).toBeTruthy(); - expect(method2a.value).toEqual([0, 0, 2]); -}; - -export const runImplementationsTest = async ( - client: PolywrapClient, - interfaceUri: string, - implementationUri: string -) => { - const implResult = await client.getImplementations(interfaceUri, { - applyResolution: false, - }); - if (!implResult.ok) fail(implResult.error); - expect(implResult.value).toEqual([new Uri(implementationUri)]); - - const results = await Promise.all([ - client.invoke({ - uri: implementationUri, - method: "moduleMethod", - args: { - arg: { - uint8: 1, - str: "Test String 1", - }, - }, - }), - client.invoke({ - uri: implementationUri, - method: "abstractModuleMethod", - args: { - arg: { - str: "Test String 2", - }, - }, - }), - ]); - - 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, - str: "Test String 1", - }); - expect(okResults[1].value).toBe("Test String 2"); -}; - -export const runGetImplementationsTest = async ( - client: PolywrapClient, - aggregatorUri: string, - interfaceUri: string, - implementationUri: string -) => { - let implUri = new Uri(implementationUri); - const implResult = await client.getImplementations(interfaceUri, { - applyResolution: false, - }); - if (!implResult.ok) fail(implResult.error); - expect(implResult.value).toEqual([implUri]); - - const result = await client.invoke({ - uri: aggregatorUri, - method: "moduleImplementations", - }); - - if (!result.ok) fail(result.error); - expect(result.value).toBeTruthy(); - expect(result.value).toEqual([implUri.uri]); - - const moduleMethodResult = await client.invoke({ - uri: aggregatorUri, - method: "abstractModuleMethod", - args: { - arg: { - str: "Test String 2", - }, - }, - }); - if (!moduleMethodResult.ok) fail(moduleMethodResult.error); - expect(moduleMethodResult.value).toEqual("Test String 2"); -}; - -export const runInvalidTypesTest = async (client: PolywrapClient, uri: string) => { - let invalidBoolIntSent = await client.invoke({ - uri, - method: "boolMethod", - args: { - arg: 10, - }, - }); - invalidBoolIntSent = invalidBoolIntSent as ErrResult; - expect(invalidBoolIntSent.error).toBeTruthy(); - expect(invalidBoolIntSent.error?.message).toMatch( - /Property must be of type 'bool'. Found 'int'./ - ); - - let invalidIntBoolSent = await client.invoke({ - uri, - method: "intMethod", - args: { - arg: true, - }, - }); - invalidIntBoolSent = invalidIntBoolSent as ErrResult; - expect(invalidIntBoolSent.error).toBeTruthy(); - expect(invalidIntBoolSent.error?.message).toMatch( - /Property must be of type 'int'. Found 'bool'./ - ); - - let invalidUIntArraySent = await client.invoke({ - uri, - method: "uIntMethod", - args: { - arg: [10], - }, - }); - invalidUIntArraySent = invalidUIntArraySent as ErrResult; - expect(invalidUIntArraySent.error).toBeTruthy(); - expect(invalidUIntArraySent.error?.message).toMatch( - /Property must be of type 'uint'. Found 'array'./ - ); - - let invalidBytesFloatSent = await client.invoke({ - uri, - method: "bytesMethod", - args: { - arg: 10.15, - }, - }); - - invalidBytesFloatSent = invalidBytesFloatSent as ErrResult; - expect(invalidBytesFloatSent.error).toBeTruthy(); - expect(invalidBytesFloatSent.error?.message).toMatch( - /Property must be of type 'bytes'. Found 'float64'./ - ); - - let invalidArrayMapSent = await client.invoke({ - uri, - method: "arrayMethod", - args: { - arg: { - prop: "prop", - }, - }, - }); - - invalidArrayMapSent = invalidArrayMapSent as ErrResult; - expect(invalidArrayMapSent.error).toBeTruthy(); - expect(invalidArrayMapSent.error?.message).toMatch( - /Property must be of type 'array'. Found 'map'./ - ); -}; - -export const runJsonTypeTest = async ( - client: PolywrapClient, - uri: string, - testReserved: boolean = false -) => { - type Json = string; - const value = JSON.stringify({ foo: "bar", bar: "bar" }); - const parseResponse = await client.invoke({ - uri, - method: "parse", - args: { - value, - }, - }); - - if (!parseResponse.ok) fail(parseResponse.error); - expect(parseResponse.value).toEqual(value); - - const values = [ - JSON.stringify({ bar: "foo" }), - JSON.stringify({ baz: "fuz" }), - ]; - - const stringifyResponse = await client.invoke({ - uri, - method: "stringify", - args: { - values, - }, - }); - - if (!stringifyResponse.ok) fail(stringifyResponse.error); - expect(stringifyResponse.value).toEqual(values.join("")); - - const object = { - jsonA: JSON.stringify({ foo: "bar" }), - jsonB: JSON.stringify({ fuz: "baz" }), - }; - - const stringifyObjectResponse = await client.invoke({ - uri, - method: "stringifyObject", - args: { - object, - }, - }); - - if (!stringifyObjectResponse.ok) fail(stringifyObjectResponse.error); - expect(stringifyObjectResponse.value).toEqual(object.jsonA + object.jsonB); - - const json = { - valueA: 5, - valueB: "foo", - valueC: true, - }; - - const methodJSONResponse = await client.invoke({ - uri, - method: "methodJSON", - args: json, - }); - - if (!methodJSONResponse.ok) fail(methodJSONResponse.error); - const methodJSONResult = JSON.stringify(json); - expect(methodJSONResponse.value).toEqual(methodJSONResult); - - if (testReserved) { - const reserved = { const: "hello", if: true }; - const parseReservedResponse = await client.invoke<{ - const: string; - if: boolean; - }>({ - uri, - method: "parseReserved", - args: { - 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, - }, - }); - - if (!stringifyReservedResponse.ok) fail(stringifyReservedResponse.error); - expect(stringifyReservedResponse.value).toEqual(JSON.stringify(reserved)); - } -}; - -export const runLargeTypesTest = async (client: PolywrapClient, uri: string) => { - const largeStr = new Array(5000).join("polywrap "); - const largeBytes = new Uint8Array(Buffer.from(largeStr)); - const largeStrArray = []; - const largeBytesArray = []; - - for (let i = 0; i < 50; i++) { - largeStrArray.push(largeStr); - largeBytesArray.push(largeBytes); - } - - const largeTypesMethodCall = await client.invoke({ - uri, - method: "method", - args: { - largeCollection: { - largeStr: largeStr, - largeBytes: largeBytes, - largeStrArray: largeStrArray, - largeBytesArray: largeBytesArray, - }, - }, - }); - - if (!largeTypesMethodCall.ok) fail(largeTypesMethodCall.error); - expect(largeTypesMethodCall.value).toBeTruthy(); - expect(largeTypesMethodCall.value).toEqual({ - largeStr: largeStr, - largeBytes: largeBytes, - largeStrArray: largeStrArray, - largeBytesArray: largeBytesArray, - }); -}; - -export const runNumberTypesTest = async (client: PolywrapClient, uri: string) => { - let i8Underflow = await client.invoke({ - uri, - method: "i8Method", - args: { - first: -129, // min i8 = -128 - second: 10, - }, - }); - - i8Underflow = i8Underflow as ErrResult; - expect(i8Underflow.error).toBeTruthy(); - expect(i8Underflow.error?.message).toMatch( - /integer overflow: value = -129; bits = 8/ - ); - - let u8Overflow = await client.invoke({ - uri, - method: "u8Method", - args: { - first: 256, // max u8 = 255 - second: 10, - }, - }); - u8Overflow = u8Overflow as ErrResult; - expect(u8Overflow.error).toBeTruthy(); - expect(u8Overflow.error?.message).toMatch( - /unsigned integer overflow: value = 256; bits = 8/ - ); - - let i16Underflow = await client.invoke({ - uri, - method: "i16Method", - args: { - first: -32769, // min i16 = -32768 - second: 10, - }, - }); - i16Underflow = i16Underflow as ErrResult; - expect(i16Underflow.error).toBeTruthy(); - expect(i16Underflow.error?.message).toMatch( - /integer overflow: value = -32769; bits = 16/ - ); - - let u16Overflow = await client.invoke({ - uri, - method: "u16Method", - args: { - first: 65536, // max u16 = 65535 - second: 10, - }, - }); - u16Overflow = u16Overflow as ErrResult; - expect(u16Overflow.error).toBeTruthy(); - expect(u16Overflow.error?.message).toMatch( - /unsigned integer overflow: value = 65536; bits = 16/ - ); - - let i32Underflow = await client.invoke({ - uri, - method: "i32Method", - args: { - first: -2147483649, // min i32 = -2147483648 - second: 10, - }, - }); - i32Underflow = i32Underflow as ErrResult; - expect(i32Underflow.error).toBeTruthy(); - expect(i32Underflow.error?.message).toMatch( - /integer overflow: value = -2147483649; bits = 32/ - ); - - let u32Overflow = await client.invoke({ - uri, - method: "u32Method", - args: { - first: 4294967296, // max u32 = 4294967295 - second: 10, - }, - }); - u32Overflow = u32Overflow as ErrResult; - expect(u32Overflow.error).toBeTruthy(); - expect(u32Overflow.error?.message).toMatch( - /unsigned integer overflow: value = 4294967296; bits = 32/ - ); -}; - -export const runObjectTypesTest = async (client: PolywrapClient, uri: string) => { - const method1a = await client.invoke({ - uri, - method: "method1", - args: { - arg1: { - prop: "arg1 prop", - nested: { - prop: "arg1 nested prop", - }, - }, - }, - }); - - if (!method1a.ok) fail(method1a.error); - expect(method1a.value).toBeTruthy(); - expect(method1a.value).toEqual([ - { - prop: "arg1 prop", - nested: { - prop: "arg1 nested prop", - }, - }, - { - prop: "", - nested: { - prop: "", - }, - }, - ]); - - const method1b = await client.invoke({ - uri, - method: "method1", - args: { - arg1: { - prop: "arg1 prop", - nested: { - prop: "arg1 nested prop", - }, - }, - arg2: { - prop: "arg2 prop", - circular: { - prop: "arg2 circular prop", - }, - }, - }, - }); - - if (!method1b.ok) fail(method1b.error); - expect(method1b.value).toBeTruthy(); - expect(method1b.value).toEqual([ - { - prop: "arg1 prop", - nested: { - prop: "arg1 nested prop", - }, - }, - { - prop: "arg2 prop", - nested: { - prop: "arg2 circular prop", - }, - }, - ]); - - const method2a = await client.invoke({ - uri, - method: "method2", - args: { - arg: { - prop: "arg prop", - nested: { - prop: "arg nested prop", - }, - }, - }, - }); - - if (!method2a.ok) fail(method2a.error); - expect(method2a.value).toBeTruthy(); - expect(method2a.value).toEqual({ - prop: "arg prop", - nested: { - prop: "arg nested prop", - }, - }); - - const method2b = await client.invoke({ - uri, - method: "method2", - args: { - arg: { - prop: "null", - nested: { - prop: "arg nested prop", - }, - }, - }, - }); - - if (!method2b.ok) fail(method2b.error); - expect(method2b.value).toEqual(null); - - const method3 = await client.invoke({ - uri, - method: "method3", - args: { - arg: { - prop: "arg prop", - nested: { - prop: "arg nested prop", - }, - }, - }, - }); - - if (!method3.ok) fail(method3.error); - expect(method3.value).toBeTruthy(); - expect(method3.value).toEqual([ - null, - { - prop: "arg prop", - nested: { - prop: "arg nested prop", - }, - }, - ]); - - const method5 = await client.invoke({ - uri, - method: "method5", - args: { - arg: { - prop: [49, 50, 51, 52], - }, - }, - }); - - if (!method5.ok) fail(method5.error); - expect(method5.value).toBeTruthy(); - expect(method5.value).toEqual({ - prop: "1234", - nested: { - prop: "nested prop", - }, - }); -}; - -export const runMapTypeTest = async (client: PolywrapClient, uri: string) => { - const mapClass = new Map().set("Hello", 1).set("Heyo", 50); - const nestedMapClass = new Map>().set( - "Nested", - mapClass - ); - const mapRecord: Record = { - Hello: 1, - Heyo: 50, - }; - const nestedMapRecord: Record> = { - Nested: mapRecord, - }; - - const returnMapResponse1 = await client.invoke>({ - uri, - method: "returnMap", - args: { - map: mapClass, - }, - }); - if (!returnMapResponse1.ok) fail(returnMapResponse1.error); - expect(returnMapResponse1.value).toEqual(mapClass); - - const returnMapResponse2 = await client.invoke>({ - uri, - method: "returnMap", - args: { - map: mapRecord, - }, - }); - if (!returnMapResponse2.ok) fail(returnMapResponse2.error); - expect(returnMapResponse2.value).toEqual(mapClass); - - const getKeyResponse1 = await client.invoke({ - uri, - method: "getKey", - args: { - foo: { - map: mapClass, - nestedMap: nestedMapClass, - }, - key: "Hello", - }, - }); - if (!getKeyResponse1.ok) fail(getKeyResponse1.error); - expect(getKeyResponse1.value).toEqual(mapClass.get("Hello")); - - const getKeyResponse2 = await client.invoke({ - uri, - method: "getKey", - args: { - foo: { - map: mapRecord, - nestedMap: nestedMapRecord, - }, - key: "Heyo", - }, - }); - if (!getKeyResponse2.ok) fail(getKeyResponse2.error); - expect(getKeyResponse2.value).toEqual(mapRecord.Heyo); - - const returnCustomMap = await client.invoke<{ - map: Map; - nestedMap: Map>; - }>({ - uri, - method: "returnCustomMap", - args: { - foo: { - map: mapRecord, - nestedMap: nestedMapClass, - }, - }, - }); - if (!returnCustomMap.ok) fail(returnCustomMap.error); - expect(returnCustomMap.value).toEqual({ - map: mapClass, - nestedMap: nestedMapClass, - }); - - const returnNestedMap = await client.invoke>>( - { - uri, - method: "returnNestedMap", - args: { - foo: nestedMapClass, - }, - } - ); - if (!returnNestedMap.ok) fail(returnNestedMap.error); - expect(returnNestedMap.value).toEqual(nestedMapClass); -}; - -export const runSimpleStorageTest = async ( - client: PolywrapClient, - wrapperUri: string -) => { - const deploy = await client.invoke({ - uri: wrapperUri, - method: "deployContract", - args: { - connection: { - networkNameOrChainId: "testnet", - }, - }, - }); - - if (!deploy.ok) fail(deploy.error); - expect(deploy.value).toBeTruthy(); - expect(deploy.value.indexOf("0x")).toBeGreaterThan(-1); - - const address = deploy.value; - const set = await client.invoke({ - uri: wrapperUri, - method: "setData", - args: { - address, - value: 55, - connection: { - networkNameOrChainId: "testnet", - }, - }, - }); - - if (!set.ok) fail(set.error); - expect(set.value).toBeTruthy(); - expect(set.value?.indexOf("0x")).toBeGreaterThan(-1); - - const getDataResult = await client.invoke({ - uri: wrapperUri, - method: "getData", - args: { - address, - connection: { - networkNameOrChainId: "testnet", - }, - }, - }); - - if (!getDataResult.ok) fail(getDataResult.error); - expect(getDataResult.value).toEqual(55); -}; - -export const runSimpleEnvTest = async ( - client: PolywrapClient, - wrapperUri: string -) => { - const getEnvResult = await client.invoke({ - uri: wrapperUri, - method: "getEnv", - args: { - arg: "string", - }, - }); - if (!getEnvResult.ok) fail(getEnvResult.error); - expect(getEnvResult.value).toEqual({ - str: "module string", - requiredInt: 1, - }); - - let getEnvNotSetResult = await client.invoke({ - uri: wrapperUri, - method: "getEnv", - args: { - arg: "not set", - }, - env: {}, - }); - getEnvNotSetResult = getEnvNotSetResult as ErrResult; - expect(getEnvNotSetResult.error).toBeTruthy(); - expect(getEnvNotSetResult.error?.message).toContain("requiredInt: Int"); - - let envIncorrectResult = await client.invoke({ - uri: wrapperUri, - method: "getEnv", - args: { - arg: "not set", - }, - env: { - str: "string", - requiredInt: "99", - }, - }); - - envIncorrectResult = envIncorrectResult as ErrResult; - expect(envIncorrectResult.error).toBeTruthy(); - expect(envIncorrectResult.error?.message).toContain( - "Property must be of type 'int'. Found 'string'." - ); -}; - -export const runComplexEnvs = async ( - client: PolywrapClient, - wrapperUri: string -) => { - const methodRequireEnvResult = await client.invoke({ - uri: wrapperUri, - method: "methodRequireEnv", - args: { - arg: "string", - }, - }); - if (!methodRequireEnvResult.ok) fail(methodRequireEnvResult.error); - expect(methodRequireEnvResult.value).toEqual({ - str: "string", - optFilledStr: "optional string", - optStr: null, - number: 10, - optNumber: null, - bool: true, - optBool: null, - object: { - prop: "object string", - }, - optObject: null, - en: 0, - optEnum: null, - array: [32, 23], - }); - - const subinvokeEnvMethodResult = await client.invoke({ - uri: wrapperUri, - method: "subinvokeEnvMethod", - args: { - arg: "string", - }, - }); - if (!subinvokeEnvMethodResult.ok) fail(subinvokeEnvMethodResult.error); - expect(subinvokeEnvMethodResult.value).toEqual({ - local: { - str: "string", - optFilledStr: "optional string", - optStr: null, - number: 10, - optNumber: null, - bool: true, - optBool: null, - object: { - prop: "object string", - }, - optObject: null, - en: 0, - optEnum: null, - array: [32, 23], - }, - external: { - externalArray: [1, 2, 3], - externalString: "iamexternal", - }, - }); - - const methodRequireEnvModuleTimeResult = await client.invoke({ - uri: wrapperUri, - method: "methodRequireEnv", - args: { - arg: "string", - }, - }); - if (!methodRequireEnvModuleTimeResult.ok) - fail(methodRequireEnvModuleTimeResult.error); - expect(methodRequireEnvModuleTimeResult.value).toEqual({ - str: "string", - optFilledStr: "optional string", - optStr: null, - number: 10, - optNumber: null, - bool: true, - optBool: null, - object: { - prop: "object string", - }, - optObject: null, - en: 0, - optEnum: null, - array: [32, 23], - }); - - const mockUpdatedEnvResult = await client.invoke({ - uri: wrapperUri, - method: "methodRequireEnv", - args: { - arg: "string", - }, - env: { - object: { - prop: "object another string", - }, - str: "another string", - optFilledStr: "optional string", - number: 10, - bool: true, - en: "FIRST", - array: [32, 23], - }, - }); - if (!mockUpdatedEnvResult.ok) fail(mockUpdatedEnvResult.error); - expect(mockUpdatedEnvResult.value).toEqual({ - str: "another string", - optFilledStr: "optional string", - optStr: null, - number: 10, - optNumber: null, - bool: true, - optBool: null, - object: { - prop: "object another string", - }, - optObject: null, - en: 0, - optEnum: null, - array: [32, 23], - }); -}; - -export const runSubinvokeTest = async (client: PolywrapClient, uri: string) => { - { - const response = await client.invoke({ - uri, - method: "addAndIncrement", - args: { - a: 1, - b: 1, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeTruthy(); - expect(response.value).toEqual(3); - } -}; diff --git a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts b/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts deleted file mode 100644 index 205025b3ad..0000000000 --- a/packages/js/client/src/__tests__/e2e/wasm-as.spec.ts +++ /dev/null @@ -1,364 +0,0 @@ -import * as TestCases from "./test-cases"; -import { makeMemoryStoragePlugin } from "./memory-storage"; -import { - buildWrapper, - initTestEnvironment, - stopTestEnvironment, - runCLI, -} from "@polywrap/test-env-js"; -import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { getClientWithEnsAndIpfs } from "../helpers/getClientWithEnsAndIpfs"; -import { PolywrapClient } from "../../PolywrapClient"; - -jest.setTimeout(300000); - -describe("wasm-as test cases", () => { - beforeAll(async () => { - await initTestEnvironment(); - }); - - afterAll(async () => { - await stopTestEnvironment(); - }); - - it("asyncify", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/asyncify`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - const client = new PolywrapClient({ - packages: [ - { - uri: "wrap://ens/memory-storage.polywrap.eth", - package: makeMemoryStoragePlugin({}), - }, - ], - }); - - await TestCases.runAsyncifyTest(client, wrapperUri); - }); - - it("subinvoke", async() => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple-subinvoke/invoke`; - const wrapperUri = `fs/${wrapperPath}/build`; - - const subwrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple-subinvoke/subinvoke`; - const subwrapperUri = `fs/${subwrapperPath}/build`; - - await buildWrapper(subwrapperPath); - await buildWrapper(wrapperPath); - - const client = new PolywrapClient({ - redirects: [ - { - from: "ens/add.eth", - to: subwrapperUri - } - ] - }); - - await TestCases.runSubinvokeTest(client, wrapperUri); - }) - - it("bigint-type", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/bigint-type`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runBigIntTypeTest(new PolywrapClient(), wrapperUri); - }); - - it("bignumber-type", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/bignumber-type`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runBigNumberTypeTest(new PolywrapClient(), wrapperUri); - }); - - it("bytes-type", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/bytes-type`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runBytesTypeTest(new PolywrapClient(), wrapperUri); - }); - - it("enum-types", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/enum-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runEnumTypesTest(new PolywrapClient(), wrapperUri); - }); - - it("map-type", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/map-type`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runMapTypeTest(new PolywrapClient(), wrapperUri); - }); - - it("reserved-words", async () => { - const client = new PolywrapClient(); - - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/reserved-words`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - const ensUri = wrapperUri; - - const result = await client.invoke({ - uri: ensUri, - method: "if", - args: { - if: { - else: "successfully used reserved keyword", - }, - }, - }); - - if (!result.ok) fail(result.error); - expect(result.value).toBeTruthy(); - expect(result.value).toMatchObject({ - else: "successfully used reserved keyword", - }); - }); - - it("implementations - e2e", async () => { - const interfacePath = `${GetPathToTestWrappers()}/wasm-as/implementations/test-interface`; - const interfaceUri = `fs/${interfacePath}/build`; - - const implementationPath = `${GetPathToTestWrappers()}/wasm-as/implementations/test-wrapper`; - const implementationUri = `wrap://fs/${implementationPath}/build`; - - await buildWrapper(interfacePath); - await buildWrapper(implementationPath); - - const client = new PolywrapClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri], - }, - ], - }); - - await TestCases.runImplementationsTest( - client, - interfaceUri, - implementationUri - ); - }); - - it("implementations - getImplementations", async () => { - const interfacePath = `${GetPathToTestWrappers()}/wasm-as/implementations/test-interface`; - const interfaceUri = "wrap://ens/interface.eth"; - - const implementationPath = `${GetPathToTestWrappers()}/wasm-as/implementations/test-wrapper`; - const implementationUri = `fs/${implementationPath}/build`; - - const aggregatorPath = `${GetPathToTestWrappers()}/wasm-as/implementations/test-use-getImpl`; - const aggregatorUri = `fs/${aggregatorPath}/build`; - - await buildWrapper(interfacePath); - await buildWrapper(implementationPath); - await buildWrapper(aggregatorPath); - - const client = new PolywrapClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri], - }, - ], - }); - - await TestCases.runGetImplementationsTest( - client, - aggregatorUri, - interfaceUri, - implementationUri - ); - }); - - it("e2e Interface invoke method", async () => { - const interfaceUri = "wrap://ens/interface.eth"; - - const implementationPath = `${GetPathToTestWrappers()}/wasm-as/interface-invoke/test-implementation`; - const implementationUri = `fs/${implementationPath}/build`; - - // Build interface polywrapper - await runCLI({ - args: ["build"], - cwd: `${GetPathToTestWrappers()}/wasm-as/interface-invoke/test-interface`, - }); - - await buildWrapper(implementationPath); - - const client = new PolywrapClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri], - }, - ], - }); - - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/interface-invoke/test-wrapper`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - const result = await client.invoke({ - uri: wrapperUri, - method: "moduleMethod", - args: { - arg: { - uint8: 1, - str: "Test String 1", - }, - }, - }); - - if (!result.ok) fail(result.error); - expect(result.value).toBeTruthy(); - expect(result.value).toEqual({ - uint8: 1, - str: "Test String 1", - }); - }); - - it("invalid type errors", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/invalid-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runInvalidTypesTest(new PolywrapClient(), wrapperUri); - }); - - it("JSON-type", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/json-type`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runJsonTypeTest(new PolywrapClient(), wrapperUri); - }); - - it("large-types", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/large-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runLargeTypesTest(new PolywrapClient(), wrapperUri); - }); - - it("number-types under and overflows", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/number-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runNumberTypesTest(new PolywrapClient(), wrapperUri); - }); - - it("object-types", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/object-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runObjectTypesTest(new PolywrapClient(), wrapperUri); - }); - - it("simple-storage", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple-storage`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runSimpleStorageTest(getClientWithEnsAndIpfs(), wrapperUri); - }); - - it("simple env", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple-env-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runSimpleEnvTest( - new PolywrapClient({ - envs: [ - { - uri: wrapperUri, - env: { - str: "module string", - requiredInt: 1, - }, - }, - ], - }), - wrapperUri - ); - }); - - it("complex env", async () => { - const baseWrapperEnvPaths = `${GetPathToTestWrappers()}/wasm-as/env-types`; - const wrapperPath = `${baseWrapperEnvPaths}/main`; - const externalWrapperPath = `${baseWrapperEnvPaths}/external`; - const wrapperUri = `fs/${wrapperPath}/build`; - const externalWrapperUri = `fs/${externalWrapperPath}/build`; - - await buildWrapper(externalWrapperPath); - await buildWrapper(wrapperPath); - - await TestCases.runComplexEnvs( - new PolywrapClient({ - envs: [ - { - uri: wrapperUri, - env: { - object: { - prop: "object string", - }, - str: "string", - optFilledStr: "optional string", - number: 10, - bool: true, - en: "FIRST", - array: [32, 23], - }, - }, - { - uri: "ens/externalenv.polywrap.eth", - env: { - externalArray: [1, 2, 3], - externalString: "iamexternal", - }, - }, - ], - redirects: [ - { - from: "ens/externalenv.polywrap.eth", - to: externalWrapperUri, - }, - { - from: "ens/hello.eth", - to: wrapperUri, - } - ], - }), - 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 deleted file mode 100644 index 27b9057dfd..0000000000 --- a/packages/js/client/src/__tests__/e2e/wasm-rs.spec.ts +++ /dev/null @@ -1,403 +0,0 @@ -import * as TestCases from "./test-cases"; -import { makeMemoryStoragePlugin } from "./memory-storage"; -import { - buildWrapper, - initTestEnvironment, - stopTestEnvironment, -} from "@polywrap/test-env-js"; -import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { getClientWithEnsAndIpfs } from "../helpers/getClientWithEnsAndIpfs"; -import fse from "fs-extra"; -import path from "path"; -import { execSync } from "child_process"; -import { PolywrapClient } from "../../PolywrapClient"; -const { performance } = require("perf_hooks"); - -jest.setTimeout(1200000); - -describe("wasm-rs test cases", () => { - beforeAll(async () => { - await initTestEnvironment(); - }); - - afterAll(async () => { - await stopTestEnvironment(); - }); - - it("asyncify", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/asyncify`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - const client = new PolywrapClient({ - packages: [ - { - uri: "wrap://ens/memory-storage.polywrap.eth", - package: makeMemoryStoragePlugin({}), - }, - ], - }); - - await TestCases.runAsyncifyTest(client, wrapperUri); - }); - - it("bigint-type", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/bigint-type`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runBigIntTypeTest(new PolywrapClient(), wrapperUri); - }); - - it("bignumber-type", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/bignumber-type`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runBigNumberTypeTest(new PolywrapClient(), wrapperUri); - }); - - it("bytes-type", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/bytes-type`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runBytesTypeTest(new PolywrapClient(), wrapperUri); - }); - - it("enum-types", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/enum-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runEnumTypesTest(new PolywrapClient(), wrapperUri); - }); - - it("map-type", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/map-type`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runMapTypeTest(new PolywrapClient(), wrapperUri); - }); - - it("implementations - e2e", async () => { - const interfacePath = `${GetPathToTestWrappers()}/wasm-rs/implementations/test-interface`; - const interfaceUri = `fs/${interfacePath}/build`; - - const implementationPath = `${GetPathToTestWrappers()}/wasm-rs/implementations/test-wrapper`; - const implementationUri = `fs/${implementationPath}/build`; - - await buildWrapper(interfacePath); - - await buildWrapper(implementationPath); - - const client = new PolywrapClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri], - }, - ], - }); - - await TestCases.runImplementationsTest( - client, - interfaceUri, - implementationUri - ); - }); - - it("implementations - getImplementations", async () => { - const interfacePath = `${GetPathToTestWrappers()}/wasm-rs/implementations/test-interface`; - const interfaceUri = "wrap://ens/interface.eth"; - - const implementationPath = `${GetPathToTestWrappers()}/wasm-rs/implementations/test-wrapper`; - const implementationUri = `fs/${implementationPath}/build`; - - const aggregatorPath = `${GetPathToTestWrappers()}/wasm-rs/implementations/test-use-getImpl`; - const aggregatorUri = `fs/${aggregatorPath}/build`; - - await buildWrapper(interfacePath); - await buildWrapper(implementationPath); - await buildWrapper(aggregatorPath); - - const client = new PolywrapClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [implementationUri], - }, - ], - }); - - await TestCases.runGetImplementationsTest( - client, - aggregatorUri, - interfaceUri, - implementationUri - ); - }); - - it("invalid type errors", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/invalid-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runInvalidTypesTest(new PolywrapClient(), wrapperUri); - }); - - it("JSON-type", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/json-type`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runJsonTypeTest(new PolywrapClient(), wrapperUri, true); - }); - - it("large-types", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/large-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runLargeTypesTest(new PolywrapClient(), wrapperUri); - }); - - it("number-types under and overflows", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/number-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runNumberTypesTest(new PolywrapClient(), wrapperUri); - }); - - it("object-types", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/object-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runObjectTypesTest(new PolywrapClient(), wrapperUri); - }); - - it("simple-storage", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/simple-storage`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runSimpleStorageTest(getClientWithEnsAndIpfs(), wrapperUri); - }); - - it("simple env", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/simple-env-types`; - const wrapperUri = `fs/${wrapperPath}/build`; - - await buildWrapper(wrapperPath); - - await TestCases.runSimpleEnvTest( - await new PolywrapClient({ - envs: [ - { - uri: wrapperUri, - env: { - str: "module string", - requiredInt: 1, - }, - }, - ], - }), - wrapperUri - ); - }); - - it("complex env", async () => { - const baseWrapperEnvPaths = `${GetPathToTestWrappers()}/wasm-rs/env-types`; - const wrapperPath = `${baseWrapperEnvPaths}/main`; - const externalWrapperPath = `${baseWrapperEnvPaths}/external`; - const wrapperUri = `fs/${wrapperPath}/build`; - const externalWrapperUri = `fs/${externalWrapperPath}/build`; - - await buildWrapper(externalWrapperPath); - await buildWrapper(wrapperPath); - - await TestCases.runComplexEnvs( - new PolywrapClient({ - envs: [ - { - uri: wrapperUri, - env: { - object: { - prop: "object string", - }, - str: "string", - optFilledStr: "optional string", - number: 10, - bool: true, - en: "FIRST", - array: [32, 23], - }, - }, - { - uri: externalWrapperUri, - env: { - externalArray: [1, 2, 3], - externalString: "iamexternal", - }, - }, - ], - redirects: [ - { - from: "ens/externalenv.polywrap.eth", - to: externalWrapperUri, - }, - ], - }), - wrapperUri - ); - }); - - it("override rust print macros", async () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/println-logging`; - const wrapperUri = `fs/${wrapperPath}/build`; - await buildWrapper(wrapperPath); - - console.debug = jest.fn(); - const message = "foo bar baz"; - - 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 - ); - jest.clearAllMocks(); - }); -}); - -describe.skip("Wasm-rs benchmarking", () => { - const wrapperPath = `${GetPathToTestWrappers()}/wasm-rs/benchmarks`; - const wrapperUri = `fs/${wrapperPath}/build`; - - let cacheFiles = new Map(); - const mockFunc = ` - fn froo() -> &'static str { -"foo" -} - `; - - const modifySource = () => { - const libPath = path.join(wrapperPath, "src", "lib.rs"); - const libFile = fse.readFileSync(libPath, "utf-8"); - - cacheFiles.set(libPath, libFile); - - const modifiedFile = `${libFile}\n${mockFunc}`; - - fse.writeFileSync(libPath, modifiedFile); - }; - - const buildImage = async (name: "current" | "new"): Promise => { - const startTime = performance.now(); - - await buildWrapper( - wrapperPath, - name === "current" ? "./polywrap-current.yaml" : "./polywrap.yaml", - true - ); - - const endTime = performance.now(); - const msTime = endTime - startTime; - - //Make sure the wrapper works correctly - await TestCases.runBigNumberTypeTest(new PolywrapClient(), wrapperUri); - - return msTime; - }; - - beforeEach(() => { - fse.removeSync(`${wrapperPath}/build`); - fse.removeSync(`${wrapperPath}/.polywrap`); - }); - - const restoreSource = () => { - for (const [key, value] of cacheFiles) { - fse.writeFileSync(key, value); - } - }; - - it("Build image performance", async () => { - //Delete cached images and containers - execSync(`docker system prune -a -f`); - - //Build the wrapper with no previously cached images - const firstBuildTimeNew = await buildImage("new"); - console.log( - `1st build - no cache (new): ${firstBuildTimeNew.toFixed(2)}ms` - ); - - //Build the wrapper again - const secondBuildTimeNew = await buildImage("new"); - console.log( - `2nd build - with cache (new): ${secondBuildTimeNew.toFixed(2)}ms` - ); - - //Modify the source code and measure build time - modifySource(); - - const timeAfterSourceNew = await buildImage("new"); - console.log( - `3rd build - modified source (new): ${timeAfterSourceNew.toFixed(2)}ms` - ); - - restoreSource(); - - // Repeat the process for current image and compare - execSync(`docker system prune -a -f`); - - const firstBuildTimeCurrent = await buildImage("current"); - console.log( - `1st build - no cache (current): ${firstBuildTimeCurrent.toFixed(2)}ms` - ); - - const secondBuildTimeCurrent = await buildImage("current"); - console.log( - `2nd build - with cache (current): ${secondBuildTimeCurrent.toFixed(2)}ms` - ); - - modifySource(); - - const timeAfterSourceCurrent = await buildImage("current"); - console.log( - `3rd build - modified source (current): ${timeAfterSourceCurrent.toFixed( - 2 - )}ms` - ); - - restoreSource(); - - expect(timeAfterSourceNew).toBeLessThan(timeAfterSourceCurrent); - }); -}); diff --git a/packages/js/client/src/__tests__/helpers.ts b/packages/js/client/src/__tests__/helpers.ts new file mode 100644 index 0000000000..9ff75a3530 --- /dev/null +++ b/packages/js/client/src/__tests__/helpers.ts @@ -0,0 +1,78 @@ +import { PluginModule, PluginPackage } from "@polywrap/plugin-js"; +import {latestWrapManifestVersion} from "@polywrap/wrap-manifest-types-js"; +import {parseSchema} from "@polywrap/schema-parse"; +import {Uri} from "@polywrap/core-js"; + +class MemoryStoragePlugin extends PluginModule< + Record +> { + private _value: number; + + async getData(_: {}): Promise { + await this.sleep(50); + return this._value; + } + + async setData(args: { value: number }): Promise { + await this.sleep(50); + this._value = args.value; + return true; + } + + private sleep(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } +} + +export const memoryStoragePlugin = () => { + return PluginPackage.from(new MemoryStoragePlugin({}), { + name: "memoryStorage", + type: "plugin", + version: latestWrapManifestVersion, + abi: parseSchema(` + type Module { + getData: Int32! + setData(value: Int32!): Boolean! + } + `) + }) +} + +export const mockPluginRegistration = (uri: string | Uri) => { + return { + uri: Uri.from(uri), + package: PluginPackage.from( + () => ({ + simpleMethod: (_: unknown): string => { + return "plugin response"; + }, + methodThatThrows: (_: unknown): string => { + throw Error("I'm throwing!"); + }, + mockEnv(): { a: number } & Record { + return this.env; + } + }) + ), + }; +}; + +export type ErrResult = { ok: false; error: E | undefined }; + +export const incompatiblePlugin = () => { + class IncompatiblePlugin extends PluginModule> { + async getData(_: {}): Promise { + return 0; + } + } + return PluginPackage.from(new IncompatiblePlugin({}), { + name: "incompatiblePlugin", + type: "plugin", + version: "0.0.0.5", + abi: parseSchema(` + type Module { + getData: Int32! + } + `) + }) +} \ No newline at end of file diff --git a/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts b/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts deleted file mode 100644 index 7dc2411b3d..0000000000 --- a/packages/js/client/src/__tests__/helpers/mockPluginRegistration.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Uri } from "@polywrap/core-js"; -import { PluginPackage } from "@polywrap/plugin-js"; - -export const mockPluginRegistration = (uri: string | Uri) => { - return { - uri: Uri.from(uri), - package: PluginPackage.from( - () => ({ - simpleMethod: (_: unknown): string => { - return "plugin response"; - }, - methodThatThrows: (_: unknown): string => { - throw Error("I'm throwing!"); - } - }) - ), - }; -}; diff --git a/packages/js/client/src/__tests__/utils/resultTypes.ts b/packages/js/client/src/__tests__/utils/resultTypes.ts deleted file mode 100644 index 17a02d06d4..0000000000 --- a/packages/js/client/src/__tests__/utils/resultTypes.ts +++ /dev/null @@ -1 +0,0 @@ -export type ErrResult = { ok: false; error: E | undefined }; \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-a/package.json b/packages/js/client/src/__tests__/utils/validate/wrapper-a/package.json deleted file mode 100644 index 2ab68462f0..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-a/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "wrapper-a", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.9.2", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-a/polywrap.yaml b/packages/js/client/src/__tests__/utils/validate/wrapper-a/polywrap.yaml deleted file mode 100644 index ec75328e14..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-a/polywrap.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -project: - name: WrapperA - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-a/schema.graphql b/packages/js/client/src/__tests__/utils/validate/wrapper-a/schema.graphql deleted file mode 100644 index 5a103c618d..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-a/schema.graphql +++ /dev/null @@ -1,3 +0,0 @@ -type Module { - foo(bar: String!): String! -} \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-a/src/index.ts b/packages/js/client/src/__tests__/utils/validate/wrapper-a/src/index.ts deleted file mode 100644 index 3fbd0ff049..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-a/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { - Args_foo -} from "./wrap"; - -export function foo(args: Args_foo): String { - return args.bar -} \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-b/package.json b/packages/js/client/src/__tests__/utils/validate/wrapper-b/package.json deleted file mode 100644 index 2b3db7f303..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-b/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "wrapper-b", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.9.2", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-b/polywrap.yaml b/packages/js/client/src/__tests__/utils/validate/wrapper-b/polywrap.yaml deleted file mode 100644 index 772a8eb5bd..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-b/polywrap.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -project: - name: WrapperB - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: "ens/foo.eth" - abi: "../wrapper-a/build/wrap.info" \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-b/schema.graphql b/packages/js/client/src/__tests__/utils/validate/wrapper-b/schema.graphql deleted file mode 100644 index c94e40035e..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-b/schema.graphql +++ /dev/null @@ -1,5 +0,0 @@ -#import { Module } into Foo from "ens/foo.eth" - -type Module { - greeting(message: String!): String! -} \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-b/src/index.ts b/packages/js/client/src/__tests__/utils/validate/wrapper-b/src/index.ts deleted file mode 100644 index 89e4e3db82..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-b/src/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { - Args_greeting, - Foo_Module -} from "./wrap"; - -export function greeting(args: Args_greeting): String { - return Foo_Module.foo({ bar: args.message }).unwrap(); -} \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-c/package.json b/packages/js/client/src/__tests__/utils/validate/wrapper-c/package.json deleted file mode 100644 index 095ca3a647..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-c/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "wrapper-c", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.9.2", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-c/polywrap.yaml b/packages/js/client/src/__tests__/utils/validate/wrapper-c/polywrap.yaml deleted file mode 100644 index 24e3f2229c..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-c/polywrap.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -project: - name: WrapperC - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-c/schema.graphql b/packages/js/client/src/__tests__/utils/validate/wrapper-c/schema.graphql deleted file mode 100644 index 5cd51f4f8a..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-c/schema.graphql +++ /dev/null @@ -1,3 +0,0 @@ -type Module { - foo(bar: Int!): String! -} \ No newline at end of file diff --git a/packages/js/client/src/__tests__/utils/validate/wrapper-c/src/index.ts b/packages/js/client/src/__tests__/utils/validate/wrapper-c/src/index.ts deleted file mode 100644 index 65dccddb41..0000000000 --- a/packages/js/client/src/__tests__/utils/validate/wrapper-c/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { - Args_foo -} from "./wrap"; - -export function foo(args: Args_foo): String { - return args.bar.toString() -} \ No newline at end of file diff --git a/packages/js/core-client/src/__tests__/embedded-package.spec.ts b/packages/js/core-client/src/__tests__/embedded-package.spec.ts index f4ce431aa4..70e660b510 100644 --- a/packages/js/core-client/src/__tests__/embedded-package.spec.ts +++ b/packages/js/core-client/src/__tests__/embedded-package.spec.ts @@ -1,6 +1,5 @@ import fs from "fs"; import path from "path"; -import { buildWrapper } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { UriResolver } from "@polywrap/uri-resolvers-js"; import { InMemoryFileReader, WasmPackage } from "@polywrap/wasm-js"; @@ -10,46 +9,43 @@ import { Result, ResultErr, ResultOk } from "@polywrap/result"; jest.setTimeout(200000); -const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; -const simpleWrapperUri = new Uri(`fs/${simpleWrapperPath}/build`); +const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; +const wrapperUri = new Uri(`fs/${wrapperPath}`); describe("Embedded package", () => { - beforeAll(async () => { - await buildWrapper(simpleWrapperPath); - }); - it("can invoke an embedded package", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) let wrapPackage = WasmPackage.from(manifestBuffer, wasmModuleBuffer); const client = new PolywrapCoreClient({ resolver: UriResolver.from([ { - uri: simpleWrapperUri, + uri: wrapperUri, package: wrapPackage } ]) }); - const result = await client.invoke({ - uri: simpleWrapperUri, - method: "simpleMethod", + const result = await client.invoke({ + uri: wrapperUri, + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, }); if (!result.ok) fail(result.error); expect(result.value).toBeTruthy(); - expect(typeof result.value).toBe("string"); - expect(result.value).toEqual("test"); + expect(typeof result.value).toBe("number"); + expect(result.value).toEqual(2); }); it("can get a file from wrapper", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -67,8 +63,8 @@ describe("Embedded package", () => { }); it("can add embedded wrapper through file reader", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -90,8 +86,8 @@ describe("Embedded package", () => { }); it("can add embedded wrapper with async wrap manifest", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -113,8 +109,8 @@ describe("Embedded package", () => { }); it("can add embedded wrapper with async wasm module", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -138,15 +134,15 @@ const testEmbeddedPackageWithFile = async (wrapPackage: IWrapPackage, filePath: const client = new PolywrapCoreClient({ resolver: UriResolver.from([ { - uri: simpleWrapperUri, + uri: wrapperUri, package: wrapPackage } ]) }); const expectedManifest = - await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.info`); - const receivedManifestResult = await client.getFile(simpleWrapperUri, { + await fs.promises.readFile(`${wrapperPath}/wrap.info`); + const receivedManifestResult = await client.getFile(wrapperUri, { path: "wrap.info", }); if (!receivedManifestResult.ok) fail(receivedManifestResult.error); @@ -154,15 +150,15 @@ const testEmbeddedPackageWithFile = async (wrapPackage: IWrapPackage, filePath: expect(receivedManifest).toEqual(expectedManifest); const expectedWasmModule = - await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.wasm`); - const receivedWasmModuleResult = await client.getFile(simpleWrapperUri, { + await fs.promises.readFile(`${wrapperPath}/wrap.wasm`); + const receivedWasmModuleResult = await client.getFile(wrapperUri, { path: "wrap.wasm", }); if (!receivedWasmModuleResult.ok) fail(receivedWasmModuleResult.error); const receivedWasmModule = receivedWasmModuleResult.value as Uint8Array; expect(receivedWasmModule).toEqual(expectedWasmModule); - const receivedHelloFileResult = await client.getFile(simpleWrapperUri, { + const receivedHelloFileResult = await client.getFile(wrapperUri, { path: filePath, encoding: "utf-8", }); diff --git a/packages/js/core-client/src/__tests__/embedded-wrapper.spec.ts b/packages/js/core-client/src/__tests__/embedded-wrapper.spec.ts index 768a21fe33..6a0815edd8 100644 --- a/packages/js/core-client/src/__tests__/embedded-wrapper.spec.ts +++ b/packages/js/core-client/src/__tests__/embedded-wrapper.spec.ts @@ -1,6 +1,5 @@ import fs from "fs"; import path from "path"; -import { buildWrapper } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { UriResolver } from "@polywrap/uri-resolvers-js"; import { WasmWrapper, InMemoryFileReader } from "@polywrap/wasm-js"; @@ -10,46 +9,43 @@ import { Result, ResultErr, ResultOk } from "@polywrap/result"; jest.setTimeout(200000); -const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; -const simpleWrapperUri = new Uri(`fs/${simpleWrapperPath}/build`); +const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; +const wrapperUri = new Uri(`fs/${wrapperPath}`); describe("Embedded wrapper", () => { - beforeAll(async () => { - await buildWrapper(simpleWrapperPath); - }); - it("can invoke an embedded wrapper", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) let wrapper: Wrapper = await WasmWrapper.from(manifestBuffer, wasmModuleBuffer); const client = new PolywrapCoreClient({ resolver: UriResolver.from([ { - uri: simpleWrapperUri, + uri: wrapperUri, wrapper } ]) }); - const result = await client.invoke({ - uri: simpleWrapperUri, - method: "simpleMethod", + const result = await client.invoke({ + uri: wrapperUri, + method: "add", args: { - arg: "test", + a: 1, + b: 1 }, }); if (!result.ok) fail(result.error); expect(result.value).toBeTruthy(); - expect(typeof result.value).toBe("string"); - expect(result.value).toEqual("test"); + expect(typeof result.value).toBe("number"); + expect(result.value).toEqual(2); }); it("can get a file from wrapper", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -67,8 +63,8 @@ describe("Embedded wrapper", () => { }); it("can add embedded wrapper through file reader", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -90,8 +86,8 @@ describe("Embedded wrapper", () => { }); it("can add embedded wrapper with async wrap manifest", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -113,8 +109,8 @@ describe("Embedded wrapper", () => { }); it("can add embedded wrapper with async wasm module", async () => { - const manifestBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.info")) - const wasmModuleBuffer = fs.readFileSync(path.join(simpleWrapperPath, "build/wrap.wasm")) + const manifestBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.info")) + const wasmModuleBuffer = fs.readFileSync(path.join(wrapperPath, "wrap.wasm")) const testFilePath = "hello.txt"; const testFileText = "Hello Test!"; @@ -138,15 +134,15 @@ const testEmbeddedWrapperWithFile = async (wrapper: WasmWrapper, filePath: strin const client = new PolywrapCoreClient({ resolver: UriResolver.from([ { - uri: simpleWrapperUri, + uri: wrapperUri, wrapper } ]) }); const expectedManifest = - await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.info`); - const receivedManifestResult = await client.getFile(simpleWrapperUri, { + await fs.promises.readFile(`${wrapperPath}/wrap.info`); + const receivedManifestResult = await client.getFile(wrapperUri, { path: "wrap.info", }); if (!receivedManifestResult.ok) fail(receivedManifestResult.error); @@ -154,15 +150,15 @@ const testEmbeddedWrapperWithFile = async (wrapper: WasmWrapper, filePath: strin expect(receivedManifest).toEqual(expectedManifest); const expectedWasmModule = - await fs.promises.readFile(`${simpleWrapperPath}/build/wrap.wasm`); - const receivedWasmModuleResult = await client.getFile(simpleWrapperUri, { + await fs.promises.readFile(`${wrapperPath}/wrap.wasm`); + const receivedWasmModuleResult = await client.getFile(wrapperUri, { path: "wrap.wasm", }); if (!receivedWasmModuleResult.ok) fail(receivedWasmModuleResult.error); const receivedWasmModule = receivedWasmModuleResult.value as Uint8Array; expect(receivedWasmModule).toEqual(expectedWasmModule); - const receivedHelloFileResult = await client.getFile(simpleWrapperUri, { + const receivedHelloFileResult = await client.getFile(wrapperUri, { path: filePath, encoding: "utf-8", }); diff --git a/packages/js/plugins/uri-resolvers/ens-resolver/README.md b/packages/js/plugins/uri-resolvers/ens-resolver/README.md index 0c03fc4a53..d42c759cce 100644 --- a/packages/js/plugins/uri-resolvers/ens-resolver/README.md +++ b/packages/js/plugins/uri-resolvers/ens-resolver/README.md @@ -10,13 +10,14 @@ import { providers, ensAddresses, stopTestEnvironment, - buildAndDeployWrapper, + deployWrapper, } from "@polywrap/test-env-js"; import { ethereumPlugin, Connections, Connection } from "@polywrap/ethereum-plugin-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { ensPlugin } from "@polywrap/ens-plugin-js"; +import { DeployManifest } from "@polywrap/polywrap-manifest-types-js"; -// query a wrapper with an ENS path +// invoke a wrapper with an ENS path export async function foo({ // spin up docker containers with Ganache and IPFS. @@ -59,27 +60,60 @@ export async function foo({ // get filesystem path const wrapperAbsPath = `/path/to/simple-storage`; + const wrapperEnsDomain = "simple-storage.eth"; - // deploy a wrapper to IPFS - let { ensDomain } = await buildAndDeployWrapper({ + const jobs: DeployManifest["jobs"] = { + buildAndDeployWrapper: { + config: { + provider: providers.ethereum, + ensRegistryAddress: ensAddresses.ensAddress, + ensRegistrarAddress: ensAddresses.registrarAddress, + ensResolverAddress: ensAddresses.resolverAddress, + }, + steps: [ + { + name: "registerName", + package: "ens-recursive-name-register", + uri: `wrap://ens/${wrapperEnsDomain}`, + }, + { + name: "ipfsDeploy", + package: "ipfs", + uri: `fs/${wrapperAbsPath}`, + config: { + gatewayUri: providers.ipfs, + }, + }, + { + name: "ensPublish", + package: "ens", + uri: "$$ipfsDeploy", + config: { + domainName: wrapperEnsDomain, + }, + }, + ], + }, + }; + // deploy a wrapper to IPFS and ENS + await deployWrapper({ wrapperAbsPath: wrapperAbsPath, - ipfsProvider: providers.ipfs, - ethereumProvider: providers.ethereum, - ensName: "simple-storage.eth", + jobs, + build: true, + codegen: true }); // get ENS URI const wrapperUriENS = `ens/testnet/${wrapperEnsDomain}`; - // query the wrapper + // invoke the wrapper const schemaENS = await client.getManifest(wrapperUriENS) - // we can also resolve an ENS URI in two steps - // get IPFS URI + // we can also resolve an ENS URI in two steps: + // 1- get IPFS URI const resolveUriResult = await client.resolveUri(wrapperUriEns); const wrapperUriIpfs = resolveUriResult.uri - - // query the wrapper + // 2- invoke the wrapper const schemaIPFS = await resolveUriResult.wrapperIPFS?.getManifest(client); await stopTestEnvironment(); @@ -90,4 +124,4 @@ For more usage examples see `src/__tests__`. ## API -ENS Resolver Plugin conforms to a generic UriResolver interface that provides a tryResolveUri method to the Polywrap client and adds ENS resolution capability to every client method, e.g. getSchema, getManifest, resolveUri. +ENS Resolver Plugin conforms to a generic UriResolver interface that provides a tryResolveUri method to the Polywrap client and adds ENS resolution capability to every client method, e.g. getManifest, resolveUri. 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 bebf7310de..03a68e7b38 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,11 +1,13 @@ import { PolywrapClient } from "@polywrap/client-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import { - buildAndDeployWrapper, + deployWrapper, initTestEnvironment, providers, + ensAddresses, stopTestEnvironment, } from "@polywrap/test-env-js"; +import { DeployManifest } from "@polywrap/polywrap-manifest-types-js"; import { getClient } from "./helpers/getClient"; @@ -14,20 +16,50 @@ jest.setTimeout(300000); describe("ENS Resolver Plugin", () => { let client: PolywrapClient; let wrapperEnsDomain: string; - - const wrapperAbsPath = `${GetPathToTestWrappers()}/wasm-as/simple-storage`; + const wrapperAbsPath = `${GetPathToTestWrappers()}/bigint-type/implementations/as`; beforeAll(async () => { await initTestEnvironment(); + wrapperEnsDomain = "cool-wrapper.eth"; - let { ensDomain } = await buildAndDeployWrapper({ - wrapperAbsPath: wrapperAbsPath, - ipfsProvider: providers.ipfs, - ethereumProvider: providers.ethereum, - ensName: "cool.wrapper.eth", - }); + const jobs: DeployManifest["jobs"] = { + buildAndDeployWrapper: { + config: { + provider: providers.ethereum, + ensRegistryAddress: ensAddresses.ensAddress, + ensRegistrarAddress: ensAddresses.registrarAddress, + ensResolverAddress: ensAddresses.resolverAddress, + }, + steps: [ + { + name: "registerName", + package: "ens-recursive-name-register", + uri: `wrap://ens/${wrapperEnsDomain}`, + }, + { + name: "ipfsDeploy", + package: "ipfs", + uri: `fs/${wrapperAbsPath}`, + config: { + gatewayUri: providers.ipfs, + }, + }, + { + name: "ensPublish", + package: "ens", + uri: "$$ipfsDeploy", + config: { + domainName: wrapperEnsDomain, + }, + }, + ], + }, + }; - wrapperEnsDomain = ensDomain; + await deployWrapper({ + wrapperAbsPath, + jobs + }); client = getClient(); }); @@ -50,6 +82,6 @@ describe("ENS Resolver Plugin", () => { const manifest = await result.value.wrapper.getManifest(); - expect(manifest?.name).toBe("SimpleStorage"); + expect(manifest?.name).toBe("bigint-type"); }); }); diff --git a/packages/js/plugins/uri-resolvers/file-system-resolver/README.md b/packages/js/plugins/uri-resolvers/file-system-resolver/README.md index 4858ba3a47..6d3c8c216a 100644 --- a/packages/js/plugins/uri-resolvers/file-system-resolver/README.md +++ b/packages/js/plugins/uri-resolvers/file-system-resolver/README.md @@ -11,7 +11,7 @@ import { providers, ensAddresses, stopTestEnvironment, - buildAndDeployWrapper, + buildWrapper, } from "@polywrap/test-env-js"; import { filesystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; import { filesystemPlugin } from "@polywrap/fs-plugin-js"; @@ -19,7 +19,7 @@ import { ethereumPlugin } from "@polywrap/ethereum-plugin-js"; import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; import { ensResolverPlugin } from "@polywrap/ens-resolver-plugin-js"; -// query a local wrapper +// invoke a local wrapper export async function foo({ // spin up docker containers with Ganache and IPFS. @@ -43,7 +43,7 @@ export async function foo({ const wrapperPath = `/path/to/simple-storage`; // build locally - await buildWrapper(wrapperPath); + await buildWrapper(wrapperPath, undefined, true); const buildPath = `${wrapperPath}/build`; // get filesystem URI @@ -60,7 +60,7 @@ export async function foo({ }, }); - // query the wrapper + // invoke the wrapper const schemaFS = await client.getManifest(wrapperUriFS) await stopTestEnvironment(); @@ -71,4 +71,4 @@ For more usage examples see `src/__tests__`. ## API -Filesystem Resolver Plugin conforms to a generic UriResolver interface that provides tryResolveUri and getFile methods to the Polywrap client and adds filesystem resolution capability to every client method, e.g. getSchema, getManifest, resolveUri. +Filesystem Resolver Plugin conforms to a generic UriResolver interface that provides tryResolveUri and getFile methods to the Polywrap client and adds filesystem resolution capability to every client method, e.g. getManifest, resolveUri. 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 6e63c7205f..991d264a41 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,4 +1,3 @@ -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"; @@ -7,28 +6,19 @@ import { getClient } from "./helpers/getClient"; jest.setTimeout(360000); -const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; -const simpleWrapperUri = new Uri(`fs/${simpleWrapperPath}/build`); +const simpleWrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; +const simpleWrapperUri = new Uri(`fs/${simpleWrapperPath}`); -describe("Filesystem Resolver plugin", () => { - let client: PolywrapClient; - - beforeAll(async () => { - await buildWrapper(simpleWrapperPath); - - client = getClient(); - }); - - afterAll(async () => { - await stopTestEnvironment(); - }); +describe("Filesystem plugin", () => { + let client: PolywrapClient = getClient(); it("invokes simple wrapper on local file system", async () => { - const result = await client.invoke({ + const result = await client.invoke({ uri: simpleWrapperUri.uri, - method: "simpleMethod", + method: "add", args: { - arg: "test", + "a": 1, + "b": 1 }, }); @@ -37,7 +27,7 @@ describe("Filesystem Resolver plugin", () => { fail("Expected response to not be an error"); } - expect(result.value).toEqual("test"); + expect(result.value).toEqual(2); // get the manifest const manifest = await client.getManifest(simpleWrapperUri); @@ -53,7 +43,7 @@ describe("Filesystem Resolver plugin", () => { if (!file.ok) fail(file.error); const expectedFile = await fs.promises.readFile( - `${simpleWrapperPath}/build/wrap.info` + `${simpleWrapperPath}/wrap.info` ); const expectedInfo = Uint8Array.from(expectedFile); diff --git a/packages/js/plugins/uri-resolvers/http-resolver/README.md b/packages/js/plugins/uri-resolvers/http-resolver/README.md index 034d7c66fc..f24f1d692a 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/README.md +++ b/packages/js/plugins/uri-resolvers/http-resolver/README.md @@ -10,25 +10,42 @@ import { initTestEnvironment, providers, stopTestEnvironment, - buildAndDeployWrapperToHttp, + deployWrapper, } from "@polywrap/test-env-js"; - import { httpResolverPlugin } from "@polywrap/http-resolver-plugin-js"; +import { DeployManifest } from "@polywrap/polywrap-manifest-types-js"; -// query wrapper at HTTP URI +// invoke wrapper at HTTP URI export async function foo({ await initTestEnvironment(); + const wrapperAbsPath = `/path/to/simple-storage`; + const wrapperHttpUri = `${providers.http}/wrappers/local/simple-storage`; + const jobs: DeployManifest["jobs"] = { + buildAndDeployWrapperToHttp: { + steps: [ + { + name: "httpDeploy", + package: "http", + uri: `fs/${wrapperAbsPath}`, + config: { + postUrl: wrapperHttpUri, + }, + }, + ], + }, + }; // deploy wrapper to local HTTP server - let { uri } = await buildAndDeployWrapperToHttp({ + await deployWrapper({ wrapperAbsPath: `/path/to/simple-storage`, - httpProvider: providers.http, - name: "simple-storage", + jobs, + build: true, + codegen: true, }); // get wrapper HTTP URI - const wrapperUri = `http/${uri}`; + const wrapperUri = `http/${wrapperHttpUri}`; // initialize client with the HTTP Resolver plugin client = new PolywrapClient({ @@ -48,7 +65,7 @@ export async function foo({ ] }); - // and query the wrapper over HTTP + // invoke query the wrapper over HTTP const response = await client.getManifest(wrapperUri) // we can resolve the HTTP URI in steps 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 3f358b162c..969d145f8e 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 @@ -1,9 +1,10 @@ import { PolywrapClient } from "@polywrap/client-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; -import { buildAndDeployWrapperToHttp, runCLI, providers } from "@polywrap/test-env-js"; +import { runCLI, providers, deployWrapper } from "@polywrap/test-env-js"; +import { DeployManifest } from "@polywrap/polywrap-manifest-types-js"; +import { deserializeWrapManifest } from "@polywrap/wrap-manifest-types-js"; import axios from "axios"; -import { deserializeWrapManifest } from "@polywrap/wrap-manifest-types-js"; import { getClient } from "./helpers/getClient"; jest.setTimeout(300000); @@ -22,14 +23,27 @@ describe("HTTP Plugin", () => { if (exitCode !== 0) { throw new Error(`Failed to start test environment: ${stderr}`); } - - const { uri } = await buildAndDeployWrapperToHttp({ - wrapperAbsPath: `${GetPathToTestWrappers()}/wasm-as/simple-storage`, - name: wrapperName, - httpProvider: providers.http, - }); - - wrapperHttpUri = uri; + wrapperHttpUri = `${providers.http}/wrappers/local/${wrapperName}`; + + const wrapperAbsPath = `${GetPathToTestWrappers()}/bigint-type/implementations/as`; + const jobs: DeployManifest["jobs"] = { + buildAndDeployWrapperToHttp: { + steps: [ + { + name: "httpDeploy", + package: "http", + uri: `fs/${wrapperAbsPath}`, + config: { + postUrl: wrapperHttpUri, + }, + }, + ], + }, + }; + await deployWrapper({ + wrapperAbsPath, + jobs + }); client = getClient(); }); @@ -67,7 +81,7 @@ describe("HTTP Plugin", () => { const manifest = await result.value.wrapper.getManifest(); - expect(manifest?.name).toBe("SimpleStorage"); + expect(manifest?.name).toBe("bigint-type"); expect(manifest).toEqual(expectedManifest); }); @@ -94,7 +108,7 @@ describe("HTTP Plugin", () => { const manifest = await result.value.wrapper.getManifest(); - expect(manifest?.name).toBe("SimpleStorage"); + expect(manifest?.name).toBe("bigint-type"); expect(manifest).toEqual(expectedManifest); }); }); diff --git a/packages/js/plugins/uri-resolvers/ipfs-resolver/README.md b/packages/js/plugins/uri-resolvers/ipfs-resolver/README.md new file mode 100644 index 0000000000..5bab56b7ed --- /dev/null +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/README.md @@ -0,0 +1,98 @@ +# @polywrap/ipfs-resolver-plugin-js + +IPFS Resolver Plugin allows the Polywrap JS Client to resolve wrapper URIs from IPFS. + +## Usage + +``` typescript +import { PolywrapClient } from "@polywrap/client-js"; +import { + initTestEnvironment, + providers, + stopTestEnvironment, + deployWrapper, +} from "@polywrap/test-env-js"; +import { DeployManifest } from "@polywrap/polywrap-manifest-types-js"; +import { ipfsPlugin } from "@polywrap/ipfs-plugin-js"; +import { ipfsResolverPlugin } from "@polywrap/ipfs-resolver-plugin-js"; +import createIpfsClient from "@polywrap/ipfs-http-client-lite"; + +// invoke wrapper at IPFS path +export async function foo({ + + await initTestEnvironment(); + const wrapperAbsPath = `/path/to/simple-storage`; + + ipfs = createIpfsClient(providers.ipfs); + + const jobs: DeployManifest["jobs"] = { + buildAndDeployWrapper: { + config: { + provider: providers.ethereum + }, + steps: [ + { + name: "ipfsDeploy", + package: "ipfs", + uri: `fs/${wrapperAbsPath}`, + config: { + gatewayUri: providers.ipfs, + }, + }, + ], + }, + }; + + // deploy wrapper to IPFS + const response = await deployWrapper({ + wrapperAbsPath, + jobs, + build: true, + codegen: true, + }); + + if (!response) { + throw Error("Failed to deploy wrapper"); + } + + + // get wrapper CID + const extractCID = /(wrap:\/\/ipfs\/[A-Za-z0-9]+)/; + const result = response.stdout.match(extractCID); + const wrapperIpfsCid = new Uri(result![1]).path; + + // get wrapper IPFS URI + const wrapperUri = `ipfs/${wrapperIpfsCid}`; + + // initialize client with the ipfs and resolver plugins + 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({}), + }, + ], + }); + + // and invoke the wrapper at IPFS + const response = await client.getManifest(wrapperUriENS) + + // we can also resolve the IPFS URI in steps + // get IPFS URI + const resolveUriResult = await client.resolveUri(wrapperUri); + const response = await resolveUriResult.wrapper?.getManifest(client); + + await stopTestEnvironment(); +}) +``` +For more usage examples see `src/__tests__`. + +## API + +IPFS Resolver Plugin conforms to a generic UriResolver interface that provides tryResolveUri and getFile methods to the Polywrap client and adds IPFS resolution capability to every client method, e.g. getManifest, resolveUri. 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 new file mode 100644 index 0000000000..36bccf4d08 --- /dev/null +++ b/packages/js/plugins/uri-resolvers/ipfs-resolver/src/__tests__/e2e.spec.ts @@ -0,0 +1,210 @@ +import { GetPathToTestWrappers } from "@polywrap/test-cases"; +import { getClient } from "./helpers/getClient"; +import { Result, Uri } from "@polywrap/core-js"; +import { ResultOk } from "@polywrap/result"; +import { + deployWrapper, + initTestEnvironment, + providers, + stopTestEnvironment, +} from "@polywrap/test-env-js"; +import { DeployManifest } from "@polywrap/polywrap-manifest-types-js"; + +jest.setTimeout(300000); + +describe("IPFS Plugin", () => { + let ipfsResolverUri = "wrap://ens/ipfs-resolver.polywrap.eth"; + let wrapperIpfsCid: string; + + beforeAll(async () => { + await initTestEnvironment(); + + const wrapperAbsPath = `${GetPathToTestWrappers()}/bigint-type/implementations/as`; + + const jobs: DeployManifest["jobs"] = { + buildAndDeployWrapper: { + config: { + provider: providers.ethereum + }, + steps: [ + { + name: "ipfsDeploy", + package: "ipfs", + uri: `fs/${wrapperAbsPath}`, + config: { + gatewayUri: providers.ipfs, + }, + }, + ], + }, + }; + + const response = await deployWrapper({ + wrapperAbsPath: wrapperAbsPath, + jobs + }); + + if (!response) { + throw Error("Failed to deploy wrapper"); + } + + const extractCID = /(wrap:\/\/ipfs\/[A-Za-z0-9]+)/; + const result = response.stdout.match(extractCID); + wrapperIpfsCid = new Uri(result![1]).path; + }); + + afterAll(async () => { + await stopTestEnvironment(); + }); + + it("Should successfully resolve a deployed wrapper - e2e", async () => { + const client = getClient({}); + + const wrapperUri = `ipfs/${wrapperIpfsCid}`; + + const result = await client.tryResolveUri({ uri: wrapperUri }); + + if (!result.ok) { + fail("Expected response to not be an error"); + } + + if (result.value.type !== "wrapper") { + fail("Expected response to be a wrapper"); + } + + const manifest = await result.value.wrapper.getManifest(); + + expect(manifest?.name).toBe("bigint-type"); + }); + + const createRacePromise = ( + timeout: number + ): Promise> => { + return new Promise>((resolve) => + setTimeout(() => { + resolve(ResultOk(Uint8Array.from([1, 2, 3, 4]))); + }, timeout) + ); + }; + + it("Should properly timeout - getFile", async () => { + const runGetFileTimeoutTestWithEnv = async ( + env: Record, + timeout: number + ) => { + const nonExistentFileCid = + "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + const client = getClient(env); + + const getFilePromise = client.invoke({ + uri: ipfsResolverUri, + method: "getFile", + args: { + path: nonExistentFileCid, + }, + }); + + const fasterRacePromise = createRacePromise(timeout - 100); + const slowerRacePromise = createRacePromise(timeout + 100); + + const fasterRaceResult = await Promise.race([ + fasterRacePromise, + getFilePromise, + ]); + const slowerRaceResult = await Promise.race([ + getFilePromise, + slowerRacePromise, + ]); + + if (!fasterRaceResult.ok) fail(fasterRaceResult.error); + const expectedFasterResult = await fasterRacePromise; + if (!expectedFasterResult.ok) fail(expectedFasterResult.error); + expect(fasterRaceResult.value).toStrictEqual(expectedFasterResult.value); + + if (!slowerRaceResult.ok) fail(slowerRaceResult.error); + const expectedSlowerResult = await getFilePromise; + if (!expectedSlowerResult.ok) fail(expectedSlowerResult.error); + expect(slowerRaceResult.value).toStrictEqual(expectedSlowerResult.value); + }; + + const timeout = 1000; + + await runGetFileTimeoutTestWithEnv( + { + timeouts: { + getFile: timeout, + checkIfExists: timeout, + tryResolveUri: timeout, + }, + }, + timeout + ); + + await runGetFileTimeoutTestWithEnv( + { + timeouts: { + getFile: timeout, + checkIfExists: timeout, + tryResolveUri: timeout, + }, + skipCheckIfExists: true, + }, + timeout + ); + }); + + it("Should properly timeout - tryResolveUri", async () => { + const runTryResolveUriTimeoutTestWithEnv = async ( + env: Record, + timeout: number + ) => { + const nonExistentFileCid = + "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + const client = getClient(env); + + const getFilePromise = client.invoke({ + uri: ipfsResolverUri, + method: "tryResolveUri", + args: { + authority: "ipfs", + path: nonExistentFileCid, + }, + }); + + const fasterRacePromise = createRacePromise(timeout - 100); + const slowerRacePromise = createRacePromise(timeout + 100); + + const fasterRaceResult = await Promise.race([ + fasterRacePromise, + getFilePromise, + ]); + const slowerRaceResult = await Promise.race([ + getFilePromise, + slowerRacePromise, + ]); + + if (!fasterRaceResult.ok) fail(fasterRaceResult.error); + const expectedFasterResult = await fasterRacePromise; + if (!expectedFasterResult.ok) fail(expectedFasterResult.error); + expect(fasterRaceResult.value).toStrictEqual(expectedFasterResult.value); + + if (!slowerRaceResult.ok) fail(slowerRaceResult.error); + const expectedSlowerResult = await getFilePromise; + if (!expectedSlowerResult.ok) fail(expectedSlowerResult.error); + expect(slowerRaceResult.value).toStrictEqual(expectedSlowerResult.value); + }; + + const timeout = 1000; + + await runTryResolveUriTimeoutTestWithEnv( + { + timeouts: { + getFile: timeout, + checkIfExists: timeout, + tryResolveUri: timeout, + }, + }, + timeout + ); + }); +}); diff --git a/packages/js/test-env/README.md b/packages/js/test-env/README.md index 45617fd431..acee3039ac 100644 --- a/packages/js/test-env/README.md +++ b/packages/js/test-env/README.md @@ -119,64 +119,29 @@ export async function buildWrapper( ): Promise ``` -### buildAndDeployWrapper +### deployWrapper ```typescript /** - * Build the wrapper located at the given path, and then deploy it to IPFS and ENS. - * If an ENS domain is not provided, a randomly selected human-readable ENS domain name is used. + * Deploy the wrapper located at the given path, and then deploy it based on given jobs. * - * @param wrapperAbsPath - absolute path of wrapper to build - * @param ipfsProvider - ipfs provider to use for deployment - * @param ethereumProvider - ethereum provider to use for ENS registration - * @param ensName? - an ENS domain name to register and assign to the wrapper - * @param codegen? - run codegen before build - * - * @returns registered ens domain name and IPFS hash + * @param options - an object containing: + * wrapperAbsPath - absolute path of wrapper to build + * jobs - jobs that will be executed in deploy process + * codegen? - run codegen before build + * build? - run build before deploy */ -export async function buildAndDeployWrapper({ - wrapperAbsPath, - ipfsProvider, - ethereumProvider, - ensName, -}: { +export async function deployWrapper(options: { wrapperAbsPath: string; - ipfsProvider: string; - ethereumProvider: string; - ensName?: string; + jobs: DeployManifest["jobs"]; codegen?: boolean; -}): Promise<{ - ensDomain: string; - ipfsCid: string; + build?: boolean; +}): Promise ``` -### buildAndDeployWrapperToHttp - -```typescript -/** - * Build the wrapper located at the given path, and then deploy it to HTTP. - * If a domain name is not provided, a randomly selected human-readable domain name is used. - * - * @param wrapperAbsPath - absolute path of wrapper to build - * @param httpProvider - http provider used for deployment and domain registration - * @param name? - a domain name to register and assign to the wrapper - * @param codegen? - run codegen before build - * - * @returns http uri - */ -export async function buildAndDeployWrapperToHttp({ - wrapperAbsPath, - httpProvider, - name, -}: { - wrapperAbsPath: string; - httpProvider: string; - name?: string; - codegen?: boolean; -}): Promise<{ uri: string }> -``` - ### runCLI ```typescript diff --git a/packages/js/test-env/readme/README.md b/packages/js/test-env/readme/README.md index 66eb1c9456..1ba0402c07 100644 --- a/packages/js/test-env/readme/README.md +++ b/packages/js/test-env/readme/README.md @@ -74,16 +74,10 @@ $snippet: stopTestEnvironment $snippet: buildWrapper ``` -### buildAndDeployWrapper +### deployWrapper ```typescript -$snippet: buildAndDeployWrapper -``` - -### buildAndDeployWrapperToHttp - -```typescript -$snippet: buildAndDeployWrapperToHttp +$snippet: deployWrapper ``` ### runCLI diff --git a/packages/js/test-env/src/index.ts b/packages/js/test-env/src/index.ts index 007eb3000d..6dbe7cf064 100644 --- a/packages/js/test-env/src/index.ts +++ b/packages/js/test-env/src/index.ts @@ -1,12 +1,9 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { generateName } from "./generate-name"; - import path from "path"; import spawn from "spawn-command"; import axios from "axios"; import fs from "fs"; import yaml from "yaml"; -import { Uri } from "@polywrap/core-js"; import { DeployManifest } from "@polywrap/polywrap-manifest-types-js"; // $start: ensAddresses @@ -272,80 +269,39 @@ export async function buildWrapper( } } -// $start: buildAndDeployWrapper +// $start: deployWrapper /** - * Build the wrapper located at the given path, and then deploy it to IPFS and ENS. - * If an ENS domain is not provided, a randomly selected human-readable ENS domain name is used. - * - * @param wrapperAbsPath - absolute path of wrapper to build - * @param ipfsProvider - ipfs provider to use for deployment - * @param ethereumProvider - ethereum provider to use for ENS registration - * @param ensName? - an ENS domain name to register and assign to the wrapper - * @param codegen? - run codegen before build + * Deploy the wrapper located at the given path, and then deploy it based on given jobs. * - * @returns registered ens domain name and IPFS hash + * @param options - an object containing: + * wrapperAbsPath - absolute path of wrapper to build + * jobs - jobs that will be executed in deploy process + * codegen? - run codegen before build + * build? - run build before deploy */ -export async function buildAndDeployWrapper({ - wrapperAbsPath, - ipfsProvider, - ethereumProvider, - ensName, -}: { +export async function deployWrapper(options: { wrapperAbsPath: string; - ipfsProvider: string; - ethereumProvider: string; - ensName?: string; + jobs: DeployManifest["jobs"]; codegen?: boolean; -}): Promise<{ - ensDomain: string; - ipfsCid: string; + build?: boolean; +}): Promise /* $ */ { + const { wrapperAbsPath, jobs, codegen, build } = options; const tempDeployManifestFilename = `polywrap.deploy-temp.yaml`; const tempDeployManifestPath = path.join( wrapperAbsPath, tempDeployManifestFilename ); - // create a new ENS domain - const wrapperEns = ensName ?? `${generateName()}.eth`; - - await buildWrapper(wrapperAbsPath); + if (build) { + await buildWrapper(wrapperAbsPath, undefined, codegen); + } const deployManifest: Omit = { format: "0.2.0", - jobs: { - buildAndDeployWrapper: { - config: { - provider: ethereumProvider, - ensRegistryAddress: ensAddresses.ensAddress, - ensRegistrarAddress: ensAddresses.registrarAddress, - ensResolverAddress: ensAddresses.resolverAddress, - }, - steps: [ - { - name: "registerName", - package: "ens-recursive-name-register", - uri: `wrap://ens/${wrapperEns}`, - }, - { - name: "ipfsDeploy", - package: "ipfs", - uri: `fs/${wrapperAbsPath}/build`, - config: { - gatewayUri: ipfsProvider, - }, - }, - { - name: "ensPublish", - package: "ens", - uri: "$$ipfsDeploy", - config: { - domainName: wrapperEns, - }, - }, - ], - }, - }, + jobs, }; fs.writeFileSync( tempDeployManifestPath, @@ -353,7 +309,6 @@ export async function buildAndDeployWrapper({ ); // deploy Wrapper - const { exitCode: deployExitCode, stdout: deployStdout, @@ -372,99 +327,8 @@ export async function buildAndDeployWrapper({ // remove manually configured manifests fs.unlinkSync(tempDeployManifestPath); - // get the IPFS CID of the published package - const extractCID = /(wrap:\/\/ipfs\/[A-Za-z0-9]+)/; - const result = deployStdout.match(extractCID); - - if (!result) { - throw Error( - `polywrap CLI output missing IPFS CID.\nOutput: ${deployStdout}` - ); - } - - const wrapperCid = new Uri(result[1]).path; - return { - ensDomain: wrapperEns, - ipfsCid: wrapperCid, - }; -} - -// $start: buildAndDeployWrapperToHttp -/** - * Build the wrapper located at the given path, and then deploy it to HTTP. - * If a domain name is not provided, a randomly selected human-readable domain name is used. - * - * @param wrapperAbsPath - absolute path of wrapper to build - * @param httpProvider - http provider used for deployment and domain registration - * @param name? - a domain name to register and assign to the wrapper - * @param codegen? - run codegen before build - * - * @returns http uri - */ -export async function buildAndDeployWrapperToHttp({ - wrapperAbsPath, - httpProvider, - name, -}: { - wrapperAbsPath: string; - httpProvider: string; - name?: string; - codegen?: boolean; -}): Promise<{ uri: string }> /* $ */ { - const tempDeployManifestFilename = `polywrap.deploy-temp.yaml`; - const tempDeployManifestPath = path.join( - wrapperAbsPath, - tempDeployManifestFilename - ); - - const wrapperName = name ?? generateName(); - const postUrl = `${httpProvider}/wrappers/local/${wrapperName}`; - - await buildWrapper(wrapperAbsPath); - const deployManifest: Omit = { - format: "0.2.0", - jobs: { - buildAndDeployWrapperToHttp: { - steps: [ - { - name: "httpDeploy", - package: "http", - uri: `fs/${wrapperAbsPath}/build`, - config: { - postUrl, - }, - }, - ], - }, - }, - }; - fs.writeFileSync( - tempDeployManifestPath, - yaml.stringify(deployManifest, null, 2) - ); - - // deploy Wrapper - - const { - exitCode: deployExitCode, stdout: deployStdout, stderr: deployStderr, - } = await runCLI({ - args: ["deploy", "--manifest-file", tempDeployManifestPath], - }); - - if (deployExitCode !== 0) { - console.error(`polywrap exited with code: ${deployExitCode}`); - console.log(`stderr:\n${deployStderr}`); - console.log(`stdout:\n${deployStdout}`); - throw Error("polywrap CLI failed"); - } - - // remove manually configured manifests - fs.unlinkSync(tempDeployManifestPath); - - return { - uri: postUrl, }; } diff --git a/packages/js/wasm/src/__tests__/in-memory-file-reader.spec.ts b/packages/js/wasm/src/__tests__/in-memory-file-reader.spec.ts index 056b1d2073..bdb8c63b5f 100644 --- a/packages/js/wasm/src/__tests__/in-memory-file-reader.spec.ts +++ b/packages/js/wasm/src/__tests__/in-memory-file-reader.spec.ts @@ -1,4 +1,3 @@ -import { buildWrapper } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import fs from "fs"; import { InMemoryFileReader } from "../InMemoryFileReader"; @@ -7,20 +6,16 @@ import { WRAP_MANIFEST_PATH, WRAP_MODULE_PATH } from "../constants"; jest.setTimeout(200000); -const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; +const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; describe("In-memory file reader", () => { - beforeAll(async () => { - await buildWrapper(simpleWrapperPath); - }); - it("can create in-memory file reader from buffers", async () => { const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const fileReader = InMemoryFileReader.from(manifest, wasmModule); @@ -36,11 +31,11 @@ describe("In-memory file reader", () => { const testEncoded = new TextEncoder().encode("test"); const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const fileReader = InMemoryFileReader.fromManifest(manifest, { @@ -70,11 +65,11 @@ describe("In-memory file reader", () => { const testEncoded = new TextEncoder().encode("test"); const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const fileReader = InMemoryFileReader.fromWasmModule(wasmModule, { @@ -104,11 +99,11 @@ describe("In-memory file reader", () => { const testEncoded = new TextEncoder().encode("test"); const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const fileReader = InMemoryFileReader.from(manifest, wasmModule, { diff --git a/packages/js/wasm/src/__tests__/in-memory-packages.spec.ts b/packages/js/wasm/src/__tests__/in-memory-packages.spec.ts index 6bf8460c21..f6bd89bff0 100644 --- a/packages/js/wasm/src/__tests__/in-memory-packages.spec.ts +++ b/packages/js/wasm/src/__tests__/in-memory-packages.spec.ts @@ -1,4 +1,3 @@ -import { buildWrapper } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import fs from "fs"; import { WasmPackage } from "../WasmPackage"; @@ -9,21 +8,17 @@ import { WRAP_MANIFEST_PATH, WRAP_MODULE_PATH } from "../constants"; jest.setTimeout(200000); -const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; +const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; describe("In-memory packages", () => { - beforeAll(async () => { - await buildWrapper(simpleWrapperPath); - }); - it("can create in-memory packages from buffers", async () => { const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wrapManifest = await deserializeWrapManifest(manifest); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const wasmPackage = WasmPackage.from(manifest, wasmModule); @@ -49,12 +44,12 @@ describe("In-memory packages", () => { it("can create in-memory packages from file reader", async () => { const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wrapManifest = await deserializeWrapManifest(manifest); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const fileReader = InMemoryFileReader.from(manifest, wasmModule); @@ -82,12 +77,12 @@ describe("In-memory packages", () => { it("can create in-memory packages from manifest and file reader", async () => { const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wrapManifest = await deserializeWrapManifest(manifest); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const fileReader = InMemoryFileReader.from(manifest, wasmModule); @@ -117,12 +112,12 @@ describe("In-memory packages", () => { const testEncoded = new TextEncoder().encode("test"); const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wrapManifest = await deserializeWrapManifest(manifest); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const wasmPackage = WasmPackage.from(manifest, wasmModule, { diff --git a/packages/js/wasm/src/__tests__/in-memory-wrappers.spec.ts b/packages/js/wasm/src/__tests__/in-memory-wrappers.spec.ts index 848fb983b7..529cc949e3 100644 --- a/packages/js/wasm/src/__tests__/in-memory-wrappers.spec.ts +++ b/packages/js/wasm/src/__tests__/in-memory-wrappers.spec.ts @@ -1,4 +1,3 @@ -import { buildWrapper } from "@polywrap/test-env-js"; import { GetPathToTestWrappers } from "@polywrap/test-cases"; import fs from "fs"; import { InMemoryFileReader } from "../InMemoryFileReader"; @@ -9,21 +8,17 @@ import { WRAP_MANIFEST_PATH, WRAP_MODULE_PATH } from "../constants"; jest.setTimeout(200000); -const simpleWrapperPath = `${GetPathToTestWrappers()}/wasm-as/simple`; +const wrapperPath = `${GetPathToTestWrappers()}/subinvoke/00-subinvoke/implementations/as`; describe("In-memory wrappers", () => { - beforeAll(async () => { - await buildWrapper(simpleWrapperPath); - }); - it("can create in-memory wrappers from buffers", async () => { const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wrapManifest = await deserializeWrapManifest(manifest); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const wrapper = await WasmWrapper.from(manifest, wasmModule); @@ -38,12 +33,12 @@ describe("In-memory wrappers", () => { it("can create in-memory wrappers from file reader", async () => { const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wrapManifest = await deserializeWrapManifest(manifest); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const fileReader = InMemoryFileReader.from(manifest, wasmModule); @@ -60,12 +55,12 @@ describe("In-memory wrappers", () => { it("can create in-memory wrappers from manifest and file reader", async () => { const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wrapManifest = await deserializeWrapManifest(manifest); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const fileReader = InMemoryFileReader.from(manifest, wasmModule); @@ -84,12 +79,12 @@ describe("In-memory wrappers", () => { const testEncoded = new TextEncoder().encode("test"); const manifest = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MANIFEST_PATH}` + `${wrapperPath}/${WRAP_MANIFEST_PATH}` ); const wrapManifest = await deserializeWrapManifest(manifest); const wasmModule = await fs.promises.readFile( - `${simpleWrapperPath}/build/${WRAP_MODULE_PATH}` + `${wrapperPath}/${WRAP_MODULE_PATH}` ); const wrapper = await WasmWrapper.from(manifest, wasmModule, { diff --git a/packages/test-cases/cases/wrappers/wasm-as/asyncify/abis/memory-storage.graphql b/packages/test-cases/cases/wrappers/wasm-as/asyncify/abis/memory-storage.graphql deleted file mode 100644 index c10ae67370..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/asyncify/abis/memory-storage.graphql +++ /dev/null @@ -1,5 +0,0 @@ -type Module { - getData: Int32! - - setData(value: Int32!): Boolean! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/asyncify/package.json b/packages/test-cases/cases/wrappers/wasm-as/asyncify/package.json deleted file mode 100644 index c809ff54b1..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/asyncify/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-asyncify", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/asyncify/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/asyncify/polywrap.build.yaml deleted file mode 100644 index ca4fdc7bcf..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/asyncify/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: asyncify-wasm-as - node_version: "14.16.0" - include: - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/asyncify/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/asyncify/polywrap.yaml deleted file mode 100644 index 3394b32ed4..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/asyncify/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: Asyncify - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: "ens/memory-storage.polywrap.eth" - abi: ./abis/memory-storage.graphql -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/asyncify/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/asyncify/schema.graphql deleted file mode 100644 index 2660ba2f06..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/asyncify/schema.graphql +++ /dev/null @@ -1,62 +0,0 @@ -#import { Module } into Storage from "wrap://ens/memory-storage.polywrap.eth" - -type Module { - getData: UInt32! - - setDataWithLargeArgs( - value: String! - ): String! - - setDataWithManyArgs( - valueA: String! - valueB: String! - valueC: String! - valueD: String! - valueE: String! - valueF: String! - valueG: String! - valueH: String! - valueI: String! - valueJ: String! - valueK: String! - valueL: String! - ): String! - - setDataWithManyStructuredArgs( - valueA: BigObj! - valueB: BigObj! - valueC: BigObj! - valueD: BigObj! - valueE: BigObj! - valueF: BigObj! - valueG: BigObj! - valueH: BigObj! - valueI: BigObj! - valueJ: BigObj! - valueK: BigObj! - valueL: BigObj! - ): Boolean! - - localVarMethod: Boolean! - - globalVarMethod: Boolean! - - subsequentInvokes( - numberOfTimes: Int! - ): [String!]! -} - -type BigObj { - propA: String! - propB: String! - propC: String! - propD: String! - propE: String! - propF: String! - propG: String! - propH: String! - propI: String! - propJ: String! - propK: String! - propL: String! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/asyncify/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/asyncify/src/index.ts deleted file mode 100644 index f6aac350ec..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/asyncify/src/index.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { - Args_getData, - Args_setDataWithLargeArgs, - Args_localVarMethod, - Args_globalVarMethod, - Args_subsequentInvokes, - Args_setDataWithManyArgs, - Args_setDataWithManyStructuredArgs, - Storage_Module, -} from "./wrap"; - -export function getData(args: Args_getData): u32 { - const res = Storage_Module.getData({}).unwrap(); - - return res; -} - -export function returnTrue(): boolean { - return true; -} - -export function setDataWithLargeArgs( - args: Args_setDataWithLargeArgs -): string { - const largeString = args.value; - - Storage_Module.setData({ - value: U32.parseInt(args.value) - }).unwrap(); - - return largeString; -} - -export function setDataWithManyArgs(args: Args_setDataWithManyArgs): string { - const argsA = args.valueA; - const argsB = args.valueB; - const argsC = args.valueC; - const argsD = args.valueD; - const argsE = args.valueE; - const argsF = args.valueF; - const argsG = args.valueG; - const argsH = args.valueH; - const argsI = args.valueI; - const argsJ = args.valueJ; - const argsK = args.valueK; - const argsL = args.valueL; - - Storage_Module.setData({ - value: 55 - }).unwrap(); - - return argsA + argsB + argsC + argsD + argsE + argsF + argsG + argsH + argsI + argsJ + argsK + argsL; -} - -export function setDataWithManyStructuredArgs( - args: Args_setDataWithManyStructuredArgs -): boolean { - - Storage_Module.setData({ - value: 44 - }).unwrap(); - - return true; -} - -export function localVarMethod(args: Args_localVarMethod): boolean { - let functionArg = false; - - functionArg = returnTrue(); - - Storage_Module.setData({ - value: 88 - }).unwrap(); - - return functionArg; -} - -let globalValue = false; - -export function globalVarMethod(args: Args_globalVarMethod): boolean { - globalValue = true; - - Storage_Module.setData({ - value: 77 - }).unwrap(); - - return globalValue; -} - -export function subsequentInvokes(args: Args_subsequentInvokes): string[] { - const result: string[] = []; - - for (let i = 0; i < args.numberOfTimes; i++) { - Storage_Module.setData({ - value: i - }).unwrap(); - - result[i] = Storage_Module.getData({}).unwrap().toString(); - } - - return result; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/bigint-type/package.json b/packages/test-cases/cases/wrappers/wasm-as/bigint-type/package.json deleted file mode 100644 index 2d21a47d42..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bigint-type/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-bigint-type", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/bigint-type/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/bigint-type/polywrap.build.yaml deleted file mode 100644 index e3559b2e91..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bigint-type/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: bigint-type-wasm-as - node_version: "14.16.0" - include: - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/bigint-type/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/bigint-type/polywrap.yaml deleted file mode 100644 index ae5c7ddf20..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bigint-type/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: BigInt - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/bigint-type/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/bigint-type/schema.graphql deleted file mode 100644 index 7696ac2202..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bigint-type/schema.graphql +++ /dev/null @@ -1,12 +0,0 @@ -type Module { - method( - arg1: BigInt! - arg2: BigInt - obj: BigIntArg! - ): BigInt! -} - -type BigIntArg { - prop1: BigInt! - prop2: BigInt -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/bigint-type/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/bigint-type/src/index.ts deleted file mode 100644 index 496f54f6cc..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bigint-type/src/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { - Args_method -} from "./wrap"; -import { BigInt } from "@polywrap/wasm-as"; - -export function method(args: Args_method): BigInt { - let result = args.arg1.mul(args.obj.prop1); - - if (args.arg2) { - result = result.mul(args.arg2 as BigInt); - } - if (args.obj.prop2) { - result = result.mul(args.obj.prop2 as BigInt); - } - - return result; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/package.json b/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/package.json deleted file mode 100644 index 89667e23f1..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-bignumber-type", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/polywrap.build.yaml deleted file mode 100644 index 25dd42b6d4..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: bignumber-type-wasm-as - node_version: "14.16.0" - include: - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/polywrap.yaml deleted file mode 100644 index 87a43f036e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: BigNumber - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/schema.graphql deleted file mode 100644 index ffe506dec2..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/schema.graphql +++ /dev/null @@ -1,12 +0,0 @@ -type Module { - method( - arg1: BigNumber! - arg2: BigNumber - obj: BigNumberArg! - ): BigNumber! -} - -type BigNumberArg { - prop1: BigNumber! - prop2: BigNumber -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/src/index.ts deleted file mode 100644 index 84bdb6face..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bignumber-type/src/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { - Args_method -} from "./wrap"; -import { BigNumber } from "@polywrap/wasm-as"; - -export function method(args: Args_method): BigNumber { - let result = args.arg1.mul(args.obj.prop1); - - if (args.arg2) { - result = result.mul(args.arg2 as BigNumber); - } - if (args.obj.prop2) { - result = result.mul(args.obj.prop2 as BigNumber); - } - - return result; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/bytes-type/package.json b/packages/test-cases/cases/wrappers/wasm-as/bytes-type/package.json deleted file mode 100644 index df24b0698e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bytes-type/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-bytes-type", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/bytes-type/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/bytes-type/polywrap.build.yaml deleted file mode 100644 index 20b3987380..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bytes-type/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: bytes-type-wasm-as - node_version: "14.16.0" - include: - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/bytes-type/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/bytes-type/polywrap.yaml deleted file mode 100644 index a7d5a1da3a..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bytes-type/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: BytesType - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/bytes-type/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/bytes-type/schema.graphql deleted file mode 100644 index 44dc183585..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bytes-type/schema.graphql +++ /dev/null @@ -1,9 +0,0 @@ -type Module { - bytesMethod( - arg: Args! - ): Bytes! -} - -type Args { - prop: Bytes! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/bytes-type/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/bytes-type/src/index.ts deleted file mode 100644 index 9a73d639c9..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/bytes-type/src/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { - Args_bytesMethod -} from "./wrap"; - -export function bytesMethod(args: Args_bytesMethod): ArrayBuffer { - const argStr = String.UTF8.decode(args.arg.prop); - const sanityStr = argStr + " Sanity!"; - const sanityBuffer = String.UTF8.encode(sanityStr); - return sanityBuffer; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/enum-types/package.json b/packages/test-cases/cases/wrappers/wasm-as/enum-types/package.json deleted file mode 100644 index ade8fc37ea..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/enum-types/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-enum-types", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/enum-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/enum-types/polywrap.build.yaml deleted file mode 100644 index 85012ffe6c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/enum-types/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/enum-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/enum-types/polywrap.yaml deleted file mode 100644 index d28f280280..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/enum-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: EnumTypes - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/enum-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/enum-types/schema.graphql deleted file mode 100644 index 3bfbc465be..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/enum-types/schema.graphql +++ /dev/null @@ -1,17 +0,0 @@ -type Module { - method1( - en: SanityEnum! - optEnum: SanityEnum - ): SanityEnum! - - method2( - enumArray: [SanityEnum!]! - optEnumArray: [SanityEnum] - ): [SanityEnum!]! -} - -enum SanityEnum { - OPTION1 - OPTION2 - OPTION3 -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/enum-types/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/enum-types/src/index.ts deleted file mode 100644 index 9a381f8de4..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/enum-types/src/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - SanityEnum, - Args_method1, - Args_method2, -} from "./wrap"; - -export function method1(args: Args_method1): SanityEnum { - return args.en; -} - -export function method2(args: Args_method2): SanityEnum[] { - return args.enumArray; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/env-types/external/package.json b/packages/test-cases/cases/wrappers/wasm-as/env-types/external/package.json deleted file mode 100644 index ae8b36f7fc..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/env-types/external/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-complex-env-types", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/env-types/external/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/env-types/external/polywrap.build.yaml deleted file mode 100644 index 59521cf0fa..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/env-types/external/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - 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/wrappers/wasm-as/env-types/external/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/env-types/external/polywrap.yaml deleted file mode 100644 index df899038c3..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/env-types/external/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: EnvTypeExternal - type: wasm/assemblyscript -source: - schema: ./src/schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/env-types/external/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/env-types/external/src/index.ts deleted file mode 100644 index fa06240095..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/env-types/external/src/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { - Env, - Args_externalEnvMethod, -} from "./wrap"; - -export function externalEnvMethod(_: Args_externalEnvMethod, env: Env): Env { - return env; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/env-types/external/src/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/env-types/external/src/schema.graphql deleted file mode 100644 index d2325113e2..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/env-types/external/src/schema.graphql +++ /dev/null @@ -1,8 +0,0 @@ -type Env { - externalArray: [UInt32!]! - externalString: String! -} - -type Module { - externalEnvMethod: Env! @env(required: true) -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/env-types/main/package.json b/packages/test-cases/cases/wrappers/wasm-as/env-types/main/package.json deleted file mode 100644 index ae8b36f7fc..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/env-types/main/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-complex-env-types", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/env-types/main/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/env-types/main/polywrap.build.yaml deleted file mode 100644 index 59521cf0fa..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/env-types/main/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - 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/wrappers/wasm-as/env-types/main/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/env-types/main/polywrap.yaml deleted file mode 100644 index a798b97520..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/env-types/main/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: EnvType - type: wasm/assemblyscript -source: - schema: ./src/schema.graphql - module: ./src/index.ts - import_abis: - - uri: "ens/externalenv.polywrap.eth" - abi: ../external/build/wrap.info -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/env-types/main/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/env-types/main/src/index.ts deleted file mode 100644 index 065dc3b5f7..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/env-types/main/src/index.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - Env, - ExternalEnvApi_Module, - Args_methodNoEnv, - Args_methodRequireEnv, - Args_methodOptionalEnv, - CompoundEnv, -} from "./wrap"; - -function createEnv(env: Env): Env { - return { - str: env.str, - optStr: env.optStr, - optFilledStr: env.optFilledStr, - _number: env._number, - optNumber: env.optNumber, - _bool: env._bool, - optBool: env.optBool, - en: env.en, - optEnum: env.optEnum, - object: env.object, - optObject: env.optObject, - array: env.array, - }; -} - -export function methodNoEnv(args: Args_methodNoEnv): string { - return args.arg; -} - -export function methodRequireEnv(_: Args_methodRequireEnv, env: Env): Env { - return createEnv(env); -} - -export function methodOptionalEnv(_: Args_methodOptionalEnv, env: Env | null): Env | null { - return env ? createEnv(env as Env) : null; -} - -export function subinvokeEnvMethod(_: Args_methodRequireEnv, env: Env): CompoundEnv { - const externalEnv = ExternalEnvApi_Module.externalEnvMethod({}).unwrap() - - return { - local: env, - external: externalEnv - }; -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/env-types/main/src/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/env-types/main/src/schema.graphql deleted file mode 100644 index 3ff9f2fb62..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/env-types/main/src/schema.graphql +++ /dev/null @@ -1,48 +0,0 @@ -#import { Module } into ExternalEnvApi from "ens/externalenv.polywrap.eth" - -type EnvObject { - prop: String! -} - -enum EnvEnum { - FIRST - SECOND -} - -type Env { - str: String! - optStr: String - optFilledStr: String - number: Int8! - optNumber: Int8 - bool: Boolean! - optBool: Boolean - en: EnvEnum! - optEnum: EnvEnum - object: EnvObject! - optObject: EnvObject - array: [UInt32!]! -} - -type CompoundEnv { - local: Env! - external: ExternalEnvApi_Env! -} - -type Module { - methodNoEnv( - arg: String! - ): String! - - methodRequireEnv( - arg: String! - ): Env! @env(required: true) - - methodOptionalEnv( - arg: String! - ): Env @env(required: false) - - subinvokeEnvMethod( - arg: String! - ): CompoundEnv! @env(required: true) -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-interface/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-interface/polywrap.yaml deleted file mode 100644 index 341944135e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-interface/polywrap.yaml +++ /dev/null @@ -1,6 +0,0 @@ -format: 0.3.0 -project: - name: TestInterface - type: interface -source: - schema: ./schema.graphql diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-interface/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-interface/schema.graphql deleted file mode 100644 index b80a6e620b..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-interface/schema.graphql +++ /dev/null @@ -1,13 +0,0 @@ -type Module { - abstractModuleMethod( - arg: Argument! - ): String! -} - -type Argument { - str: String! -} - -type InterfaceType { - uint8: UInt8! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/package.json b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/package.json deleted file mode 100644 index 04f0b21828..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-implementation", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/polywrap.build.yaml deleted file mode 100644 index 103a23f553..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/polywrap.build.yaml +++ /dev/null @@ -1,11 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: test-use-get-impl-wasm-as - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/polywrap.yaml deleted file mode 100644 index b4333a55ff..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: TestUseGetImpl - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: wrap://ens/interface.eth - abi: ../test-interface/build/wrap.info -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/schema.graphql deleted file mode 100644 index bd51ae7828..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/schema.graphql +++ /dev/null @@ -1,13 +0,0 @@ -#import { Module, InterfaceType } into Interface from "wrap://ens/interface.eth" -#use { getImplementations } for Interface - -type Module implements Interface_Module { - moduleImplementations: [String!]! - moduleMethod( - arg: ImplementationType! - ): ImplementationType! -} - -type ImplementationType implements Interface_InterfaceType { - str: String! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/src/index.ts deleted file mode 100644 index ebb396a1d3..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-use-getImpl/src/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Args_moduleMethod, Args_moduleImplementations, Args_abstractModuleMethod, ImplementationType, Interface } from "./wrap"; - -export function moduleImplementations(_: Args_moduleImplementations): string[] { - return Interface.getImplementations(); -} - -export function moduleMethod(args: Args_moduleMethod): ImplementationType { - return args.arg; -} - -export function abstractModuleMethod(args: Args_abstractModuleMethod): String { - return args.arg.str; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/package.json b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/package.json deleted file mode 100644 index 04f0b21828..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-implementation", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/polywrap.build.yaml deleted file mode 100644 index 42190a0512..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/polywrap.yaml deleted file mode 100644 index d23d00d3b9..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: TestWrapper - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: wrap://ens/interface.eth - abi: ../test-interface/build/wrap.info -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/schema.graphql deleted file mode 100644 index 0b28cfb495..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/schema.graphql +++ /dev/null @@ -1,11 +0,0 @@ -#import { Module, InterfaceType } into Interface from "wrap://ens/interface.eth" - -type Module implements Interface_Module { - moduleMethod( - arg: ImplementationType! - ): ImplementationType! -} - -type ImplementationType implements Interface_InterfaceType { - str: String! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/src/index.ts deleted file mode 100644 index 0266157968..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/implementations/test-wrapper/src/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Args_moduleMethod, Args_abstractModuleMethod, ImplementationType } from "./wrap"; - -export function moduleMethod(args: Args_moduleMethod): ImplementationType { - return args.arg; -} - -export function abstractModuleMethod(args: Args_abstractModuleMethod): String { - return args.arg.str; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/package.json b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/package.json deleted file mode 100644 index 403857c1a6..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-interface-invoke", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/polywrap.build.yaml deleted file mode 100644 index 42190a0512..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/polywrap.yaml deleted file mode 100644 index 2e86004ee5..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: TestImplementation - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: wrap://ens/interface.eth - abi: ../test-interface/build/wrap.info -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/schema.graphql deleted file mode 100644 index 0b28cfb495..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/schema.graphql +++ /dev/null @@ -1,11 +0,0 @@ -#import { Module, InterfaceType } into Interface from "wrap://ens/interface.eth" - -type Module implements Interface_Module { - moduleMethod( - arg: ImplementationType! - ): ImplementationType! -} - -type ImplementationType implements Interface_InterfaceType { - str: String! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/src/index.ts deleted file mode 100644 index 0266157968..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-implementation/src/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Args_moduleMethod, Args_abstractModuleMethod, ImplementationType } from "./wrap"; - -export function moduleMethod(args: Args_moduleMethod): ImplementationType { - return args.arg; -} - -export function abstractModuleMethod(args: Args_abstractModuleMethod): String { - return args.arg.str; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-interface/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-interface/polywrap.yaml deleted file mode 100644 index 341944135e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-interface/polywrap.yaml +++ /dev/null @@ -1,6 +0,0 @@ -format: 0.3.0 -project: - name: TestInterface - type: interface -source: - schema: ./schema.graphql diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-interface/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-interface/schema.graphql deleted file mode 100644 index b80a6e620b..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-interface/schema.graphql +++ /dev/null @@ -1,13 +0,0 @@ -type Module { - abstractModuleMethod( - arg: Argument! - ): String! -} - -type Argument { - str: String! -} - -type InterfaceType { - uint8: UInt8! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/package.json b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/package.json deleted file mode 100644 index 403857c1a6..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-interface-invoke", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/polywrap.build.yaml deleted file mode 100644 index 42190a0512..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/polywrap.yaml deleted file mode 100644 index d23d00d3b9..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: TestWrapper - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: wrap://ens/interface.eth - abi: ../test-interface/build/wrap.info -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/schema.graphql deleted file mode 100644 index 408e02f804..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/schema.graphql +++ /dev/null @@ -1,12 +0,0 @@ -#import { Module, InterfaceType } into Interface from "wrap://ens/interface.eth" -#use { getImplementations } for Interface - -type Module { - moduleMethod( - arg: ImplementationType! - ): ImplementationType! -} - -type ImplementationType implements Interface_InterfaceType { - str: String! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/src/index.ts deleted file mode 100644 index 5eb613e9de..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/interface-invoke/test-wrapper/src/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { - Interface, - Interface_Module, - Args_moduleMethod, - ImplementationType -} from "./wrap"; - -export function moduleMethod(args: Args_moduleMethod): ImplementationType { - const uris = Interface.getImplementations(); - const result = new Interface_Module(uris[0]).abstractModuleMethod({ - arg: { - str: args.arg.str - } - }).unwrap(); - return { - str: result, - uint8: args.arg.uint8, - }; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/invalid-types/package.json b/packages/test-cases/cases/wrappers/wasm-as/invalid-types/package.json deleted file mode 100644 index 6412ac27ba..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/invalid-types/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-invalid-types", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/invalid-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/invalid-types/polywrap.build.yaml deleted file mode 100644 index 85012ffe6c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/invalid-types/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/invalid-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/invalid-types/polywrap.yaml deleted file mode 100644 index 660ad6a9c2..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/invalid-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: InvalidTypes - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/invalid-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/invalid-types/schema.graphql deleted file mode 100644 index 5df1ac9c73..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/invalid-types/schema.graphql +++ /dev/null @@ -1,21 +0,0 @@ -type Module { - boolMethod( - arg: Boolean! - ): Boolean! - - intMethod( - arg: Int32! - ): Int32! - - uIntMethod( - arg: UInt32! - ): UInt32! - - bytesMethod( - arg: Bytes! - ): Bytes! - - arrayMethod( - arg: [String!]! - ): [String!] -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/invalid-types/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/invalid-types/src/index.ts deleted file mode 100644 index 7eca7dac3e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/invalid-types/src/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { - Args_boolMethod, - Args_bytesMethod, - Args_arrayMethod, - Args_intMethod, - Args_uIntMethod -} from "./wrap"; - -export function boolMethod(args: Args_boolMethod): bool { - return args.arg; -} - -export function intMethod(args: Args_intMethod): i32 { - return args.arg; -} - -export function uIntMethod(args: Args_uIntMethod): u32 { - return args.arg; -} - -export function bytesMethod(args: Args_bytesMethod): ArrayBuffer { - return args.arg; -} - -export function arrayMethod(args: Args_arrayMethod): string[] { - return args.arg; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/json-type/package.json b/packages/test-cases/cases/wrappers/wasm-as/json-type/package.json deleted file mode 100644 index 810bc02016..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/json-type/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-json-type", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/json-type/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/json-type/polywrap.build.yaml deleted file mode 100644 index 85012ffe6c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/json-type/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/json-type/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/json-type/polywrap.yaml deleted file mode 100644 index 6664f0ecdf..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/json-type/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: JsonType - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/json-type/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/json-type/schema.graphql deleted file mode 100644 index cb60b87271..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/json-type/schema.graphql +++ /dev/null @@ -1,24 +0,0 @@ -type Module { - parse( - value: String! - ): JSON! - - stringify( - values: [JSON!]! - ): String! - - stringifyObject( - object: Object! - ): String! - - methodJSON( - valueA: Int! - valueB: String! - valueC: Boolean! - ): JSON! -} - -type Object { - jsonA: JSON! - jsonB: JSON! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/json-type/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/json-type/src/index.ts deleted file mode 100644 index 9594cef7b0..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/json-type/src/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - Args_parse, - Args_stringify, - Args_stringifyObject, - Args_methodJSON -} from "./wrap"; -import { JSON } from "@polywrap/wasm-as"; - -export function parse(args: Args_parse): JSON.Value { - return JSON.parse(args.value); -} - -export function stringify(args: Args_stringify): string { - let str = ""; - for (let i = 0; i < args.values.length; ++i) { - const value = args.values[i]; - str += value.stringify(); - } - return str; -} - -export function stringifyObject(args: Args_stringifyObject): string { - let str = ""; - str += args.object.jsonA.stringify(); - str += args.object.jsonB.stringify(); - return str; -} - -export function methodJSON(args: Args_methodJSON): JSON.Value { - const result = JSON.Value.Object(); - result.set("valueA", JSON.from(args.valueA)); - result.set("valueB", JSON.from(args.valueB)); - result.set("valueC", JSON.from(args.valueC)); - - return result; -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/large-types/package.json b/packages/test-cases/cases/wrappers/wasm-as/large-types/package.json deleted file mode 100644 index 857f0cbda7..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/large-types/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-large-types", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/large-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/large-types/polywrap.build.yaml deleted file mode 100644 index 85012ffe6c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/large-types/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/large-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/large-types/polywrap.yaml deleted file mode 100644 index 9d5b7c5ec3..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/large-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: LargeTypes - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/large-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/large-types/schema.graphql deleted file mode 100644 index b32df3b2c8..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/large-types/schema.graphql +++ /dev/null @@ -1,12 +0,0 @@ -type Module { - method( - largeCollection: LargeCollection! - ): LargeCollection! -} - -type LargeCollection { - largeStr: String! - largeBytes: Bytes! - largeStrArray: [String!]! - largeBytesArray: [Bytes!]! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/large-types/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/large-types/src/index.ts deleted file mode 100644 index 6aeab7c262..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/large-types/src/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { - Args_method, - LargeCollection, -} from "./wrap"; - -export function method(args: Args_method): LargeCollection { - return args.largeCollection; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/map-type/package.json b/packages/test-cases/cases/wrappers/wasm-as/map-type/package.json deleted file mode 100644 index a281a7b2c4..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/map-type/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-map-type", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/map-type/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/map-type/polywrap.build.yaml deleted file mode 100644 index 85012ffe6c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/map-type/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/map-type/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/map-type/polywrap.yaml deleted file mode 100644 index 361c0654b3..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/map-type/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: MapType - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: "wrap://ens/imported-map.eth" - abi: ./schema.import.graphql -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/map-type/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/map-type/schema.graphql deleted file mode 100644 index 7c213e6316..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/map-type/schema.graphql +++ /dev/null @@ -1,25 +0,0 @@ -#import { Module, CustomMap } into Imported from "wrap://ens/imported-map.eth" - -type Module { - getKey( - key: String! - foo: CustomMap! - ): Int! - - returnMap( - map: Map! @annotate(type: "Map!") - ): Map! @annotate(type: "Map!") - - returnCustomMap( - foo: CustomMap! - ): CustomMap! - - returnNestedMap( - foo: Map! @annotate(type: "Map!>!") - ): Map! @annotate(type: "Map!>!") -} - -type CustomMap { - map: Map! @annotate(type: "Map!") - nestedMap: Map! @annotate(type: "Map!>!") -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/map-type/schema.import.graphql b/packages/test-cases/cases/wrappers/wasm-as/map-type/schema.import.graphql deleted file mode 100644 index d44100b46b..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/map-type/schema.import.graphql +++ /dev/null @@ -1,23 +0,0 @@ -type Module { - getKey( - key: String! - foo: CustomMap! - ): Int! - - returnMap( - map: Map! @annotate(type: "Map!") - ): Map! @annotate(type: "Map!") - - returnCustomMap( - foo: CustomMap! - ): CustomMap! - - returnNestedMap( - foo: Map! @annotate(type: "Map!>!") - ): Map! @annotate(type: "Map!>!") -} - -type CustomMap { - map: Map! @annotate(type: "Map!") - nestedMap: Map! @annotate(type: "Map!>!") -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/map-type/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/map-type/src/index.ts deleted file mode 100644 index 8262aba7a7..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/map-type/src/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { - Args_getKey, - Args_returnMap, - Args_returnCustomMap, - Args_returnNestedMap, - CustomMap -} from "./wrap"; - -export function getKey(args: Args_getKey): i32 { - return args.foo.map.get(args.key); -} - -export function returnMap(args: Args_returnMap): Map { - return args.map; -} - -export function returnCustomMap(args: Args_returnCustomMap): CustomMap { - return args.foo; -} - -export function returnNestedMap(args: Args_returnNestedMap): Map> { - return args.foo; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/number-types/package.json b/packages/test-cases/cases/wrappers/wasm-as/number-types/package.json deleted file mode 100644 index 5cb01fb6db..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/number-types/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-number-types", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/number-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/number-types/polywrap.build.yaml deleted file mode 100644 index 85012ffe6c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/number-types/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/number-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/number-types/polywrap.yaml deleted file mode 100644 index 7de57772ea..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/number-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: NumberTypes - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/number-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/number-types/schema.graphql deleted file mode 100644 index 81d5005b5a..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/number-types/schema.graphql +++ /dev/null @@ -1,32 +0,0 @@ -type Module { - - i8Method( - first: Int8! - second: Int8! - ): Int8! - - u8Method( - first: UInt8! - second: UInt8! - ): UInt8! - - i16Method( - first: Int16! - second: Int16! - ): Int16! - - u16Method( - first: UInt16! - second: UInt16! - ): UInt16! - - i32Method( - first: Int! - second: Int! - ): Int! - - u32Method( - first: UInt32! - second: UInt32! - ): UInt32! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/number-types/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/number-types/src/index.ts deleted file mode 100644 index bf15a590b3..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/number-types/src/index.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { - Args_i8Method, - Args_u8Method, - Args_i16Method, - Args_u16Method, - Args_i32Method, - Args_u32Method, -} from "./wrap"; - -export function i8Method(args: Args_i8Method): i8 { - const firstInt = args.first; - const secondInt = args.second; - return firstInt + secondInt; -} - -export function u8Method(args: Args_u8Method): u8 { - const firstInt = args.first; - const secondInt = args.second; - return firstInt + secondInt; -} - -export function i16Method(args: Args_i16Method): i16 { - const firstInt = args.first; - const secondInt = args.second; - return firstInt + secondInt; -} - -export function u16Method(args: Args_u16Method): u16 { - const firstInt = args.first; - const secondInt = args.second; - return firstInt + secondInt; -} - -export function i32Method(args: Args_i32Method): i32 { - const firstInt = args.first; - const secondInt = args.second; - return firstInt + secondInt; -} - -export function u32Method(args: Args_u32Method): u32 { - const firstInt = args.first; - const secondInt = args.second; - return firstInt + secondInt; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/object-types/package.json b/packages/test-cases/cases/wrappers/wasm-as/object-types/package.json deleted file mode 100644 index 15c6d92baf..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/object-types/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-object-types", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/object-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/object-types/polywrap.build.yaml deleted file mode 100644 index 85012ffe6c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/object-types/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/object-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/object-types/polywrap.yaml deleted file mode 100644 index e858ddca10..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/object-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: ObjectTypes - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/object-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/object-types/schema.graphql deleted file mode 100644 index 03f068148a..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/object-types/schema.graphql +++ /dev/null @@ -1,45 +0,0 @@ -type Module { - method1( - arg1: Arg1! - arg2: Arg2 - ): [Output!]! - - method2( - arg: Arg1! - ): Output - - method3( - arg: Arg1! - ): [Output]! - - method5( - arg: Arg3! - ): Output! -} - -type Arg1 { - prop: String! - nested: Nested! -} - -type Arg2 { - prop: String! - circular: Circular! -} - -type Arg3 { - prop: Bytes! -} - -type Output { - prop: String! - nested: Nested! -} - -type Nested { - prop: String! -} - -type Circular { - prop: String! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/object-types/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/object-types/src/index.ts deleted file mode 100644 index e552004a8f..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/object-types/src/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { - Args_method1, - Args_method2, - Args_method3, - Args_method5, - Output, - Arg2 -} from "./wrap"; - -export function method1(args: Args_method1): Output[] { - return [ - { - prop: args.arg1.prop, - nested: { - prop: args.arg1.nested.prop - } - }, - { - prop: args.arg2 ? (args.arg2 as Arg2).prop : "", - nested: { - prop: args.arg2 ? (args.arg2 as Arg2).circular.prop : "" - } - } - ]; -} - -export function method2(args: Args_method2): Output | null { - if (args.arg.prop == "null") { - return null; - } - - return { - prop: args.arg.prop, - nested: { - prop: args.arg.nested.prop - } - }; -} - -export function method3(args: Args_method3): (Output | null)[] { - return [ - null, - { - prop: args.arg.prop, - nested: { - prop: args.arg.nested.prop - } - } - ] -} - -export function method5(args: Args_method5): Output { - return { - prop: String.UTF8.decode(args.arg.prop), - nested: { - prop: "nested prop" - } - }; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/package.json b/packages/test-cases/cases/wrappers/wasm-as/reserved-words/package.json deleted file mode 100644 index 27a806a9ab..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-reserved-words", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/reserved-words/polywrap.build.yaml deleted file mode 100644 index 8adbc7f80e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/polywrap.build.yaml +++ /dev/null @@ -1,11 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: template-wasm-as - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/reserved-words/polywrap.yaml deleted file mode 100644 index 071eae7349..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: ReservedWords - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: wrap://ens/reserved-words.polytest.eth - abi: ./schema.import.graphql -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/reserved-words/schema.graphql deleted file mode 100644 index b44995c8f3..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/schema.graphql +++ /dev/null @@ -1,24 +0,0 @@ -#import { Module, else, Box, while } into TestImport from "wrap://ens/reserved-words.polytest.eth" - -type Module { - if( - if: else! - ): else! - - for( - in: while! - ): Box! -} - -type else { - else: String! -} - -type Box { - box: String! -} - -enum while { - for, - in, -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/schema.import.graphql b/packages/test-cases/cases/wrappers/wasm-as/reserved-words/schema.import.graphql deleted file mode 100644 index d89b2a95b9..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/schema.import.graphql +++ /dev/null @@ -1,22 +0,0 @@ -type Module { - if( - if: else! - ): else! - - for( - in: while! - ): Box! -} - -type else { - else: String! -} - -type Box { - box: String! -} - -enum while { - for, - in, -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/reserved-words/src/index.ts deleted file mode 100644 index dd620c6443..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/reserved-words/src/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { - Args__if, - Args__for, - _else, - _while, - _Box, - getwhileKey -} from "./wrap"; - -export function _if(args: Args__if): _else { - return { - _else: args._if._else - }; -} - -export function _for(args: Args__for): _Box { - const value: _while = args._in; - return { - box: getwhileKey(value) - }; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/package.json b/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/package.json deleted file mode 100644 index 3c3d123c40..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple-calculator", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/polywrap.build.yaml deleted file mode 100644 index 460dad866f..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - 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/wrappers/wasm-as/simple-calculator/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/polywrap.yaml deleted file mode 100644 index d0c2918866..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: simple-calculator - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/schema.graphql deleted file mode 100644 index e61c3ecfd1..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/schema.graphql +++ /dev/null @@ -1,4 +0,0 @@ -type Module { - add(a: Int!, b: Int!): Int! - sub(a: Int!, b: Int!): Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/src/index.ts deleted file mode 100644 index df78710f0a..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-calculator/src/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Args_add, Args_sub } from "./wrap"; - -export function add(args: Args_add): i32 { - return args.a + args.b; -} - -export function sub(args: Args_sub): i32 { - return args.a - args.b; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-deprecated/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/simple-deprecated/schema.graphql deleted file mode 100644 index 8ca05a8d80..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-deprecated/schema.graphql +++ /dev/null @@ -1,56 +0,0 @@ -### Polywrap Header START ### -scalar UInt -scalar UInt8 -scalar UInt16 -scalar UInt32 -scalar Int -scalar Int8 -scalar Int16 -scalar Int32 -scalar Bytes -scalar BigInt -scalar BigNumber -scalar JSON -scalar Map - -directive @imported( - uri: String! - namespace: String! - nativeType: String! -) on OBJECT | ENUM - -directive @imports( - types: [String!]! -) on OBJECT - -directive @capability( - type: String! - uri: String! - namespace: String! -) repeatable on OBJECT - -directive @enabled_interface on OBJECT - -directive @annotate(type: String!) on FIELD - -directive @env(required: Boolean!) on FIELD_DEFINITION - -### Polywrap Header END ### - -type Module { - simpleMethod( - arg: String! - ): String! -} - -### Imported Modules START ### - -### Imported Modules END ### - -### Imported Objects START ### - -### Imported Objects END ### - -### Imported Envs START ### - -### Imported Envs END ### diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-deprecated/wrap.info b/packages/test-cases/cases/wrappers/wasm-as/simple-deprecated/wrap.info deleted file mode 100644 index 3ea79091d6..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-deprecated/wrap.info +++ /dev/null @@ -1 +0,0 @@ -„£abiˆ«objectTypes©enumTypes®interfaceTypes³importedObjectTypes³importedModuleTypes±importedEnumTypes°importedEnvTypesªmoduleType‡¤type¦Module¤nameÀ¨requiredÀ¤kindÌ€§methods‘†¤type¦Method¤name¬simpleMethod¨requiredäkind@©arguments‘Фtype¦String¤name£arg¨requiredäkind"¥arrayÀ£mapÀ¦scalar„¤type¦String¤name£arg¨requiredäkind¦objectÀ¤enumÀ¶unresolvedObjectOrEnumÀ¦returnФtype¦String¤name¬simpleMethod¨requiredäkind"¥arrayÀ£mapÀ¦scalar„¤type¦String¤name¬simpleMethod¨requiredäkind¦objectÀ¤enumÀ¶unresolvedObjectOrEnumÀ§importsªinterfaces¤name°SimpleDeprecated¤type¤wasm§version¥0.0.1 \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-deprecated/wrap.wasm b/packages/test-cases/cases/wrappers/wasm-as/simple-deprecated/wrap.wasm deleted file mode 100644 index 6d97abc359..0000000000 Binary files a/packages/test-cases/cases/wrappers/wasm-as/simple-deprecated/wrap.wasm and /dev/null differ diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/package.json b/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/package.json deleted file mode 100644 index 7bb0c2ec84..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple-env-types", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/polywrap.build.yaml deleted file mode 100644 index 460dad866f..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - 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/wrappers/wasm-as/simple-env-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/polywrap.yaml deleted file mode 100644 index 840abff6ca..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: SimpleEnvTypes - type: wasm/assemblyscript -source: - schema: ./src/schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/src/index.ts deleted file mode 100644 index b8efde52fe..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Env, Args_getEnv } from "./wrap"; - -export function getEnv(_: Args_getEnv, env: Env | null): Env | null { - return env; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/src/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/src/schema.graphql deleted file mode 100644 index 62348f24ce..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-env-types/src/schema.graphql +++ /dev/null @@ -1,8 +0,0 @@ -type Module { - getEnv(arg: String!): Env @env(required: false) -} - -type Env { - str: String - requiredInt: Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/package.json b/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/package.json deleted file mode 100644 index 903afa356a..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple-fs-resolver", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/polywrap.build.yaml deleted file mode 100644 index 460dad866f..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - 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/wrappers/wasm-as/simple-fs-resolver/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/polywrap.yaml deleted file mode 100644 index 80bcfec57e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: SimpleFsResolver - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: "ens/uri-resolver.core.polywrap.eth" - abi: ../../../../../interfaces/uri-resolver/build/wrap.info -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/schema.graphql deleted file mode 100644 index 1f2f0e47c0..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/schema.graphql +++ /dev/null @@ -1,6 +0,0 @@ -#import { Module, MaybeUriOrManifest } into UriResolver from "ens/uri-resolver.core.polywrap.eth" - -type Module implements UriResolver_Module { -} - -type Env {} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/src/index.ts deleted file mode 100644 index 40a4661327..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-fs-resolver/src/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { - Args_getFile, - Args_tryResolveUri, - UriResolver_MaybeUriOrManifest, - Env -} from "./wrap"; - -export function tryResolveUri( - args: Args_tryResolveUri, - _env: Env | null -): UriResolver_MaybeUriOrManifest { - if (args.authority != "simple") { - return { - uri: "wrap://" + args.authority + "/" + args.path, - manifest: null, - }; - } - - return { - uri: "wrap://file/" + args.path, - manifest: null, - }; -} - -export function getFile(args: Args_getFile, _env: Env | null): ArrayBuffer | null { - return null; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/package.json b/packages/test-cases/cases/wrappers/wasm-as/simple-memory/package.json deleted file mode 100644 index f331d795db..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple-memory", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/plugin.wrap.info b/packages/test-cases/cases/wrappers/wasm-as/simple-memory/plugin.wrap.info deleted file mode 100644 index ce20b6b055..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/plugin.wrap.info +++ /dev/null @@ -1 +0,0 @@ -„¤name¦Plugin§version£0.1¤type¦plugin£abiˆ«objectTypes©enumTypes®interfaceTypes³importedObjectTypes³importedModuleTypes±importedEnumTypes°importedEnvTypesªmoduleType‡¤type¦Module¤nameÀ¨requiredÀ¤kindÌ€§methods’†¤type¦Method¤name§getData¨requiredäkind@©arguments¦returnФtype£Int¤name§getData¨requiredäkind"¥arrayÀ£mapÀ¦scalar„¤type£Int¤name§getData¨requiredäkind¦objectÀ¤enumÀ¶unresolvedObjectOrEnumÀ†¤type¦Method¤name§setData¨requiredäkind@©arguments‘Фtype£Int¤name¥value¨requiredäkind"¥arrayÀ£mapÀ¦scalar„¤type£Int¤name¥value¨requiredäkind¦objectÀ¤enumÀ¶unresolvedObjectOrEnumÀ¦returnФtype§Boolean¤name§setData¨requiredäkind"¥arrayÀ£mapÀ¦scalar„¤type§Boolean¤name§setData¨requiredäkind¦objectÀ¤enumÀ¶unresolvedObjectOrEnumÀ§importsªinterfaces \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-memory/polywrap.build.yaml deleted file mode 100644 index 460dad866f..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - 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/wrappers/wasm-as/simple-memory/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-memory/polywrap.yaml deleted file mode 100644 index 1f29c7ffc7..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: SimpleMemory - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: "ens/memory-storage.polywrap.eth" - abi: ./plugin.wrap.info -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/simple-memory/schema.graphql deleted file mode 100644 index d180497396..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/schema.graphql +++ /dev/null @@ -1,9 +0,0 @@ -#import { Module } into MemoryStorage from "wrap://ens/memory-storage.polywrap.eth" - -type Module { - getData: Int! - - setData( - value: Int! - ): Boolean! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/simple-memory/src/index.ts deleted file mode 100644 index 34b68232c5..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-memory/src/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Args_getData, Args_setData, MemoryStorage_Module } from "./wrap"; - -export function getData(_args: Args_getData): i32 { - const result = MemoryStorage_Module.getData({}); - - return result.unwrap(); -} - -export function setData(args: Args_setData): bool { - const result = MemoryStorage_Module.setData({ value: args.value }); - - return result.unwrap(); -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/package.json b/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/package.json deleted file mode 100644 index c01420ef49..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple-redirect-resolver", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/polywrap.build.yaml deleted file mode 100644 index 460dad866f..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - 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/wrappers/wasm-as/simple-redirect-resolver/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/polywrap.yaml deleted file mode 100644 index 06c7d89b10..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: SimpleRedirectResolver - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: "ens/uri-resolver.core.polywrap.eth" - abi: ../../../../../interfaces/uri-resolver/build/wrap.info -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/schema.graphql deleted file mode 100644 index 1f2f0e47c0..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/schema.graphql +++ /dev/null @@ -1,6 +0,0 @@ -#import { Module, MaybeUriOrManifest } into UriResolver from "ens/uri-resolver.core.polywrap.eth" - -type Module implements UriResolver_Module { -} - -type Env {} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/src/index.ts deleted file mode 100644 index 4821c32005..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-redirect-resolver/src/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { - Args_getFile, - Args_tryResolveUri, - UriResolver_MaybeUriOrManifest, - Env -} from "./wrap"; - -export function tryResolveUri( - args: Args_tryResolveUri, - _env: Env | null -): UriResolver_MaybeUriOrManifest { - if (args.authority != "simple-redirect") { - return { - uri: "wrap://" + args.authority + "/" + args.path, - manifest: null, - }; - } - - return { - uri: "wrap://simple/" + args.path, - manifest: null, - }; -} - -export function getFile(args: Args_getFile, _env: Env | null): ArrayBuffer | null { - return null; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-storage/package.json b/packages/test-cases/cases/wrappers/wasm-as/simple-storage/package.json deleted file mode 100644 index 8b2c0bca18..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-storage/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "test-case-simple-storage", - "private": true, - "scripts": { - "build": "../../../../../cli/bin/polywrap build" - }, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-storage/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-storage/polywrap.build.yaml deleted file mode 100644 index 85012ffe6c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-storage/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-storage/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-storage/polywrap.yaml deleted file mode 100644 index 960d10aa1c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-storage/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: SimpleStorage - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-storage/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/simple-storage/schema.graphql deleted file mode 100644 index 89b0643ac6..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-storage/schema.graphql +++ /dev/null @@ -1,28 +0,0 @@ -#import { Module, Connection } into Ethereum from "wrap://ens/wraps.eth:ethereum@1.0.0" - -type Module { - getData( - address: String! - connection: Ethereum_Connection - ): Int! - - tryGetData( - address: String! - connection: Ethereum_Connection - ): String! - - throwGetData( - address: String! - connection: Ethereum_Connection - ): String! - - setData( - address: String! - value: Int! - connection: Ethereum_Connection - ): String! - - deployContract( - connection: Ethereum_Connection - ): String! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-storage/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/simple-storage/src/index.ts deleted file mode 100644 index b7e6e845bd..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-storage/src/index.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Ethereum_Module } from "./wrap/imported"; -import { - Args_getData, - Args_tryGetData, - Args_throwGetData, - Args_setData, - Args_deployContract -} from "./wrap"; - -export function getData(args: Args_getData): u32 { - const res = Ethereum_Module.callContractView({ - address: args.address, - method: "function get() view returns (uint256)", - args: null, - connection: args.connection - }).unwrap(); - - return U32.parseInt(res); -} - -export function tryGetData(args: Args_tryGetData): string { - const res = Ethereum_Module.callContractView({ - address: args.address, - method: "function badFunctionCall() view returns (uint256)", - args: null, - connection: args.connection - }); - - return res.unwrapErr(); -} - -export function throwGetData(args: Args_throwGetData): string { - const res = Ethereum_Module.callContractView({ - address: args.address, - method: "function badFunctionCall() view returns (uint256)", - args: null, - connection: args.connection - }).unwrap(); - - return res; -} - -export function setData(args: Args_setData): string { - const res = Ethereum_Module.callContractMethod({ - address: args.address, - method: "function set(uint256 value)", - args: [args.value.toString()], - connection: args.connection - }).unwrap(); - - return res.hash; -} - -export function deployContract(args: Args_deployContract): string { - return Ethereum_Module.deployContract({ - abi: `[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"}],"name":"DataSet","type":"event"},{"inputs":[],"name":"get","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"}]`, - bytecode: - "0x608060405234801561001057600080fd5b5061012a806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360fe47b11460375780636d4ce63c146062575b600080fd5b606060048036036020811015604b57600080fd5b8101908080359060200190929190505050607e565b005b606860eb565b6040518082815260200191505060405180910390f35b806000819055507f3d38713ec8fb49acced894a52df2f06a371a15960550da9ba0f017cb7d07a8ec33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000805490509056fea2646970667358221220f312fe8d32f77c74cc4eb4a1f5c805d8bb124755ca4e8a1db2cce10cbb133dc564736f6c63430006060033", - args: null, - connection: args.connection - }).unwrap(); -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/package.json b/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/package.json deleted file mode 100644 index 68ecff0a4e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple-invoke", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.9.1", - "assemblyscript": "0.19.1" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/polywrap.yaml deleted file mode 100644 index e2b76551bf..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/polywrap.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.3.0 -project: - name: Simple - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: ens/add.eth - abi: ../subinvoke/build/wrap.info diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/schema.graphql deleted file mode 100644 index 8957a0cbda..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/schema.graphql +++ /dev/null @@ -1,5 +0,0 @@ -#import * into Add from "ens/add.eth" - -type Module { - addAndIncrement(a: Int!, b: Int!): Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/src/index.ts deleted file mode 100644 index 13afa78f83..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/invoke/src/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Args_addAndIncrement, Add_Module } from "./wrap"; -import { Args_add as ImportedArgs_add } from "./wrap/imported/Add_Module/serialization"; - -export function addAndIncrement(args: Args_addAndIncrement): i32 { - let importedArgs: ImportedArgs_add = { - a: args.a, - b: args.b - } - return Add_Module.add(importedArgs).unwrap() + 1 -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/package.json b/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/package.json deleted file mode 100644 index 897ac01244..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple-subinvoke", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.9.1", - "assemblyscript": "0.19.1" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/polywrap.yaml deleted file mode 100644 index 019312408f..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/polywrap.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.3.0 -project: - name: Simple - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/schema.graphql deleted file mode 100644 index 0ed5568771..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/schema.graphql +++ /dev/null @@ -1,3 +0,0 @@ -type Module { - add(a: Int!, b: Int!): Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/src/index.ts deleted file mode 100644 index f7eb90c977..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple-subinvoke/subinvoke/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Args_add } from "./wrap"; - -export function add(args: Args_add): i32 { - return args.a + args.b -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple/package.json b/packages/test-cases/cases/wrappers/wasm-as/simple/package.json deleted file mode 100644 index 6f24512828..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.3.0", - "assemblyscript": "0.19.23" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple/polywrap.build.yaml deleted file mode 100644 index 85012ffe6c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple/polywrap.build.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./src - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/simple/polywrap.yaml deleted file mode 100644 index 2806977814..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: Simple - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/simple/schema.graphql deleted file mode 100644 index 1fa8e36696..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple/schema.graphql +++ /dev/null @@ -1,3 +0,0 @@ -type Module { - simpleMethod(arg: String!): String! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/simple/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/simple/src/index.ts deleted file mode 100644 index 65c1f47ee4..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/simple/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Args_simpleMethod } from "./wrap"; - -export function simpleMethod(args: Args_simpleMethod): string { - return args.arg; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/package.json b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/package.json deleted file mode 100644 index 897ac01244..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple-subinvoke", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.9.1", - "assemblyscript": "0.19.1" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/polywrap.yaml deleted file mode 100644 index 42cd93bbd9..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/polywrap.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -project: - name: Simple - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: ens/bad-util.eth - abi: ../1-subinvoke/build/wrap.info diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/schema.graphql deleted file mode 100644 index 214779b400..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/schema.graphql +++ /dev/null @@ -1,5 +0,0 @@ -#import * into BadUtil from "ens/bad-util.eth" - -type Module { - subInvokeWillThrow(a: Int!, b: Int!): Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/src/index.ts deleted file mode 100644 index a73b226f89..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/0-subinvoke/src/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Args_subInvokeWillThrow, BadUtil_Module } from "./wrap"; - -export function subInvokeWillThrow(args: Args_subInvokeWillThrow): i32 { - const subInvokeResult = BadUtil_Module.iThrow({ a: 0 }).unwrap(); - return args.a + args.b + subInvokeResult; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/package.json b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/package.json deleted file mode 100644 index 897ac01244..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple-subinvoke", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.9.1", - "assemblyscript": "0.19.1" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/polywrap.yaml deleted file mode 100644 index 2d21ce24e6..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/polywrap.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -project: - name: Simple - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/schema.graphql deleted file mode 100644 index af3a9c4bdc..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/schema.graphql +++ /dev/null @@ -1,3 +0,0 @@ -type Module { - iThrow(a: Int!): Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/src/index.ts deleted file mode 100644 index af7b1e2633..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/1-subinvoke/src/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Args_iThrow } from "./wrap"; - -export function iThrow(args: Args_iThrow): i32 { - if (2 == 2) { - throw new Error("I threw an error!"); - } - return args.a + 1; -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/package.json b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/package.json deleted file mode 100644 index 68ecff0a4e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-case-simple-invoke", - "private": true, - "dependencies": { - "@polywrap/wasm-as": "0.9.1", - "assemblyscript": "0.19.1" - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/polywrap.yaml deleted file mode 100644 index 96144bcfce..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.2.0 -project: - name: Simple - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: ens/bad-math.eth - abi: ../0-subinvoke/build/wrap.info - - uri: ens/not-found.eth - abi: ../0-subinvoke/build/wrap.info diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/schema.graphql b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/schema.graphql deleted file mode 100644 index 0b784f3ed9..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/schema.graphql +++ /dev/null @@ -1,7 +0,0 @@ -#import * into BadMath from "ens/bad-math.eth" -#import * into NotFound from "ens/not-found.eth" - -type Module { - throwsInTwoSubinvokeLayers(a: Int!, b: Int!): Int! - subWrapperNotFound(a: Int!, b: Int!): Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/src/index.ts b/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/src/index.ts deleted file mode 100644 index d4cbe5ecbb..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-as/subinvoke-error/invoke/src/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Args_throwsInTwoSubinvokeLayers, Args_subWrapperNotFound, BadMath_Module, NotFound_Module } from "./wrap"; -import { Args_subInvokeWillThrow as BadMathArgs_subInvokeWillThrow } from "./wrap/imported/BadMath_Module/serialization"; -import { Args_subInvokeWillThrow as NotFoundArgs_subInvokeWillThrow } from "./wrap/imported/NotFound_Module/serialization"; - -export function throwsInTwoSubinvokeLayers(args: Args_throwsInTwoSubinvokeLayers): i32 { - let importedArgs: BadMathArgs_subInvokeWillThrow = { - a: args.a, - b: args.b - } - return BadMath_Module.subInvokeWillThrow(importedArgs).unwrap() -} - -export function subWrapperNotFound(args: Args_subWrapperNotFound): i32 { - let importedArgs: NotFoundArgs_subInvokeWillThrow = { - a: args.a, - b: args.b - } - return NotFound_Module.subInvokeWillThrow(importedArgs).unwrap() -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/asyncify/Cargo.toml deleted file mode 100644 index e28470e006..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "module" -version = "0.1.0" -description = "Query module of asycify wrapper" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib", "rlib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/plugin.wrap.info b/packages/test-cases/cases/wrappers/wasm-rs/asyncify/plugin.wrap.info deleted file mode 100644 index ce20b6b055..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/plugin.wrap.info +++ /dev/null @@ -1 +0,0 @@ -„¤name¦Plugin§version£0.1¤type¦plugin£abiˆ«objectTypes©enumTypes®interfaceTypes³importedObjectTypes³importedModuleTypes±importedEnumTypes°importedEnvTypesªmoduleType‡¤type¦Module¤nameÀ¨requiredÀ¤kindÌ€§methods’†¤type¦Method¤name§getData¨requiredäkind@©arguments¦returnФtype£Int¤name§getData¨requiredäkind"¥arrayÀ£mapÀ¦scalar„¤type£Int¤name§getData¨requiredäkind¦objectÀ¤enumÀ¶unresolvedObjectOrEnumÀ†¤type¦Method¤name§setData¨requiredäkind@©arguments‘Фtype£Int¤name¥value¨requiredäkind"¥arrayÀ£mapÀ¦scalar„¤type£Int¤name¥value¨requiredäkind¦objectÀ¤enumÀ¶unresolvedObjectOrEnumÀ¦returnФtype§Boolean¤name§setData¨requiredäkind"¥arrayÀ£mapÀ¦scalar„¤type§Boolean¤name§setData¨requiredäkind¦objectÀ¤enumÀ¶unresolvedObjectOrEnumÀ§importsªinterfaces \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/asyncify/polywrap.build.yaml deleted file mode 100644 index 76ec41bfbc..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: asyncify-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/asyncify/polywrap.yaml deleted file mode 100644 index 0404285bf1..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: Asyncify - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml - import_abis: - - uri: "ens/memory-storage.polywrap.eth" - abi: ./plugin.wrap.info -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/asyncify/schema.graphql deleted file mode 100644 index 2660ba2f06..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/schema.graphql +++ /dev/null @@ -1,62 +0,0 @@ -#import { Module } into Storage from "wrap://ens/memory-storage.polywrap.eth" - -type Module { - getData: UInt32! - - setDataWithLargeArgs( - value: String! - ): String! - - setDataWithManyArgs( - valueA: String! - valueB: String! - valueC: String! - valueD: String! - valueE: String! - valueF: String! - valueG: String! - valueH: String! - valueI: String! - valueJ: String! - valueK: String! - valueL: String! - ): String! - - setDataWithManyStructuredArgs( - valueA: BigObj! - valueB: BigObj! - valueC: BigObj! - valueD: BigObj! - valueE: BigObj! - valueF: BigObj! - valueG: BigObj! - valueH: BigObj! - valueI: BigObj! - valueJ: BigObj! - valueK: BigObj! - valueL: BigObj! - ): Boolean! - - localVarMethod: Boolean! - - globalVarMethod: Boolean! - - subsequentInvokes( - numberOfTimes: Int! - ): [String!]! -} - -type BigObj { - propA: String! - propB: String! - propC: String! - propD: String! - propE: String! - propF: String! - propG: String! - propH: String! - propI: String! - propJ: String! - propK: String! - propL: String! -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/asyncify/src/lib.rs deleted file mode 100644 index 320b7e0808..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/asyncify/src/lib.rs +++ /dev/null @@ -1,118 +0,0 @@ -pub mod wrap; -pub use wrap::*; -use polywrap_wasm_rs::JSON; -use wrap::imported::storage_module; -use wrap::module; - -pub fn get_data(args: module::ArgsGetData) -> u32 { - match StorageModule::get_data( - &storage_module::ArgsGetData {}, - ) { - Ok(v) => v.try_into().unwrap(), - Err(e) => panic!("{}", e), - } -} - -pub fn return_true() -> bool { - true -} - -pub fn set_data_with_large_args(args: module::ArgsSetDataWithLargeArgs) -> String { - let large_string = args.value; - match StorageModule::set_data(&storage_module::ArgsSetData { - value: 66 - }) { - Ok(_v) => large_string, - Err(e) => panic!("{}", e), - } -} - -pub fn set_data_with_many_args(args: module::ArgsSetDataWithManyArgs) -> String { - let ( - args_a, - args_b, - args_c, - args_d, - args_e, - args_f, - args_g, - args_h, - args_i, - args_j, - args_k, - args_l, - ) = ( - args.value_a, - args.value_b, - args.value_c, - args.value_d, - args.value_e, - args.value_f, - args.value_g, - args.value_h, - args.value_i, - args.value_j, - args.value_k, - args.value_l, - ); - match StorageModule::set_data(&storage_module::ArgsSetData { - value: 55 - }) { - Ok(_v) => [ - args_a, args_b, args_c, args_d, args_e, args_f, args_g, args_h, args_i, args_j, args_k, - args_l, - ] - .concat(), - Err(e) => panic!("{}", e), - } -} - -pub fn set_data_with_many_structured_args( - args: module::ArgsSetDataWithManyStructuredArgs, -) -> bool { - match StorageModule::set_data(&storage_module::ArgsSetData { - value: 44 - }) { - Ok(_v) => return_true(), - Err(_e) => false, - } -} - -pub fn local_var_method(args: module::ArgsLocalVarMethod) -> bool { - match StorageModule::set_data(&storage_module::ArgsSetData { - value: 88 - }) { - Ok(_v) => true, - Err(_e) => false, - } -} - -pub fn global_var_method(args: module::ArgsGlobalVarMethod) -> bool { - match StorageModule::set_data(&storage_module::ArgsSetData { - value: 77 - }) { - Ok(_v) => true, - Err(_e) => false, - } -} - -pub fn subsequent_invokes(args: module::ArgsSubsequentInvokes) -> Vec { - let mut result: Vec = vec![]; - - for i in 0..args.number_of_times { - match StorageModule::set_data(&storage_module::ArgsSetData { - value: i - }) { - Ok(_v) => { - match StorageModule::get_data( - &storage_module::ArgsGetData {}, - ) { - Ok(v) => result.push(v.to_string()), - Err(e) => panic!("{}", e), - } - } - Err(e) => panic!("{}", e), - } - } - result -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/Cargo.toml deleted file mode 100644 index 26078848f1..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "module" -version = "0.1.0" -description = "Query module of bigint-type e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } -ethers = "0.14.0" - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/Dockerfile b/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/Dockerfile deleted file mode 100644 index ffe9653d85..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/Dockerfile +++ /dev/null @@ -1,89 +0,0 @@ -FROM rust:1.65.0 as base - -# Install the wasm32 rust build target -RUN rustup target add wasm32-unknown-unknown - -WORKDIR /build-deps - -# Install curl -RUN apt-get update -RUN apt-get -y install curl clang llvm build-essential - -# Install wasm-opt -RUN curl -L https://github.com/WebAssembly/binaryen/releases/download/version_101/binaryen-version_101-x86_64-linux.tar.gz | tar -xz \ - && chmod +x binaryen-version_101/bin/wasm-opt \ - && cp binaryen-version_101/bin/wasm-opt /usr/local/bin/ \ - && rm -rf binary-version_101 - -# Install the toml-cli -RUN cargo install -f toml-cli - -# Install wasm-snip -RUN cargo install -f wasm-snip - -# Install wasm-bindgen -RUN cargo install -f wasm-bindgen-cli - -WORKDIR /linked-packages - -COPY .polywrap/wasm/build/linked-packages/polywrap-wasm-rs ./polywrap-wasm-rs - -WORKDIR /project - -# Copy all manifest files -COPY polywrap.yaml . -COPY polywrap.build.yaml . - -# Copy all source files -COPY . . - -# Link any local packages -RUN PACKAGE_NAME=polywrap-wasm-rs; \ - toml set ././Cargo.toml dependencies.$PACKAGE_NAME.path /linked-packages/$PACKAGE_NAME > ././Cargo-local.toml && \ - rm -rf ././Cargo.toml && \ - mv ././Cargo-local.toml ././Cargo.toml && \ - true - - -# Remove any Cargo.lock files -RUN rm -rf ./Cargo.lock - -# Ensure the Wasm module is configured to use imported memory -ENV RUSTFLAGS="-C link-arg=-z -C link-arg=stack-size=65536 -C link-arg=--import-memory" - -# Ensure the module at . has the crate-type = ["cdylib"] -RUN toml set ././Cargo.toml lib.crate-type ["cdylib"] > ././Cargo-local.toml && \ - rm -rf ././Cargo.toml && \ - mv ././Cargo-local.toml ././Cargo.toml && \ - true - -# Clean up artifacts left by the toml CLI program ("["cdylib"]" -> ["cdylib"]) -RUN sed -i 's/"\[cdylib\]"/\["cdylib"\]/g' ././Cargo.toml - -# Ensure the package name = "module" -RUN toml set ././Cargo.toml package.name "module" > ././Cargo-local.toml && \ - rm -rf ././Cargo.toml && \ - mv ././Cargo-local.toml ././Cargo.toml && \ - true - -# Make the build directory -RUN rm -rf ./build -RUN mkdir ./build - -# Build the module at . -RUN cargo build --manifest-path ././Cargo.toml \ - --target wasm32-unknown-unknown --release - -# Enable the "WASM_INTERFACE_TYPES" feature, which will remove the __wbindgen_throw import. -# See: https://github.com/rustwasm/wasm-bindgen/blob/7f4663b70bd492278bf0e7bba4eeddb3d840c868/crates/cli-support/src/lib.rs#L397-L403 -ENV WASM_INTERFACE_TYPES=1 - -# Run wasm-bindgen over the module, replacing all placeholder __wbindgen_... imports -RUN wasm-bindgen ././target/wasm32-unknown-unknown/release/module.wasm --out-dir ./build --out-name bg_module.wasm - -RUN wasm-snip ./build/bg_module.wasm -o ./build/snipped_module.wasm && \ - rm -rf ./build/bg_module.wasm - -# Use wasm-opt to perform the "asyncify" post-processing step over all modules -RUN wasm-opt --asyncify -Os ./build/snipped_module.wasm -o ./build/wrap.wasm && \ - rm -rf ./build/snipped_module.wasm diff --git a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap-current.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap-current.build.yaml deleted file mode 100644 index 732ad4622d..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap-current.build.yaml +++ /dev/null @@ -1,8 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: benchmark-type-wasm-rs - dockerfile: ./Dockerfile -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap-current.yaml b/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap-current.yaml deleted file mode 100644 index 08d2a6d85d..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap-current.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.2.0 -project: - name: Benchmark - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap-current.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap.build.yaml deleted file mode 100644 index ca70952a7d..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: benchmark-type-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap.yaml deleted file mode 100644 index fac51ed76f..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: Benchmark - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/schema.graphql deleted file mode 100644 index ffe506dec2..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/schema.graphql +++ /dev/null @@ -1,12 +0,0 @@ -type Module { - method( - arg1: BigNumber! - arg2: BigNumber - obj: BigNumberArg! - ): BigNumber! -} - -type BigNumberArg { - prop1: BigNumber! - prop2: BigNumber -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/src/lib.rs deleted file mode 100644 index 5e5b5ae13c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/benchmarks/src/lib.rs +++ /dev/null @@ -1,18 +0,0 @@ -use std::ops::Mul; - -use polywrap_wasm_rs::BigNumber; -pub mod wrap; -pub use wrap::*; - -pub fn method(args: ArgsMethod) -> BigNumber { - let mut result = args.arg1.mul(args.obj.prop1); - - if args.arg2.is_some() { - result = result.mul(args.arg2.unwrap()); - } - if args.obj.prop2.is_some() { - result = result.mul(args.obj.prop2.unwrap()); - } - - result -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/Cargo.toml deleted file mode 100644 index 384e2d56fa..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of bigint-type e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/polywrap.build.yaml deleted file mode 100644 index 87de85ff73..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: bigint-type-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/polywrap.yaml deleted file mode 100644 index 0a7603f6cb..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: BigInt - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/schema.graphql deleted file mode 100644 index 5be8cdf1d4..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/schema.graphql +++ /dev/null @@ -1,12 +0,0 @@ -type Module { - method( - arg1: BigInt! - arg2: BigInt - obj: BigIntArg! - ): BigInt! -} - -type BigIntArg { - prop1: BigInt! - prop2: BigInt -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/src/lib.rs deleted file mode 100644 index 7d648a4f14..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bigint-type/src/lib.rs +++ /dev/null @@ -1,18 +0,0 @@ -use std::ops::Mul; - -use polywrap_wasm_rs::BigInt; -pub mod wrap; -pub use wrap::*; - -pub fn method(args: ArgsMethod) -> BigInt { - let mut result = args.arg1.mul(args.obj.prop1); - - if args.arg2.is_some() { - result = result.mul(args.arg2.unwrap()); - } - if args.obj.prop2.is_some() { - result = result.mul(args.obj.prop2.unwrap()); - } - - result -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/Cargo.toml deleted file mode 100644 index 384e2d56fa..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of bigint-type e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/polywrap.build.yaml deleted file mode 100644 index 57e7c5be86..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: bignumber-type-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/polywrap.yaml deleted file mode 100644 index 146c8ddb08..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: BigNumber - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/schema.graphql deleted file mode 100644 index ffe506dec2..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/schema.graphql +++ /dev/null @@ -1,12 +0,0 @@ -type Module { - method( - arg1: BigNumber! - arg2: BigNumber - obj: BigNumberArg! - ): BigNumber! -} - -type BigNumberArg { - prop1: BigNumber! - prop2: BigNumber -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/src/lib.rs deleted file mode 100644 index 5e5b5ae13c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bignumber-type/src/lib.rs +++ /dev/null @@ -1,18 +0,0 @@ -use std::ops::Mul; - -use polywrap_wasm_rs::BigNumber; -pub mod wrap; -pub use wrap::*; - -pub fn method(args: ArgsMethod) -> BigNumber { - let mut result = args.arg1.mul(args.obj.prop1); - - if args.arg2.is_some() { - result = result.mul(args.arg2.unwrap()); - } - if args.obj.prop2.is_some() { - result = result.mul(args.obj.prop2.unwrap()); - } - - result -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/Cargo.toml deleted file mode 100644 index 7807c0a995..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of bytes-type e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/polywrap.build.yaml deleted file mode 100644 index a5bd18b72c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: bytes-type-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/polywrap.yaml deleted file mode 100644 index facf0528c7..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: Bytes - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/schema.graphql deleted file mode 100644 index 475dad33ab..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/schema.graphql +++ /dev/null @@ -1,9 +0,0 @@ -type Module { - bytesMethod( - arg: Args! - ): Bytes! -} - -type Args { - prop: Bytes! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/src/lib.rs deleted file mode 100644 index 261f90ae23..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/bytes-type/src/lib.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn bytes_method(args: ArgsBytesMethod) -> Vec { - let arg_str = match String::from_utf8(args.arg.prop) { - Ok(s) => s, - Err(_e) => panic!("Parsing error"), - }; - String::into_bytes([&arg_str, " Sanity!"].concat()) -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/enum-types/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/enum-types/Cargo.toml deleted file mode 100644 index ac6f5b1c61..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/enum-types/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of enum-types e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/enum-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/enum-types/polywrap.build.yaml deleted file mode 100644 index a062703495..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/enum-types/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: enum-types-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/enum-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/enum-types/polywrap.yaml deleted file mode 100644 index 165337da71..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/enum-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: Enum - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml diff --git a/packages/test-cases/cases/wrappers/wasm-rs/enum-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/enum-types/schema.graphql deleted file mode 100644 index 0f91f40fa4..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/enum-types/schema.graphql +++ /dev/null @@ -1,17 +0,0 @@ -type Module { - method1( - en: SanityEnum! - optEnum: SanityEnum - ): SanityEnum! - - method2( - enumArray: [SanityEnum!]! - optEnumArray: [SanityEnum] - ): [SanityEnum!]! -} - -enum SanityEnum { - OPTION1 - OPTION2 - OPTION3 -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/enum-types/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/enum-types/src/lib.rs deleted file mode 100644 index 5f3fcef1e3..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/enum-types/src/lib.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn method1(args: ArgsMethod1) -> SanityEnum { - args.en -} - -pub fn method2(args: ArgsMethod2) -> Vec { - args.enum_array -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/Cargo.toml deleted file mode 100644 index 242710b629..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "env-types" -version = "0.1.0" -description = "Module of env-types e2e test" -authors = [ - "Nestor Amesty " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/polywrap.build.yaml deleted file mode 100644 index d2dd4903a9..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: env-type-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/polywrap.yaml deleted file mode 100644 index 771b963d88..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: EnvTypeExternal - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/schema.graphql deleted file mode 100644 index d2325113e2..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/schema.graphql +++ /dev/null @@ -1,8 +0,0 @@ -type Env { - externalArray: [UInt32!]! - externalString: String! -} - -type Module { - externalEnvMethod: Env! @env(required: true) -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/src/lib.rs deleted file mode 100644 index c164d375d3..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/env-types/external/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn external_env_method(_: ArgsExternalEnvMethod, env: Env) -> Env { - env -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/Cargo.toml deleted file mode 100644 index 242710b629..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "env-types" -version = "0.1.0" -description = "Module of env-types e2e test" -authors = [ - "Nestor Amesty " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/polywrap.build.yaml deleted file mode 100644 index d2dd4903a9..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: env-type-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/polywrap.yaml deleted file mode 100644 index 889bd6ad82..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: EnvType - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml - import_abis: - - uri: "ens/externalenv.polywrap.eth" - abi: ../external/build/wrap.info -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/schema.graphql deleted file mode 100644 index 3ff9f2fb62..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/schema.graphql +++ /dev/null @@ -1,48 +0,0 @@ -#import { Module } into ExternalEnvApi from "ens/externalenv.polywrap.eth" - -type EnvObject { - prop: String! -} - -enum EnvEnum { - FIRST - SECOND -} - -type Env { - str: String! - optStr: String - optFilledStr: String - number: Int8! - optNumber: Int8 - bool: Boolean! - optBool: Boolean - en: EnvEnum! - optEnum: EnvEnum - object: EnvObject! - optObject: EnvObject - array: [UInt32!]! -} - -type CompoundEnv { - local: Env! - external: ExternalEnvApi_Env! -} - -type Module { - methodNoEnv( - arg: String! - ): String! - - methodRequireEnv( - arg: String! - ): Env! @env(required: true) - - methodOptionalEnv( - arg: String! - ): Env @env(required: false) - - subinvokeEnvMethod( - arg: String! - ): CompoundEnv! @env(required: true) -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/src/lib.rs deleted file mode 100644 index abb4e5d6f6..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/env-types/main/src/lib.rs +++ /dev/null @@ -1,43 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -fn create_env(env: Env) -> Env { - Env { - str: env.str, - opt_str: env.opt_str, - opt_filled_str: env.opt_filled_str, - number: env.number, - opt_number: env.opt_number, - bool: env.bool, - opt_bool: env.opt_bool, - en: env.en, - opt_enum: env.opt_enum, - object: env.object, - opt_object: env.opt_object, - array: env.array, - } -} - -pub fn method_no_env(args: ArgsMethodNoEnv) -> String { - args.arg -} - -pub fn method_require_env(_: ArgsMethodRequireEnv, env: Env) -> Env { - create_env(env) -} - -pub fn method_optional_env(args: ArgsMethodOptionalEnv, env: Option) -> Option { - match env { - Some(e) => Some(create_env(e)), - None => None - } -} - -pub fn subinvoke_env_method(args: ArgsSubinvokeEnvMethod, env: Env) -> CompoundEnv { - let external_env: ExternalEnvApiEnv = ExternalEnvApiModule::external_env_method(&(imported::ArgsExternalEnvMethod {})).unwrap(); - - return CompoundEnv { - local: env, - external: external_env - }; -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-interface/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-interface/polywrap.yaml deleted file mode 100644 index 341944135e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-interface/polywrap.yaml +++ /dev/null @@ -1,6 +0,0 @@ -format: 0.3.0 -project: - name: TestInterface - type: interface -source: - schema: ./schema.graphql diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-interface/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-interface/schema.graphql deleted file mode 100644 index b80a6e620b..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-interface/schema.graphql +++ /dev/null @@ -1,13 +0,0 @@ -type Module { - abstractModuleMethod( - arg: Argument! - ): String! -} - -type Argument { - str: String! -} - -type InterfaceType { - uint8: UInt8! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/Cargo.toml deleted file mode 100644 index 2b7b10e41d..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of json-type e2e test" -authors = [ - "Nestor Amesty ", -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } -serde_json = { version = "1.0", features = ["preserve_order"]} - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/polywrap.build.yaml deleted file mode 100644 index a98b54ac2e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: test-use-get-impl-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../../wasm/rs \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/polywrap.yaml deleted file mode 100644 index 8c666c4ea2..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: TestUseGetImpl - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml - import_abis: - - uri: wrap://ens/interface.eth - abi: ../test-interface/build/wrap.info -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/schema.graphql deleted file mode 100644 index bd51ae7828..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/schema.graphql +++ /dev/null @@ -1,13 +0,0 @@ -#import { Module, InterfaceType } into Interface from "wrap://ens/interface.eth" -#use { getImplementations } for Interface - -type Module implements Interface_Module { - moduleImplementations: [String!]! - moduleMethod( - arg: ImplementationType! - ): ImplementationType! -} - -type ImplementationType implements Interface_InterfaceType { - str: String! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/src/lib.rs deleted file mode 100644 index 3fda9b668e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-use-getImpl/src/lib.rs +++ /dev/null @@ -1,23 +0,0 @@ -pub mod wrap; -pub use wrap::*; -pub use wrap::imported::interface_module; -pub use wrap::imported::interface_argument; - -pub fn module_implementations(args: ArgsModuleImplementations) -> Vec { - Interface::get_implementations() -} - -pub fn module_method(args: ArgsModuleMethod) -> ImplementationType { - args.arg -} - -pub fn abstract_module_method(args: ArgsAbstractModuleMethod) -> String { - let impls = Interface::get_implementations(); - let module = InterfaceModule::new(impls[0].clone()); - let method_args = interface_module::serialization::ArgsAbstractModuleMethod { - arg: interface_argument::InterfaceArgument { - str: args.arg.str - } - }; - module.abstract_module_method(&method_args).unwrap() -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/Cargo.toml deleted file mode 100644 index 9f5e9e74c6..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of test-wrapper implementation" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../../../wasm/rs"} -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib", "rlib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/polywrap.build.yaml deleted file mode 100644 index 591e73105e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: test-wrapper-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/polywrap.yaml deleted file mode 100644 index cc3ac34d89..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: TestWrapper - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml - import_abis: - - uri: wrap://ens/interface.eth - abi: ../test-interface/build/wrap.info -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/schema.graphql deleted file mode 100644 index 0b28cfb495..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/schema.graphql +++ /dev/null @@ -1,11 +0,0 @@ -#import { Module, InterfaceType } into Interface from "wrap://ens/interface.eth" - -type Module implements Interface_Module { - moduleMethod( - arg: ImplementationType! - ): ImplementationType! -} - -type ImplementationType implements Interface_InterfaceType { - str: String! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/src/lib.rs deleted file mode 100644 index 488c42970c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/implementations/test-wrapper/src/lib.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn module_method(args: ArgsModuleMethod) -> ImplementationType { - args.arg -} - -pub fn abstract_module_method(args: ArgsAbstractModuleMethod) -> String { - args.arg.str -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/Cargo.toml deleted file mode 100644 index e2bb81d685..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of invalid-types e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/polywrap.build.yaml deleted file mode 100644 index 5abc34b624..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: invalid-types-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/polywrap.yaml deleted file mode 100644 index 70920a4390..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: InvalidTypes - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/schema.graphql deleted file mode 100644 index 39fb3f1a56..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/schema.graphql +++ /dev/null @@ -1,21 +0,0 @@ -type Module { - boolMethod( - arg: Boolean! - ): Boolean! - - intMethod( - arg: Int32! - ): Int32! - - uIntMethod( - arg: UInt32! - ): UInt32! - - bytesMethod( - arg: Bytes! - ): Bytes! - - arrayMethod( - arg: [String!]! - ): [String!] -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/src/lib.rs deleted file mode 100644 index ec35bcbfad..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/invalid-types/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn bool_method(args: ArgsBoolMethod) -> bool { - args.arg -} - -pub fn int_method(args: ArgsIntMethod) -> i32 { - args.arg -} - -pub fn u_int_method(args: ArgsUIntMethod) -> u32 { - args.arg -} - -pub fn bytes_method(args: ArgsBytesMethod) -> Vec { - args.arg -} - -pub fn array_method(args: ArgsArrayMethod) -> Option> { - Some(args.arg) -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/json-type/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/json-type/Cargo.toml deleted file mode 100644 index b4a443ad12..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/json-type/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of json-type e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } -serde_json = { version = "1.0", features = ["preserve_order"]} - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/json-type/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/json-type/polywrap.build.yaml deleted file mode 100644 index 6d9b8cb18d..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/json-type/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: json-type-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/json-type/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/json-type/polywrap.yaml deleted file mode 100644 index 32a9939186..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/json-type/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: JsonType - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/json-type/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/json-type/schema.graphql deleted file mode 100644 index 09cb787db5..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/json-type/schema.graphql +++ /dev/null @@ -1,33 +0,0 @@ -type Module { - parse( - value: String! - ): JSON! - - stringify( - values: [JSON!]! - ): String! - - stringifyObject( - object: Object! - ): String! - - methodJSON( - valueA: Int! - valueB: String! - valueC: Boolean! - ): JSON! - - stringifyReserved(reserved: Reserved!): String! - - parseReserved(json: String!): Reserved! -} - -type Object { - jsonA: JSON! - jsonB: JSON! -} - -type Reserved { - const: String! - if: Boolean! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/json-type/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/json-type/src/lib.rs deleted file mode 100644 index 1c29c68106..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/json-type/src/lib.rs +++ /dev/null @@ -1,36 +0,0 @@ -pub mod wrap; -pub use wrap::*; -use polywrap_wasm_rs::JSON; -use serde_json::*; - -pub fn stringify(args: ArgsStringify) -> String { - let mut new_string = String::from(""); - for object in &args.values { - new_string.push_str(&object.to_string()); - } - new_string -} - -pub fn parse(args: ArgsParse) -> JSON::Value { JSON::from_str(&args.value).unwrap() } - -pub fn stringify_object(args: ArgsStringifyObject) -> String { - let mut new_string = String::from(&args.object.json_a.to_string()); - new_string.push_str(&args.object.json_b.to_string()); - new_string -} - -pub fn method_j_s_o_n(args: ArgsMethodJSON) -> JSON::Value { - json!({ - "valueA": args.value_a, - "valueB": args.value_b, - "valueC": args.value_c - }) -} - -pub fn stringify_reserved(args: ArgsStringifyReserved) -> String { - JSON::to_string(&args.reserved).unwrap() -} - -pub fn parse_reserved(args: ArgsParseReserved) -> Reserved { - JSON::from_str::(&args.json).unwrap() -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/large-types/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/large-types/Cargo.toml deleted file mode 100644 index c0b31341dc..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/large-types/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of large-types e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/large-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/large-types/polywrap.build.yaml deleted file mode 100644 index 6193c743ef..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/large-types/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: large-types-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/large-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/large-types/polywrap.yaml deleted file mode 100644 index 7e6e98bf7d..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/large-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: LargeTypes - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/large-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/large-types/schema.graphql deleted file mode 100644 index 7f042f5f71..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/large-types/schema.graphql +++ /dev/null @@ -1,12 +0,0 @@ -type Module { - method( - largeCollection: LargeCollection! - ): LargeCollection! -} - -type LargeCollection { - largeStr: String! - largeBytes: Bytes! - largeStrArray: [String!]! - largeBytesArray: [Bytes!]! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/large-types/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/large-types/src/lib.rs deleted file mode 100644 index d443f2331c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/large-types/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn method(args: ArgsMethod) -> LargeCollection { - args.large_collection -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/map-type/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/map-type/Cargo.toml deleted file mode 100644 index c0b31341dc..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/map-type/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of large-types e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/map-type/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/map-type/polywrap.build.yaml deleted file mode 100644 index 7cb6421085..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/map-type/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: map-type-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/map-type/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/map-type/polywrap.yaml deleted file mode 100644 index 2c9c4b456e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/map-type/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: MapType - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml - import_abis: - - uri: "wrap://ens/imported-map.eth" - abi: ./schema.import.graphql -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/map-type/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/map-type/schema.graphql deleted file mode 100644 index f61d03eba1..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/map-type/schema.graphql +++ /dev/null @@ -1,34 +0,0 @@ -#import { Module, CustomMap } into Imported from "wrap://ens/imported-map.eth" - -type Module { - getKey( - key: String! - foo: CustomMap! - ): Int! - - returnMap( - map: Map! @annotate(type: "Map!") - ): Map! @annotate(type: "Map!") - - returnCustomMap( - foo: CustomMap! - ): CustomMap! - - returnNestedMap( - foo: Map! @annotate(type: "Map!>!") - ): Map! @annotate(type: "Map!>!") - - returnMapOfEnum( - map: Map! @annotate(type: "Map!") - ): Map! @annotate(type: "Map!") -} - -type CustomMap { - map: Map! @annotate(type: "Map!") - nestedMap: Map! @annotate(type: "Map!>!") -} - -enum MyEnum { - ONE - TWO -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/map-type/schema.import.graphql b/packages/test-cases/cases/wrappers/wasm-rs/map-type/schema.import.graphql deleted file mode 100644 index bb8da6e5dc..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/map-type/schema.import.graphql +++ /dev/null @@ -1,32 +0,0 @@ -type Module { - getKey( - key: String! - foo: CustomMap! - ): Int! - - returnMap( - map: Map! @annotate(type: "Map!") - ): Map! @annotate(type: "Map!") - - returnCustomMap( - foo: CustomMap! - ): CustomMap! - - returnNestedMap( - foo: Map! @annotate(type: "Map!>!") - ): Map! @annotate(type: "Map!>!") - - returnMapOfEnum( - map: Map! @annotate(type: "Map!") - ): Map! @annotate(type: "Map!") -} - -type CustomMap { - map: Map! @annotate(type: "Map!") - nestedMap: Map! @annotate(type: "Map!>!") -} - -enum MyEnum { - ONE - TWO -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/map-type/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/map-type/src/lib.rs deleted file mode 100644 index 6fc1fef90f..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/map-type/src/lib.rs +++ /dev/null @@ -1,23 +0,0 @@ -pub mod wrap; -pub use wrap::*; -use polywrap_wasm_rs::Map; - -pub fn get_key(args: ArgsGetKey) -> i32 { - *args.foo.map.get(&args.key).unwrap() -} - -pub fn return_map(args: ArgsReturnMap) -> Map { - args.map -} - -pub fn return_custom_map(args: ArgsReturnCustomMap) -> CustomMap { - args.foo -} - -pub fn return_nested_map(args: ArgsReturnNestedMap) -> Map> { - args.foo -} - -pub fn return_map_of_enum(args: ArgsReturnMapOfEnum) -> Map { - args.map -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/number-types/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/number-types/Cargo.toml deleted file mode 100644 index 1fe195f4be..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/number-types/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of number-types e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/number-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/number-types/polywrap.build.yaml deleted file mode 100644 index bec1bd831b..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/number-types/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: number-types-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/number-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/number-types/polywrap.yaml deleted file mode 100644 index 88159c5037..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/number-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: NumberTypes - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/number-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/number-types/schema.graphql deleted file mode 100644 index 81d5005b5a..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/number-types/schema.graphql +++ /dev/null @@ -1,32 +0,0 @@ -type Module { - - i8Method( - first: Int8! - second: Int8! - ): Int8! - - u8Method( - first: UInt8! - second: UInt8! - ): UInt8! - - i16Method( - first: Int16! - second: Int16! - ): Int16! - - u16Method( - first: UInt16! - second: UInt16! - ): UInt16! - - i32Method( - first: Int! - second: Int! - ): Int! - - u32Method( - first: UInt32! - second: UInt32! - ): UInt32! -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/number-types/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/number-types/src/lib.rs deleted file mode 100644 index 7eedae9e0f..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/number-types/src/lib.rs +++ /dev/null @@ -1,26 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn i8_method(args: ArgsI8Method) -> i8 { - args.first + args.second -} - -pub fn u8_method(args: ArgsU8Method) -> u8 { - args.first + args.second -} - -pub fn i16_method(args: ArgsI16Method) -> i16 { - args.first + args.second -} - -pub fn u16_method(args: ArgsU16Method) -> u16 { - args.first + args.second -} - -pub fn i32_method(args: ArgsI32Method) -> i32 { - args.first + args.second -} - -pub fn u32_method(args: ArgsU32Method) -> u32 { - args.first + args.second -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/object-types/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/object-types/Cargo.toml deleted file mode 100644 index 48ff60dbff..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/object-types/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of object-types e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/object-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/object-types/polywrap.build.yaml deleted file mode 100644 index a935a5efb7..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/object-types/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: object-types-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/object-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/object-types/polywrap.yaml deleted file mode 100644 index 3a344ae3d0..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/object-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: ObjectTypes - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/object-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/object-types/schema.graphql deleted file mode 100644 index 03f068148a..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/object-types/schema.graphql +++ /dev/null @@ -1,45 +0,0 @@ -type Module { - method1( - arg1: Arg1! - arg2: Arg2 - ): [Output!]! - - method2( - arg: Arg1! - ): Output - - method3( - arg: Arg1! - ): [Output]! - - method5( - arg: Arg3! - ): Output! -} - -type Arg1 { - prop: String! - nested: Nested! -} - -type Arg2 { - prop: String! - circular: Circular! -} - -type Arg3 { - prop: Bytes! -} - -type Output { - prop: String! - nested: Nested! -} - -type Nested { - prop: String! -} - -type Circular { - prop: String! -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/object-types/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/object-types/src/lib.rs deleted file mode 100644 index 4ad102571c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/object-types/src/lib.rs +++ /dev/null @@ -1,61 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn method1(args: ArgsMethod1) -> Vec { - vec![ - Output { - prop: args.arg1.prop, - nested: Nested { - prop: args.arg1.nested.prop, - }, - }, - Output { - prop: match args.arg2 { - Some(ref v) => v.prop.clone(), - None => "".to_string(), - }, - nested: Nested { - prop: match args.arg2 { - Some(ref v) => v.circular.prop.clone(), - None => "".to_string(), - } - }, - }, - ] -} - -pub fn method2(args: ArgsMethod2) -> Option { - if args.arg.prop == "null".to_string() { - return None; - } - Some(Output { - prop: args.arg.prop, - nested: Nested { - prop: args.arg.nested.prop, - }, - }) -} - -pub fn method3(args: ArgsMethod3) -> Vec> { - vec![ - None, - Some(Output { - prop: args.arg.prop, - nested: Nested { - prop: args.arg.nested.prop, - }, - }), - ] -} - -pub fn method5(args: ArgsMethod5) -> Output { - Output { - prop: match String::from_utf8(args.arg.prop) { - Ok(v) => v, - Err(e) => panic!("{}", e), - }, - nested: Nested { - prop: "nested prop".to_string(), - }, - } -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/println-logging/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/println-logging/Cargo.toml deleted file mode 100644 index 384e2d56fa..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/println-logging/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of bigint-type e2e test" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/println-logging/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/println-logging/polywrap.build.yaml deleted file mode 100644 index 468b571352..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/println-logging/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: println-logging-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/println-logging/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/println-logging/polywrap.yaml deleted file mode 100644 index 0b5ec86535..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/println-logging/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: println-logging - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/println-logging/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/println-logging/schema.graphql deleted file mode 100644 index c56fb7f7fb..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/println-logging/schema.graphql +++ /dev/null @@ -1,5 +0,0 @@ -type Module { - logMessage( - message: String! - ): Boolean! -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/println-logging/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/println-logging/src/lib.rs deleted file mode 100644 index 0dde361b18..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/println-logging/src/lib.rs +++ /dev/null @@ -1,11 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn log_message(args: ArgsLogMessage) -> bool { - let message = args.message.as_str(); - - println!("{}", message); - print!("{}", message); - - true -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/Cargo.toml deleted file mode 100644 index 3e8eb5b3e7..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "test-case-reserved-words" -version = "0.1.0" -description = "test-case-reserved-words" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/polywrap.build.yaml deleted file mode 100644 index a935a5efb7..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: object-types-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/polywrap.yaml deleted file mode 100644 index 936e83fd3b..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.3.0 -project: - name: ObjectTypes - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml - import_abis: - - uri: wrap://ens/reserved-words.polytest.eth - abi: ./schema.import.graphql -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/schema.graphql deleted file mode 100644 index b44995c8f3..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/schema.graphql +++ /dev/null @@ -1,24 +0,0 @@ -#import { Module, else, Box, while } into TestImport from "wrap://ens/reserved-words.polytest.eth" - -type Module { - if( - if: else! - ): else! - - for( - in: while! - ): Box! -} - -type else { - else: String! -} - -type Box { - box: String! -} - -enum while { - for, - in, -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/schema.import.graphql b/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/schema.import.graphql deleted file mode 100644 index d89b2a95b9..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/schema.import.graphql +++ /dev/null @@ -1,22 +0,0 @@ -type Module { - if( - if: else! - ): else! - - for( - in: while! - ): Box! -} - -type else { - else: String! -} - -type Box { - box: String! -} - -enum while { - for, - in, -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/src/lib.rs deleted file mode 100644 index dcf51b3cae..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/reserved-words/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn _if(args: ArgsIf) -> Else { - Else { - _else: args._if._else - } -} - -pub fn _for(args: ArgsFor) -> _Box { - let value: While = args._in; - _Box { - _box: get_while_key(value).unwrap() - } -} - diff --git a/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/Cargo.toml deleted file mode 100644 index a82a67f94b..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "env-types" -version = "0.1.0" -description = "Module of env-types e2e test" -authors = [ - "Nestor Amesty " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' diff --git a/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/polywrap.build.yaml deleted file mode 100644 index c69adede47..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: env-type-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/polywrap.yaml deleted file mode 100644 index 771b963d88..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: EnvTypeExternal - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/schema.graphql deleted file mode 100644 index 62348f24ce..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/schema.graphql +++ /dev/null @@ -1,8 +0,0 @@ -type Module { - getEnv(arg: String!): Env @env(required: false) -} - -type Env { - str: String - requiredInt: Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/src/lib.rs deleted file mode 100644 index 5646ba1930..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/simple-env-types/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn get_env(_: ArgsGetEnv, env: Option) -> Option { - env -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/Cargo.toml deleted file mode 100644 index 1552d56b09..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "query" -version = "0.1.0" -description = "Query module of simple-storage wrapper" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib", "rlib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/polywrap.build.yaml deleted file mode 100644 index d38232bdcf..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: simple-storage-wasm-rs -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/polywrap.yaml deleted file mode 100644 index c4acdd3dcd..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.3.0 -project: - name: SimpleStorage - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/schema.graphql deleted file mode 100644 index 89b0643ac6..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/schema.graphql +++ /dev/null @@ -1,28 +0,0 @@ -#import { Module, Connection } into Ethereum from "wrap://ens/wraps.eth:ethereum@1.0.0" - -type Module { - getData( - address: String! - connection: Ethereum_Connection - ): Int! - - tryGetData( - address: String! - connection: Ethereum_Connection - ): String! - - throwGetData( - address: String! - connection: Ethereum_Connection - ): String! - - setData( - address: String! - value: Int! - connection: Ethereum_Connection - ): String! - - deployContract( - connection: Ethereum_Connection - ): String! -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/src/lib.rs deleted file mode 100644 index 6c8af6d04b..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/simple-storage/src/lib.rs +++ /dev/null @@ -1,62 +0,0 @@ -pub mod wrap; -use polywrap_wasm_rs::JSON; -use wrap::imported::ethereum_module; -pub use wrap::*; - -pub fn get_data(args: ArgsGetData) -> i32 { - match EthereumModule::call_contract_view(ðereum_module::ArgsCallContractView { - address: args.address, - method: "function get() view returns (uint256)".to_string(), - args: None, - connection: args.connection, - }) { - Ok(v) => v.parse::().unwrap(), - Err(e) => panic!("{}", e), - } -} - -pub fn try_get_data(args: ArgsTryGetData) -> String { - let res = EthereumModule::call_contract_view(ðereum_module::ArgsCallContractView { - address: args.address, - method: "function badFunctionCall() view returns (uint256)".to_string(), - args: None, - connection: args.connection, - }); - - res.unwrap_err() -} - -pub fn throw_get_data(args: ArgsThrowGetData) -> String { - EthereumModule::call_contract_view(ðereum_module::ArgsCallContractView { - address: args.address, - method: "function badFunctionCall() view returns (uint256)".to_string(), - args: None, - connection: args.connection, - }).unwrap() -} - -pub fn set_data(args: ArgsSetData) -> String { - match EthereumModule::call_contract_method(ðereum_module::ArgsCallContractMethod { - address: args.address, - method: "function set(uint256 value)".to_string(), - args: Some(vec![args.value.to_string()]), - connection: args.connection, - options: None, - }) { - Ok(res) => res.hash, - Err(e) => panic!("{}", e), - } -} - -pub fn deploy_contract(args: ArgsDeployContract) -> String { - let abi = JSON::json!([{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"}],"name":"DataSet","type":"event"},{"inputs":[],"name":"get","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"}]).to_string(); - let bytecode = "0x608060405234801561001057600080fd5b5061012a806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360fe47b11460375780636d4ce63c146062575b600080fd5b606060048036036020811015604b57600080fd5b8101908080359060200190929190505050607e565b005b606860eb565b6040518082815260200191505060405180910390f35b806000819055507f3d38713ec8fb49acced894a52df2f06a371a15960550da9ba0f017cb7d07a8ec33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000805490509056fea2646970667358221220f312fe8d32f77c74cc4eb4a1f5c805d8bb124755ca4e8a1db2cce10cbb133dc564736f6c63430006060033".to_string(); - EthereumModule::deploy_contract(ðereum_module::ArgsDeployContract { - abi, - bytecode, - args: None, - connection: args.connection, - options: None, - }) - .unwrap() -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/Cargo.toml deleted file mode 100644 index c1467312bb..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "test-case-simple-subinvoke" -version = "0.1.0" -description = "test-case-simple-subinvoke wrapper" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib", "rlib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/polywrap.build.yaml deleted file mode 100644 index a2158a4a29..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: test-case-simple-subinvoke-0 -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/polywrap.yaml deleted file mode 100644 index ab0095ae7e..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.2.0 -project: - name: test-case-simple-subinvoke - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml - import_abis: - - uri: ens/bad-util.eth - abi: ../1-subinvoke/build/wrap.info -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/schema.graphql deleted file mode 100644 index 214779b400..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/schema.graphql +++ /dev/null @@ -1,5 +0,0 @@ -#import * into BadUtil from "ens/bad-util.eth" - -type Module { - subInvokeWillThrow(a: Int!, b: Int!): Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/src/lib.rs deleted file mode 100644 index 8709b4e4da..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/0-subinvoke/src/lib.rs +++ /dev/null @@ -1,7 +0,0 @@ -pub mod wrap; -pub use wrap::{*, imported::bad_util_module::ArgsIThrow }; - -pub fn sub_invoke_will_throw(args: ArgsSubInvokeWillThrow) -> i32 { - let sub_invoke_result = BadUtilModule::i_throw( &ArgsIThrow { a: 0 }).unwrap(); - args.a + args.b + sub_invoke_result -} \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/Cargo.toml deleted file mode 100644 index c1467312bb..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "test-case-simple-subinvoke" -version = "0.1.0" -description = "test-case-simple-subinvoke wrapper" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib", "rlib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/polywrap.build.yaml deleted file mode 100644 index d7b5ff8dc8..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: test-case-simple-subinvoke-1 -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/polywrap.yaml deleted file mode 100644 index 7dd8da3c4c..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/polywrap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.2.0 -project: - name: test-case-simple-subinvoke - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/schema.graphql deleted file mode 100644 index af3a9c4bdc..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/schema.graphql +++ /dev/null @@ -1,3 +0,0 @@ -type Module { - iThrow(a: Int!): Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/src/lib.rs deleted file mode 100644 index 764039b371..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/1-subinvoke/src/lib.rs +++ /dev/null @@ -1,9 +0,0 @@ -pub mod wrap; -pub use wrap::*; - -pub fn i_throw(args: ArgsIThrow) -> i32 { - if 2 == 2 { - panic!("I threw an error!"); - } - args.a + 1 -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/Cargo.toml b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/Cargo.toml deleted file mode 100644 index 740e0222d2..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "test-case-simple-invoke" -version = "0.1.0" -description = "test-case-simple-invoke wrapper" -authors = [ - "Kobby Pentangeli ", - "Jordan Ellis " -] -repository = "https://github.com/polywrap/monorepo" -license = "MIT" -edition = "2021" - -[dependencies] -polywrap-wasm-rs = { path = "../../../../../../wasm/rs" } -serde = { version = "1.0", features = ["derive"] } - -[lib] -crate-type = ["cdylib", "rlib"] - -[profile.release] -opt-level = 's' -lto = true -panic = 'abort' \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/polywrap.build.yaml b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/polywrap.build.yaml deleted file mode 100644 index 202f47b017..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/polywrap.build.yaml +++ /dev/null @@ -1,7 +0,0 @@ -format: 0.2.0 -strategies: - image: - name: test-case-simple-invoke -linked_packages: - - name: polywrap-wasm-rs - path: ../../../../../../wasm/rs diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/polywrap.yaml b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/polywrap.yaml deleted file mode 100644 index 07fc3eaf86..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/polywrap.yaml +++ /dev/null @@ -1,14 +0,0 @@ -format: 0.2.0 -project: - name: test-case-simple-invoke - type: wasm/rust -source: - schema: ./schema.graphql - module: ./Cargo.toml - import_abis: - - uri: ens/bad-math.eth - abi: ../0-subinvoke/build/wrap.info - - uri: ens/not-found.eth - abi: ../0-subinvoke/build/wrap.info -extensions: - build: ./polywrap.build.yaml \ No newline at end of file diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/schema.graphql b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/schema.graphql deleted file mode 100644 index 0b784f3ed9..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/schema.graphql +++ /dev/null @@ -1,7 +0,0 @@ -#import * into BadMath from "ens/bad-math.eth" -#import * into NotFound from "ens/not-found.eth" - -type Module { - throwsInTwoSubinvokeLayers(a: Int!, b: Int!): Int! - subWrapperNotFound(a: Int!, b: Int!): Int! -} diff --git a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/src/lib.rs b/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/src/lib.rs deleted file mode 100644 index 787edb3ee1..0000000000 --- a/packages/test-cases/cases/wrappers/wasm-rs/subinvoke-error/invoke/src/lib.rs +++ /dev/null @@ -1,18 +0,0 @@ -pub mod wrap; -pub use wrap::{*, imported::bad_math_module, imported::not_found_module}; - -pub fn throws_in_two_subinvoke_layers(args: ArgsThrowsInTwoSubinvokeLayers) -> i32 { - let imported_args = bad_math_module::ArgsSubInvokeWillThrow { - a: args.a, - b: args.b - }; - BadMathModule::sub_invoke_will_throw(&imported_args).unwrap() -} - -pub fn sub_wrapper_not_found(args: ArgsSubWrapperNotFound) -> i32 { - let imported_args = not_found_module::ArgsSubInvokeWillThrow { - a: args.a, - b: args.b - }; - NotFoundModule::sub_invoke_will_throw(&imported_args).unwrap() -} \ No newline at end of file diff --git a/packages/test-cases/index.ts b/packages/test-cases/index.ts index 1276af9e9e..b86122b1b1 100644 --- a/packages/test-cases/index.ts +++ b/packages/test-cases/index.ts @@ -2,6 +2,9 @@ import path from "path"; import { readFileSync, existsSync } from "fs"; import { normalizeLineEndings } from "@polywrap/os-js"; +import admZip from 'adm-zip'; +const axios = require("axios"); +const shell = require("shelljs"); export const GetPathToBindTestFiles = () => `${__dirname}/cases/bind` export const GetPathToComposeTestFiles = () => `${__dirname}/cases/compose` @@ -64,3 +67,36 @@ function getFilePath( return path.join(directory, file); } } + +export async function fetchWrappers(): Promise { + // function to fetch file from GitHub release + async function fetchFromGithub(url: string) { + // fetch file + const response = await axios.get(url, { responseType: 'arraybuffer' }); + if (response.status !== 200) { + throw new Error(`Failed to fetch file from ${url}`); + } + return response.data; + } + + function unzipFile(fileBuffer: Buffer, destination: string) { + // create adm-zip instance + const zip = new admZip(fileBuffer); + // extract archive + zip.extractAllTo(destination, /*overwrite*/ true); + } + + const tag = "0.0.1-pre.7" + const repoName = "wasm-test-harness" + const url = `https://github.com/polywrap/${repoName}/releases/download/${tag}/wrappers`; + + try { + const buffer = await fetchFromGithub(url); + const zipBuiltFolder = './cases/wrappers'; + unzipFile(buffer, zipBuiltFolder); + shell.exec(`rm -rf node_modules`) + console.log(`Wrappers folder fetch successful`); + } catch (error) { + console.log(`An error occurred: ${error.message}`); + } +} \ No newline at end of file diff --git a/packages/test-cases/package.json b/packages/test-cases/package.json index 5bbd5ec150..826b70c979 100644 --- a/packages/test-cases/package.json +++ b/packages/test-cases/package.json @@ -5,7 +5,16 @@ "version": "0.10.0-pre.8", "license": "MIT", "main": "index.ts", + "scripts": { + "generate:wrappers": "npx ts-node -e \"import { fetchWrappers } from './'; (async () => await fetchWrappers())()\"" + }, "dependencies": { "@polywrap/os-js": "0.10.0-pre.8" + }, + "devDependencies": { + "@types/adm-zip": "0.5.0", + "adm-zip": "0.5.10", + "axios": "1.2.2", + "shelljs": "0.8.5" } } diff --git a/yarn.lock b/yarn.lock index 8c526e5796..7eb904cc92 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2377,6 +2377,13 @@ mkdirp "^1.0.4" multimatch "^5.0.0" +"@types/adm-zip@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@types/adm-zip/-/adm-zip-0.5.0.tgz#94c90a837ce02e256c7c665a6a1eb295906333c1" + integrity sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw== + dependencies: + "@types/node" "*" + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.20.0" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" @@ -2799,6 +2806,11 @@ add-stream@^1.0.0: resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== +adm-zip@0.5.10: + version "0.5.10" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.5.10.tgz#4a51d5ab544b1f5ce51e1b9043139b639afff45b" + integrity sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -3135,6 +3147,15 @@ axios@0.21.4: dependencies: follow-redirects "^1.14.0" +axios@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.2.tgz#72681724c6e6a43a9fea860fc558127dbe32f9f1" + integrity sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" @@ -3517,9 +3538,9 @@ camelcase@^6.0.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001449: - version "1.0.30001452" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz#dff7b8bb834b3a91808f0a9ff0453abb1fbba02a" - integrity sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w== + version "1.0.30001453" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001453.tgz#6d3a1501622bf424a3cee5ad9550e640b0de3de8" + integrity sha512-R9o/uySW38VViaTrOtwfbFEiBFUh7ST3uIG4OEymIG3/uKdHDO4xk/FaqfUw0d+irSUyFPy3dZszf9VvSTPnsA== capture-exit@^2.0.0: version "2.0.0" @@ -4359,9 +4380,9 @@ electron-fetch@^1.7.2: encoding "^0.1.13" electron-to-chromium@^1.4.284: - version "1.4.298" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.298.tgz#d6f91a170c67e5e9d55d526e74c1649f388c9125" - integrity sha512-dJZurgxDeaqn90VmS23Xz+QPQQl84BxnlAfwCDFNjfEhqO2yLMDkeaDoJ1yPXAbmiqTi+hd5TpB5zi1N4hwBuQ== + version "1.4.299" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.299.tgz#faa2069cd4879a73e540e533178db5c618768d41" + integrity sha512-lQ7ijJghH6pCGbfWXr6EY+KYCMaRSjgsY925r1p/TlpSfVM1VjHTcn1gAc15VM4uwti283X6QtjPTXdpoSGiZQ== elliptic@6.5.4: version "6.5.4" @@ -5150,7 +5171,7 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -follow-redirects@^1.14.0: +follow-redirects@^1.14.0, follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -5172,7 +5193,7 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -form-data@4.0.0: +form-data@4.0.0, form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== @@ -5449,7 +5470,7 @@ glob-promise@^4.2.2: dependencies: "@types/glob" "^7.1.3" -glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5857,6 +5878,11 @@ internal-slot@^1.0.4: has "^1.0.3" side-channel "^1.0.4" +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + intl-messageformat-parser@6.4.2: version "6.4.2" resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.4.2.tgz#e2d28c3156c27961ead9d613ca55b6a155078d7d" @@ -8903,6 +8929,11 @@ protons@^2.0.0: uint8arrays "^3.0.0" varint "^5.0.0" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -9181,6 +9212,13 @@ receptacle@^1.3.2: dependencies: ms "^2.1.1" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -9304,7 +9342,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.10.0, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.22.1: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.22.1: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -9514,6 +9552,15 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shelljs@0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"