@ketch-sdk/ketch-data-layer 1.1.9 → 1.2.1
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/dist/index.d.ts +2 -80
- package/dist/index.js +3 -186
- package/dist/jwt/structure.js +2 -2
- package/dist/watcher/index.d.ts +80 -0
- package/dist/watcher/index.js +202 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { EventEmitter } from 'events';
|
|
3
|
-
import { Identity } from '@ketch-sdk/ketch-types';
|
|
4
1
|
import { fetcher as cookieFetcher, getCookie, setCookie } from './cookie';
|
|
5
2
|
import { fetcher as dataLayerFetcher } from './dataLayer';
|
|
6
3
|
import { fetcher as windowFetcher } from './window';
|
|
@@ -13,81 +10,6 @@ import { structure as jsonStructure } from './json';
|
|
|
13
10
|
import { structure as jwtStructure } from './jwt';
|
|
14
11
|
import { structure as queryStructure } from './queryString';
|
|
15
12
|
import { structure as semicolonStructure } from './semicolon';
|
|
16
|
-
import
|
|
13
|
+
import Watcher from './watcher';
|
|
17
14
|
export { cookieFetcher, getCookie, setCookie, dataLayerFetcher, windowFetcher, localStorageFetcher, sessionStorageFetcher, queryStringFetcher, managedFetcher, stringStructure, jsonStructure, jwtStructure, queryStructure, semicolonStructure, };
|
|
18
|
-
|
|
19
|
-
* Watcher provides a mechanism for watching for identities.
|
|
20
|
-
*/
|
|
21
|
-
export default class Watcher extends EventEmitter {
|
|
22
|
-
private readonly _w;
|
|
23
|
-
private readonly _listenerOptions;
|
|
24
|
-
private _intervalId?;
|
|
25
|
-
private _fetchers;
|
|
26
|
-
private _identities;
|
|
27
|
-
/**
|
|
28
|
-
* Create a new Watcher.
|
|
29
|
-
*
|
|
30
|
-
* @param w The window interface
|
|
31
|
-
* @param options The listener options
|
|
32
|
-
*/
|
|
33
|
-
constructor(w: Window, options?: ListenerOptions);
|
|
34
|
-
/**
|
|
35
|
-
* Add an identity with the given name and definition.
|
|
36
|
-
*
|
|
37
|
-
* @param name The name of the identity.
|
|
38
|
-
* @param identity The definition of the identity.
|
|
39
|
-
*/
|
|
40
|
-
add(name: string, identity: Identity | (() => Promise<string[]>)): void;
|
|
41
|
-
/**
|
|
42
|
-
* Starts watching for identities.
|
|
43
|
-
*/
|
|
44
|
-
start(): Promise<void>;
|
|
45
|
-
/**
|
|
46
|
-
* Stops watching for identities.
|
|
47
|
-
*/
|
|
48
|
-
stop(): void;
|
|
49
|
-
/**
|
|
50
|
-
* Fetches and notifies about identities.
|
|
51
|
-
*/
|
|
52
|
-
notify(): Promise<void>;
|
|
53
|
-
/**
|
|
54
|
-
* Alias for `emitter.on(eventName, listener)`.
|
|
55
|
-
*/
|
|
56
|
-
addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
|
|
57
|
-
/**
|
|
58
|
-
* Adds the `listener` function to the end of the listeners array for the
|
|
59
|
-
* event named `eventName`. No checks are made to see if the `listener` has
|
|
60
|
-
* already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple
|
|
61
|
-
* times.
|
|
62
|
-
*
|
|
63
|
-
* @param eventName The name of the event.
|
|
64
|
-
* @param listener The callback function
|
|
65
|
-
*/
|
|
66
|
-
on(eventName: string | symbol, listener: (...args: any[]) => void): this;
|
|
67
|
-
/**
|
|
68
|
-
* Adds a **one-time**`listener` function for the event named `eventName`. The
|
|
69
|
-
* next time `eventName` is triggered, this listener is removed and then invoked.
|
|
70
|
-
*
|
|
71
|
-
* @param eventName The name of the event.
|
|
72
|
-
* @param listener The callback function
|
|
73
|
-
*/
|
|
74
|
-
once(eventName: string | symbol, listener: (...args: any[]) => void): this;
|
|
75
|
-
/**
|
|
76
|
-
* Removes the specified `listener` from the listener array for the event named`eventName`.
|
|
77
|
-
*/
|
|
78
|
-
removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
|
|
79
|
-
/**
|
|
80
|
-
* Alias for `emitter.removeListener()`.
|
|
81
|
-
*/
|
|
82
|
-
off(eventName: string | symbol, listener: (...args: any[]) => void): this;
|
|
83
|
-
/**
|
|
84
|
-
* Removes all listeners, or those of the specified `eventName`.
|
|
85
|
-
*
|
|
86
|
-
* It is bad practice to remove listeners added elsewhere in the code,
|
|
87
|
-
* particularly when the `EventEmitter` instance was created by some other
|
|
88
|
-
* component or module (e.g. sockets or file streams).
|
|
89
|
-
*
|
|
90
|
-
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
|
91
|
-
*/
|
|
92
|
-
removeAllListeners(event?: string | symbol): this;
|
|
93
|
-
}
|
|
15
|
+
export default Watcher;
|
package/dist/index.js
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.semicolonStructure = exports.queryStructure = exports.jwtStructure = exports.jsonStructure = exports.stringStructure = exports.managedFetcher = exports.queryStringFetcher = exports.sessionStorageFetcher = exports.localStorageFetcher = exports.windowFetcher = exports.dataLayerFetcher = exports.setCookie = exports.getCookie = exports.cookieFetcher = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const events_1 = require("events");
|
|
6
|
-
const ketch_types_1 = require("@ketch-sdk/ketch-types");
|
|
7
5
|
const cookie_1 = require("./cookie");
|
|
8
6
|
Object.defineProperty(exports, "cookieFetcher", { enumerable: true, get: function () { return cookie_1.fetcher; } });
|
|
9
7
|
Object.defineProperty(exports, "getCookie", { enumerable: true, get: function () { return cookie_1.getCookie; } });
|
|
@@ -30,187 +28,6 @@ const queryString_2 = require("./queryString");
|
|
|
30
28
|
Object.defineProperty(exports, "queryStructure", { enumerable: true, get: function () { return queryString_2.structure; } });
|
|
31
29
|
const semicolon_1 = require("./semicolon");
|
|
32
30
|
Object.defineProperty(exports, "semicolonStructure", { enumerable: true, get: function () { return semicolon_1.structure; } });
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Watcher provides a mechanism for watching for identities.
|
|
38
|
-
*/
|
|
39
|
-
class Watcher extends events_1.EventEmitter {
|
|
40
|
-
/**
|
|
41
|
-
* Create a new Watcher.
|
|
42
|
-
*
|
|
43
|
-
* @param w The window interface
|
|
44
|
-
* @param options The listener options
|
|
45
|
-
*/
|
|
46
|
-
constructor(w, options) {
|
|
47
|
-
super();
|
|
48
|
-
this._w = w;
|
|
49
|
-
this._listenerOptions = options || {};
|
|
50
|
-
this._fetchers = new Map();
|
|
51
|
-
this._identities = {};
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Add an identity with the given name and definition.
|
|
55
|
-
*
|
|
56
|
-
* @param name The name of the identity.
|
|
57
|
-
* @param identity The definition of the identity.
|
|
58
|
-
*/
|
|
59
|
-
add(name, identity) {
|
|
60
|
-
let structure;
|
|
61
|
-
if (typeof identity === 'function') {
|
|
62
|
-
this._fetchers.set(name, () => identity());
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
switch (identity.format) {
|
|
66
|
-
case ketch_types_1.IdentityFormat.IDENTITY_FORMAT_JSON:
|
|
67
|
-
structure = json_1.structure;
|
|
68
|
-
break;
|
|
69
|
-
case ketch_types_1.IdentityFormat.IDENTITY_FORMAT_JWT:
|
|
70
|
-
structure = jwt_1.structure;
|
|
71
|
-
break;
|
|
72
|
-
case ketch_types_1.IdentityFormat.IDENTITY_FORMAT_QUERY:
|
|
73
|
-
structure = queryString_2.structure;
|
|
74
|
-
break;
|
|
75
|
-
case ketch_types_1.IdentityFormat.IDENTITY_FORMAT_SEMICOLON:
|
|
76
|
-
structure = semicolon_1.structure;
|
|
77
|
-
break;
|
|
78
|
-
default: // string or undefined
|
|
79
|
-
structure = string_1.structure;
|
|
80
|
-
}
|
|
81
|
-
const key = identity.key || 'value';
|
|
82
|
-
switch (identity.type) {
|
|
83
|
-
case ketch_types_1.IdentityType.IDENTITY_TYPE_COOKIE:
|
|
84
|
-
this._fetchers.set(name, (w) => (0, cookie_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
85
|
-
break;
|
|
86
|
-
case ketch_types_1.IdentityType.IDENTITY_TYPE_DATA_LAYER:
|
|
87
|
-
this._fetchers.set(name, (w) => (0, dataLayer_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
88
|
-
break;
|
|
89
|
-
case ketch_types_1.IdentityType.IDENTITY_TYPE_WINDOW:
|
|
90
|
-
this._fetchers.set(name, (w) => (0, window_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
91
|
-
break;
|
|
92
|
-
case ketch_types_1.IdentityType.IDENTITY_TYPE_LOCAL_STORAGE:
|
|
93
|
-
this._fetchers.set(name, (w) => (0, localStorage_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
94
|
-
break;
|
|
95
|
-
case ketch_types_1.IdentityType.IDENTITY_TYPE_SESSION_STORAGE:
|
|
96
|
-
this._fetchers.set(name, (w) => (0, sessionStorage_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
97
|
-
break;
|
|
98
|
-
case ketch_types_1.IdentityType.IDENTITY_TYPE_QUERY_STRING:
|
|
99
|
-
this._fetchers.set(name, (w) => (0, queryString_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
100
|
-
break;
|
|
101
|
-
case ketch_types_1.IdentityType.IDENTITY_TYPE_MANAGED:
|
|
102
|
-
this._fetchers.set(name, (w) => (0, managed_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
103
|
-
break;
|
|
104
|
-
default:
|
|
105
|
-
throw new Error(`unsupported identity type ${identity.type} for ${name}`);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Starts watching for identities.
|
|
110
|
-
*/
|
|
111
|
-
start() {
|
|
112
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
113
|
-
if (this._intervalId) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
if (this._listenerOptions.interval) {
|
|
117
|
-
this._intervalId = this._w.setInterval(this.notify.bind(this), this._listenerOptions.interval);
|
|
118
|
-
if (this._listenerOptions.timeout) {
|
|
119
|
-
this._w.setTimeout(this.stop.bind(this), this._listenerOptions.timeout);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return this.notify();
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Stops watching for identities.
|
|
127
|
-
*/
|
|
128
|
-
stop() {
|
|
129
|
-
if (!this._intervalId) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
this._w.clearInterval(this._intervalId);
|
|
133
|
-
this._intervalId = undefined;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Fetches and notifies about identities.
|
|
137
|
-
*/
|
|
138
|
-
notify() {
|
|
139
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
140
|
-
const identities = {};
|
|
141
|
-
for (const [key, fetcher] of this._fetchers.entries()) {
|
|
142
|
-
try {
|
|
143
|
-
const values = yield fetcher(this._w);
|
|
144
|
-
for (const value of values) {
|
|
145
|
-
identities[key] = value;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
catch (e) {
|
|
149
|
-
log.warn(`failed to fetch identity for ${key}: ${e}`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
if (!(0, nano_equal_1.default)(identities, this._identities)) {
|
|
153
|
-
this.emit('identity', identities);
|
|
154
|
-
this._identities = identities;
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Alias for `emitter.on(eventName, listener)`.
|
|
160
|
-
*/
|
|
161
|
-
addListener(eventName, listener) {
|
|
162
|
-
return this.on(eventName, listener);
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Adds the `listener` function to the end of the listeners array for the
|
|
166
|
-
* event named `eventName`. No checks are made to see if the `listener` has
|
|
167
|
-
* already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple
|
|
168
|
-
* times.
|
|
169
|
-
*
|
|
170
|
-
* @param eventName The name of the event.
|
|
171
|
-
* @param listener The callback function
|
|
172
|
-
*/
|
|
173
|
-
on(eventName, listener) {
|
|
174
|
-
super.on(eventName, listener);
|
|
175
|
-
return this;
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Adds a **one-time**`listener` function for the event named `eventName`. The
|
|
179
|
-
* next time `eventName` is triggered, this listener is removed and then invoked.
|
|
180
|
-
*
|
|
181
|
-
* @param eventName The name of the event.
|
|
182
|
-
* @param listener The callback function
|
|
183
|
-
*/
|
|
184
|
-
once(eventName, listener) {
|
|
185
|
-
super.once(eventName, listener);
|
|
186
|
-
return this;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Removes the specified `listener` from the listener array for the event named`eventName`.
|
|
190
|
-
*/
|
|
191
|
-
removeListener(eventName, listener) {
|
|
192
|
-
return this.off(eventName, listener);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Alias for `emitter.removeListener()`.
|
|
196
|
-
*/
|
|
197
|
-
off(eventName, listener) {
|
|
198
|
-
super.off(eventName, listener);
|
|
199
|
-
return this;
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Removes all listeners, or those of the specified `eventName`.
|
|
203
|
-
*
|
|
204
|
-
* It is bad practice to remove listeners added elsewhere in the code,
|
|
205
|
-
* particularly when the `EventEmitter` instance was created by some other
|
|
206
|
-
* component or module (e.g. sockets or file streams).
|
|
207
|
-
*
|
|
208
|
-
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
|
209
|
-
*/
|
|
210
|
-
removeAllListeners(event) {
|
|
211
|
-
super.removeAllListeners(event);
|
|
212
|
-
return this;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
exports.default = Watcher;
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG1DQUFxQztBQUNyQyx3REFBMkY7QUFDM0YscUNBQXlFO0FBa0J2RSw4RkFsQmtCLGdCQUFhLE9Ba0JsQjtBQUNiLDBGQW5CaUMsa0JBQVMsT0FtQmpDO0FBQ1QsMEZBcEI0QyxrQkFBUyxPQW9CNUM7QUFuQlgsMkNBQXlEO0FBb0J2RCxpR0FwQmtCLG1CQUFnQixPQW9CbEI7QUFuQmxCLHFDQUFtRDtBQW9CakQsOEZBcEJrQixnQkFBYSxPQW9CbEI7QUFuQmYsaURBQStEO0FBb0I3RCxvR0FwQmtCLHNCQUFtQixPQW9CbEI7QUFuQnJCLHFEQUFtRTtBQW9CakUsc0dBcEJrQix3QkFBcUIsT0FvQmxCO0FBbkJ2QiwrQ0FBNkQ7QUFvQjNELG1HQXBCa0IscUJBQWtCLE9Bb0JsQjtBQW5CcEIsdUNBQXFEO0FBb0JuRCwrRkFwQmtCLGlCQUFjLE9Bb0JsQjtBQW5CaEIscUNBQXVEO0FBb0JyRCxnR0FwQm9CLGtCQUFlLE9Bb0JwQjtBQW5CakIsaUNBQW1EO0FBb0JqRCw4RkFwQm9CLGdCQUFhLE9Bb0JwQjtBQW5CZiwrQkFBaUQ7QUFvQi9DLDZGQXBCb0IsZUFBWSxPQW9CcEI7QUFuQmQsK0NBQTJEO0FBb0J6RCwrRkFwQm9CLHVCQUFjLE9Bb0JwQjtBQW5CaEIsMkNBQTZEO0FBb0IzRCxtR0FwQm9CLHFCQUFrQixPQW9CcEI7QUFqQnBCLG9FQUFrQztBQUNsQyw0REFBb0Q7QUFtQnBELE1BQU0sR0FBRyxHQUFHLElBQUEseUJBQVMsRUFBQyxVQUFVLENBQUMsQ0FBQTtBQUVqQzs7R0FFRztBQUNILE1BQXFCLE9BQVEsU0FBUSxxQkFBWTtJQU8vQzs7Ozs7T0FLRztJQUNILFlBQVksQ0FBUyxFQUFFLE9BQXlCO1FBQzlDLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7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QUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDM0csQ0FBQTtnQkFDRCxNQUFLO1lBRVAsS0FBSywwQkFBWSxDQUFDLDZCQUE2QjtnQkFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FDckMsSUFBQSx3QkFBcUIsRUFBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDN0csQ0FBQTtnQkFDRCxNQUFLO1lBRVAsS0FBSywwQkFBWSxDQUFDLDBCQUEwQjtnQkFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FDckMsSUFBQSxxQkFBa0IsRUFBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDMUcsQ0FBQTtnQkFDRCxNQUFLO1lBRVAsS0FBSywwQkFBWSxDQUFDLHFCQUFxQjtnQkFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FDckMsSUFBQSxpQkFBYyxFQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUN0RyxDQUFBO2dCQUNELE1BQUs7WUFFUDtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsSUFBSSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUE7U0FDNUU7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDRyxLQUFLOztZQUNULElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsT0FBTTthQUNQO1lBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFFOUYsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO29CQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUE7aUJBQ3hFO2FBQ0Y7WUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUN0QixDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixPQUFNO1NBQ1A7UUFFRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7UUFFdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0csTUFBTTs7WUFDVixNQUFNLFVBQVUsR0FBZSxFQUFFLENBQUE7WUFFakMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3JELElBQUk7b0JBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO29CQUVyQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTt3QkFDMUIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtxQkFDeEI7aUJBQ0Y7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsR0FBRyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7aUJBQ3REO2FBQ0Y7WUFFRCxJQUFJLENBQUMsSUFBQSxvQkFBUyxFQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFBO2dCQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQTthQUM5QjtRQUNILENBQUM7S0FBQTtJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLFNBQTBCLEVBQUUsUUFBa0M7UUFDeEUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxFQUFFLENBQUMsU0FBMEIsRUFBRSxRQUFrQztRQUMvRCxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUM3QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQUMsU0FBMEIsRUFBRSxRQUFrQztRQUNqRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUMvQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxTQUEwQixFQUFFLFFBQWtDO1FBQzNFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLFNBQTBCLEVBQUUsUUFBa0M7UUFDaEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDOUIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxrQkFBa0IsQ0FBQyxLQUF1QjtRQUN4QyxLQUFLLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDL0IsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0NBQ0Y7QUEvTkQsMEJBK05DIn0=
|
|
31
|
+
const watcher_1 = tslib_1.__importDefault(require("./watcher"));
|
|
32
|
+
exports.default = watcher_1.default;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHFDQUF5RTtBQWV2RSw4RkFma0IsZ0JBQWEsT0FlbEI7QUFDYiwwRkFoQmlDLGtCQUFTLE9BZ0JqQztBQUNULDBGQWpCNEMsa0JBQVMsT0FpQjVDO0FBaEJYLDJDQUF5RDtBQWlCdkQsaUdBakJrQixtQkFBZ0IsT0FpQmxCO0FBaEJsQixxQ0FBbUQ7QUFpQmpELDhGQWpCa0IsZ0JBQWEsT0FpQmxCO0FBaEJmLGlEQUErRDtBQWlCN0Qsb0dBakJrQixzQkFBbUIsT0FpQmxCO0FBaEJyQixxREFBbUU7QUFpQmpFLHNHQWpCa0Isd0JBQXFCLE9BaUJsQjtBQWhCdkIsK0NBQTZEO0FBaUIzRCxtR0FqQmtCLHFCQUFrQixPQWlCbEI7QUFoQnBCLHVDQUFxRDtBQWlCbkQsK0ZBakJrQixpQkFBYyxPQWlCbEI7QUFoQmhCLHFDQUF1RDtBQWlCckQsZ0dBakJvQixrQkFBZSxPQWlCcEI7QUFoQmpCLGlDQUFtRDtBQWlCakQsOEZBakJvQixnQkFBYSxPQWlCcEI7QUFoQmYsK0JBQWlEO0FBaUIvQyw2RkFqQm9CLGVBQVksT0FpQnBCO0FBaEJkLCtDQUEyRDtBQWlCekQsK0ZBakJvQix1QkFBYyxPQWlCcEI7QUFoQmhCLDJDQUE2RDtBQWlCM0QsbUdBakJvQixxQkFBa0IsT0FpQnBCO0FBaEJwQixnRUFBK0I7QUFtQi9CLGtCQUFlLGlCQUFPLENBQUEifQ==
|
package/dist/jwt/structure.js
CHANGED
|
@@ -4,8 +4,8 @@ function jwtStructure(value) {
|
|
|
4
4
|
const s = value;
|
|
5
5
|
const parts = s.split('.');
|
|
6
6
|
const claimsString = parts[1];
|
|
7
|
-
const claims =
|
|
7
|
+
const claims = atob(claimsString);
|
|
8
8
|
return JSON.parse(claims);
|
|
9
9
|
}
|
|
10
10
|
exports.default = jwtStructure;
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2p3dC9zdHJ1Y3R1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxTQUF3QixZQUFZLENBQUMsS0FBVTtJQUM3QyxNQUFNLENBQUMsR0FBRyxLQUFlLENBQUE7SUFDekIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ2pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQVcsQ0FBQTtBQUNyQyxDQUFDO0FBTkQsK0JBTUMifQ==
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Identity } from '@ketch-sdk/ketch-types';
|
|
2
|
+
import { ListenerOptions } from '../listener';
|
|
3
|
+
/**
|
|
4
|
+
* Watcher provides a mechanism for watching for identities.
|
|
5
|
+
*/
|
|
6
|
+
export default class Watcher {
|
|
7
|
+
private readonly _w;
|
|
8
|
+
private readonly _listenerOptions;
|
|
9
|
+
private _intervalId?;
|
|
10
|
+
private _fetchers;
|
|
11
|
+
private _identities;
|
|
12
|
+
private _emitter;
|
|
13
|
+
/**
|
|
14
|
+
* Create a new Watcher.
|
|
15
|
+
*
|
|
16
|
+
* @param w The window interface
|
|
17
|
+
* @param options The listener options
|
|
18
|
+
*/
|
|
19
|
+
constructor(w: Window, options?: ListenerOptions);
|
|
20
|
+
/**
|
|
21
|
+
* Add an identity with the given name and definition.
|
|
22
|
+
*
|
|
23
|
+
* @param name The name of the identity.
|
|
24
|
+
* @param identity The definition of the identity.
|
|
25
|
+
*/
|
|
26
|
+
add(name: string, identity: Identity | (() => Promise<string[]>)): void;
|
|
27
|
+
/**
|
|
28
|
+
* Starts watching for identities.
|
|
29
|
+
*/
|
|
30
|
+
start(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Stops watching for identities.
|
|
33
|
+
*/
|
|
34
|
+
stop(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Fetches and notifies about identities.
|
|
37
|
+
*/
|
|
38
|
+
notify(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Alias for `emitter.on(eventName, listener)`.
|
|
41
|
+
*/
|
|
42
|
+
addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
|
|
43
|
+
/**
|
|
44
|
+
* Adds the `listener` function to the end of the listeners array for the
|
|
45
|
+
* event named `eventName`. No checks are made to see if the `listener` has
|
|
46
|
+
* already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in
|
|
47
|
+
* the `listener` being added, and called, multiple
|
|
48
|
+
* times.
|
|
49
|
+
*
|
|
50
|
+
* @param eventName The name of the event.
|
|
51
|
+
* @param listener The callback function
|
|
52
|
+
*/
|
|
53
|
+
on(eventName: string | symbol, listener: (...args: any[]) => void): this;
|
|
54
|
+
/**
|
|
55
|
+
* Adds a **one-time**`listener` function for the event named `eventName`. The
|
|
56
|
+
* next time `eventName` is triggered, this listener is removed and then invoked.
|
|
57
|
+
*
|
|
58
|
+
* @param eventName The name of the event.
|
|
59
|
+
* @param listener The callback function
|
|
60
|
+
*/
|
|
61
|
+
once(eventName: string | symbol, listener: (...args: any[]) => void): this;
|
|
62
|
+
/**
|
|
63
|
+
* Removes the specified `listener` from the listener array for the event named`eventName`.
|
|
64
|
+
*/
|
|
65
|
+
removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
|
|
66
|
+
/**
|
|
67
|
+
* Alias for `emitter.removeListener()`.
|
|
68
|
+
*/
|
|
69
|
+
off(eventName: string | symbol, listener: (...args: any[]) => void): this;
|
|
70
|
+
/**
|
|
71
|
+
* Removes all listeners, or those of the specified `eventName`.
|
|
72
|
+
*
|
|
73
|
+
* It is bad practice to remove listeners added elsewhere in the code,
|
|
74
|
+
* particularly when the `EventEmitter` instance was created by some other
|
|
75
|
+
* component or module (e.g. sockets or file streams).
|
|
76
|
+
*
|
|
77
|
+
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
|
78
|
+
*/
|
|
79
|
+
removeAllListeners(event?: string | symbol): this;
|
|
80
|
+
}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const events_1 = require("events");
|
|
5
|
+
const ketch_types_1 = require("@ketch-sdk/ketch-types");
|
|
6
|
+
const cookie_1 = require("../cookie");
|
|
7
|
+
const dataLayer_1 = require("../dataLayer");
|
|
8
|
+
const window_1 = require("../window");
|
|
9
|
+
const localStorage_1 = require("../localStorage");
|
|
10
|
+
const sessionStorage_1 = require("../sessionStorage");
|
|
11
|
+
const queryString_1 = require("../queryString");
|
|
12
|
+
const managed_1 = require("../managed");
|
|
13
|
+
const string_1 = require("../string");
|
|
14
|
+
const json_1 = require("../json");
|
|
15
|
+
const jwt_1 = require("../jwt");
|
|
16
|
+
const queryString_2 = require("../queryString");
|
|
17
|
+
const semicolon_1 = require("../semicolon");
|
|
18
|
+
const nano_equal_1 = tslib_1.__importDefault(require("nano-equal"));
|
|
19
|
+
const ketch_logging_1 = require("@ketch-sdk/ketch-logging");
|
|
20
|
+
const log = (0, ketch_logging_1.getLogger)('identity');
|
|
21
|
+
/**
|
|
22
|
+
* Watcher provides a mechanism for watching for identities.
|
|
23
|
+
*/
|
|
24
|
+
class Watcher {
|
|
25
|
+
/**
|
|
26
|
+
* Create a new Watcher.
|
|
27
|
+
*
|
|
28
|
+
* @param w The window interface
|
|
29
|
+
* @param options The listener options
|
|
30
|
+
*/
|
|
31
|
+
constructor(w, options = {}) {
|
|
32
|
+
this._emitter = new events_1.EventEmitter();
|
|
33
|
+
this._w = w;
|
|
34
|
+
this._listenerOptions = options;
|
|
35
|
+
this._fetchers = new Map();
|
|
36
|
+
this._identities = {};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Add an identity with the given name and definition.
|
|
40
|
+
*
|
|
41
|
+
* @param name The name of the identity.
|
|
42
|
+
* @param identity The definition of the identity.
|
|
43
|
+
*/
|
|
44
|
+
add(name, identity) {
|
|
45
|
+
let structure;
|
|
46
|
+
if (typeof identity === 'function') {
|
|
47
|
+
this._fetchers.set(name, () => identity());
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
switch (identity.format) {
|
|
51
|
+
case ketch_types_1.IdentityFormat.IDENTITY_FORMAT_JSON:
|
|
52
|
+
structure = json_1.structure;
|
|
53
|
+
break;
|
|
54
|
+
case ketch_types_1.IdentityFormat.IDENTITY_FORMAT_JWT:
|
|
55
|
+
structure = jwt_1.structure;
|
|
56
|
+
break;
|
|
57
|
+
case ketch_types_1.IdentityFormat.IDENTITY_FORMAT_QUERY:
|
|
58
|
+
structure = queryString_2.structure;
|
|
59
|
+
break;
|
|
60
|
+
case ketch_types_1.IdentityFormat.IDENTITY_FORMAT_SEMICOLON:
|
|
61
|
+
structure = semicolon_1.structure;
|
|
62
|
+
break;
|
|
63
|
+
default: // string or undefined
|
|
64
|
+
structure = string_1.structure;
|
|
65
|
+
}
|
|
66
|
+
const key = identity.key || 'value';
|
|
67
|
+
switch (identity.type) {
|
|
68
|
+
case ketch_types_1.IdentityType.IDENTITY_TYPE_COOKIE:
|
|
69
|
+
this._fetchers.set(name, (w) => (0, cookie_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
70
|
+
break;
|
|
71
|
+
case ketch_types_1.IdentityType.IDENTITY_TYPE_DATA_LAYER:
|
|
72
|
+
this._fetchers.set(name, (w) => (0, dataLayer_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
73
|
+
break;
|
|
74
|
+
case ketch_types_1.IdentityType.IDENTITY_TYPE_WINDOW:
|
|
75
|
+
this._fetchers.set(name, (w) => (0, window_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
76
|
+
break;
|
|
77
|
+
case ketch_types_1.IdentityType.IDENTITY_TYPE_LOCAL_STORAGE:
|
|
78
|
+
this._fetchers.set(name, (w) => (0, localStorage_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
79
|
+
break;
|
|
80
|
+
case ketch_types_1.IdentityType.IDENTITY_TYPE_SESSION_STORAGE:
|
|
81
|
+
this._fetchers.set(name, (w) => (0, sessionStorage_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
82
|
+
break;
|
|
83
|
+
case ketch_types_1.IdentityType.IDENTITY_TYPE_QUERY_STRING:
|
|
84
|
+
this._fetchers.set(name, (w) => (0, queryString_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
85
|
+
break;
|
|
86
|
+
case ketch_types_1.IdentityType.IDENTITY_TYPE_MANAGED:
|
|
87
|
+
this._fetchers.set(name, (w) => (0, managed_1.fetcher)(w, identity.variable).then(values => values.map(structure).map(values => values[key])));
|
|
88
|
+
break;
|
|
89
|
+
default:
|
|
90
|
+
throw new Error(`unsupported identity type ${identity.type} for ${name}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Starts watching for identities.
|
|
95
|
+
*/
|
|
96
|
+
start() {
|
|
97
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
if (this._intervalId) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (this._listenerOptions.interval) {
|
|
102
|
+
this._intervalId = this._w.setInterval(this.notify.bind(this), this._listenerOptions.interval);
|
|
103
|
+
if (this._listenerOptions.timeout) {
|
|
104
|
+
this._w.setTimeout(this.stop.bind(this), this._listenerOptions.timeout);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return this.notify();
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Stops watching for identities.
|
|
112
|
+
*/
|
|
113
|
+
stop() {
|
|
114
|
+
if (!this._intervalId) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
this._w.clearInterval(this._intervalId);
|
|
118
|
+
this._intervalId = undefined;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Fetches and notifies about identities.
|
|
122
|
+
*/
|
|
123
|
+
notify() {
|
|
124
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
125
|
+
const identities = {};
|
|
126
|
+
for (const [key, fetcher] of this._fetchers.entries()) {
|
|
127
|
+
try {
|
|
128
|
+
const values = yield fetcher(this._w);
|
|
129
|
+
for (const value of values) {
|
|
130
|
+
identities[key] = value;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
log.warn(`failed to fetch identity for ${key}: ${e}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (!(0, nano_equal_1.default)(identities, this._identities)) {
|
|
138
|
+
this._emitter.emit('identity', identities);
|
|
139
|
+
this._identities = identities;
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Alias for `emitter.on(eventName, listener)`.
|
|
145
|
+
*/
|
|
146
|
+
addListener(eventName, listener) {
|
|
147
|
+
return this.on(eventName, listener);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Adds the `listener` function to the end of the listeners array for the
|
|
151
|
+
* event named `eventName`. No checks are made to see if the `listener` has
|
|
152
|
+
* already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in
|
|
153
|
+
* the `listener` being added, and called, multiple
|
|
154
|
+
* times.
|
|
155
|
+
*
|
|
156
|
+
* @param eventName The name of the event.
|
|
157
|
+
* @param listener The callback function
|
|
158
|
+
*/
|
|
159
|
+
on(eventName, listener) {
|
|
160
|
+
this._emitter.on(eventName, listener);
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Adds a **one-time**`listener` function for the event named `eventName`. The
|
|
165
|
+
* next time `eventName` is triggered, this listener is removed and then invoked.
|
|
166
|
+
*
|
|
167
|
+
* @param eventName The name of the event.
|
|
168
|
+
* @param listener The callback function
|
|
169
|
+
*/
|
|
170
|
+
once(eventName, listener) {
|
|
171
|
+
this._emitter.once(eventName, listener);
|
|
172
|
+
return this;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Removes the specified `listener` from the listener array for the event named`eventName`.
|
|
176
|
+
*/
|
|
177
|
+
removeListener(eventName, listener) {
|
|
178
|
+
return this.off(eventName, listener);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Alias for `emitter.removeListener()`.
|
|
182
|
+
*/
|
|
183
|
+
off(eventName, listener) {
|
|
184
|
+
this._emitter.off(eventName, listener);
|
|
185
|
+
return this;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Removes all listeners, or those of the specified `eventName`.
|
|
189
|
+
*
|
|
190
|
+
* It is bad practice to remove listeners added elsewhere in the code,
|
|
191
|
+
* particularly when the `EventEmitter` instance was created by some other
|
|
192
|
+
* component or module (e.g. sockets or file streams).
|
|
193
|
+
*
|
|
194
|
+
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
|
195
|
+
*/
|
|
196
|
+
removeAllListeners(event) {
|
|
197
|
+
this._emitter.removeAllListeners(event);
|
|
198
|
+
return this;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.default = Watcher;
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2F0Y2hlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBcUM7QUFDckMsd0RBQTJGO0FBQzNGLHNDQUFvRDtBQUNwRCw0Q0FBMEQ7QUFDMUQsc0NBQW9EO0FBQ3BELGtEQUFnRTtBQUNoRSxzREFBb0U7QUFDcEUsZ0RBQThEO0FBQzlELHdDQUFzRDtBQUN0RCxzQ0FBd0Q7QUFDeEQsa0NBQW9EO0FBQ3BELGdDQUFrRDtBQUNsRCxnREFBNEQ7QUFDNUQsNENBQThEO0FBRzlELG9FQUFrQztBQUNsQyw0REFBb0Q7QUFFcEQsTUFBTSxHQUFHLEdBQUcsSUFBQSx5QkFBUyxFQUFDLFVBQVUsQ0FBQyxDQUFBO0FBRWpDOztHQUVHO0FBQ0gsTUFBcUIsT0FBTztJQVExQjs7Ozs7T0FLRztJQUNILFlBQVksQ0FBUyxFQUFFLFVBQTJCLEVBQUU7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHFCQUFZLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNYLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUE7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBNEMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxHQUFHLENBQUMsSUFBWSxFQUFFLFFBQThDO1FBQzlELElBQUksU0FBb0IsQ0FBQTtRQUV4QixJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtZQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUMxQyxPQUFNO1NBQ1A7UUFFRCxRQUFRLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDdkIsS0FB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
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "@ketch-sdk/ketch-data-layer", "version": "1.1
|
|
1
|
+
{"name": "@ketch-sdk/ketch-data-layer", "version": "1.2.1", "description": "Ketch Data Layer interface", "main": "dist/index.js", "types": "dist/index.d.ts", "type": "commonjs", "scripts": {"all": "npm run lint && npm run format-check && npm run test && npm run build && npm run docs", "build": "tsc -p .", "format": "prettier --write \"**/*.{ts,tsx,yml,yaml}\"", "format-check": "prettier --check '**/*.ts'", "lint": "eslint src/**/*.ts", "test": "jest --runInBand --passWithNoTests", "docs": "typedoc --githubPages true --excludeExternals --excludeInternal src/index.ts"}, "repository": {"type": "git", "url": "git+https://github.com/ketch-sdk/ketch-data-layer.git"}, "homepage": "https://github.com/ketch-sdk/ketch-data-layer", "bugs": {"url": "https://github.com/ketch-sdk/ketch-data-layer/issues"}, "keywords": ["Ketch", "dataLayer"], "author": "Ketch Kloud, Inc.", "license": "MIT", "devDependencies": {"@types/events": "^3.0.0", "@types/jest": "^29.4.0", "@types/nano-equal": "^2.0.0", "@types/uuid": "^9.0.0", "@typescript-eslint/eslint-plugin": "^5.49.0", "@typescript-eslint/parser": "^5.49.0", "eslint": "^8.33.0", "eslint-config-prettier": "^8.6.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "eslint-plugin-prettier": "^4.2.1", "jest": "^29.4.1", "jest-environment-jsdom": "^29.4.1", "jest-junit": "^15.0.0", "js-yaml": "^4.1.0", "prettier": "^2.8.3", "ts-jest": "^29.0.5", "typedoc": "^0.23.24", "typescript": "^4.9.4"}, "dependencies": {"@ketch-com/ketch-cookie": "^1.0.4", "@ketch-sdk/ketch-logging": "^1.1.0", "@ketch-sdk/ketch-types": "^1.5.1", "events": "^3.3.0", "nano-equal": "^2.0.2", "tslib": "^2.5.0", "uuid": "^9.0.0"}, "files": ["dist/"]}
|