From 373626ed598447bb670ac67e97ca8ed1bf32f28f Mon Sep 17 00:00:00 2001 From: kpears201 Date: Thu, 9 Nov 2023 06:11:41 -0800 Subject: [PATCH 1/5] fix: Provider openrpc response and error methods have a wrapper object (#148) --- src/macrofier/engine.mjs | 2 +- src/shared/modules.mjs | 45 +++++++++++++++----------------- test/openrpc/simple.json | 55 +++++++++++++++++++++++++++++++++++++++ test/suite/simple.test.js | 38 ++++++++++++++++++++++++++- 4 files changed, 114 insertions(+), 26 deletions(-) diff --git a/src/macrofier/engine.mjs b/src/macrofier/engine.mjs index 73a805fd..543e9a57 100644 --- a/src/macrofier/engine.mjs +++ b/src/macrofier/engine.mjs @@ -1093,7 +1093,7 @@ function insertMethodMacros(template, methodObj, json, templates, examples = {}) } } - const paramDelimiter = config.operators ? config.operators.paramDelimiter : ', ' + const paramDelimiter = config.operators ? config.operators.paramDelimiter : '' const temporalItemName = isTemporalSetMethod(methodObj) ? methodObj.result.schema.items && methodObj.result.schema.items.title || 'Item' : '' const temporalAddName = isTemporalSetMethod(methodObj) ? `on${temporalItemName}Available` : '' diff --git a/src/shared/modules.mjs b/src/shared/modules.mjs index 927092c2..f1efc1bc 100644 --- a/src/shared/modules.mjs +++ b/src/shared/modules.mjs @@ -625,21 +625,16 @@ const createResponseFromProvider = (provider, type, json) => { if (provider.tags.find(t => t[`x-${type.toLowerCase()}`])) { response.params = [ { - name: type.toLowerCase(), - required: true, + name: "correlationId", schema: { - allOf: [ - { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/ProviderResponse" // use this schema for both Errors and Results - }, - { - "type": "object", - "properties": { - "result": provider.tags.find(t => t[`x-${type.toLowerCase()}`])[`x-${type.toLowerCase()}`] - } - } - ] - } + type: "string" + }, + required: true + }, + { + name: type === 'Error' ? 'error' : "result", + schema: provider.tags.find(t => t[`x-${type.toLowerCase()}`])[`x-${type.toLowerCase()}`], + required: true } ] @@ -680,11 +675,12 @@ const createResponseFromProvider = (provider, type, json) => { name: schema.examples.length === 1 ? "Example" : `Example #${n++}`, params: [ { - name: `${type.toLowerCase()}`, - value: { - correlationId: "123", - result: param - } + name: 'correlationId', + value: '123' + }, + { + name: 'result', + value: param } ], result: { @@ -723,11 +719,12 @@ const createResponseFromProvider = (provider, type, json) => { name: 'Example 1', params: [ { - name: `${type.toLowerCase()}`, - value: { - correlationId: "123", - result: value - } + name: 'correlationId', + value: '123' + }, + { + name: type === 'Error' ? 'error' : 'result', + value } ], result: { diff --git a/test/openrpc/simple.json b/test/openrpc/simple.json index 0d7f41c7..7d009546 100644 --- a/test/openrpc/simple.json +++ b/test/openrpc/simple.json @@ -311,6 +311,61 @@ } } ] + }, + { + "name": "methodWithMultipleParams", + "summary": "A method that takes two parameters", + "description": "A method that takes two parameters", + "tags": [ + { + "name": "capabilities", + "x-uses": ["xrn:firebolt:capability:test:test"] + } + ], + "params": [ + { + "name": "id", + "required": true, + "schema": { + "type": "number" + }, + "summary": "A test number" + }, + { + "name": "title", + "required": true, + "schema": { + "type": "string" + }, + "summary": "A string test parameter." + } + ], + "result": { + "name": "result", + "summary": "A result for testing basic method generation.", + "schema": { + "type": "null" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "id", + "value": 42 + }, + { + "name": "title", + "value": "test" + } + ], + "result": { + "name": "Default Result", + "value": null + } + } + ] } ], "components": { diff --git a/test/suite/simple.test.js b/test/suite/simple.test.js index e9ca5fd7..c969afce 100644 --- a/test/suite/simple.test.js +++ b/test/suite/simple.test.js @@ -17,11 +17,47 @@ */ import { Simple } from '../../build/sdk/javascript/src/sdk.mjs' -import Setup from '../Setup' import { expect } from '@jest/globals'; + +class TransportSpy { + + constructor(spy) { + this.spy = spy + this.responder = null + } + + async send(msg) { + let parsed = JSON.parse(msg) + this.spy(parsed) + this.responder(JSON.stringify({ + jsonrpc: '2.0', + id: parsed.id, + result: {} + })) + } + + receive(callback) { + this.responder = callback + } +} + test('Basic', () => { return Simple.method(true).then(result => { expect(result.foo).toBe("here's foo") }) }); + +test('Multiple Parameters', async () => { + let cb = null; + let promise = new Promise((resolve, reject) => { + cb = resolve + }) + window['__firebolt'].setTransportLayer(new TransportSpy(cb)) + await Simple.methodWithMultipleParams(5, 'foo') + let msg = await promise + expect(msg.method).toBe('simple.methodWithMultipleParams') + expect(msg.params.id).toBe(5) + expect(msg.params.title).toBe('foo') + console.log(JSON.stringify(msg)) +}); From db5dcc923c103644e40e1905b4a3576b0615fb9f Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 9 Nov 2023 14:12:20 +0000 Subject: [PATCH 2/5] chore(release): 2.1.1-next.3 [skip ci] ## [2.1.1-next.3](https://github.com/rdkcentral/firebolt-openrpc/compare/v2.1.1-next.2...v2.1.1-next.3) (2023-11-09) ### Bug Fixes * Provider openrpc response and error methods have a wrapper object ([#148](https://github.com/rdkcentral/firebolt-openrpc/issues/148)) ([373626e](https://github.com/rdkcentral/firebolt-openrpc/commit/373626ed598447bb670ac67e97ca8ed1bf32f28f)) --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8044b214..67e095ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [2.1.1-next.3](https://github.com/rdkcentral/firebolt-openrpc/compare/v2.1.1-next.2...v2.1.1-next.3) (2023-11-09) + + +### Bug Fixes + +* Provider openrpc response and error methods have a wrapper object ([#148](https://github.com/rdkcentral/firebolt-openrpc/issues/148)) ([373626e](https://github.com/rdkcentral/firebolt-openrpc/commit/373626ed598447bb670ac67e97ca8ed1bf32f28f)) + ## [2.1.1-next.2](https://github.com/rdkcentral/firebolt-openrpc/compare/v2.1.1-next.1...v2.1.1-next.2) (2023-11-01) diff --git a/package-lock.json b/package-lock.json index a5dcd108..67b4f2a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@firebolt-js/openrpc", - "version": "2.1.1-next.2", + "version": "2.1.1-next.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@firebolt-js/openrpc", - "version": "2.1.1-next.2", + "version": "2.1.1-next.3", "license": "Apache-2.0", "dependencies": { "ajv": "^8.3.0", diff --git a/package.json b/package.json index 6039a61a..66d302e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/openrpc", - "version": "2.1.1-next.2", + "version": "2.1.1-next.3", "description": "The Firebolt SDK Code & Doc Generator", "main": "languages/javascript/src/sdk.mjs", "type": "module", From 46132810ac5e5b0a8b9baa22903cb8a367b46f63 Mon Sep 17 00:00:00 2001 From: kpears201 Date: Wed, 29 Nov 2023 16:09:23 -0800 Subject: [PATCH 3/5] feat: Improve generated doc formatting (#155) --- languages/javascript/templates/examples/default.md | 6 ++---- .../templates/examples/polymorphic-pull-event.md | 9 ++++----- .../javascript/templates/examples/polymorphic-pull.md | 6 ++---- languages/javascript/templates/examples/setter.md | 6 ++---- languages/javascript/templates/examples/subscriber.md | 7 +++---- languages/markdown/templates/codeblocks/provider.md | 2 +- 6 files changed, 14 insertions(+), 22 deletions(-) diff --git a/languages/javascript/templates/examples/default.md b/languages/javascript/templates/examples/default.md index ecc979ba..8a407397 100644 --- a/languages/javascript/templates/examples/default.md +++ b/languages/javascript/templates/examples/default.md @@ -1,6 +1,4 @@ import { ${module} } from '${package.name}' -${module}.${method.name}(${example.params}) - .then(${method.result.name} => { - console.log(${method.result.name}) - }) \ No newline at end of file +let ${method.result.name} = await ${module}.${method.name}(${example.params}) +console.log(${method.result.name}) \ No newline at end of file diff --git a/languages/javascript/templates/examples/polymorphic-pull-event.md b/languages/javascript/templates/examples/polymorphic-pull-event.md index 7bc2baa7..5881ac08 100644 --- a/languages/javascript/templates/examples/polymorphic-pull-event.md +++ b/languages/javascript/templates/examples/polymorphic-pull-event.md @@ -1,9 +1,8 @@ import { ${module} } from '${package.name}' -${module}.${method.pulls.for}(function(parameters) { +let success = await ${module}.${method.pulls.for}(async parameters => { console.log(parameters.entityId) console.log(parameters.assetId) - return Promise.resolve(${originator.params[1].example.value}) -}).then(success => { - console.log(success) -}) \ No newline at end of file + return ${originator.params[1].example.value} +}) +console.log(success) \ No newline at end of file diff --git a/languages/javascript/templates/examples/polymorphic-pull.md b/languages/javascript/templates/examples/polymorphic-pull.md index 7c53080c..d754217d 100644 --- a/languages/javascript/templates/examples/polymorphic-pull.md +++ b/languages/javascript/templates/examples/polymorphic-pull.md @@ -1,6 +1,4 @@ import { ${module} } from '${package.name}' -${module}.${method.name}(${method.params[1].example.value}) - .then(success => { - console.log(success) - }) \ No newline at end of file +let success = await ${module}.${method.name}(${method.params[1].example.value}) +console.log(success) \ No newline at end of file diff --git a/languages/javascript/templates/examples/setter.md b/languages/javascript/templates/examples/setter.md index c258314a..85c2bcff 100644 --- a/languages/javascript/templates/examples/setter.md +++ b/languages/javascript/templates/examples/setter.md @@ -1,6 +1,4 @@ import { ${module} } from '${package.name}' -${module}.${method.setter.for}(${example.params}) - .then(${method.result.name} => { - console.log(${method.result.name}) - }) \ No newline at end of file +let ${method.result.name} = await ${module}.${method.setter.for}(${example.params}) +console.log(${method.result.name}) \ No newline at end of file diff --git a/languages/javascript/templates/examples/subscriber.md b/languages/javascript/templates/examples/subscriber.md index 99c0516f..0dd6a7a3 100644 --- a/languages/javascript/templates/examples/subscriber.md +++ b/languages/javascript/templates/examples/subscriber.md @@ -1,7 +1,6 @@ import { ${module} } from '${package.name}' -${method.alternative}(value => { +let listenerId = await ${method.alternative}(value => { console.log(value) -}).then(listenerId => { - console.log(listenerId) -}) \ No newline at end of file +}) +console.log(listenerId) \ No newline at end of file diff --git a/languages/markdown/templates/codeblocks/provider.md b/languages/markdown/templates/codeblocks/provider.md index 32823cb0..e30d3a19 100644 --- a/languages/markdown/templates/codeblocks/provider.md +++ b/languages/markdown/templates/codeblocks/provider.md @@ -23,7 +23,7 @@ import { ${info.title} } from '${package.name}' class My${provider} { ${provider.interface.start} async ${provider.interface.name}(parameters, session) { - return await Promise.resolve(${provider.interface.example.result}) + return ${provider.interface.example.result} } ${provider.interface.end} } From cc719bb41120ce9a2c0abde85207bd46632931dd Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 30 Nov 2023 00:40:43 +0000 Subject: [PATCH 4/5] chore(release): 2.2.0-next.1 [skip ci] # [2.2.0-next.1](https://github.com/rdkcentral/firebolt-openrpc/compare/v2.1.1-next.3...v2.2.0-next.1) (2023-11-30) ### Features * Improve generated doc formatting ([#155](https://github.com/rdkcentral/firebolt-openrpc/issues/155)) ([4613281](https://github.com/rdkcentral/firebolt-openrpc/commit/46132810ac5e5b0a8b9baa22903cb8a367b46f63)) --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67e095ba..b1b313e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [2.2.0-next.1](https://github.com/rdkcentral/firebolt-openrpc/compare/v2.1.1-next.3...v2.2.0-next.1) (2023-11-30) + + +### Features + +* Improve generated doc formatting ([#155](https://github.com/rdkcentral/firebolt-openrpc/issues/155)) ([4613281](https://github.com/rdkcentral/firebolt-openrpc/commit/46132810ac5e5b0a8b9baa22903cb8a367b46f63)) + ## [2.1.1-next.3](https://github.com/rdkcentral/firebolt-openrpc/compare/v2.1.1-next.2...v2.1.1-next.3) (2023-11-09) diff --git a/package-lock.json b/package-lock.json index 67b4f2a7..b4220f0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@firebolt-js/openrpc", - "version": "2.1.1-next.3", + "version": "2.2.0-next.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@firebolt-js/openrpc", - "version": "2.1.1-next.3", + "version": "2.2.0-next.1", "license": "Apache-2.0", "dependencies": { "ajv": "^8.3.0", diff --git a/package.json b/package.json index 66d302e4..5ecb67ba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/openrpc", - "version": "2.1.1-next.3", + "version": "2.2.0-next.1", "description": "The Firebolt SDK Code & Doc Generator", "main": "languages/javascript/src/sdk.mjs", "type": "module", From 0b4d4755be3a8a939e5d6ebc267d7ea6270004fb Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Thu, 7 Dec 2023 09:27:41 -0500 Subject: [PATCH 5/5] Update NOTICE --- NOTICE | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NOTICE b/NOTICE index 25fc7bbf..6db36d20 100644 --- a/NOTICE +++ b/NOTICE @@ -20,3 +20,5 @@ The component may include material which is licensed under other licenses / copy listed below. Your use of this material within the component is also subject to the terms and conditions of these licenses. The LICENSE file contains the text of all the licenses which apply within this component.. + +npm is a registered trademark of npm, Inc.