From 30be9756ec0ca28d0b6c37795db7f5770d643dfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zg=C3=BCr=20Adem=20I=C5=9EIKLI?= Date: Sat, 28 Sep 2024 10:48:34 +0200 Subject: [PATCH 1/4] Added missing requests to the resource object --- src/Resource.ts | 55 ++++++++++++++++++++++++++++++--------------- tests/index.spec.js | 45 +++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 18 deletions(-) diff --git a/src/Resource.ts b/src/Resource.ts index 713ff07..8568d50 100644 --- a/src/Resource.ts +++ b/src/Resource.ts @@ -484,44 +484,63 @@ export class Resource implements IQueryable { } /** - * Patch the resource + * Paginate the resource * - * @param data object + * @param query IPaginate * @returns object */ - async patch(data: object) { - return this.sendRequest("PATCH", data); + async paginate(query?: IPaginate): Promise { + this.params.append("page", query?.page?.toString() ?? "1"); + this.params.append("per_page", query?.perPage?.toString() ?? "10"); + return this.sendRequest("GET"); } /** - * Delete the resource + * Get the resource * - * @param data object - * @returns null + * @returns object */ - async delete() { - this.sendRequest("DELETE"); + async get() { + return this.sendRequest("GET"); } /** - * Paginate the resource + * Send a POSt request * - * @param query IPaginate + * @param data FormBody * @returns object */ - async paginate(query?: IPaginate): Promise { - this.params.append("page", query?.page?.toString() ?? "1"); - this.params.append("per_page", query?.perPage?.toString() ?? "10"); - return this.sendRequest("GET"); + async post(data?: FormBody) { + return this.sendRequest("POST", data); } /** - * Get the resource + * Send a PUT request * + * @param data FormBody * @returns object */ - async get() { - return this.sendRequest("GET"); + async put(data?: FormBody) { + return this.sendRequest("PUT", data); + } + + /** + * Send a PUT request + * + * @param data FormBody + * @returns object + */ + async patch(data?: FormBody) { + return this.sendRequest("PATCH", data); + } + + /** + * Send a DELETE request + * + * @returns null + */ + async delete() { + return this.sendRequest("DELETE"); } private async sendRequest(method: MethodType, data?: FormBody) { diff --git a/tests/index.spec.js b/tests/index.spec.js index c584cae..a413d24 100644 --- a/tests/index.spec.js +++ b/tests/index.spec.js @@ -264,4 +264,49 @@ describe("axe-api-client", () => { expect(request.method).toBe("GET"); expect(response).toBe(mockResponse); }); + + test(`post()`, async () => { + global.fetch = mock(200, "RESULT"); + + const data = { name: "John Doe" }; + + const response = await api.resource("users").post(data); + expect(global.fetch.mock.calls.length).toBe(1); + + const request = global.fetch.mock.calls[0][1]; + expect(request.url).toBe("https://axe-api.com/api/v1/users"); + expect(request.method).toBe("POST"); + expect(JSON.parse(request.body).name).toBe(data.name); + expect(response).toBe("RESULT"); + }); + + test(`put()`, async () => { + global.fetch = mock(200, "RESULT"); + + const data = { name: "John Doe" }; + + const response = await api.resource("users").put(data); + expect(global.fetch.mock.calls.length).toBe(1); + + const request = global.fetch.mock.calls[0][1]; + expect(request.url).toBe("https://axe-api.com/api/v1/users"); + expect(request.method).toBe("PUT"); + expect(JSON.parse(request.body).name).toBe(data.name); + expect(response).toBe("RESULT"); + }); + + test(`patch()`, async () => { + global.fetch = mock(200, "RESULT"); + + const data = { name: "John Doe" }; + + const response = await api.resource("users").patch(data); + expect(global.fetch.mock.calls.length).toBe(1); + + const request = global.fetch.mock.calls[0][1]; + expect(request.url).toBe("https://axe-api.com/api/v1/users"); + expect(request.method).toBe("PATCH"); + expect(JSON.parse(request.body).name).toBe(data.name); + expect(response).toBe("RESULT"); + }); }); From 6c3d0f46debd1ca0189f6555f849f05d157fc0aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zg=C3=BCr=20Adem=20I=C5=9EIKLI?= Date: Sat, 28 Sep 2024 10:50:27 +0200 Subject: [PATCH 2/4] Fixed changelog and docs --- CHANGELOG.md | 4 ++++ readme.md | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82c93f4..5c05514 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Release Notes +## [2.1.0 (2024-09-28)](https://github.com/axe-api/axe-api/compare/2.1.0...2.0.1) + +- Added missing requests to the Resource object + ## [2.0.1 (2024-09-28)](https://github.com/axe-api/axe-api/compare/2.0.1...2.0.0) - Fixed bundling issues diff --git a/readme.md b/readme.md index a9107f9..800593a 100644 --- a/readme.md +++ b/readme.md @@ -56,6 +56,15 @@ const response = await api.resource("users").insert({ }); ``` +## Post + +```js +const response = await api.resource("users").post({ + name: "Karl", + surname: "Popper", +}); +``` + ## Update ```js @@ -74,6 +83,15 @@ const response = await api.resource("users").patch({ }); ``` +## Put + +```js +const response = await api.resource("users").put({ + name: "Karl", + surname: "Popper", +}); +``` + ## Delete ```js From 9218c58d9bcf85887fedf65de8eb420e9e473a90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zg=C3=BCr=20Adem=20I=C5=9EIKLI?= Date: Sat, 28 Sep 2024 10:50:35 +0200 Subject: [PATCH 3/4] 2.1.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0441ed9..bd94a36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "axe-api-client", - "version": "2.0.1", + "version": "2.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "axe-api-client", - "version": "2.0.1", + "version": "2.1.0", "license": "MIT", "devDependencies": { "@babel/preset-env": "^7.25.4", diff --git a/package.json b/package.json index 7d757af..b605726 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "axe-api-client", - "version": "2.0.1", + "version": "2.1.0", "description": "axe-api-client is a native JavaScript client for Axe API servers.", "type": "module", "main": "dist/index.cjs", From 239514cb0379ee107fb1b98c526e144229cb4176 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 28 Sep 2024 08:51:49 +0000 Subject: [PATCH 4/4] Bump fetch-mock from 9.11.0 to 11.1.5 Bumps [fetch-mock](https://github.com/wheresrhys/fetch-mock/tree/HEAD/packages/fetch-mock) from 9.11.0 to 11.1.5. - [Release notes](https://github.com/wheresrhys/fetch-mock/releases) - [Changelog](https://github.com/wheresrhys/fetch-mock/blob/main/packages/fetch-mock/CHANGELOG.md) - [Commits](https://github.com/wheresrhys/fetch-mock/commits/fetch-mock-v11.1.5/packages/fetch-mock) --- updated-dependencies: - dependency-name: fetch-mock dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 109 ++++++++++++++-------------------------------- package.json | 2 +- 2 files changed, 34 insertions(+), 77 deletions(-) diff --git a/package-lock.json b/package-lock.json index bd94a36..31ba365 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "^12.1.0", "@typescript-eslint/eslint-plugin": "^7.18.0", "eslint": "^8.57.1", - "fetch-mock": "^9.11.0", + "fetch-mock": "^11.1.5", "husky": "^9.1.6", "jest": "^29.7.0", "lint-staged": "^15.2.10", @@ -2797,6 +2797,12 @@ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, + "node_modules/@types/glob-to-regexp": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@types/glob-to-regexp/-/glob-to-regexp-0.4.4.tgz", + "integrity": "sha512-nDKoaKJYbnn1MZxUY0cA1bPmmgZbg0cTq7Rh13d0KWYNOiKbqoR+2d89SnRPszGh7ROzSwZ/GOjZ4jPbmmZ6Eg==", + "dev": true + }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -4155,16 +4161,6 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/core-js": { - "version": "3.31.1", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-js-compat": { "version": "3.38.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", @@ -4547,6 +4543,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -5214,30 +5219,19 @@ } }, "node_modules/fetch-mock": { - "version": "9.11.0", + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-11.1.5.tgz", + "integrity": "sha512-KHmZDnZ1ry0pCTrX4YG5DtThHi0MH+GNI9caESnzX/nMJBrvppUHMvLx47M0WY9oAtKOMiPfZDRpxhlHg89BOA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/core": "^7.0.0", - "@babel/runtime": "^7.0.0", - "core-js": "^3.0.0", - "debug": "^4.1.1", - "glob-to-regexp": "^0.4.0", + "@types/glob-to-regexp": "^0.4.4", + "dequal": "^2.0.3", + "glob-to-regexp": "^0.4.1", "is-subset": "^0.1.1", - "lodash.isequal": "^4.5.0", - "path-to-regexp": "^2.2.1", - "querystring": "^0.2.0", - "whatwg-url": "^6.5.0" + "regexparam": "^3.0.0" }, "engines": { - "node": ">=4.0.0" - }, - "funding": { - "type": "charity", - "url": "https://www.justgiving.com/refugee-support-europe" - }, - "peerDependencies": { - "node-fetch": "*" + "node": ">=8.0.0" }, "peerDependenciesMeta": { "node-fetch": { @@ -7364,11 +7358,6 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -7380,11 +7369,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -8204,11 +8188,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-to-regexp": { - "version": "2.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -8972,14 +8951,6 @@ } ] }, - "node_modules/querystring": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "dev": true, @@ -9064,6 +9035,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regexparam": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-3.0.0.tgz", + "integrity": "sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", @@ -10106,14 +10086,6 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -10389,21 +10361,6 @@ "makeerror": "1.0.12" } }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/which": { "version": "2.0.2", "dev": true, diff --git a/package.json b/package.json index b605726..22e9e31 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@babel/preset-typescript": "^7.24.7", "@typescript-eslint/eslint-plugin": "^7.18.0", "eslint": "^8.57.1", - "fetch-mock": "^9.11.0", + "fetch-mock": "^11.1.5", "husky": "^9.1.6", "jest": "^29.7.0", "lint-staged": "^15.2.10",