diff --git a/action.yml b/action.yml index eed54d6a..5bbb066e 100644 --- a/action.yml +++ b/action.yml @@ -4,6 +4,9 @@ inputs: sdks-to-test: description: 'Which SDKs to test' required: true + sdk-capabilities: + description: 'Which capabilities to test' + required: false sdk-github-sha: description: 'The SHA ref of the SDK to test - used in PRs. If not specified; sdk-version is used' required: false @@ -29,7 +32,7 @@ runs: env: SDK_GITHUB_SHA: ${{ inputs.sdk-github-sha }} SDKS_TO_TEST: ${{ inputs.sdks-to-test }} - + SDK_CAPABILITIES: ${{ inputs.sdk-capabilities }} - uses: actions/upload-artifact@v4 if: success() || failure() with: diff --git a/harness/features/track.local.test.ts b/harness/features/track.local.test.ts index bb890917..c913e8a1 100644 --- a/harness/features/track.local.test.ts +++ b/harness/features/track.local.test.ts @@ -7,7 +7,7 @@ import { getSDKScope, hasCapability, } from '../helpers' -import { Capabilities } from '../types' +import { Capabilities, SDKPlatformMap } from '../types' import { optionalEventFields, optionalUserEventFields, @@ -18,6 +18,9 @@ describe('Track Tests - Local', () => { const validUserId = 'user1' const expectedPlatform = getPlatformBySdkName(sdkName) + const expectedSDKPlatform = hasCapability(sdkName, Capabilities.sdkPlatform) + ? SDKPlatformMap[sdkName] + : undefined const eventFlushIntervalMS = 1000 @@ -38,6 +41,7 @@ describe('Track Tests - Local', () => { ...optionalUserEventFields, platform: expectedPlatform, sdkType: 'server', + sdkPlatform: expectedSDKPlatform, user_id: expect.any(String), }, events: [ @@ -142,6 +146,7 @@ describe('Track Tests - Local', () => { ...optionalUserEventFields, platform: expectedPlatform, sdkType: 'server', + sdkPlatform: expectedSDKPlatform, user_id: validUserId, }, events: [ @@ -210,6 +215,7 @@ describe('Track Tests - Local', () => { ...optionalUserEventFields, platform: expectedPlatform, sdkType: 'server', + sdkPlatform: expectedSDKPlatform, user_id: validUserId, }, events: [ @@ -315,6 +321,7 @@ describe('Track Tests - Local', () => { ...optionalUserEventFields, platform: expectedPlatform, sdkType: 'server', + sdkPlatform: expectedSDKPlatform, user_id: validUserId, }, events: [ diff --git a/harness/helpers/events.ts b/harness/helpers/events.ts index 3d9be415..13b0430b 100644 --- a/harness/helpers/events.ts +++ b/harness/helpers/events.ts @@ -8,10 +8,14 @@ import { hasCapability, waitForRequest, } from './helpers' -import { Capabilities } from '../types' +import { Capabilities, SDKPlatformMap } from '../types' import { Scope } from 'nock' -const addSDKConfigEventBatch = (sdkName: string, expectedPlatform: string) => { +const addSDKConfigEventBatch = ( + sdkName: string, + expectedPlatform: string, + sdkPlatform: string, +) => { return hasCapability(sdkName, Capabilities.sdkConfigEvent) ? [ { @@ -19,6 +23,7 @@ const addSDKConfigEventBatch = (sdkName: string, expectedPlatform: string) => { ...optionalUserEventFields, platform: expectedPlatform, sdkType: 'server', + sdkPlatform: sdkPlatform, user_id: expect.any(String), }, events: [ @@ -73,6 +78,9 @@ export const expectAggregateEvaluationEvent = ({ _feature: featureId, _variation: variationId, } + const sdkPlatform = hasCapability(sdkName, Capabilities.sdkPlatform) + ? SDKPlatformMap[sdkName] + : undefined if (hasCapability(sdkName, Capabilities.etagReporting)) { metadata.configEtag = etag @@ -89,11 +97,13 @@ export const expectAggregateEvaluationEvent = ({ optionalSDKConfigNewEvent = addSDKConfigEventBatch( sdkName, expectedPlatform, + sdkPlatform, )[0].events } else { optionalSDKConfigNewUser = addSDKConfigEventBatch( sdkName, expectedPlatform, + sdkPlatform, ) } } @@ -107,6 +117,7 @@ export const expectAggregateEvaluationEvent = ({ user_id: expect.any(String), platform: expectedPlatform, sdkType: 'server', + sdkPlatform: sdkPlatform, }, events: expect.toIncludeSameMembers([ { @@ -154,6 +165,10 @@ export const expectAggregateDefaultEvent = ({ ) ? { defaultReason } : {} + const sdkPlatform = hasCapability(sdkName, Capabilities.sdkPlatform) + ? SDKPlatformMap[sdkName] + : undefined + if (hasCapability(sdkName, Capabilities.etagReporting)) { if (etag) { metadata.configEtag = etag @@ -175,11 +190,13 @@ export const expectAggregateDefaultEvent = ({ optionalSDKConfigNewEvent = addSDKConfigEventBatch( sdkName, expectedPlatform, + sdkPlatform, )[0].events } else { optionalSDKConfigNewUser = addSDKConfigEventBatch( sdkName, expectedPlatform, + sdkPlatform, ) } } @@ -193,6 +210,7 @@ export const expectAggregateDefaultEvent = ({ user_id: expect.any(String), platform: expectedPlatform, sdkType: 'server', + sdkPlatform: sdkPlatform, }, events: expect.arrayContaining([ ...optionalSDKConfigNewEvent, diff --git a/harness/types/capabilities.ts b/harness/types/capabilities.ts index c519b997..3579c90f 100644 --- a/harness/types/capabilities.ts +++ b/harness/types/capabilities.ts @@ -14,6 +14,11 @@ export const Capabilities = { sdkConfigEvent: 'SDKConfigEvent', clientUUID: 'ClientUUID', v2Config: 'V2Config', + sdkPlatform: 'SDKPlatform', +} + +export const SDKPlatformMap = { + 'OF-NodeJS': 'nodejs-of', } let sdkCapabilities: { [key: string]: string[] } = { @@ -33,6 +38,8 @@ let sdkCapabilities: { [key: string]: string[] } = { Capabilities.sdkConfigEvent, Capabilities.clientUUID, Capabilities.v2Config, + // Comment out until changes are merged, will use SDK_CAPABILITIES to override + // Capabilities.sdkPlatform, ], Python: [ Capabilities.cloud, diff --git a/package.json b/package.json index d74c8e07..70aee530 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "author": "DevCycle ", "license": "MIT", "devDependencies": { - "@devcycle/types": "^1.20.0", + "@devcycle/types": "^1.22.0", "@eresearchqut/jest-testcontainers": "^3.7.1", "@koa/router": "^12.0.0", "@types/jest": "^29.2.3", diff --git a/proxies/nodejs/package.json b/proxies/nodejs/package.json index c7da6f8b..f11208cc 100644 --- a/proxies/nodejs/package.json +++ b/proxies/nodejs/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@devcycle/js-client-sdk": "^1.34.0", - "@devcycle/nodejs-server-sdk": "^1.40.0", + "@devcycle/js-client-sdk": "^1.35.0", + "@devcycle/nodejs-server-sdk": "^1.41.0", "@types/koa": "^2.13.5", "@types/koa-bodyparser": "^4.3.10", "@types/koa-router": "^7.4.4", diff --git a/proxies/nodejs/yarn.lock b/proxies/nodejs/yarn.lock index 31c4abb4..e9230dea 100644 --- a/proxies/nodejs/yarn.lock +++ b/proxies/nodejs/yarn.lock @@ -14,47 +14,47 @@ __metadata: languageName: node linkType: hard -"@devcycle/bucketing-assembly-script@npm:^1.30.0": - version: 1.30.0 - resolution: "@devcycle/bucketing-assembly-script@npm:1.30.0" +"@devcycle/bucketing-assembly-script@npm:^1.31.0": + version: 1.31.0 + resolution: "@devcycle/bucketing-assembly-script@npm:1.31.0" dependencies: protobufjs: "npm:^7.4.0" - checksum: 10/1db757d0e51f1492c63f15c7fd273e40865b8255ca4b7a794fb85c9f9c68bc2b35f27fe93a5a9aaf14ab4fedc58935d400233dcebb91b7dd71d9e417a9ffda44 + checksum: 10/0083362c1f396616f97661d4de7ab8df97212d6da98a02ff016b0dbbc41033bf4ffcfb803b7600b71292f8acb3501f3a725fa07cdf9ca1889e520866729cea82 languageName: node linkType: hard -"@devcycle/js-client-sdk@npm:^1.34.0": - version: 1.34.0 - resolution: "@devcycle/js-client-sdk@npm:1.34.0" +"@devcycle/js-client-sdk@npm:^1.35.0": + version: 1.35.0 + resolution: "@devcycle/js-client-sdk@npm:1.35.0" dependencies: - "@devcycle/types": "npm:^1.21.0" + "@devcycle/types": "npm:^1.22.0" fetch-retry: "npm:^5.0.6" lodash: "npm:^4.17.21" ua-parser-js: "npm:^1.0.36" uuid: "npm:^8.3.2" - checksum: 10/ec7bada682f2b26cb43e65c2b62f140afd2a8d51977de16f1a4c01f9fe2832a11338d00a3307ee331d50d1c18c55ade15b0613eec245ff6c985df15423eef24e + checksum: 10/6436f47e29d0e7f9c5ac1af9ba248376c86ac9d48f00e1dd7d94faf8f43a10776c3f9f63702dff93545e18cd449e988c96769b168e4356576dee355717751b02 languageName: node linkType: hard -"@devcycle/js-cloud-server-sdk@npm:^1.20.0": - version: 1.20.0 - resolution: "@devcycle/js-cloud-server-sdk@npm:1.20.0" +"@devcycle/js-cloud-server-sdk@npm:^1.21.0": + version: 1.21.0 + resolution: "@devcycle/js-cloud-server-sdk@npm:1.21.0" dependencies: - "@devcycle/types": "npm:^1.21.0" + "@devcycle/types": "npm:^1.22.0" cross-fetch: "npm:^4.0.0" fetch-retry: "npm:^5.0.6" lodash: "npm:^4.17.21" - checksum: 10/1885fccd8640af130a9c54d4a3f9c1c3f58eee83c1f47e45de54ab23ae1b87a229d17160d62bb7e36f109f75e83c847fb65ab369ab1556fe4b53e83e72fb4575 + checksum: 10/7829a5cb82296902b018890b03a2417c8ee17dd0520f51df42b7d224427a1c2782ef3d13b01c7689c66ba3464e8d1aa8f33437f65f47f8b6354938c4efb0fd9e languageName: node linkType: hard -"@devcycle/nodejs-server-sdk@npm:^1.40.0": - version: 1.40.0 - resolution: "@devcycle/nodejs-server-sdk@npm:1.40.0" +"@devcycle/nodejs-server-sdk@npm:^1.41.0": + version: 1.41.0 + resolution: "@devcycle/nodejs-server-sdk@npm:1.41.0" dependencies: - "@devcycle/bucketing-assembly-script": "npm:^1.30.0" - "@devcycle/js-cloud-server-sdk": "npm:^1.20.0" - "@devcycle/types": "npm:^1.21.0" + "@devcycle/bucketing-assembly-script": "npm:^1.31.0" + "@devcycle/js-cloud-server-sdk": "npm:^1.21.0" + "@devcycle/types": "npm:^1.22.0" cross-fetch: "npm:^4.0.0" eventsource: "npm:^2.0.2" fetch-retry: "npm:^5.0.6" @@ -64,20 +64,20 @@ __metadata: peerDependenciesMeta: "@openfeature/multi-provider": optional: true - checksum: 10/68ad2ab32ab5866e7107905895602f6ea847109daf6f9bb03ff6a9e54e6daf40756996c6c9cde4997c68c4da6adac6f529aecd73eaf6f5633f1dcc72251ba07e + checksum: 10/0e68eff48451644407f3597543fbcf2a0818f69c3ce8e3dfa2552b4f107f543c7d981a9d8ad6a00c2d12f66632a0d9e7800ed0abd20a599b385cd42c1d81ca6c languageName: node linkType: hard -"@devcycle/types@npm:^1.21.0": - version: 1.21.0 - resolution: "@devcycle/types@npm:1.21.0" +"@devcycle/types@npm:^1.22.0": + version: 1.22.0 + resolution: "@devcycle/types@npm:1.22.0" dependencies: class-transformer: "npm:0.5.1" class-validator: "npm:0.14.1" iso-639-1: "npm:^2.1.13" lodash: "npm:^4.17.21" reflect-metadata: "npm:^0.1.13" - checksum: 10/de8bfebbbfded77e9bfd5f2924706abfa1eee9bc4f906b62914875abc2d2dee831838897ff0fedad883c1cadedd5b331511dff7ebae0e3671dd8ff037e256667 + checksum: 10/d9ae954c9c93e0ddfcc6f479f8113df3a8df1fa0215e7a69aa54d04d166266e679fc672c0f472cfd79f132f5d58475843ffab3c74a04f0f9730463c1f439ce92 languageName: node linkType: hard @@ -1006,8 +1006,8 @@ __metadata: version: 0.0.0-use.local resolution: "root-workspace-0b6124@workspace:." dependencies: - "@devcycle/js-client-sdk": "npm:^1.34.0" - "@devcycle/nodejs-server-sdk": "npm:^1.40.0" + "@devcycle/js-client-sdk": "npm:^1.35.0" + "@devcycle/nodejs-server-sdk": "npm:^1.41.0" "@types/koa": "npm:^2.13.5" "@types/koa-bodyparser": "npm:^4.3.10" "@types/koa-router": "npm:^7.4.4" diff --git a/proxies/openfeature-nodejs/package.json b/proxies/openfeature-nodejs/package.json index fe10dca1..57832a26 100644 --- a/proxies/openfeature-nodejs/package.json +++ b/proxies/openfeature-nodejs/package.json @@ -1,8 +1,8 @@ { "dependencies": { - "@devcycle/nodejs-server-sdk": "^1.40.0", - "@openfeature/core": "^1.6.0", - "@openfeature/server-sdk": "^1.17.0", + "@devcycle/nodejs-server-sdk": "^1.41.0", + "@openfeature/core": "^1.7.0", + "@openfeature/server-sdk": "^1.17.1", "@types/koa": "^2.13.5", "@types/koa-bodyparser": "^4.3.10", "@types/koa-router": "^7.4.4", diff --git a/proxies/openfeature-nodejs/yarn.lock b/proxies/openfeature-nodejs/yarn.lock index 937a65af..54a6950d 100644 --- a/proxies/openfeature-nodejs/yarn.lock +++ b/proxies/openfeature-nodejs/yarn.lock @@ -14,34 +14,34 @@ __metadata: languageName: node linkType: hard -"@devcycle/bucketing-assembly-script@npm:^1.30.0": - version: 1.30.0 - resolution: "@devcycle/bucketing-assembly-script@npm:1.30.0" +"@devcycle/bucketing-assembly-script@npm:^1.31.0": + version: 1.31.0 + resolution: "@devcycle/bucketing-assembly-script@npm:1.31.0" dependencies: protobufjs: "npm:^7.4.0" - checksum: 10/1db757d0e51f1492c63f15c7fd273e40865b8255ca4b7a794fb85c9f9c68bc2b35f27fe93a5a9aaf14ab4fedc58935d400233dcebb91b7dd71d9e417a9ffda44 + checksum: 10/0083362c1f396616f97661d4de7ab8df97212d6da98a02ff016b0dbbc41033bf4ffcfb803b7600b71292f8acb3501f3a725fa07cdf9ca1889e520866729cea82 languageName: node linkType: hard -"@devcycle/js-cloud-server-sdk@npm:^1.20.0": - version: 1.20.0 - resolution: "@devcycle/js-cloud-server-sdk@npm:1.20.0" +"@devcycle/js-cloud-server-sdk@npm:^1.21.0": + version: 1.21.0 + resolution: "@devcycle/js-cloud-server-sdk@npm:1.21.0" dependencies: - "@devcycle/types": "npm:^1.21.0" + "@devcycle/types": "npm:^1.22.0" cross-fetch: "npm:^4.0.0" fetch-retry: "npm:^5.0.6" lodash: "npm:^4.17.21" - checksum: 10/1885fccd8640af130a9c54d4a3f9c1c3f58eee83c1f47e45de54ab23ae1b87a229d17160d62bb7e36f109f75e83c847fb65ab369ab1556fe4b53e83e72fb4575 + checksum: 10/7829a5cb82296902b018890b03a2417c8ee17dd0520f51df42b7d224427a1c2782ef3d13b01c7689c66ba3464e8d1aa8f33437f65f47f8b6354938c4efb0fd9e languageName: node linkType: hard -"@devcycle/nodejs-server-sdk@npm:^1.40.0": - version: 1.40.0 - resolution: "@devcycle/nodejs-server-sdk@npm:1.40.0" +"@devcycle/nodejs-server-sdk@npm:^1.41.0": + version: 1.41.0 + resolution: "@devcycle/nodejs-server-sdk@npm:1.41.0" dependencies: - "@devcycle/bucketing-assembly-script": "npm:^1.30.0" - "@devcycle/js-cloud-server-sdk": "npm:^1.20.0" - "@devcycle/types": "npm:^1.21.0" + "@devcycle/bucketing-assembly-script": "npm:^1.31.0" + "@devcycle/js-cloud-server-sdk": "npm:^1.21.0" + "@devcycle/types": "npm:^1.22.0" cross-fetch: "npm:^4.0.0" eventsource: "npm:^2.0.2" fetch-retry: "npm:^5.0.6" @@ -51,20 +51,20 @@ __metadata: peerDependenciesMeta: "@openfeature/multi-provider": optional: true - checksum: 10/68ad2ab32ab5866e7107905895602f6ea847109daf6f9bb03ff6a9e54e6daf40756996c6c9cde4997c68c4da6adac6f529aecd73eaf6f5633f1dcc72251ba07e + checksum: 10/0e68eff48451644407f3597543fbcf2a0818f69c3ce8e3dfa2552b4f107f543c7d981a9d8ad6a00c2d12f66632a0d9e7800ed0abd20a599b385cd42c1d81ca6c languageName: node linkType: hard -"@devcycle/types@npm:^1.21.0": - version: 1.21.0 - resolution: "@devcycle/types@npm:1.21.0" +"@devcycle/types@npm:^1.22.0": + version: 1.22.0 + resolution: "@devcycle/types@npm:1.22.0" dependencies: class-transformer: "npm:0.5.1" class-validator: "npm:0.14.1" iso-639-1: "npm:^2.1.13" lodash: "npm:^4.17.21" reflect-metadata: "npm:^0.1.13" - checksum: 10/de8bfebbbfded77e9bfd5f2924706abfa1eee9bc4f906b62914875abc2d2dee831838897ff0fedad883c1cadedd5b331511dff7ebae0e3671dd8ff037e256667 + checksum: 10/d9ae954c9c93e0ddfcc6f479f8113df3a8df1fa0215e7a69aa54d04d166266e679fc672c0f472cfd79f132f5d58475843ffab3c74a04f0f9730463c1f439ce92 languageName: node linkType: hard @@ -92,19 +92,19 @@ __metadata: languageName: node linkType: hard -"@openfeature/core@npm:^1.6.0": - version: 1.6.0 - resolution: "@openfeature/core@npm:1.6.0" - checksum: 10/017460339bb86125166cc379352f1079f6a021ca817e0beac6eb10d4251ab7ca0ae5917ff3d67e388ae8061bf61a2b28058c6921ae43d62dfd490238de7437c4 +"@openfeature/core@npm:^1.7.0": + version: 1.7.0 + resolution: "@openfeature/core@npm:1.7.0" + checksum: 10/78acd24c5b07f42d936066ff7c00e22367bebca2518db1785865b43e51b20ed4d7c5a8dff6cdfb6d364b7752f15d866e228db87e445d381385d1a8cb2dd50960 languageName: node linkType: hard -"@openfeature/server-sdk@npm:^1.17.0": - version: 1.17.0 - resolution: "@openfeature/server-sdk@npm:1.17.0" +"@openfeature/server-sdk@npm:^1.17.1": + version: 1.17.1 + resolution: "@openfeature/server-sdk@npm:1.17.1" peerDependencies: - "@openfeature/core": ^1.6.0 - checksum: 10/62b6c08f6a3e4622427ea4ad8aaf5957e9313e91c956c6e5acfae07fc0bd223a6eabbc9594e3eedc907470948225e5f23a07a4c836e7eec9a56ab3ab5cf091b0 + "@openfeature/core": ^1.7.0 + checksum: 10/9cb16a9ede9579e20203abfb1a020f174d1fbc19e949fe79f78d59893a53008eba57e86d1701ce14fc84ef8abcf16cfb512eb09e4b31574a7b62abc71b3666a4 languageName: node linkType: hard @@ -1009,9 +1009,9 @@ __metadata: version: 0.0.0-use.local resolution: "root-workspace-0b6124@workspace:." dependencies: - "@devcycle/nodejs-server-sdk": "npm:^1.40.0" - "@openfeature/core": "npm:^1.6.0" - "@openfeature/server-sdk": "npm:^1.17.0" + "@devcycle/nodejs-server-sdk": "npm:^1.41.0" + "@openfeature/core": "npm:^1.7.0" + "@openfeature/server-sdk": "npm:^1.17.1" "@types/koa": "npm:^2.13.5" "@types/koa-bodyparser": "npm:^4.3.10" "@types/koa-router": "npm:^7.4.4" diff --git a/yarn.lock b/yarn.lock index 1f48b5e2..4d4ef09b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -533,7 +533,7 @@ __metadata: version: 0.0.0-use.local resolution: "@devcycle/test-harness@workspace:." dependencies: - "@devcycle/types": "npm:^1.20.0" + "@devcycle/types": "npm:^1.22.0" "@eresearchqut/jest-testcontainers": "npm:^3.7.1" "@koa/router": "npm:^12.0.0" "@types/jest": "npm:^29.2.3" @@ -564,16 +564,16 @@ __metadata: languageName: unknown linkType: soft -"@devcycle/types@npm:^1.20.0": - version: 1.20.0 - resolution: "@devcycle/types@npm:1.20.0" +"@devcycle/types@npm:^1.22.0": + version: 1.22.0 + resolution: "@devcycle/types@npm:1.22.0" dependencies: class-transformer: "npm:0.5.1" class-validator: "npm:0.14.1" iso-639-1: "npm:^2.1.13" lodash: "npm:^4.17.21" reflect-metadata: "npm:^0.1.13" - checksum: 10/bcfc96b7095c7af6768a6252d406e6f231020e03c18683c81f79ab969cc84b400e6185e4a9cd69a256b0907faaefbd07cdddd0430f7d95404965dc593d34e3a2 + checksum: 10/d9ae954c9c93e0ddfcc6f479f8113df3a8df1fa0215e7a69aa54d04d166266e679fc672c0f472cfd79f132f5d58475843ffab3c74a04f0f9730463c1f439ce92 languageName: node linkType: hard