@graphql-yoga/typed-event-target 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/cjs/index.js +33 -0
- package/cjs/package.json +1 -0
- package/esm/index.js +29 -0
- package/package.json +46 -0
- package/typings/index.d.ts +20 -0
package/README.md
ADDED
package/cjs/index.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveGlobalConfig = void 0;
|
|
4
|
+
const resolveGlobalConfig = (api = globalThis) => {
|
|
5
|
+
if (!api.Event || !api.EventTarget) {
|
|
6
|
+
throw new Error(`
|
|
7
|
+
[@graphql-yoga/subscription] 'createPubSub' uses the Event and EventTarget APIs.
|
|
8
|
+
|
|
9
|
+
In modern JavaScript environments those are part of the global scope. However, if you are using an older version of Node.js (< 16.x.x), those APIs must be polyfilled.
|
|
10
|
+
You can provide polyfills to the 'createPubSub' function:
|
|
11
|
+
|
|
12
|
+
\`\`\`
|
|
13
|
+
// yarn install --exact event-target-polyfill@0.0.3
|
|
14
|
+
import 'event-target-polyfill'
|
|
15
|
+
|
|
16
|
+
const pubSub = createPubSub()
|
|
17
|
+
\`\`\`
|
|
18
|
+
|
|
19
|
+
Alternatively, you can provide your own custom implementation.
|
|
20
|
+
|
|
21
|
+
\`\`\`
|
|
22
|
+
const pubSub = createPubSub({
|
|
23
|
+
event: {
|
|
24
|
+
Event,
|
|
25
|
+
EventTarget,
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
\`\`\`
|
|
29
|
+
`);
|
|
30
|
+
}
|
|
31
|
+
return globalThis;
|
|
32
|
+
};
|
|
33
|
+
exports.resolveGlobalConfig = resolveGlobalConfig;
|
package/cjs/package.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
package/esm/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const resolveGlobalConfig = (api = globalThis) => {
|
|
2
|
+
if (!api.Event || !api.EventTarget) {
|
|
3
|
+
throw new Error(`
|
|
4
|
+
[@graphql-yoga/subscription] 'createPubSub' uses the Event and EventTarget APIs.
|
|
5
|
+
|
|
6
|
+
In modern JavaScript environments those are part of the global scope. However, if you are using an older version of Node.js (< 16.x.x), those APIs must be polyfilled.
|
|
7
|
+
You can provide polyfills to the 'createPubSub' function:
|
|
8
|
+
|
|
9
|
+
\`\`\`
|
|
10
|
+
// yarn install --exact event-target-polyfill@0.0.3
|
|
11
|
+
import 'event-target-polyfill'
|
|
12
|
+
|
|
13
|
+
const pubSub = createPubSub()
|
|
14
|
+
\`\`\`
|
|
15
|
+
|
|
16
|
+
Alternatively, you can provide your own custom implementation.
|
|
17
|
+
|
|
18
|
+
\`\`\`
|
|
19
|
+
const pubSub = createPubSub({
|
|
20
|
+
event: {
|
|
21
|
+
Event,
|
|
22
|
+
EventTarget,
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
\`\`\`
|
|
26
|
+
`);
|
|
27
|
+
}
|
|
28
|
+
return globalThis;
|
|
29
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@graphql-yoga/typed-event-target",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"dependencies": {
|
|
6
|
+
"@repeaterjs/repeater": "^3.0.4",
|
|
7
|
+
"tslib": "^2.3.1"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/dotansimha/graphql-yoga.git",
|
|
12
|
+
"directory": "packages/event-target/typed-event-target"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"pubsub",
|
|
16
|
+
"graphql",
|
|
17
|
+
"event",
|
|
18
|
+
"subscription"
|
|
19
|
+
],
|
|
20
|
+
"author": "Laurin Quast <laurinquast@googlemail.com>",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"main": "cjs/index.js",
|
|
23
|
+
"module": "esm/index.js",
|
|
24
|
+
"typings": "typings/index.d.ts",
|
|
25
|
+
"typescript": {
|
|
26
|
+
"definition": "typings/index.d.ts"
|
|
27
|
+
},
|
|
28
|
+
"type": "module",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"require": {
|
|
32
|
+
"types": "./typings/index.d.ts",
|
|
33
|
+
"default": "./cjs/index.js"
|
|
34
|
+
},
|
|
35
|
+
"import": {
|
|
36
|
+
"types": "./typings/index.d.ts",
|
|
37
|
+
"default": "./esm/index.js"
|
|
38
|
+
},
|
|
39
|
+
"default": {
|
|
40
|
+
"types": "./typings/index.d.ts",
|
|
41
|
+
"default": "./esm/index.js"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"./package.json": "./package.json"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare type TypedEvent = Event & {
|
|
2
|
+
data?: unknown;
|
|
3
|
+
};
|
|
4
|
+
export interface TypedEventListener<TEvent extends TypedEvent> extends EventListener {
|
|
5
|
+
(evt: TEvent): void;
|
|
6
|
+
}
|
|
7
|
+
export interface TypedEventListenerObject<TEvent extends TypedEvent> extends EventListener {
|
|
8
|
+
handleEvent(object: TEvent): void;
|
|
9
|
+
}
|
|
10
|
+
export declare type TypedEventListenerOrEventListenerObject<TEvent extends TypedEvent> = TypedEventListener<TEvent> | TypedEventListenerObject<TEvent>;
|
|
11
|
+
export interface TypedEventTarget<TEvent extends TypedEvent> extends EventTarget {
|
|
12
|
+
addEventListener(type: string, callback: TypedEventListenerOrEventListenerObject<TEvent>, options?: AddEventListenerOptions | boolean): void;
|
|
13
|
+
dispatchEvent(event: TEvent): boolean;
|
|
14
|
+
removeEventListener(type: string, callback: TypedEventListenerOrEventListenerObject<TEvent>, options?: EventListenerOptions | boolean): void;
|
|
15
|
+
}
|
|
16
|
+
export declare type EventAPI = {
|
|
17
|
+
Event: typeof Event;
|
|
18
|
+
EventTarget: typeof EventTarget;
|
|
19
|
+
};
|
|
20
|
+
export declare const resolveGlobalConfig: (api?: EventAPI) => EventAPI;
|