From b9fcce9db53935f0969e2a5fe21d93133934452d Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Tue, 17 Jan 2023 19:31:24 -0800 Subject: [PATCH 1/2] chore: fix ipfs-companion import error --- .aegir.js | 1 + package-lock.json | 11 +++++++++++ package.json | 9 +++++---- src/BrowserMetrics.ts | 9 +++++++++ src/MetricsProvider.ts | 18 +++++++++--------- src/NodeMetrics.ts | 9 +++++++++ src/types/countly.d.ts | 6 ++---- src/types/countlyNode.d.ts | 6 ++++++ src/types/index.ts | 3 +++ 9 files changed, 55 insertions(+), 17 deletions(-) create mode 100644 src/BrowserMetrics.ts create mode 100644 src/NodeMetrics.ts create mode 100644 src/types/countlyNode.d.ts create mode 100644 src/types/index.ts diff --git a/.aegir.js b/.aegir.js index 2672169..e5d0e6c 100644 --- a/.aegir.js +++ b/.aegir.js @@ -10,6 +10,7 @@ export default { tsRepo: true, build: { types: true, + bundle: false, config: { format: 'esm', external: ['electron', '#ansi-styles', 'yargs/yargs', '#supports-color'], diff --git a/package-lock.json b/package-lock.json index 88b3ca9..6f3a409 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.3", "license": "Apache-2.0 OR MIT", "dependencies": { + "countly-sdk-nodejs": "^22.6.0", "countly-sdk-web": "^22.6.4", "esbuild-css-modules-plugin": "^2.7.0", "react": "^18.2.0", @@ -15853,6 +15854,11 @@ "node": ">=10" } }, + "node_modules/countly-sdk-nodejs": { + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/countly-sdk-nodejs/-/countly-sdk-nodejs-22.6.0.tgz", + "integrity": "sha512-vw6YRGJJu6sq9oZEz00SyAL7oyru+w1ct3P6TS0avMPRSZ/mqEXYq3l+Wtl89L/HwXcDymh8gY7JOOAPnI7vEg==" + }, "node_modules/countly-sdk-web": { "version": "22.6.4", "resolved": "https://registry.npmjs.org/countly-sdk-web/-/countly-sdk-web-22.6.4.tgz", @@ -52096,6 +52102,11 @@ "yaml": "^1.10.0" } }, + "countly-sdk-nodejs": { + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/countly-sdk-nodejs/-/countly-sdk-nodejs-22.6.0.tgz", + "integrity": "sha512-vw6YRGJJu6sq9oZEz00SyAL7oyru+w1ct3P6TS0avMPRSZ/mqEXYq3l+Wtl89L/HwXcDymh8gY7JOOAPnI7vEg==" + }, "countly-sdk-web": { "version": "22.6.4", "resolved": "https://registry.npmjs.org/countly-sdk-web/-/countly-sdk-web-22.6.4.tgz", diff --git a/package.json b/package.json index 4e3135f..e3d2477 100644 --- a/package.json +++ b/package.json @@ -32,11 +32,11 @@ "exports": { ".": { "types": "./dist/src/index.d.ts", - "import": "./dist/src/index.js" + "import": "./dist/index.min.js" }, - "./vanilla": { - "types": "./dist/src/MetricsProvider.d.ts", - "import": "./dist/src/MetricsProvider.js" + "./*": { + "types": "./dist/src/*.d.ts", + "import": "./dist/src/*.js" } }, "eslintConfig": { @@ -139,6 +139,7 @@ "build-storybook": "build-storybook" }, "dependencies": { + "countly-sdk-nodejs": "^22.6.0", "countly-sdk-web": "^22.6.4", "esbuild-css-modules-plugin": "^2.7.0", "react": "^18.2.0", diff --git a/src/BrowserMetrics.ts b/src/BrowserMetrics.ts new file mode 100644 index 0000000..fe30e8e --- /dev/null +++ b/src/BrowserMetrics.ts @@ -0,0 +1,9 @@ +import Countly from 'countly-sdk-web' + +import MetricsProvider, { MetricsProviderConstructorOptions } from './MetricsProvider.js' + +export default class BrowserMetricsProvider extends MetricsProvider { + constructor (args: Omit, 'metricsService'>) { + super({ ...args, metricsService: Countly }) + } +} diff --git a/src/MetricsProvider.ts b/src/MetricsProvider.ts index 6978982..fe38cf2 100644 --- a/src/MetricsProvider.ts +++ b/src/MetricsProvider.ts @@ -1,14 +1,16 @@ import { COUNTLY_API_URL } from './config.js' -import type { consentTypes, consentTypesExceptAll, metricFeatures } from 'countly-sdk-web' -import Countly from 'countly-sdk-web' +import type { metricFeatures, CountlyWebSdk } from 'countly-sdk-web' +import type { CountlyNodeSdk } from 'countly-sdk-nodejs' +import type { consentTypes, consentTypesExceptAll } from './types/index.js' -interface MetricsProviderConstructorOptions { +export interface MetricsProviderConstructorOptions { appKey: string url?: string autoTrack?: boolean + metricsService: T } -export default class MetricsProvider { +export default class MetricsProvider { private readonly groupedFeatures: Record = this.mapAllEvents({ minimal: ['sessions', 'views', 'events'], performance: ['crashes', 'apm'], @@ -19,8 +21,10 @@ export default class MetricsProvider { private sessionStarted: boolean = false private readonly _consentGranted: Set = new Set() + private readonly metricsService: T - constructor ({ autoTrack = true, url = COUNTLY_API_URL, appKey }: MetricsProviderConstructorOptions) { + constructor ({ autoTrack = true, url = COUNTLY_API_URL, appKey, metricsService }: MetricsProviderConstructorOptions) { + this.metricsService = metricsService this.metricsService.init({ app_key: appKey, url, @@ -41,10 +45,6 @@ export default class MetricsProvider { } } - get metricsService (): typeof Countly { - return Countly - } - get consentGranted (): consentTypes[] { return [...this._consentGranted] } diff --git a/src/NodeMetrics.ts b/src/NodeMetrics.ts new file mode 100644 index 0000000..1fdff5c --- /dev/null +++ b/src/NodeMetrics.ts @@ -0,0 +1,9 @@ +import Countly from 'countly-sdk-nodejs' + +import MetricsProvider, { MetricsProviderConstructorOptions } from './MetricsProvider.js' + +export default class NodeMetricsProvider extends MetricsProvider { + constructor (args: Omit, 'metricsService'>) { + super({ ...args, metricsService: Countly }) + } +} diff --git a/src/types/countly.d.ts b/src/types/countly.d.ts index 1a3a9e5..7d6bbca 100644 --- a/src/types/countly.d.ts +++ b/src/types/countly.d.ts @@ -20,12 +20,10 @@ declare module 'countly-sdk-web' { export type metricFeatures = 'apm' | 'attribution' | 'clicks' | 'crashes' | 'events' | 'feedback' | 'forms' | 'location' | 'scrolls' | 'sessions' | 'star-rating' | 'users' | 'views' - export type consentTypesExceptAll = 'minimal' | 'performance' | 'ux' | 'feedback' | 'location' - export type consentTypes = 'all' | consentTypesExceptAll type Segments = Record type IgnoreList = Array type CountlyEventQueueItem = [string, CountlyEventData] | [eventName: string, key: string] | [eventName: string] - interface CountlyWebSdk { + export interface CountlyWebSdk { group_features: (arg0: Record) => unknown check_consent: (consentFeature: metricFeatures | consentTypes) => boolean add_consent: (consentFeature: consentTypes | consentTypes[]) => void @@ -119,5 +117,5 @@ declare module 'countly-sdk-web' { end_session: (sec, force) => void } const Countly: CountlyWebSdk - export = Countly + export default Countly } diff --git a/src/types/countlyNode.d.ts b/src/types/countlyNode.d.ts new file mode 100644 index 0000000..2298de3 --- /dev/null +++ b/src/types/countlyNode.d.ts @@ -0,0 +1,6 @@ +declare module 'countly-sdk-nodejs' { + export type CountlyNodeSdk = import('countly-sdk-web').CountlyWebSdk + const Countly: CountlyNodeSdk + export type metricFeatures = import('countly-sdk-web').metricFeatures + export default Countly +} diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 0000000..99beef8 --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1,3 @@ + +export type consentTypesExceptAll = 'minimal' | 'performance' | 'ux' | 'feedback' | 'location' +export type consentTypes = 'all' | consentTypesExceptAll From 4580cbe385f4a4e1241999933db2255c473ec0c0 Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Tue, 17 Jan 2023 20:04:15 -0800 Subject: [PATCH 2/2] fix: ipfs-companion build --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index e3d2477..bed1360 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,10 @@ "types": "./dist/src/index.d.ts", "import": "./dist/index.min.js" }, + "./vanilla": { + "browser": "./dist/src/BrowserMetrics.js", + "import": "./dist/src/NodeMetrics.js" + }, "./*": { "types": "./dist/src/*.d.ts", "import": "./dist/src/*.js"