diff --git a/packages/interfaces/http/README.md b/packages/interfaces/http/README.md deleted file mode 100644 index 30404ce4c5..0000000000 --- a/packages/interfaces/http/README.md +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/packages/interfaces/http/deployment.json b/packages/interfaces/http/deployment.json deleted file mode 100644 index 27b3c3552e..0000000000 --- a/packages/interfaces/http/deployment.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "name": "ipfs_deploy", - "steps": [ - { - "name": "ipfs_deploy", - "id": "ipfs_deploy.ipfs_deploy", - "input": "wrap://fs/./build", - "result": "wrap://ipfs/QmVTcwX6SoGuon4Qa4oK3uYTiTJxMB1eWtrKZfAof4Kd5r" - } - ] - } -] \ No newline at end of file diff --git a/packages/interfaces/http/package.json b/packages/interfaces/http/package.json deleted file mode 100644 index dd57387386..0000000000 --- a/packages/interfaces/http/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@polywrap/http-interface", - "description": "Polywrap Http Interface", - "version": "0.10.0-pre.7", - "scripts": { - "build": "node ../../../dependencies/node_modules/polywrap/bin/polywrap build", - "lint": "eslint --color -c ../../../.eslintrc.js .", - "test:env:up": "npx polywrap infra up --modules=eth-ens-ipfs", - "test:env:down": "npx polywrap infra down --modules=eth-ens-ipfs", - "deploy": "node ../../../dependencies/node_modules/polywrap/bin/polywrap deploy" - }, - "devDependencies": { - "polywrap": "0.10.0-pre.7" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/interfaces/http/polywrap.deploy.yaml b/packages/interfaces/http/polywrap.deploy.yaml deleted file mode 100644 index e36638b454..0000000000 --- a/packages/interfaces/http/polywrap.deploy.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.2.0 -jobs: - ipfs_deploy: - steps: - - name: ipfs_deploy - package: ipfs - uri: fs/./build - config: - gatewayUri: https://ipfs.wrappers.io diff --git a/packages/interfaces/http/polywrap.yaml b/packages/interfaces/http/polywrap.yaml deleted file mode 100644 index 3e453e4c6e..0000000000 --- a/packages/interfaces/http/polywrap.yaml +++ /dev/null @@ -1,8 +0,0 @@ -format: 0.2.0 -project: - name: http-interface - type: interface -source: - schema: ./src/schema.graphql -extensions: - deploy: ./polywrap.deploy.yaml diff --git a/packages/interfaces/http/src/schema.graphql b/packages/interfaces/http/src/schema.graphql deleted file mode 100644 index e1131fcbb6..0000000000 --- a/packages/interfaces/http/src/schema.graphql +++ /dev/null @@ -1,42 +0,0 @@ -type Response { - status: Int! - statusText: String! - headers: Map @annotate(type: "Map") - body: String -} - -type Request { - headers: Map @annotate(type: "Map") - urlParams: Map @annotate(type: "Map") - responseType: ResponseType! - """The body of the request. If present, the `formData` property will be ignored.""" - body: String - """ - An alternative to the standard request body, 'formData' is expected to be in the 'multipart/form-data' format. - If present, the `body` property is not null, `formData` will be ignored. - Otherwise, if formData is not null, the following header will be added to the request: 'Content-Type: multipart/form-data'. - """ - formData: [FormDataEntry!] - timeout: UInt32 -} - -type FormDataEntry { - """FormData entry key""" - name: String! - """If 'type' is defined, value is treated as a base64 byte string""" - value: String - """File name to report to the server""" - fileName: String - """MIME type (https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types). Defaults to empty string.""" - type: String -} - -enum ResponseType { - TEXT - BINARY -} - -type Module { - get(url: String!, request: Request): Response - post(url: String!, request: Request): Response -} \ No newline at end of file diff --git a/packages/js/client-config-builder/README.md b/packages/js/client-config-builder/README.md index 0daa99d9fa..31aee395ba 100644 --- a/packages/js/client-config-builder/README.md +++ b/packages/js/client-config-builder/README.md @@ -530,7 +530,7 @@ export const defaultPackages = { ipfs: "wrap://ens/ipfs.polywrap.eth", ensResolver: "wrap://ens/ens-resolver.polywrap.eth", ethereum: "wrap://ens/ethereum.polywrap.eth", - http: "wrap://ens/http.polywrap.eth", + http: "wrap://plugin/http", httpResolver: "wrap://ens/http-resolver.polywrap.eth", logger: "wrap://plugin/logger", fileSystem: "wrap://ens/fs.polywrap.eth", @@ -543,6 +543,7 @@ export const defaultInterfaces = { uriResolver: "wrap://ens/uri-resolver.core.polywrap.eth", concurrent: "wrap://ens/goerli/interface.concurrent.wrappers.eth", logger: "wrap://ens/wrappers.polywrap.eth:logger@1.0.0", + http: "wrap://ens/wrappers.polywrap.eth:http@1.1.0", }; export const getDefaultConfig = (): ClientConfig => { @@ -579,6 +580,14 @@ export const getDefaultConfig = (): ClientConfig => { from: new Uri(defaultInterfaces.logger), to: new Uri(defaultPackages.logger), }, + { + from: new Uri("wrap://ens/http.polywrap.eth"), + to: new Uri(defaultInterfaces.http), + }, + { + from: new Uri(defaultInterfaces.http), + to: new Uri(defaultPackages.http), + }, ], interfaces: [ { diff --git a/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts b/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts index 9bee88c2b2..0d03d78d95 100644 --- a/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts +++ b/packages/js/client-config-builder/src/bundles/getDefaultConfig.ts @@ -35,7 +35,7 @@ export const defaultPackages = { ipfs: "wrap://ens/ipfs.polywrap.eth", ensResolver: "wrap://ens/ens-resolver.polywrap.eth", ethereum: "wrap://ens/ethereum.polywrap.eth", - http: "wrap://ens/http.polywrap.eth", + http: "wrap://plugin/http", httpResolver: "wrap://ens/http-resolver.polywrap.eth", logger: "wrap://plugin/logger", fileSystem: "wrap://ens/fs.polywrap.eth", @@ -48,6 +48,7 @@ export const defaultInterfaces = { uriResolver: "wrap://ens/uri-resolver.core.polywrap.eth", concurrent: "wrap://ens/goerli/interface.concurrent.wrappers.eth", logger: "wrap://ens/wrappers.polywrap.eth:logger@1.0.0", + http: "wrap://ens/wrappers.polywrap.eth:http@1.1.0", }; export const getDefaultConfig = (): ClientConfig => { @@ -84,6 +85,14 @@ export const getDefaultConfig = (): ClientConfig => { from: new Uri(defaultInterfaces.logger), to: new Uri(defaultPackages.logger), }, + { + from: new Uri("wrap://ens/http.polywrap.eth"), + to: new Uri(defaultInterfaces.http), + }, + { + from: new Uri(defaultInterfaces.http), + to: new Uri(defaultPackages.http), + }, ], interfaces: [ { diff --git a/packages/js/plugins/http/README.md b/packages/js/plugins/http/README.md deleted file mode 100644 index 050dc14c74..0000000000 --- a/packages/js/plugins/http/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# @polywrap/http-plugin-js - -Http plugin curently supports two different methods `GET` and `POST`. Similar to calling axios, when defining request you need to specify a response type. Headers and query parameters may also be defined. - -## Response Types - -`TEXT` - The server will respond with text, the HTTP plugin will return the text as-is. - -`BINARY` - The server will respond with binary data (_ArrayBuffer_), the HTTP plugin will encode as a **base64** string and return it. - -## GET request - -Below is sample invocation of the `GET` request with custom request headers and query parameters (`urlParams`). - -```ts -const response = await polywrapClient.invoke({ - uri: new Uri("wrap://ens/http.polywrap.eth"), - method: "get", - args: { - url: "http://www.example.com/api" - request: { - responseType: "TEXT" - urlParams: [{key: "query", value: "foo"}] - headers: [{key: "X-Request-Header", value: "req-foo"}] - } - } -}) -``` - -## POST request - -Below is sample invocation of the `POST` request with custom request headers and query parameters (`urlParams`). It is also possible to set request body as shown below. - -```ts -const response = await polywrapClient.invoke({ - uri: new Uri("wrap://ens/http.polywrap.eth"), - method: "post", - args: { - url: "http://www.example.com/api" - request: { - responseType: "TEXT" - urlParams: [{key: "query", value: "foo"}] - headers: [{key: "X-Request-Header", value: "req-foo"}] - body: "{data: 'test-request'}" - } - } -}) -``` diff --git a/packages/js/plugins/http/jest.config.js b/packages/js/plugins/http/jest.config.js deleted file mode 100644 index 9a342dfeda..0000000000 --- a/packages/js/plugins/http/jest.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - roots: ["/src"], - testMatch: ["**/?(*.)+(spec|test).+(ts|tsx|js)"], - transform: { - "^.+\\.(ts|tsx)$": "ts-jest", - }, - modulePathIgnorePatterns: ["/src/__tests__/e2e/integration/"], - testPathIgnorePatterns: ["/src/__tests__/e2e/integration/"], - transformIgnorePatterns: ["/src/__tests__/e2e/integration/"], - testEnvironment: "node", -}; diff --git a/packages/js/plugins/http/package.json b/packages/js/plugins/http/package.json deleted file mode 100644 index 9cd45def83..0000000000 --- a/packages/js/plugins/http/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "@polywrap/http-plugin-js", - "description": "Polywrap HTTP Javascript Plugin", - "version": "0.10.0-pre.7", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/polywrap/monorepo.git" - }, - "main": "build/index.js", - "files": [ - "build" - ], - "scripts": { - "build": "rimraf ./build && yarn codegen && tsc --project tsconfig.build.json", - "codegen": "node ../../../../dependencies/node_modules/polywrap/bin/polywrap codegen", - "lint": "eslint --color -c ../../../../.eslintrc.js src/", - "test": "jest --passWithNoTests --runInBand --verbose", - "test:ci": "jest --passWithNoTests --runInBand --verbose", - "test:watch": "jest --watch --passWithNoTests --verbose" - }, - "dependencies": { - "@polywrap/core-js": "0.10.0-pre.7", - "@polywrap/plugin-js": "0.10.0-pre.7", - "axios": "0.21.4", - "form-data": "4.0.0" - }, - "devDependencies": { - "@polywrap/client-js": "0.10.0-pre.7", - "@polywrap/fs-plugin-js": "0.10.0-pre.7", - "@polywrap/fs-resolver-plugin-js": "0.10.0-pre.7", - "@polywrap/test-env-js": "0.10.0-pre.7", - "@polywrap/uri-resolver-extensions-js": "0.10.0-pre.7", - "@polywrap/uri-resolvers-js": "0.10.0-pre.7", - "@types/jest": "26.0.8", - "@types/prettier": "2.6.0", - "jest": "26.6.3", - "nock": "13.0.7", - "rimraf": "3.0.2", - "ts-jest": "26.5.4", - "ts-node": "8.10.2", - "typescript": "4.1.6" - }, - "gitHead": "7346adaf5adb7e6bbb70d9247583e995650d390a", - "publishConfig": { - "access": "public" - } -} diff --git a/packages/js/plugins/http/polywrap.yaml b/packages/js/plugins/http/polywrap.yaml deleted file mode 100644 index 5843e88eff..0000000000 --- a/packages/js/plugins/http/polywrap.yaml +++ /dev/null @@ -1,10 +0,0 @@ -format: 0.2.0 -project: - type: plugin/typescript - name: Http -source: - module: ./src/index.ts - schema: ./src/schema.graphql - import_abis: - - uri: "ens/http.polywrap.eth" - abi: ../../../interfaces/http/build/wrap.info diff --git a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts deleted file mode 100644 index 8e7d3ae165..0000000000 --- a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts +++ /dev/null @@ -1,385 +0,0 @@ -import { httpPlugin } from "../.."; -import { Http_Response } from "../../wrap"; - -import { PolywrapClient } from "@polywrap/client-js"; -import { UriResolver } from "@polywrap/uri-resolvers-js"; - -import nock from "nock"; -import { WrapError } from "@polywrap/core-js"; -import { initTestEnvironment, stopTestEnvironment, providers } from "@polywrap/test-env-js"; - -jest.setTimeout(360000); - -const defaultReplyHeaders = { - "access-control-allow-origin": "*", - "access-control-allow-credentials": "true", -}; - -describe("e2e tests for HttpPlugin", () => { - let polywrapClient: PolywrapClient; - - beforeAll(async () => { - await initTestEnvironment(); - }); - - beforeEach(() => { - polywrapClient = new PolywrapClient( - { - resolver: UriResolver.from({ - uri: "wrap://ens/http.polywrap.eth", - package: httpPlugin({}), - }), - }, - { noDefaults: true } - ); - }); - - afterAll(async () => { - await stopTestEnvironment(); - }); - - describe("get method", () => { - test("successful request with response type as TEXT", async () => { - nock("http://www.example.com") - .defaultReplyHeaders(defaultReplyHeaders) - .get("/api") - .reply(200, '{data: "test-response"}'); - - const response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "get", - args: { - url: "http://www.example.com/api", - request: { - responseType: "TEXT", - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeDefined(); - expect(response.value?.status).toBe(200); - expect(response.value?.body).toBe('{data: "test-response"}'); - expect(response.value?.headers?.size).toEqual(2); // default reply headers - }); - - test("successful request with response type as BINARY", async () => { - nock("http://www.example.com") - .defaultReplyHeaders(defaultReplyHeaders) - .get("/api") - .reply(200, '{data: "test-response"}'); - - const response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "get", - args: { - url: "http://www.example.com/api", - request: { - responseType: "BINARY", - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeDefined(); - expect(response.value?.status).toBe(200); - expect(response.value?.body).toBe( - Buffer.from('{data: "test-response"}').toString("base64") - ); - expect(response.value?.headers?.size).toEqual(2); // default reply headers - }); - - test("successful request with query params and request headers", async () => { - nock("http://www.example.com", { - reqheaders: { "X-Request-Header": "req-foo" }, - }) - .defaultReplyHeaders(defaultReplyHeaders) - .get("/api") - .query({ query: "foo" }) - .reply(200, '{data: "test-response"}', { - "X-Response-Header": "resp-foo", - }); - - const response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "get", - args: { - url: "http://www.example.com/api", - request: { - responseType: "TEXT", - urlParams: new Map([["query", "foo"]]), - headers: new Map([["X-Request-Header", "req-foo"]]), - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeDefined(); - expect(response.value?.status).toBe(200); - expect(response.value?.body).toBe('{data: "test-response"}'); - expect(response.value?.headers).toEqual( - new Map([ - ["x-response-header", "resp-foo"], - ["access-control-allow-origin", "*"], - ["access-control-allow-credentials", "true"], - ]) - ); - }); - - test("failed request", async () => { - nock("http://www.example.com") - .defaultReplyHeaders(defaultReplyHeaders) - .get("/api") - .reply(404); - - let response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "get", - args: { - url: "http://www.example.com/api", - request: { - responseType: "TEXT", - }, - }, - }); - - response = response as { ok: false; error: WrapError | undefined }; - expect(response.error).toBeDefined(); - expect(response.ok).toBeFalsy(); - }); - }); - - describe("post method", () => { - test("successful request with request type as application/json", async () => { - const reqPayload = { - data: "test-request", - }; - const reqPayloadStringified = JSON.stringify(reqPayload); - - const resPayload = { - data: "test-response", - }; - const resPayloadStringfified = JSON.stringify(resPayload); - - nock("http://www.example.com") - .defaultReplyHeaders(defaultReplyHeaders) - .post("/api", reqPayloadStringified) - .reply(200, resPayloadStringfified); - - const response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "post", - args: { - url: "http://www.example.com/api", - request: { - headers: new Map([["Content-Type", "application/json"]]), - responseType: "TEXT", - body: `{\"data\":\"test-request\"}`, - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeDefined(); - expect(response.value?.status).toBe(200); - expect(response.value?.body).toBe(resPayloadStringfified); - expect(response.value?.headers?.size).toEqual(2); // default reply headers - }); - - test("successful request with response type as TEXT", async () => { - nock("http://www.example.com") - .defaultReplyHeaders(defaultReplyHeaders) - .post("/api", "{data: 'test-request'}") - .reply(200, '{data: "test-response"}'); - - const response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "post", - args: { - url: "http://www.example.com/api", - request: { - responseType: "TEXT", - body: "{data: 'test-request'}", - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeDefined(); - expect(response.value?.status).toBe(200); - expect(response.value?.body).toBe('{data: "test-response"}'); - expect(response.value?.headers?.size).toEqual(2); // default reply headers - }); - - test("successful request with response type as BINARY", async () => { - nock("http://www.example.com") - .defaultReplyHeaders(defaultReplyHeaders) - .post("/api", "{data: 'test-request'}") - .reply(200, '{data: "test-response"}'); - - const response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "post", - args: { - url: "http://www.example.com/api", - request: { - responseType: "BINARY", - body: "{data: 'test-request'}", - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeDefined(); - expect(response.value?.status).toBe(200); - expect(response.value?.body).toBe( - Buffer.from('{data: "test-response"}').toString("base64") - ); - expect(response.value?.headers?.size).toEqual(2); // default reply headers - }); - - test("successful request with query params and request headers", async () => { - nock("http://www.example.com", { - reqheaders: { "X-Request-Header": "req-foo" }, - }) - .defaultReplyHeaders(defaultReplyHeaders) - .post("/api", "{data: 'test-request'}") - .query({ query: "foo" }) - .reply(200, '{data: "test-response"}', { - "X-Response-Header": "resp-foo", - }); - - const response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "post", - args: { - url: "http://www.example.com/api", - request: { - responseType: "TEXT", - body: "{data: 'test-request'}", - urlParams: new Map([["query", "foo"]]), - headers: new Map([["X-Request-Header", "req-foo"]]), - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeDefined(); - expect(response.value?.status).toBe(200); - expect(response.value?.body).toBe('{data: "test-response"}'); - expect(response.value?.headers).toEqual( - new Map([ - ["x-response-header", "resp-foo"], - ["access-control-allow-origin", "*"], - ["access-control-allow-credentials", "true"], - ]) - ); - }); - - test("failed request", async () => { - nock("http://www.example.com") - .defaultReplyHeaders(defaultReplyHeaders) - .post("/api") - .reply(404); - - let response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "post", - args: { - url: "http://www.example.com/api", - request: { - responseType: "TEXT", - }, - }, - }); - - response = response as { ok: false; error: WrapError | undefined }; - expect(response.error).toBeDefined(); - expect(response.ok).toBeFalsy(); - }); - - test("successful request with form-data (simple)", async () => { - const response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "post", - args: { - url: `${providers.ipfs}/api/v0/add`, - request: { - responseType: "TEXT", - formData:[{ - name:"test.txt", - value:"QSBuZXcgc2FtcGxlIGZpbGU=", - fileName:"test.txt", - type:"application/octet-stream" - }], - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeDefined(); - expect(response.value?.status).toBe(200); - expect(response.value?.body).toBe(JSON.stringify({ - Name: "test.txt", - Hash: "Qmawvzw32Jq7RbMw2K8axEbzfNK74NPynBoq4tJnWvkYqP", - Size: "25" - })); - }); - - test("successful request with form-data (complex)", async () => { - const response = await polywrapClient.invoke({ - uri: "wrap://ens/http.polywrap.eth", - method: "post", - args: { - url: `${providers.ipfs}/api/v0/add`, - request: { - responseType: "TEXT", - formData:[ - { name: "file_0.txt", value: "ZmlsZV8w", fileName: "file_0.txt", type: "application/octet-stream" }, - { name: "file_1.txt", value: "ZmlsZV8x",fileName: "file_1.txt", type: "application/octet-stream" }, - { name: "directory_A", value: null, fileName: "directory_A", type: "application/x-directory" }, - { name: "directory_A/file_A_0.txt", value: "ZmlsZV9BXzA=", fileName: "directory_A%2Ffile_A_0.txt", type: "application/octet-stream" }, - { name: "directory_A/file_A_1.txt", value: "ZmlsZV9BXzE=", fileName: "directory_A%2Ffile_A_1.txt", type: "application/octet-stream" } - ], - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeDefined(); - expect(response.value?.status).toBe(200); - - const results = response.value?.body?.trim() - .split("\n") - .map((v) => JSON.parse(v)); - - expect(results).toStrictEqual([ - { - Name: "file_0.txt", - Hash: "QmV3uDt3KhEYchouUzEbfz7FBA2c2LvNo76dxLLwJW76b1", - Size: "14" - }, - { - Name: "file_1.txt", - Hash: "QmYwMByE4ibjuMu2nRYRfBweJGJErjmMXfZ92srKhYfq5f", - Size: "14" - }, - { - Name: "directory_A/file_A_0.txt", - Hash: "QmeYp73qnn8EdogE4d6BhQCHtep7dkRC8FgdE3Qbo4nY9c", - Size: "16" - }, - { - Name: "directory_A/file_A_1.txt", - Hash: "QmWetZjwHWuGsDyxX6ae5wGS68mFTXC5x61H1TUNxqBXzn", - Size: "16" - }, - { - Name: "directory_A", - Hash: "Qmb5XsySizDeTn1kvNbyiiNy9eyg3Lb6EwGjQt7iiKBxoL", - Size: "144" - }, - ]); - }); - }); -}); diff --git a/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts b/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts deleted file mode 100644 index d8227ecc20..0000000000 --- a/packages/js/plugins/http/src/__tests__/e2e/integration.spec.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { Http_Response } from "../../wrap"; - -import { PolywrapClient } from "@polywrap/client-js"; -import { buildWrapper } from "@polywrap/test-env-js"; -import nock from "nock"; -import { getClient } from "../helpers/getClient"; - -jest.setTimeout(360000); - -const defaultReplyHeaders = { - "access-control-allow-origin": "*", - "access-control-allow-credentials": "true", -}; - -describe("e2e tests for HttpPlugin", () => { - describe("integration", () => { - let client: PolywrapClient; - - const wrapperPath = `${__dirname}/integration`; - const uri = `fs/${wrapperPath}/build`; - - beforeAll(async () => { - client = getClient(); - - await buildWrapper(wrapperPath, undefined, true); - }); - - it("get", async () => { - nock("http://www.example.com", { - reqheaders: { "X-Request-Header": "req-foo" }, - }) - .defaultReplyHeaders(defaultReplyHeaders) - .get("/api") - .query({ query: "foo" }) - .reply(200, '{data: "test-response"}', { - "X-Response-Header": "resp-foo", - }); - - const response = await client.invoke({ - uri, - method: "get", - args: { - url: "http://www.example.com/api", - request: { - responseType: "TEXT", - urlParams: new Map([["query", "foo"]]), - headers: new Map([["X-Request-Header", "req-foo"]]), - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeDefined(); - expect(response.value?.status).toBe(200); - }); - - it("post", async () => { - nock("http://www.example.com", { - reqheaders: { "X-Request-Header": "req-foo" }, - }) - .defaultReplyHeaders(defaultReplyHeaders) - .post("/api", "{data: 'test-request'}") - .query({ query: "foo" }) - .reply(200, '{data: "test-response"}', { - "X-Response-Header": "resp-foo", - }); - - const response = await client.invoke({ - uri, - method: "post", - args: { - url: "http://www.example.com/api", - request: { - responseType: "TEXT", - body: "{data: 'test-request'}", - urlParams: { query: "foo" }, - headers: new Map([["X-Request-Header", "req-foo"]]), - }, - }, - }); - - if (!response.ok) fail(response.error); - expect(response.value).toBeTruthy(); - expect(response.value?.status).toBe(200); - expect(response.value?.body).toBeTruthy(); - }); - }); -}); diff --git a/packages/js/plugins/http/src/__tests__/e2e/integration/.gitignore b/packages/js/plugins/http/src/__tests__/e2e/integration/.gitignore deleted file mode 100644 index ccc3d015c7..0000000000 --- a/packages/js/plugins/http/src/__tests__/e2e/integration/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -build -node_modules -wrap diff --git a/packages/js/plugins/http/src/__tests__/e2e/integration/package.json b/packages/js/plugins/http/src/__tests__/e2e/integration/package.json deleted file mode 100644 index c8f5f2c32e..0000000000 --- a/packages/js/plugins/http/src/__tests__/e2e/integration/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "http-js-plugin-integration-test", - "description": "HTTP JS Plugin Integration Test", - "private": true, - "version": "0.10.0-pre.7", - "scripts": { - "build": "yarn build:polywrap", - "build:polywrap": "npx polywrap build", - "test:env:up": "npx polywrap infra up --modules=eth-ens-ipfs", - "test:env:down": "npx polywrap infra down --modules=eth-ens-ipfs", - "deploy": "yarn deploy:polywrap", - "deploy:polywrap": "npx polywrap build --ipfs http://localhost:5001 --test-ens simplestorage.eth" - }, - "dependencies": { - "@polywrap/wasm-as": "0.10.0-pre.7", - "assemblyscript": "0.19.23" - } -} diff --git a/packages/js/plugins/http/src/__tests__/e2e/integration/polywrap.build.yaml b/packages/js/plugins/http/src/__tests__/e2e/integration/polywrap.build.yaml deleted file mode 100644 index 197f0e11e5..0000000000 --- a/packages/js/plugins/http/src/__tests__/e2e/integration/polywrap.build.yaml +++ /dev/null @@ -1,9 +0,0 @@ -format: 0.2.0 -strategies: - image: - node_version: "14.16.0" - include: - - ./package.json -linked_packages: - - name: "@polywrap/wasm-as" - path: ../../../../../../../wasm/as diff --git a/packages/js/plugins/http/src/__tests__/e2e/integration/polywrap.yaml b/packages/js/plugins/http/src/__tests__/e2e/integration/polywrap.yaml deleted file mode 100644 index 35d4ddb187..0000000000 --- a/packages/js/plugins/http/src/__tests__/e2e/integration/polywrap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -format: 0.2.0 -project: - name: HTTP-Integration - type: wasm/assemblyscript -source: - schema: ./schema.graphql - module: ./src/index.ts - import_abis: - - uri: "wrap://ens/http.polywrap.eth" - abi: ../../../../../../../interfaces/http/build/wrap.info -extensions: - build: ./polywrap.build.yaml diff --git a/packages/js/plugins/http/src/__tests__/e2e/integration/schema.graphql b/packages/js/plugins/http/src/__tests__/e2e/integration/schema.graphql deleted file mode 100644 index 3689eba5cf..0000000000 --- a/packages/js/plugins/http/src/__tests__/e2e/integration/schema.graphql +++ /dev/null @@ -1,13 +0,0 @@ -#import { Module, Request, Response } into HTTP from "wrap://ens/http.polywrap.eth" - -type Module { - get( - url: String! - request: HTTP_Request - ): HTTP_Response - - post( - url: String! - request: HTTP_Request - ): HTTP_Response -} diff --git a/packages/js/plugins/http/src/__tests__/e2e/integration/src/index.ts b/packages/js/plugins/http/src/__tests__/e2e/integration/src/index.ts deleted file mode 100644 index 66afe9e78e..0000000000 --- a/packages/js/plugins/http/src/__tests__/e2e/integration/src/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { - HTTP_Module, - HTTP_Response, - Args_get, - Args_post, -} from "./wrap"; - -export function get(args: Args_get): HTTP_Response | null { - return HTTP_Module.get({ - url: args.url, - request: args.request - }).unwrap(); -} - -export function post(args: Args_post): HTTP_Response | null { - return HTTP_Module.post({ - url: args.url, - request: args.request - }).unwrap(); -} diff --git a/packages/js/plugins/http/src/__tests__/helpers/getClient.ts b/packages/js/plugins/http/src/__tests__/helpers/getClient.ts deleted file mode 100644 index 3ceb9ef238..0000000000 --- a/packages/js/plugins/http/src/__tests__/helpers/getClient.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { - RecursiveResolver, - PackageToWrapperCacheResolver, - WrapperCache, - StaticResolver, -} from "@polywrap/uri-resolvers-js"; -import { PolywrapClient } from "@polywrap/client-js"; -import { fileSystemPlugin } from "@polywrap/fs-plugin-js"; -import { fileSystemResolverPlugin } from "@polywrap/fs-resolver-plugin-js"; -import { ExtendableUriResolver } from "@polywrap/uri-resolver-extensions-js"; -import { httpPlugin } from "../.."; - -export const getClient = () => { - return new PolywrapClient( - { - interfaces: [ - { - interface: ExtendableUriResolver.extInterfaceUri, - implementations: ["wrap://ens/fs-resolver.polywrap.eth"], - }, - ], - resolver: RecursiveResolver.from( - PackageToWrapperCacheResolver.from( - [ - StaticResolver.from([ - { - uri: "wrap://ens/http.polywrap.eth", - package: httpPlugin({}), - }, - { - uri: "wrap://ens/fs-resolver.polywrap.eth", - package: fileSystemResolverPlugin({}), - }, - { - uri: "wrap://ens/fs.polywrap.eth", - package: fileSystemPlugin({}), - }, - ]), - new ExtendableUriResolver(), - ], - new WrapperCache() - ) - ), - }, - { noDefaults: true } - ); -}; diff --git a/packages/js/plugins/http/src/__tests__/unit/index.test.ts b/packages/js/plugins/http/src/__tests__/unit/index.test.ts deleted file mode 100644 index 2157ccc202..0000000000 --- a/packages/js/plugins/http/src/__tests__/unit/index.test.ts +++ /dev/null @@ -1,210 +0,0 @@ -import { HttpPlugin } from "../.."; -import { Http_ResponseTypeEnum, CoreClient } from "../../wrap"; - -import axios, { AxiosResponse, AxiosRequestConfig } from "axios"; - -// mock axios -jest.mock("axios"); -const mockedAxios = jest.requireMock>("axios"); - -describe("test http plugin", () => { - afterAll(() => { - jest.restoreAllMocks(); - }); - - beforeEach(() => { - jest.clearAllMocks(); - }); - - describe("get method", () => { - const plugin = new HttpPlugin({}); - - test("valid request: text response type", async () => { - mockedAxios.get.mockResolvedValueOnce({ - headers: { ["Content-Type"]: "application/json; charset=utf-8" }, - status: 200, - statusText: "Ok", - data: "{result: 1001}", - config: { - responseType: "text", - }, - } as AxiosResponse); - - const response = await plugin.get( - { - url: "/api/test", - request: { - headers: new Map([ - ["Accept", "application/json"], - ["X-Test-Header", "test-header-value"], - ]), - urlParams: new Map([["q", "test-param"]]), - responseType: Http_ResponseTypeEnum.TEXT, - }, - }, - {} as CoreClient - ); - - expect(mockedAxios.get).lastCalledWith("/api/test", { - headers: { - ["Accept"]: "application/json", - ["X-Test-Header"]: "test-header-value", - }, - params: { q: "test-param" }, - responseType: "text", - } as AxiosRequestConfig); - - expect(response?.status).toBe(200); - expect(response?.statusText).toBe("Ok"); - expect(response?.headers).toStrictEqual( - new Map([["Content-Type", "application/json; charset=utf-8"]]) - ); - expect(response?.body).toBe("{result: 1001}"); - }); - - test("valid request: arraybuffer response type", async () => { - mockedAxios.get.mockResolvedValueOnce({ - headers: { ["Content-Type"]: "application/json; charset=utf-8" }, - status: 200, - statusText: "Ok", - data: Buffer.from("{result: 1001}"), - config: { - responseType: "arraybuffer", - }, - } as AxiosResponse); - - const response = await plugin.get( - { - url: "/api/test", - request: { - headers: new Map([ - ["Accept", "application/json"], - ["X-Test-Header", "test-header-value"], - ]), - urlParams: new Map([["q", "test-param"]]), - responseType: "BINARY", - }, - }, - {} as CoreClient - ); - - expect(mockedAxios.get).lastCalledWith("/api/test", { - headers: { - ["Accept"]: "application/json", - ["X-Test-Header"]: "test-header-value", - }, - params: { q: "test-param" }, - responseType: "arraybuffer", - } as AxiosRequestConfig); - - expect(response?.status).toBe(200); - expect(response?.statusText).toBe("Ok"); - expect(response?.headers).toStrictEqual( - new Map([["Content-Type", "application/json; charset=utf-8"]]) - ); - expect(response?.body).toBeTruthy(); - if (response?.body) { - expect(Buffer.from(response.body, "base64").toString()).toBe( - "{result: 1001}" - ); - } - }); - }); - - describe("post method", () => { - const plugin = new HttpPlugin({}); - - test("valid request with headers", async () => { - mockedAxios.post.mockResolvedValueOnce({ - headers: { ["Content-Type"]: "application/json; charset=utf-8" }, - status: 200, - statusText: "Ok", - data: "{response: 1001}", - config: { - responseType: "text", - }, - } as AxiosResponse); - - const response = await plugin.post( - { - url: "/api/test", - request: { - headers: new Map([ - ["Accept", "application/json"], - ["X-Test-Header", "test-header-value"], - ]), - urlParams: new Map([["q", "test-param"]]), - body: "{request: 1001}", - responseType: "TEXT", - }, - }, - {} as CoreClient - ); - - expect(mockedAxios.post).lastCalledWith("/api/test", "{request: 1001}", { - headers: { - ["Accept"]: "application/json", - ["X-Test-Header"]: "test-header-value", - }, - params: { q: "test-param" }, - responseType: "text", - } as AxiosRequestConfig); - - expect(response?.status).toBe(200); - expect(response?.statusText).toBe("Ok"); - expect(response?.headers).toStrictEqual( - new Map([["Content-Type", "application/json; charset=utf-8"]]) - ); - expect(response?.body).toBe("{response: 1001}"); - }); - - test("valid request with url params", async () => { - mockedAxios.post.mockResolvedValueOnce({ - headers: { ["Content-Type"]: "application/json; charset=utf-8" }, - status: 200, - statusText: "Ok", - data: Buffer.from("{response: 1001}"), - config: { - responseType: "arraybuffer", - }, - } as AxiosResponse); - - const response = await plugin.post( - { - url: "/api/test", - request: { - headers: new Map([ - ["Accept", "application/json"], - ["X-Test-Header", "test-header-value"], - ]), - urlParams: new Map([["q", "test-param"]]), - body: "{request: 1001}", - responseType: "BINARY", - }, - }, - {} as CoreClient - ); - - expect(mockedAxios.post).lastCalledWith("/api/test", "{request: 1001}", { - headers: { - ["Accept"]: "application/json", - ["X-Test-Header"]: "test-header-value", - }, - params: { q: "test-param" }, - responseType: "arraybuffer", - } as AxiosRequestConfig); - - expect(response?.status).toBe(200); - expect(response?.statusText).toBe("Ok"); - expect(response?.headers).toStrictEqual( - new Map([["Content-Type", "application/json; charset=utf-8"]]) - ); - expect(response?.body).toBeTruthy(); - if (response?.body) { - expect(Buffer.from(response.body, "base64").toString()).toBe( - "{response: 1001}" - ); - } - }); - }); -}); diff --git a/packages/js/plugins/http/src/__tests__/unit/util.test.ts b/packages/js/plugins/http/src/__tests__/unit/util.test.ts deleted file mode 100644 index 0ae0ccff6c..0000000000 --- a/packages/js/plugins/http/src/__tests__/unit/util.test.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { fromAxiosResponse, toAxiosRequestConfig } from "../../util"; -import { Http_ResponseTypeEnum } from "../../wrap"; - -describe("converting axios response", () => { - test("response type: text", () => { - const response = fromAxiosResponse({ - status: 200, - statusText: "Ok", - data: "body-content", - headers: { ["Accept"]: "application-json", ["X-Header"]: "test-value" }, - config: { responseType: "text" }, - }); - - expect(response.headers).toStrictEqual( - new Map([ - ["Accept", "application-json"], - ["X-Header", "test-value"], - ]) - ); - expect(response.status).toBe(200); - expect(response.statusText).toBe("Ok"); - expect(response.body).toBe("body-content"); - }); - - test("response type: text; with header as a map", () => { - const response = fromAxiosResponse({ - status: 200, - statusText: "Ok", - data: "body-content", - headers: { - ["Accept"]: "application-json", - ["X-Header"]: "test-value", - ["set-cookie"]: ["key=val;", "key2=val2;"], - }, - config: { responseType: "text" }, - }); - - expect(response.headers).toStrictEqual( - new Map([ - ["Accept", "application-json"], - ["X-Header", "test-value"], - ["set-cookie", "key=val; key2=val2;"], - ]) - ); - expect(response.status).toBe(200); - expect(response.statusText).toBe("Ok"); - expect(response.body).toBe("body-content"); - }); - - test("response type: arraybuffer", () => { - const response = fromAxiosResponse({ - status: 200, - statusText: "Ok", - data: Buffer.from("body-content"), - headers: { ["Accept"]: "application-json", ["X-Header"]: "test-value" }, - config: { responseType: "arraybuffer" }, - }); - - expect(response.headers).toStrictEqual( - new Map([ - ["Accept", "application-json"], - ["X-Header", "test-value"], - ]) - ); - expect(response.status).toBe(200); - expect(response.statusText).toBe("Ok"); - expect(response.body).toBe(Buffer.from("body-content").toString("base64")); - }); -}); - -describe("creating axios config", () => { - test("with headers", () => { - const config = toAxiosRequestConfig({ - headers: new Map([ - ["Accept", "application-json"], - ["X-Header", "test-value"], - ]), - responseType: "TEXT", - body: "body-content", - }); - - expect(config.headers).toStrictEqual({ - ["Accept"]: "application-json", - ["X-Header"]: "test-value", - }); - expect(config.params).toBeUndefined(); - expect(config.responseType).toBe("text"); - }); - - test("with url params", () => { - const config = toAxiosRequestConfig({ - urlParams: new Map([["tag", "data"]]), - responseType: Http_ResponseTypeEnum.BINARY, - body: "body-content", - }); - - expect(config.headers).toBeUndefined(); - expect(config.params).toStrictEqual({ ["tag"]: "data" }); - expect(config.responseType).toBe("arraybuffer"); - }); -}); diff --git a/packages/js/plugins/http/src/index.ts b/packages/js/plugins/http/src/index.ts deleted file mode 100644 index 21df292f03..0000000000 --- a/packages/js/plugins/http/src/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { - CoreClient, - Module, - Args_get, - Args_post, - Http_Response, - manifest, -} from "./wrap"; -import { fromAxiosResponse, toAxiosRequestConfig, toFormData } from "./util"; - -import axios, { AxiosResponse } from "axios"; -import { PluginFactory, PluginPackage } from "@polywrap/plugin-js"; - -type NoConfig = Record; - -export class HttpPlugin extends Module { - public async get( - args: Args_get, - _client: CoreClient - ): Promise { - const response = await axios.get( - args.url, - args.request ? toAxiosRequestConfig(args.request) : undefined - ); - return fromAxiosResponse(response); - } - - public async post( - args: Args_post, - _client: CoreClient - ): Promise { - let response: AxiosResponse; - if (args.request?.body) { - response = await axios.post( - args.url, - args.request.body, - toAxiosRequestConfig(args.request) - ); - } else if (args.request?.formData) { - const data = toFormData(args.request.formData); - const config = toAxiosRequestConfig(args.request); - config.headers = { - ...(config.headers as Record), - ...data.getHeaders(), - }; - response = await axios.post(args.url, data, config); - } else if (args.request) { - response = await axios.post(args.url, toAxiosRequestConfig(args.request)); - } else { - response = await axios.post(args.url); - } - return fromAxiosResponse(response); - } -} - -export const httpPlugin: PluginFactory = () => - new PluginPackage(new HttpPlugin({}), manifest); - -export const plugin = httpPlugin; diff --git a/packages/js/plugins/http/src/schema.graphql b/packages/js/plugins/http/src/schema.graphql deleted file mode 100644 index 904c884914..0000000000 --- a/packages/js/plugins/http/src/schema.graphql +++ /dev/null @@ -1,4 +0,0 @@ -#import { Module } into Http from "ens/http.polywrap.eth" - -type Module implements Http_Module { -} \ No newline at end of file diff --git a/packages/js/plugins/http/src/util.ts b/packages/js/plugins/http/src/util.ts deleted file mode 100644 index 11bc9316f9..0000000000 --- a/packages/js/plugins/http/src/util.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { - Http_Request, - Http_Response, - Http_ResponseTypeEnum, - Http_FormDataEntry, -} from "./wrap"; - -import { AxiosResponse, AxiosRequestConfig } from "axios"; -import FormData from "form-data"; - -/** - * Convert AxiosResponse to Response - * - * @param axiosResponse - */ -export function fromAxiosResponse( - axiosResponse: AxiosResponse -): Http_Response { - const responseHeaders = new Map(); - for (const key of Object.keys(axiosResponse.headers)) { - responseHeaders.set( - key, - Array.isArray(axiosResponse.headers[key]) - ? axiosResponse.headers[key].join(" ") - : axiosResponse.headers[key] - ); - } - - const response = { - status: axiosResponse.status, - statusText: axiosResponse.statusText, - headers: responseHeaders, - }; - - // encode bytes as base64 string if response is array buffer - if (axiosResponse.config.responseType == "arraybuffer") { - if (!Buffer.isBuffer(axiosResponse.data)) { - throw Error( - "HttpPlugin: Axios response data malformed, must be a buffer. Type: " + - typeof axiosResponse.data - ); - } - - return { - ...response, - body: Buffer.from(axiosResponse.data).toString("base64"), - }; - } else { - switch (typeof axiosResponse.data) { - case "string": - case "undefined": - return { - ...response, - body: axiosResponse.data, - }; - default: - return { - ...response, - body: JSON.stringify(axiosResponse.data), - }; - } - } -} - -/** - * Creates AxiosRequestConfig from Request - * - * @param request - */ -export function toAxiosRequestConfig( - request: Http_Request -): AxiosRequestConfig { - let responseType: "text" | "arraybuffer" = "text"; - - switch (request.responseType) { - case "BINARY": - case Http_ResponseTypeEnum.BINARY: - responseType = "arraybuffer"; - } - - let config: AxiosRequestConfig = { - responseType, - }; - - if (request.urlParams) { - config = { ...config, params: Object.fromEntries(request.urlParams) }; - } - - if (request.headers) { - config = { ...config, headers: Object.fromEntries(request.headers) }; - } - - if (request.timeout) { - config.timeout = request.timeout; - } - - return config; -} - -export function toFormData(entries: Http_FormDataEntry[]): FormData { - const fd = new FormData(); - entries.forEach((entry) => { - const options: FormData.AppendOptions = {}; - options.contentType = entry.type ?? undefined; - options.filename = entry.fileName ?? undefined; - let value: string | Buffer | undefined; - if (entry.type) { - value = entry.value - ? Buffer.from(entry.value, "base64") - : Buffer.alloc(0); - } else { - value = entry.value ?? undefined; - } - fd.append(entry.name, value, options); - }); - return fd; -} diff --git a/packages/js/plugins/http/tsconfig.build.json b/packages/js/plugins/http/tsconfig.build.json deleted file mode 100644 index 77aadfdd2f..0000000000 --- a/packages/js/plugins/http/tsconfig.build.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [ - "./src/**/*.ts" - ], - "exclude": [ - "./src/**/__tests__" - ] -} diff --git a/packages/js/plugins/http/tsconfig.json b/packages/js/plugins/http/tsconfig.json deleted file mode 100644 index 720d843436..0000000000 --- a/packages/js/plugins/http/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../../../tsconfig", - "compilerOptions": { - "outDir": "build" - }, - "include": [ - "./src/**/*.ts" - ], - "exclude": [ - "./**/.polywrap/**/*.ts" - ] -} diff --git a/packages/js/plugins/uri-resolvers/http-resolver/polywrap.yaml b/packages/js/plugins/uri-resolvers/http-resolver/polywrap.yaml index 528a101ff1..3dbdb65e59 100644 --- a/packages/js/plugins/uri-resolvers/http-resolver/polywrap.yaml +++ b/packages/js/plugins/uri-resolvers/http-resolver/polywrap.yaml @@ -8,5 +8,3 @@ source: import_abis: - uri: "ens/uri-resolver.core.polywrap.eth" abi: ../../../../interfaces/uri-resolver/src/schema.graphql - - uri: "ens/http.polywrap.eth" - abi: ../../../../interfaces/http/build/wrap.info diff --git a/packages/test-cases/cases/cli/app/codegen/002-with-plugin/polywrap.app.yaml b/packages/test-cases/cases/cli/app/codegen/002-with-plugin/polywrap.app.yaml index bfca839c70..40f884e2a9 100644 --- a/packages/test-cases/cases/cli/app/codegen/002-with-plugin/polywrap.app.yaml +++ b/packages/test-cases/cases/cli/app/codegen/002-with-plugin/polywrap.app.yaml @@ -4,6 +4,3 @@ project: type: app/typescript source: schema: ./schema.graphql - import_abis: - - uri: "wrap://ens/plugin.eth" - abi: "./../../../../../../js/plugins/http/build/wrap.info" diff --git a/packages/test-cases/cases/cli/app/codegen/002-with-plugin/schema.graphql b/packages/test-cases/cases/cli/app/codegen/002-with-plugin/schema.graphql index 245f3c4c73..31ca9a4625 100644 --- a/packages/test-cases/cases/cli/app/codegen/002-with-plugin/schema.graphql +++ b/packages/test-cases/cases/cli/app/codegen/002-with-plugin/schema.graphql @@ -1 +1 @@ -#import * into HTTP from "wrap://ens/plugin.eth" +#import * into HTTP from "wrap://ens/wrappers.polywrap.eth:http@1.0.0" diff --git a/yarn.lock b/yarn.lock index aeb41a73bf..a953335bde 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3408,6 +3408,16 @@ "@polywrap/plugin-js" "0.10.0-pre.6" axios "0.21.4" +"@polywrap/http-plugin-js@0.10.0-pre.7": + version "0.10.0-pre.7" + resolved "https://registry.yarnpkg.com/@polywrap/http-plugin-js/-/http-plugin-js-0.10.0-pre.7.tgz#2ce3106f1e32c78e68b71d58f2331bd79b88f659" + integrity sha512-1WXrx9etHq2qd88XzxC1ofqZA+RI4f5rz8BzH2e9lIzxiBQf4m8zj00dIB2xm+IaEAMq48l9u18CNiYDowIXUg== + dependencies: + "@polywrap/core-js" "0.10.0-pre.7" + "@polywrap/plugin-js" "0.10.0-pre.7" + axios "0.21.4" + form-data "4.0.0" + "@polywrap/http-resolver-plugin-js@0.10.0-pre.6": version "0.10.0-pre.6" resolved "https://registry.yarnpkg.com/@polywrap/http-resolver-plugin-js/-/http-resolver-plugin-js-0.10.0-pre.6.tgz#4b5c6a60a814f3900ef9cba60d6d302c41669a4d" @@ -11903,11 +11913,6 @@ lodash.merge@4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" - integrity sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg== - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -12843,16 +12848,6 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -nock@13.0.7: - version "13.0.7" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.0.7.tgz#9bc718c66bd0862dfa14601a9ba678a406127910" - integrity sha512-WBz73VYIjdbO6BwmXODRQLtn7B5tldA9pNpWJe5QTtTEscQlY5KXU4srnGzBOK2fWakkXj69gfTnXGzmrsaRWw== - dependencies: - debug "^4.1.0" - json-stringify-safe "^5.0.1" - lodash.set "^4.3.2" - propagate "^2.0.0" - node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -14723,11 +14718,6 @@ prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.13.1" -propagate@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" - integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== - proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"