diff --git a/package-lock.json b/package-lock.json index 4260ddd3..2d35f72d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "plugins/*" ], "dependencies": { - "@yaakapp/api": "^0.2.17" + "@yaakapp/api": "^0.2.26" }, "devDependencies": { "@types/node": "^22.7.4", @@ -855,6 +855,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", + "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -1003,13 +1013,25 @@ } }, "node_modules/@yaakapp/api": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/@yaakapp/api/-/api-0.2.17.tgz", - "integrity": "sha512-4ldxDxz2x4WCl4LR/D8Z6zyQGuMhBX3c4eMGDqxCjtEd5tXWaKJYQBEdi/Hp2FG0NSPNBEtyVfZd52sGfiqBoA==", + "version": "0.2.26", + "resolved": "https://registry.npmjs.org/@yaakapp/api/-/api-0.2.26.tgz", + "integrity": "sha512-l9oBrh4oHJHcrdHaUQivFswoTui/32iWjaSP2SDA9tjBFVsuJAs2iKsKNMvCsBkr9bu1dN/si3wg2HmtwhDDxw==", "dependencies": { "@types/node": "^22.5.4" } }, + "node_modules/@yaakapp/auth-basic": { + "resolved": "plugins/auth-basic", + "link": true + }, + "node_modules/@yaakapp/auth-bearer": { + "resolved": "plugins/auth-bearer", + "link": true + }, + "node_modules/@yaakapp/auth-jwt": { + "resolved": "plugins/auth-jwt", + "link": true + }, "node_modules/@yaakapp/exporter-curl": { "resolved": "plugins/exporter-curl", "link": true @@ -1408,6 +1430,12 @@ "node": ">=8" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -1927,6 +1955,15 @@ "readable-stream": "~1.1.9" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -3704,6 +3741,49 @@ "node": ">=14.0.0" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -3762,6 +3842,48 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, "node_modules/loupe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", @@ -3983,8 +4105,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { "version": "3.3.7", @@ -5026,6 +5147,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", @@ -6646,6 +6787,32 @@ "node": ">=12" } }, + "plugins/auth-basic": { + "name": "@yaakapp/auth-basic", + "version": "0.0.1" + }, + "plugins/auth-bearer": { + "name": "@yaakapp/auth-bearer", + "version": "0.0.1" + }, + "plugins/auth-digest": { + "name": "@yaakapp/auth-digest", + "version": "0.0.1", + "extraneous": true, + "dependencies": { + "digest-header": "^1.1.0" + } + }, + "plugins/auth-jwt": { + "name": "@yaakapp/auth-jwt", + "version": "0.0.1", + "dependencies": { + "jsonwebtoken": "^9.0.2" + }, + "devDependencies": { + "@types/jsonwebtoken": "^9.0.7" + } + }, "plugins/exporter-curl": { "name": "@yaakapp/exporter-curl", "version": "0.0.1" @@ -6735,6 +6902,58 @@ "devDependencies": { "@types/jsonpath": "^0.2.4" } + }, + "plugins/template-function-response-2": { + "name": "@yaakapp/template-function-response-2", + "version": "0.0.1", + "extraneous": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.10", + "jsonpath-plus": "^9.0.0", + "xpath": "^0.0.34" + }, + "devDependencies": { + "@types/jsonpath": "^0.2.4" + } + }, + "plugins/template-function-response-3": { + "name": "@yaakapp/template-function-response-3", + "version": "0.0.1", + "extraneous": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.10", + "jsonpath-plus": "^9.0.0", + "xpath": "^0.0.34" + }, + "devDependencies": { + "@types/jsonpath": "^0.2.4" + } + }, + "plugins/template-function-response-4": { + "name": "@yaakapp/template-function-response-4", + "version": "0.0.1", + "extraneous": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.10", + "jsonpath-plus": "^9.0.0", + "xpath": "^0.0.34" + }, + "devDependencies": { + "@types/jsonpath": "^0.2.4" + } + }, + "plugins/template-function-response-5": { + "name": "@yaakapp/template-function-response-5", + "version": "0.0.1", + "extraneous": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.10", + "jsonpath-plus": "^9.0.0", + "xpath": "^0.0.34" + }, + "devDependencies": { + "@types/jsonpath": "^0.2.4" + } } } } diff --git a/package.json b/package.json index abcc0fa7..245529ce 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,6 @@ "workspaces-run": "^1.0.2" }, "dependencies": { - "@yaakapp/api": "^0.2.17" + "@yaakapp/api": "^0.2.26" } } diff --git a/plugins/auth-basic/package.json b/plugins/auth-basic/package.json new file mode 100644 index 00000000..56444782 --- /dev/null +++ b/plugins/auth-basic/package.json @@ -0,0 +1,9 @@ +{ + "name": "@yaakapp/auth-basic", + "private": true, + "version": "0.0.1", + "scripts": { + "build": "yaakcli build ./src/index.ts", + "dev": "yaakcli dev ./src/index.js" + } +} diff --git a/plugins/auth-basic/src/index.ts b/plugins/auth-basic/src/index.ts new file mode 100644 index 00000000..103a01ff --- /dev/null +++ b/plugins/auth-basic/src/index.ts @@ -0,0 +1,28 @@ +import { PluginDefinition } from '@yaakapp/api'; + +export const plugin: PluginDefinition = { + authentication: { + name: 'Basic', + config: [{ + type: 'text', + name: 'username', + label: 'Username', + optional: true, + }, { + type: 'text', + name: 'password', + label: 'Password', + optional: true, + }], + async onApply(_ctx: any, args: any): Promise { + const { username, password } = args.config; + return { + url: args.url, + headers: [{ + name: 'Authorization', + value: 'Basic ' + Buffer.from(`${username}:${password}`).toString('base64'), + }], + }; + }, + }, +}; diff --git a/plugins/auth-bearer/package.json b/plugins/auth-bearer/package.json new file mode 100644 index 00000000..03cf8662 --- /dev/null +++ b/plugins/auth-bearer/package.json @@ -0,0 +1,9 @@ +{ + "name": "@yaakapp/auth-bearer", + "private": true, + "version": "0.0.1", + "scripts": { + "build": "yaakcli build ./src/index.ts", + "dev": "yaakcli dev ./src/index.js" + } +} diff --git a/plugins/auth-bearer/src/index.ts b/plugins/auth-bearer/src/index.ts new file mode 100644 index 00000000..1ed40b89 --- /dev/null +++ b/plugins/auth-bearer/src/index.ts @@ -0,0 +1,23 @@ +import { PluginDefinition } from '@yaakapp/api'; + +export const plugin: PluginDefinition = { + authentication: { + name: 'Bearer', + config: [{ + type: 'text', + name: 'token', + label: 'Token', + optional: true, + }], + async onApply(_ctx: any, args: any): Promise { + const { token } = args.config; + return { + url: args.url, + headers: [{ + name: 'Authorization', + value: `Bearer ${token}`.trim(), + }], + }; + }, + }, +};