Skip to content

Commit 09ff7b4

Browse files
toddbaertbeeme1mr
andauthored
fix: rm NodeJS type from core, rm react core peer (#681)
* remove a NodeJS type from core module which needs to be platform agnostic * remove core peer dep from react sdk, which gets core through web-sdk --------- Signed-off-by: Todd Baert <[email protected]> Co-authored-by: Michael Beemer <[email protected]>
1 parent 5845370 commit 09ff7b4

File tree

3 files changed

+29
-6
lines changed

3 files changed

+29
-6
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"publish-all": "npm run publish-if-not-exists --workspace=packages/shared --workspace=packages/server --workspace=packages/client --workspace=packages/react",
1515
"docs": "typedoc",
1616
"core-version": "npm run version --workspace=packages/shared",
17-
"update-core-peers": "export OPENFEATURE_CORE_VERSION=$(npm run --silent core-version) && npm run update-core-peer --workspace=packages/server --workspace=packages/client --workspace=packages/react"
17+
"update-core-peers": "export OPENFEATURE_CORE_VERSION=$(npm run --silent core-version) && npm run update-core-peer --workspace=packages/server --workspace=packages/client"
1818
},
1919
"repository": {
2020
"type": "git",

packages/react/package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@
2424
"postbuild": "shx cp ./../../package.esm.json ./dist/esm/package.json",
2525
"current-version": "echo $npm_package_version",
2626
"prepack": "shx cp ./../../LICENSE ./LICENSE",
27-
"publish-if-not-exists": "cp $NPM_CONFIG_USERCONFIG .npmrc && if [ \"$(npm show $npm_package_name@$npm_package_version version)\" = \"$(npm run current-version -s)\" ]; then echo 'already published, skipping'; else npm publish --access public; fi",
28-
"update-core-peer": "npm install --save-peer --save-exact @openfeature/core@$OPENFEATURE_CORE_VERSION"
27+
"publish-if-not-exists": "cp $NPM_CONFIG_USERCONFIG .npmrc && if [ \"$(npm show $npm_package_name@$npm_package_version version)\" = \"$(npm run current-version -s)\" ]; then echo 'already published, skipping'; else npm publish --access public; fi"
2928
},
3029
"repository": {
3130
"type": "git",
@@ -47,12 +46,11 @@
4746
},
4847
"homepage": "https://github.com/open-feature/js-sdk#readme",
4948
"peerDependencies": {
50-
"@openfeature/core": "0.0.19",
5149
"@openfeature/web-sdk": ">=0.4.0",
5250
"react": ">=18.0.0"
5351
},
5452
"devDependencies": {
55-
"@openfeature/core": "0.0.19",
53+
"@openfeature/core": "*",
5654
"@openfeature/web-sdk": "*"
5755
}
5856
}

packages/shared/src/events/generic-event-emitter.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { ProviderEvents } from './events';
99
export abstract class GenericEventEmitter<AdditionalContext extends Record<string, unknown> = Record<string, unknown>>
1010
implements ManageLogger<GenericEventEmitter<AdditionalContext>>
1111
{
12-
protected abstract readonly eventEmitter: NodeJS.EventEmitter;
12+
protected abstract readonly eventEmitter: PlatformEventEmitter;
1313

1414
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1515
private readonly _handlers = new WeakMap<EventHandler<any>, EventHandler<any>>();
@@ -64,4 +64,29 @@ export abstract class GenericEventEmitter<AdditionalContext extends Record<strin
6464
protected get _logger() {
6565
return this._eventLogger ?? this.globalLogger?.();
6666
}
67+
}
68+
69+
/**
70+
* This is an un-exported type that corresponds to NodeJS.EventEmitter.
71+
* We can't use that type here, because this module is used in both the browser, and the server.
72+
* In the server, node (or whatever server runtime) provides an implementation for this.
73+
* In the browser, we bundle in the popular 'events' package, which is a polyfill of NodeJS.EventEmitter.
74+
*/
75+
/* eslint-disable */
76+
interface PlatformEventEmitter {
77+
addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
78+
on(eventName: string | symbol, listener: (...args: any[]) => void): this;
79+
once(eventName: string | symbol, listener: (...args: any[]) => void): this;
80+
removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
81+
off(eventName: string | symbol, listener: (...args: any[]) => void): this;
82+
removeAllListeners(event?: string | symbol): this;
83+
setMaxListeners(n: number): this;
84+
getMaxListeners(): number;
85+
listeners(eventName: string | symbol): Function[];
86+
rawListeners(eventName: string | symbol): Function[];
87+
emit(eventName: string | symbol, ...args: any[]): boolean;
88+
listenerCount(eventName: string | symbol, listener?: Function): number;
89+
prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
90+
prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
91+
eventNames(): Array<string | symbol>;
6792
}

0 commit comments

Comments
 (0)