diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml index 613898ca..449346cd 100644 --- a/.github/workflows/unit.yml +++ b/.github/workflows/unit.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: node-version: [16] - dapr-version: [1.6.3, 1.7.4] + dapr-version: [1.6.3, 1.7.4, 1.8.0] platform: [ubuntu-latest] runs-on: ${{ matrix.platform }} steps: diff --git a/docs/generated/api.json b/docs/generated/api.json index 3c0972e7..e37b3605 100644 --- a/docs/generated/api.json +++ b/docs/generated/api.json @@ -1,8 +1,8 @@ { "metadata": { "toolPackage": "@microsoft/api-extractor", - "toolVersion": "7.27.0", - "schemaVersion": 1008, + "toolVersion": "7.28.4", + "schemaVersion": 1009, "oldestForwardsCompatibleVersion": 1001, "tsdocConfig": { "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", @@ -1602,6 +1602,7 @@ "text": ";" } ], + "isReadonly": false, "returnTypeTokenRange": { "startIndex": 3, "endIndex": 4 diff --git a/package-lock.json b/package-lock.json index c61cfb20..856f28ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,17 +16,17 @@ "express": "^4.18.1", "express-interceptor": "^1.2.0", "lodash": "^4.17.21", - "minimist": "^1.2.5", - "on-finished": "^2.3.0", + "minimist": "^1.2.6", + "on-finished": "^2.4.1", "read-pkg-up": "^7.0.1", - "semver": "^7.3.5" + "semver": "^7.3.7" }, "bin": { "functions-framework": "build/src/main.js", "functions-framework-nodejs": "build/src/main.js" }, "devDependencies": { - "@microsoft/api-extractor": "^7.27.0", + "@microsoft/api-extractor": "^7.28.4", "@types/body-parser": "1.19.2", "@types/debug": "^4.1.7", "@types/express": "4.17.13", @@ -39,16 +39,16 @@ "@types/on-finished": "2.3.1", "@types/semver": "^7.3.10", "@types/shelljs": "^0.8.11", - "@types/sinon": "^10.0.11", + "@types/sinon": "10.0.11", "@types/supertest": "2.0.12", "aedes": "^0.47.0", - "concurrently": "^7.2.2", + "concurrently": "^7.3.0", "cross-env": "^7.0.3", "env-cmd": "^10.1.0", "gts": "^3.1.0", "mocha": "10.0.0", "pack-n-play": "^1.0.0-2", - "pre-push": "^0.1.2", + "pre-push": "^0.1.3", "shelljs": "^0.8.5", "sinon": "^14.0.0", "supertest": "6.2.3", @@ -218,17 +218,17 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/@microsoft/api-extractor": { - "version": "7.27.0", - "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor/-/api-extractor-7.27.0.tgz", - "integrity": "sha512-rzVl2Rf3LQ2b7ykymVJSXZwRcy/QuwqlLmYh7NRi9Ilkk66aOloJTBgkkni/wlg5/RyohQKSdOmFYHcF+IiS3A==", + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor/-/api-extractor-7.28.4.tgz", + "integrity": "sha512-7JeROBGYTUt4/4HPnpMscsQgLzX0OfGTQR2qOQzzh3kdkMyxmiv2mzpuhoMnwbubb1GvPcyFm+NguoqOqkCVaw==", "dev": true, "dependencies": { - "@microsoft/api-extractor-model": "7.20.0", + "@microsoft/api-extractor-model": "7.21.0", "@microsoft/tsdoc": "0.14.1", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.46.0", - "@rushstack/rig-package": "0.3.12", - "@rushstack/ts-command-line": "4.12.0", + "@rushstack/node-core-library": "3.49.0", + "@rushstack/rig-package": "0.3.13", + "@rushstack/ts-command-line": "4.12.1", "colors": "~1.2.1", "lodash": "~4.17.15", "resolve": "~1.17.0", @@ -241,14 +241,14 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.20.0", - "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor-model/-/api-extractor-model-7.20.0.tgz", - "integrity": "sha512-6gK6ipnBsSZ9uLrUBHg3q1V7gvzvB1zVb8lbtrpKl3mQJ7vvXJm2sDNl3Vlt1gy0izgQb9s6mmyy7hLRh1qFRg==", + "version": "7.21.0", + "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor-model/-/api-extractor-model-7.21.0.tgz", + "integrity": "sha512-NN4mXzoQWTuzznIcnLWeV6tGyn6Os9frDK6M/mmTXZ73vUYOvSWoKQ5SYzyzP7HF3YtvTmr1Rs+DsBb0HRx7WQ==", "dev": true, "dependencies": { "@microsoft/tsdoc": "0.14.1", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.46.0" + "@rushstack/node-core-library": "3.49.0" } }, "node_modules/@microsoft/api-extractor/node_modules/resolve": { @@ -391,9 +391,9 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@rushstack/node-core-library": { - "version": "3.46.0", - "resolved": "https://registry.npmmirror.com/@rushstack/node-core-library/-/node-core-library-3.46.0.tgz", - "integrity": "sha512-5iF21WvppEkXUPkxXkkH7HlfK5jDNFTKPJT0M+t3fG8qteoJM2atQoLtXklS0yNgOXy5zNTVTO+9lSzfVUvrCA==", + "version": "3.49.0", + "resolved": "https://registry.npmmirror.com/@rushstack/node-core-library/-/node-core-library-3.49.0.tgz", + "integrity": "sha512-yBJRzGgUNFwulVrwwBARhbGaHsxVMjsZ9JwU1uSBbqPYCdac+t2HYdzi4f4q/Zpgb0eNbwYj2yxgHYpJORNEaw==", "dev": true, "dependencies": { "@types/node": "12.20.24", @@ -423,9 +423,9 @@ } }, "node_modules/@rushstack/rig-package": { - "version": "0.3.12", - "resolved": "https://registry.npmmirror.com/@rushstack/rig-package/-/rig-package-0.3.12.tgz", - "integrity": "sha512-ZzxuBWG0wbOtI+9IHYvOsr3QN52GtxTWpcaHMsQ/PC9us2ve/k0xK0XOMu+CtStyHSnBG2nDdnF9vFv9HMYOZg==", + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@rushstack/rig-package/-/rig-package-0.3.13.tgz", + "integrity": "sha512-4/2+yyA/uDl7LQvtYtFs1AkhSWuaIGEKhP9/KK2nNARqOVc5eCXmu1vyOqr5mPvNq7sHoIR+sG84vFbaKYGaDA==", "dev": true, "dependencies": { "resolve": "~1.17.0", @@ -442,9 +442,9 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "4.12.0", - "resolved": "https://registry.npmmirror.com/@rushstack/ts-command-line/-/ts-command-line-4.12.0.tgz", - "integrity": "sha512-+dC3ZwT1PjvsEnybXzM9UUYg4xdDOl6vmE+23eByxbWmAxo/nB8VAD5iFs+jbbUd9MtG/7xqCBWbMWEDA+cBjw==", + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/@rushstack/ts-command-line/-/ts-command-line-4.12.1.tgz", + "integrity": "sha512-S1Nev6h/kNnamhHeGdp30WgxZTA+B76SJ/P721ctP7DrnC+rrjAc6h/R80I4V0cA2QuEEcMdVOQCtK2BTjsOiQ==", "dev": true, "dependencies": { "@types/argparse": "1.0.38", @@ -5699,9 +5699,9 @@ } }, "node_modules/pre-push": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/pre-push/-/pre-push-0.1.2.tgz", - "integrity": "sha512-WymiU20I3W1yGV4VEqa+xOqaqGHYUz49R4ARvEdmYPgL07E/Gn7NLewI9k5g6KUc2EOaWE42rBb7nfVKYtkpCA==", + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/pre-push/-/pre-push-0.1.3.tgz", + "integrity": "sha512-PXc3tT7jq/H2VrEooQ8F9QCVfQawmd52CzWMemUrPlFnL8avaXY22NTuej3ClISy8EwStaB5myiigPBP4zqSbw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -7799,17 +7799,17 @@ } }, "@microsoft/api-extractor": { - "version": "7.27.0", - "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor/-/api-extractor-7.27.0.tgz", - "integrity": "sha512-rzVl2Rf3LQ2b7ykymVJSXZwRcy/QuwqlLmYh7NRi9Ilkk66aOloJTBgkkni/wlg5/RyohQKSdOmFYHcF+IiS3A==", + "version": "7.28.4", + "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor/-/api-extractor-7.28.4.tgz", + "integrity": "sha512-7JeROBGYTUt4/4HPnpMscsQgLzX0OfGTQR2qOQzzh3kdkMyxmiv2mzpuhoMnwbubb1GvPcyFm+NguoqOqkCVaw==", "dev": true, "requires": { - "@microsoft/api-extractor-model": "7.20.0", + "@microsoft/api-extractor-model": "7.21.0", "@microsoft/tsdoc": "0.14.1", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.46.0", - "@rushstack/rig-package": "0.3.12", - "@rushstack/ts-command-line": "4.12.0", + "@rushstack/node-core-library": "3.49.0", + "@rushstack/rig-package": "0.3.13", + "@rushstack/ts-command-line": "4.12.1", "colors": "~1.2.1", "lodash": "~4.17.15", "resolve": "~1.17.0", @@ -7836,14 +7836,14 @@ } }, "@microsoft/api-extractor-model": { - "version": "7.20.0", - "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor-model/-/api-extractor-model-7.20.0.tgz", - "integrity": "sha512-6gK6ipnBsSZ9uLrUBHg3q1V7gvzvB1zVb8lbtrpKl3mQJ7vvXJm2sDNl3Vlt1gy0izgQb9s6mmyy7hLRh1qFRg==", + "version": "7.21.0", + "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor-model/-/api-extractor-model-7.21.0.tgz", + "integrity": "sha512-NN4mXzoQWTuzznIcnLWeV6tGyn6Os9frDK6M/mmTXZ73vUYOvSWoKQ5SYzyzP7HF3YtvTmr1Rs+DsBb0HRx7WQ==", "dev": true, "requires": { "@microsoft/tsdoc": "0.14.1", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.46.0" + "@rushstack/node-core-library": "3.49.0" } }, "@microsoft/tsdoc": { @@ -7957,9 +7957,9 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "@rushstack/node-core-library": { - "version": "3.46.0", - "resolved": "https://registry.npmmirror.com/@rushstack/node-core-library/-/node-core-library-3.46.0.tgz", - "integrity": "sha512-5iF21WvppEkXUPkxXkkH7HlfK5jDNFTKPJT0M+t3fG8qteoJM2atQoLtXklS0yNgOXy5zNTVTO+9lSzfVUvrCA==", + "version": "3.49.0", + "resolved": "https://registry.npmmirror.com/@rushstack/node-core-library/-/node-core-library-3.49.0.tgz", + "integrity": "sha512-yBJRzGgUNFwulVrwwBARhbGaHsxVMjsZ9JwU1uSBbqPYCdac+t2HYdzi4f4q/Zpgb0eNbwYj2yxgHYpJORNEaw==", "dev": true, "requires": { "@types/node": "12.20.24", @@ -7991,9 +7991,9 @@ } }, "@rushstack/rig-package": { - "version": "0.3.12", - "resolved": "https://registry.npmmirror.com/@rushstack/rig-package/-/rig-package-0.3.12.tgz", - "integrity": "sha512-ZzxuBWG0wbOtI+9IHYvOsr3QN52GtxTWpcaHMsQ/PC9us2ve/k0xK0XOMu+CtStyHSnBG2nDdnF9vFv9HMYOZg==", + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@rushstack/rig-package/-/rig-package-0.3.13.tgz", + "integrity": "sha512-4/2+yyA/uDl7LQvtYtFs1AkhSWuaIGEKhP9/KK2nNARqOVc5eCXmu1vyOqr5mPvNq7sHoIR+sG84vFbaKYGaDA==", "dev": true, "requires": { "resolve": "~1.17.0", @@ -8012,9 +8012,9 @@ } }, "@rushstack/ts-command-line": { - "version": "4.12.0", - "resolved": "https://registry.npmmirror.com/@rushstack/ts-command-line/-/ts-command-line-4.12.0.tgz", - "integrity": "sha512-+dC3ZwT1PjvsEnybXzM9UUYg4xdDOl6vmE+23eByxbWmAxo/nB8VAD5iFs+jbbUd9MtG/7xqCBWbMWEDA+cBjw==", + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/@rushstack/ts-command-line/-/ts-command-line-4.12.1.tgz", + "integrity": "sha512-S1Nev6h/kNnamhHeGdp30WgxZTA+B76SJ/P721ctP7DrnC+rrjAc6h/R80I4V0cA2QuEEcMdVOQCtK2BTjsOiQ==", "dev": true, "requires": { "@types/argparse": "1.0.38", @@ -11989,9 +11989,9 @@ "dev": true }, "pre-push": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/pre-push/-/pre-push-0.1.2.tgz", - "integrity": "sha512-WymiU20I3W1yGV4VEqa+xOqaqGHYUz49R4ARvEdmYPgL07E/Gn7NLewI9k5g6KUc2EOaWE42rBb7nfVKYtkpCA==", + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/pre-push/-/pre-push-0.1.3.tgz", + "integrity": "sha512-PXc3tT7jq/H2VrEooQ8F9QCVfQawmd52CzWMemUrPlFnL8avaXY22NTuej3ClISy8EwStaB5myiigPBP4zqSbw==", "dev": true, "requires": { "cross-spawn": "^5.0.1", diff --git a/package.json b/package.json index 09be0a5d..33b2d299 100644 --- a/package.json +++ b/package.json @@ -20,10 +20,10 @@ "express": "^4.18.1", "express-interceptor": "^1.2.0", "lodash": "^4.17.21", - "minimist": "^1.2.5", - "on-finished": "^2.3.0", + "minimist": "^1.2.6", + "on-finished": "^2.4.1", "read-pkg-up": "^7.0.1", - "semver": "^7.3.5" + "semver": "^7.3.7" }, "scripts": { "test": "cross-env DEBUG=common:*,ofn:* mocha build/test -t 60000 --recursive --exit", @@ -52,7 +52,7 @@ "author": "OpenFunction", "license": "Apache-2.0", "devDependencies": { - "@microsoft/api-extractor": "^7.27.0", + "@microsoft/api-extractor": "^7.28.4", "@types/body-parser": "1.19.2", "@types/debug": "^4.1.7", "@types/express": "4.17.13", @@ -65,16 +65,16 @@ "@types/on-finished": "2.3.1", "@types/semver": "^7.3.10", "@types/shelljs": "^0.8.11", - "@types/sinon": "^10.0.11", + "@types/sinon": "10.0.11", "@types/supertest": "2.0.12", "aedes": "^0.47.0", - "concurrently": "^7.2.2", + "concurrently": "^7.3.0", "cross-env": "^7.0.3", "env-cmd": "^10.1.0", "gts": "^3.1.0", "mocha": "10.0.0", "pack-n-play": "^1.0.0-2", - "pre-push": "^0.1.2", + "pre-push": "^0.1.3", "shelljs": "^0.8.5", "sinon": "^14.0.0", "supertest": "6.2.3", diff --git a/test/integration/async_server.ts b/test/integration/async_server.ts index 7a155277..23d5a4c2 100644 --- a/test/integration/async_server.ts +++ b/test/integration/async_server.ts @@ -2,7 +2,7 @@ import {deepStrictEqual, ifError, ok} from 'assert'; import {createServer} from 'net'; -import {get} from 'lodash'; +import {get, isEmpty} from 'lodash'; import * as shell from 'shelljs'; import * as MQTT from 'aedes'; @@ -54,7 +54,16 @@ const TEST_CONTEXT: OpenFunctionContext = { }, }, }; + const TEST_PAYLOAD = {data: 'hello world'}; +const TEST_CLOUD_EVENT = { + specversion: '1.0', + id: 'test-1234-1234', + type: 'ce.openfunction', + source: 'https://github.com/OpenFunction/functions-framework-nodejs', + traceparent: '00-65088630f09e0a5359677a7429456db7-97f23477fb2bf5ec-01', + data: TEST_PAYLOAD, +}; describe('OpenFunction - Async - Binding', () => { const APPID = 'async.dapr'; @@ -139,15 +148,12 @@ describe('OpenFunction - Async - Binding', () => { it('mqtt sub w/ pub output', done => { const app = getAysncServer((ctx, data) => { + if (isEmpty(data)) return; + // Assert that user function receives correct data from input binding - try { - const recieved = JSON.parse(data as string); - deepStrictEqual(recieved, TEST_PAYLOAD); - } catch (err) { - ifError(err); - } + deepStrictEqual(data, TEST_PAYLOAD); - // Then write recived data to a local file + // Then forward received data to output channel const output = 'mqtt_pub'; broker.subscribe( get(TEST_CONTEXT, `outputs.${output}.uri`), @@ -165,15 +171,17 @@ describe('OpenFunction - Async - Binding', () => { // First, we start the async server app.start().then(() => { - // Then, we publish a message via Dapr CLI - const formatted = JSON.stringify(TEST_PAYLOAD).replace(/"/g, '\\"'); - shell.exec( - `dapr publish -i ${APPID} -p ${ - TEST_CONTEXT.inputs!.mqtt_sub!.componentName - } -t ${TEST_CONTEXT.inputs!.mqtt_sub.uri} -d '"${formatted}"'`, + // Then, we send a cloudevent format message to server + broker.publish( { - silent: true, - } + cmd: 'publish', + topic: TEST_CONTEXT.inputs!.mqtt_sub.uri!, + payload: JSON.stringify(TEST_CLOUD_EVENT), + qos: 0, + retain: false, + dup: false, + }, + err => ifError(err) ); }); }); diff --git a/test/integration/cloud_event.ts b/test/integration/cloud_event.ts index c57fa782..ce21b81d 100644 --- a/test/integration/cloud_event.ts +++ b/test/integration/cloud_event.ts @@ -25,7 +25,7 @@ import {FUNCTION_STATUS_HEADER_FIELD} from '../../src/types'; const TEST_CLOUD_EVENT = { specversion: '1.0', type: 'com.google.cloud.storage', - source: 'https://github.com/GoogleCloudPlatform/functions-framework-nodejs', + source: 'https://github.com/OpenFunction/functions-framework-nodejs', subject: 'test-subject', id: 'test-1234-1234', time: '2020-05-13T01:23:45Z',