@nlabs/arkhamjs 3.26.0 → 3.26.2
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/lib/Flux/Flux.d.ts +38 -0
- package/lib/Flux/Flux.js +484 -0
- package/lib/Flux/Flux.types.d.ts +47 -0
- package/lib/Flux/Flux.types.js +16 -0
- package/lib/constants/ArkhamConstants.d.ts +8 -0
- package/lib/constants/ArkhamConstants.js +35 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +35 -0
- package/package.json +14 -7
@@ -0,0 +1,38 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { EventEmitter } from 'events';
|
3
|
+
import { FluxAction, FluxMiddlewareType, FluxOptions, FluxStore } from './Flux.types';
|
4
|
+
export declare class FluxFramework extends EventEmitter {
|
5
|
+
static initFlux: boolean;
|
6
|
+
isInit: boolean;
|
7
|
+
pluginTypes: string[];
|
8
|
+
private state;
|
9
|
+
private storeActions;
|
10
|
+
private defaultOptions;
|
11
|
+
private middleware;
|
12
|
+
private options;
|
13
|
+
constructor();
|
14
|
+
addMiddleware(middleware: FluxMiddlewareType[]): void;
|
15
|
+
clearAppData(): Promise<boolean>;
|
16
|
+
clearMiddleware(): boolean;
|
17
|
+
removeStores(storeNames: string[]): void;
|
18
|
+
dispatch(action: FluxAction, silent?: boolean): Promise<FluxAction>;
|
19
|
+
getOptions(): FluxOptions;
|
20
|
+
getState(path?: string | string[], defaultValue?: any): any;
|
21
|
+
getStore(name?: string): FluxStore;
|
22
|
+
init(options?: FluxOptions, reset?: boolean): Promise<FluxFramework>;
|
23
|
+
onInit(listener: (...args: any[]) => void): void;
|
24
|
+
offInit(listener: (...args: any[]) => void): void;
|
25
|
+
off(eventType: string, listener: (...args: any[]) => void): this;
|
26
|
+
on(eventType: string, listener: (...args: any[]) => void): this;
|
27
|
+
addStores(stores: any[]): Promise<object[]>;
|
28
|
+
removeMiddleware(names: string[]): void;
|
29
|
+
reset(clearStorage?: boolean): Promise<void>;
|
30
|
+
setState(path: string | string[], value: any): Promise<boolean>;
|
31
|
+
private addPlugin;
|
32
|
+
private deregister;
|
33
|
+
private register;
|
34
|
+
private removePlugin;
|
35
|
+
private updateStorage;
|
36
|
+
private useStorage;
|
37
|
+
}
|
38
|
+
export declare const Flux: FluxFramework;
|
package/lib/Flux/Flux.js
ADDED
@@ -0,0 +1,484 @@
|
|
1
|
+
var __create = Object.create;
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __export = (target, all) => {
|
8
|
+
for (var name in all)
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
10
|
+
};
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
13
|
+
for (let key of __getOwnPropNames(from))
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
16
|
+
}
|
17
|
+
return to;
|
18
|
+
};
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
25
|
+
mod
|
26
|
+
));
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
28
|
+
var Flux_exports = {};
|
29
|
+
__export(Flux_exports, {
|
30
|
+
Flux: () => Flux,
|
31
|
+
FluxFramework: () => FluxFramework
|
32
|
+
});
|
33
|
+
module.exports = __toCommonJS(Flux_exports);
|
34
|
+
var import_error_stack_parser = __toESM(require("error-stack-parser"));
|
35
|
+
var import_events = require("events");
|
36
|
+
var import_debounce = __toESM(require("lodash/debounce"));
|
37
|
+
var import_cloneDeep = __toESM(require("lodash/fp/cloneDeep"));
|
38
|
+
var import_get = __toESM(require("lodash/fp/get"));
|
39
|
+
var import_isEmpty = __toESM(require("lodash/fp/isEmpty"));
|
40
|
+
var import_merge = __toESM(require("lodash/fp/merge"));
|
41
|
+
var import_set = __toESM(require("lodash/fp/set"));
|
42
|
+
var import_ArkhamConstants = require("../constants/ArkhamConstants");
|
43
|
+
class FluxFramework extends import_events.EventEmitter {
|
44
|
+
/**
|
45
|
+
* Create a new instance of Flux. Note that the Flux object
|
46
|
+
* is a Singleton pattern, so only one should ever exist.
|
47
|
+
*
|
48
|
+
* @constructor
|
49
|
+
* @this {FluxFramework}
|
50
|
+
*/
|
51
|
+
constructor() {
|
52
|
+
super();
|
53
|
+
this.isInit = false;
|
54
|
+
// Public properties
|
55
|
+
this.pluginTypes = ["preDispatch", "postDispatch"];
|
56
|
+
// Private properties
|
57
|
+
this.state = {};
|
58
|
+
this.storeActions = {};
|
59
|
+
this.defaultOptions = {
|
60
|
+
name: "arkhamjs",
|
61
|
+
routerType: "browser",
|
62
|
+
scrollToTop: true,
|
63
|
+
state: null,
|
64
|
+
storage: null,
|
65
|
+
storageWait: 300,
|
66
|
+
stores: [],
|
67
|
+
title: "ArkhamJS"
|
68
|
+
};
|
69
|
+
this.middleware = {};
|
70
|
+
this.options = this.defaultOptions;
|
71
|
+
this.updateStorage = () => Promise.resolve(false);
|
72
|
+
this.addMiddleware = this.addMiddleware.bind(this);
|
73
|
+
this.addStores = this.addStores.bind(this);
|
74
|
+
this.clearAppData = this.clearAppData.bind(this);
|
75
|
+
this.clearMiddleware = this.clearMiddleware.bind(this);
|
76
|
+
this.deregister = this.deregister.bind(this);
|
77
|
+
this.dispatch = this.dispatch.bind(this);
|
78
|
+
this.getOptions = this.getOptions.bind(this);
|
79
|
+
this.getState = this.getState.bind(this);
|
80
|
+
this.getStore = this.getStore.bind(this);
|
81
|
+
this.init = this.init.bind(this);
|
82
|
+
this.off = this.off.bind(this);
|
83
|
+
this.register = this.register.bind(this);
|
84
|
+
this.removeMiddleware = this.removeMiddleware.bind(this);
|
85
|
+
this.removeStores = this.removeStores.bind(this);
|
86
|
+
this.reset = this.reset.bind(this);
|
87
|
+
this.setState = this.setState.bind(this);
|
88
|
+
this.pluginTypes.forEach((type) => this.middleware[`${type}List`] = []);
|
89
|
+
}
|
90
|
+
/**
|
91
|
+
* Add middleware to framework.
|
92
|
+
*
|
93
|
+
* @param {array} middleware An array of middleware to add to the framework.
|
94
|
+
*/
|
95
|
+
addMiddleware(middleware) {
|
96
|
+
middleware.forEach((middleObj) => {
|
97
|
+
if (!!middleObj && (typeof middleObj === "function" || typeof middleObj === "object")) {
|
98
|
+
const middleName = middleObj.name || "";
|
99
|
+
if (!middleName) {
|
100
|
+
throw Error("Unknown middleware is not configured properly. Requires name property. Cannot add to Flux.");
|
101
|
+
}
|
102
|
+
this.pluginTypes.forEach((type) => {
|
103
|
+
const method = middleObj[type];
|
104
|
+
const plugin = { method, name: middleName };
|
105
|
+
this.middleware[`${type}List`] = this.addPlugin(type, plugin);
|
106
|
+
});
|
107
|
+
} else {
|
108
|
+
throw Error("Unknown middleware is not configured properly. Cannot add to Flux.");
|
109
|
+
}
|
110
|
+
});
|
111
|
+
}
|
112
|
+
/**
|
113
|
+
* Remove all app data from storage.
|
114
|
+
*
|
115
|
+
* @returns {Promise<boolean>} Whether app data was successfully removed.
|
116
|
+
*/
|
117
|
+
clearAppData() {
|
118
|
+
Object.keys(this.storeActions).forEach((storeName) => {
|
119
|
+
const storeFn = this.storeActions[storeName];
|
120
|
+
this.state[storeFn.name] = (0, import_cloneDeep.default)(storeFn.initialState);
|
121
|
+
});
|
122
|
+
const { name, storage } = this.options;
|
123
|
+
if (storage) {
|
124
|
+
return storage.setStorageData(name, this.state);
|
125
|
+
}
|
126
|
+
return Promise.resolve(true);
|
127
|
+
}
|
128
|
+
/**
|
129
|
+
* Remove all middleware.
|
130
|
+
*
|
131
|
+
* @returns {boolean} Whether middleware was successfully removed.
|
132
|
+
*/
|
133
|
+
clearMiddleware() {
|
134
|
+
Object.keys(this.middleware).forEach((pluginType) => {
|
135
|
+
this.middleware[pluginType] = [];
|
136
|
+
});
|
137
|
+
return true;
|
138
|
+
}
|
139
|
+
/**
|
140
|
+
* De-registers named stores.
|
141
|
+
*
|
142
|
+
* @param {array} storeNames An array of store names to remove from the framework.
|
143
|
+
*/
|
144
|
+
removeStores(storeNames) {
|
145
|
+
storeNames.forEach((name) => this.deregister(name));
|
146
|
+
}
|
147
|
+
/**
|
148
|
+
* Dispatches an action to all stores.
|
149
|
+
*
|
150
|
+
* @param {object} action to dispatch to all the stores.
|
151
|
+
* @param {boolean} silent To silence any events.
|
152
|
+
* @returns {Promise} The promise is resolved when and if the app saves data to storage, returning
|
153
|
+
* the action.
|
154
|
+
*/
|
155
|
+
async dispatch(action, silent = false) {
|
156
|
+
if (!action) {
|
157
|
+
throw new Error("ArkhamJS Error: Flux.dispatch requires an action.");
|
158
|
+
}
|
159
|
+
let clonedAction = (0, import_cloneDeep.default)(action);
|
160
|
+
const startTime = Date.now();
|
161
|
+
let stack = [];
|
162
|
+
try {
|
163
|
+
const stackProperty = "stackTraceLimit";
|
164
|
+
const { stackTraceLimit } = Error;
|
165
|
+
Error[stackProperty] = Infinity;
|
166
|
+
stack = import_error_stack_parser.default.parse(new Error());
|
167
|
+
Error[stackProperty] = stackTraceLimit;
|
168
|
+
} catch (error) {
|
169
|
+
}
|
170
|
+
const options = (0, import_cloneDeep.default)(this.options);
|
171
|
+
const appInfo = { duration: 0, options, stack };
|
172
|
+
const { postDispatchList = [], preDispatchList = [] } = this.middleware;
|
173
|
+
if (preDispatchList.length) {
|
174
|
+
clonedAction = await Promise.all(
|
175
|
+
preDispatchList.map(
|
176
|
+
(plugin) => plugin.method(
|
177
|
+
(0, import_cloneDeep.default)(clonedAction),
|
178
|
+
(0, import_cloneDeep.default)(this.state),
|
179
|
+
appInfo
|
180
|
+
)
|
181
|
+
)
|
182
|
+
).then(
|
183
|
+
(actions) => actions.reduce((updatedAction, action2) => (0, import_merge.default)(updatedAction, action2), clonedAction)
|
184
|
+
).catch((error) => {
|
185
|
+
throw error;
|
186
|
+
});
|
187
|
+
}
|
188
|
+
const { type, ...data } = clonedAction;
|
189
|
+
if (!type || type === "") {
|
190
|
+
console.warn("ArkhamJS Warning: Flux.dispatch is missing an action type for the payload:", data);
|
191
|
+
return Promise.resolve(clonedAction);
|
192
|
+
}
|
193
|
+
Object.keys(this.storeActions).forEach((storeName) => {
|
194
|
+
const storeFn = this.storeActions[storeName];
|
195
|
+
const state = (0, import_cloneDeep.default)(this.state[storeName]) || (0, import_cloneDeep.default)(storeFn.initialState) || {};
|
196
|
+
this.state[storeName] = (0, import_cloneDeep.default)(storeFn.action(type, data, state)) || state;
|
197
|
+
});
|
198
|
+
const { storage } = this.options;
|
199
|
+
if (storage) {
|
200
|
+
try {
|
201
|
+
await this.updateStorage();
|
202
|
+
} catch (error) {
|
203
|
+
}
|
204
|
+
}
|
205
|
+
const endTime = +/* @__PURE__ */ new Date();
|
206
|
+
const duration = endTime - startTime;
|
207
|
+
appInfo.duration = duration;
|
208
|
+
if (postDispatchList.length) {
|
209
|
+
clonedAction = await Promise.all(
|
210
|
+
postDispatchList.map(
|
211
|
+
async (plugin) => plugin.method((0, import_cloneDeep.default)(clonedAction), (0, import_cloneDeep.default)(this.state), appInfo)
|
212
|
+
)
|
213
|
+
).then(
|
214
|
+
(actions) => actions.reduce((updatedAction, action2) => (0, import_merge.default)(updatedAction, action2), clonedAction)
|
215
|
+
).catch((error) => {
|
216
|
+
throw error;
|
217
|
+
});
|
218
|
+
}
|
219
|
+
if (!silent) {
|
220
|
+
this.emit(type, clonedAction);
|
221
|
+
this.emit("arkhamjs", this.state);
|
222
|
+
}
|
223
|
+
return Promise.resolve(clonedAction);
|
224
|
+
}
|
225
|
+
/**
|
226
|
+
* Get the current Flux options.
|
227
|
+
*
|
228
|
+
* @returns {FluxOptions} the Flux options object.
|
229
|
+
*/
|
230
|
+
getOptions() {
|
231
|
+
return this.options;
|
232
|
+
}
|
233
|
+
/**
|
234
|
+
* Get the current state object.
|
235
|
+
*
|
236
|
+
* @param {string|array} [name] (optional) The name of the store for an object, otherwise it will return all store
|
237
|
+
* objects. You can also use an array to specify a property path within the object.
|
238
|
+
* @param {any} [defaultValue] (optional) A default value to return if null.
|
239
|
+
* @returns {any} the state object or a property value within.
|
240
|
+
*/
|
241
|
+
getState(path = "", defaultValue) {
|
242
|
+
let storeValue;
|
243
|
+
if (!path) {
|
244
|
+
storeValue = this.state || {};
|
245
|
+
} else {
|
246
|
+
storeValue = (0, import_get.default)(path, this.state);
|
247
|
+
}
|
248
|
+
const value = storeValue ? (0, import_cloneDeep.default)(storeValue) : storeValue;
|
249
|
+
return value === void 0 ? defaultValue : value;
|
250
|
+
}
|
251
|
+
/**
|
252
|
+
* Get a store object registered with Flux.
|
253
|
+
*
|
254
|
+
* @param {string} name The name of the store.
|
255
|
+
* @returns {FluxStore} the store object.
|
256
|
+
*/
|
257
|
+
getStore(name = "") {
|
258
|
+
return this.storeActions[name];
|
259
|
+
}
|
260
|
+
/**
|
261
|
+
* Initialize and set configuration options.
|
262
|
+
*
|
263
|
+
* @param {object} options Configuration options.
|
264
|
+
*/
|
265
|
+
async init(options = {}, reset = false) {
|
266
|
+
if (reset) {
|
267
|
+
this.isInit = false;
|
268
|
+
this.reset(false);
|
269
|
+
}
|
270
|
+
const updatedOptions = { ...options };
|
271
|
+
if (this.isInit) {
|
272
|
+
updatedOptions.name = this.options.name;
|
273
|
+
}
|
274
|
+
this.options = { ...this.defaultOptions, ...updatedOptions };
|
275
|
+
const { debug, middleware, name, stores } = this.options;
|
276
|
+
try {
|
277
|
+
await this.useStorage(name);
|
278
|
+
} catch (error) {
|
279
|
+
console.error("Arkham Error: There was an error while using storage.", name);
|
280
|
+
throw error;
|
281
|
+
}
|
282
|
+
if (!!stores && stores.length) {
|
283
|
+
try {
|
284
|
+
await this.addStores(stores);
|
285
|
+
} catch (error) {
|
286
|
+
console.error("Arkham Error: There was an error while adding stores.", stores);
|
287
|
+
throw error;
|
288
|
+
}
|
289
|
+
}
|
290
|
+
if (!!middleware && middleware.length) {
|
291
|
+
this.addMiddleware(middleware);
|
292
|
+
}
|
293
|
+
const windowProperty = "arkhamjs";
|
294
|
+
if (debug) {
|
295
|
+
window[windowProperty] = this;
|
296
|
+
} else {
|
297
|
+
delete window[windowProperty];
|
298
|
+
}
|
299
|
+
this.isInit = true;
|
300
|
+
this.emit(import_ArkhamConstants.ArkhamConstants.INIT);
|
301
|
+
return this;
|
302
|
+
}
|
303
|
+
/**
|
304
|
+
* Adds an initialization listener.
|
305
|
+
*
|
306
|
+
* @param {function} [listener] The callback associated with the subscribed event.
|
307
|
+
*/
|
308
|
+
onInit(listener) {
|
309
|
+
this.on(import_ArkhamConstants.ArkhamConstants.INIT, listener);
|
310
|
+
if (this.isInit) {
|
311
|
+
listener();
|
312
|
+
}
|
313
|
+
}
|
314
|
+
/**
|
315
|
+
* Removes the initialization listener.
|
316
|
+
*
|
317
|
+
* @param {function} [listener] The callback associated with the subscribed event.
|
318
|
+
*/
|
319
|
+
offInit(listener) {
|
320
|
+
this.off(import_ArkhamConstants.ArkhamConstants.INIT, listener);
|
321
|
+
}
|
322
|
+
/**
|
323
|
+
* Removes an event listener.
|
324
|
+
*
|
325
|
+
* @param {string} [eventType] Event to unsubscribe.
|
326
|
+
* @param {function} [listener] The callback associated with the subscribed event.
|
327
|
+
*/
|
328
|
+
off(eventType, listener) {
|
329
|
+
return this.removeListener(eventType, listener);
|
330
|
+
}
|
331
|
+
/**
|
332
|
+
* Adds an event listener.
|
333
|
+
*
|
334
|
+
* @param {string} [eventType] Event to subscribe.
|
335
|
+
* @param {function} [listener] The callback associated with the subscribed event.
|
336
|
+
*/
|
337
|
+
on(eventType, listener) {
|
338
|
+
return this.addListener(eventType, listener);
|
339
|
+
}
|
340
|
+
/**
|
341
|
+
* Registers new Stores.
|
342
|
+
*
|
343
|
+
* @param {array} stores Store class.
|
344
|
+
* @returns {Promise<object[]>} the class object(s).
|
345
|
+
*/
|
346
|
+
async addStores(stores) {
|
347
|
+
const registeredStores = stores.map((store) => this.register(store));
|
348
|
+
const { name, storage } = this.options;
|
349
|
+
if (storage) {
|
350
|
+
try {
|
351
|
+
await storage.setStorageData(name, this.state);
|
352
|
+
} catch (error) {
|
353
|
+
throw error;
|
354
|
+
}
|
355
|
+
}
|
356
|
+
return registeredStores;
|
357
|
+
}
|
358
|
+
/**
|
359
|
+
* Remove middleware from framework.
|
360
|
+
*
|
361
|
+
* @param {array} string middleware names to remove.
|
362
|
+
* @returns {Promise<object[]>} the class object(s).
|
363
|
+
*/
|
364
|
+
removeMiddleware(names) {
|
365
|
+
names.forEach((name) => {
|
366
|
+
this.pluginTypes.forEach((type) => {
|
367
|
+
this.middleware[`${type}List`] = this.removePlugin(type, name);
|
368
|
+
});
|
369
|
+
});
|
370
|
+
}
|
371
|
+
/**
|
372
|
+
* Reset framework.
|
373
|
+
*
|
374
|
+
* @param {array} string middleware names to remove.
|
375
|
+
* @returns {Promise<object[]>} the class object(s).
|
376
|
+
*/
|
377
|
+
async reset(clearStorage = true) {
|
378
|
+
const { name, storage } = this.options;
|
379
|
+
if (storage && clearStorage) {
|
380
|
+
try {
|
381
|
+
await storage.setStorageData(name, {});
|
382
|
+
} catch (error) {
|
383
|
+
throw error;
|
384
|
+
}
|
385
|
+
}
|
386
|
+
this.middleware = {};
|
387
|
+
this.options = { ...this.defaultOptions };
|
388
|
+
this.state = {};
|
389
|
+
this.storeActions = {};
|
390
|
+
this.isInit = false;
|
391
|
+
}
|
392
|
+
/**
|
393
|
+
* Sets the current state object.
|
394
|
+
*
|
395
|
+
* @param {string|array} [name] The name of the store to set. You can also use an array to specify a property path
|
396
|
+
* within the object.
|
397
|
+
* @param {any} [value] The value to set.
|
398
|
+
*/
|
399
|
+
setState(path = "", value) {
|
400
|
+
if (!!path) {
|
401
|
+
this.state = (0, import_set.default)(path, (0, import_cloneDeep.default)(value), this.state);
|
402
|
+
}
|
403
|
+
const { storage } = this.options;
|
404
|
+
if (storage) {
|
405
|
+
return this.updateStorage();
|
406
|
+
}
|
407
|
+
return Promise.resolve(false);
|
408
|
+
}
|
409
|
+
addPlugin(type, plugin) {
|
410
|
+
const list = this.middleware[`${type}List`] || [];
|
411
|
+
const { method, name } = plugin;
|
412
|
+
if (method && typeof method === "function") {
|
413
|
+
const exists = !!list.filter((obj) => obj.name === name).length;
|
414
|
+
if (!exists) {
|
415
|
+
list.push({ method, name });
|
416
|
+
}
|
417
|
+
} else if (method !== void 0) {
|
418
|
+
throw Error(`${plugin.name} middleware is not configured properly. Method is not a function.`);
|
419
|
+
}
|
420
|
+
return list;
|
421
|
+
}
|
422
|
+
deregister(name = "") {
|
423
|
+
delete this.storeActions[name];
|
424
|
+
delete this.state[name];
|
425
|
+
}
|
426
|
+
register(storeFn) {
|
427
|
+
if (!storeFn) {
|
428
|
+
throw Error("Store is undefined. Cannot register with Flux.");
|
429
|
+
}
|
430
|
+
const isFnc = typeof storeFn === "function";
|
431
|
+
if (!isFnc) {
|
432
|
+
throw Error(`${storeFn} is not a store function. Cannot register with Flux.`);
|
433
|
+
}
|
434
|
+
const { name } = storeFn;
|
435
|
+
const initialState = storeFn();
|
436
|
+
const storeAction = {
|
437
|
+
action: storeFn,
|
438
|
+
initialState: storeFn(),
|
439
|
+
name
|
440
|
+
};
|
441
|
+
if (!(0, import_isEmpty.default)(name) && !this.storeActions[name]) {
|
442
|
+
this.storeActions[name] = storeAction;
|
443
|
+
if (!this.state[name]) {
|
444
|
+
if (initialState) {
|
445
|
+
this.state[name] = (0, import_cloneDeep.default)(initialState);
|
446
|
+
} else {
|
447
|
+
this.state[name] = {};
|
448
|
+
}
|
449
|
+
}
|
450
|
+
}
|
451
|
+
return this.storeActions[name];
|
452
|
+
}
|
453
|
+
removePlugin(type, name) {
|
454
|
+
const list = this.middleware[`${type}List`] || [];
|
455
|
+
return list.filter((obj) => obj.name !== name);
|
456
|
+
}
|
457
|
+
async useStorage(name) {
|
458
|
+
const { storage, state, storageWait } = this.options;
|
459
|
+
if (storage) {
|
460
|
+
try {
|
461
|
+
this.state = state || await storage.getStorageData(name) || {};
|
462
|
+
this.updateStorage = (0, import_debounce.default)(
|
463
|
+
() => storage.setStorageData(name, this.state),
|
464
|
+
storageWait,
|
465
|
+
{ leading: true, trailing: true }
|
466
|
+
);
|
467
|
+
} catch (error) {
|
468
|
+
console.error(`ArkhamJS Error: Using storage, "${name}".`);
|
469
|
+
throw error;
|
470
|
+
}
|
471
|
+
} else {
|
472
|
+
this.state = state || {};
|
473
|
+
}
|
474
|
+
return null;
|
475
|
+
}
|
476
|
+
}
|
477
|
+
FluxFramework.initFlux = false;
|
478
|
+
const Flux = new FluxFramework();
|
479
|
+
// Annotate the CommonJS export names for ESM import in node:
|
480
|
+
0 && (module.exports = {
|
481
|
+
Flux,
|
482
|
+
FluxFramework
|
483
|
+
});
|
484
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL0ZsdXgvRmx1eC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBFcnJvclN0YWNrUGFyc2VyIGZyb20gJ2Vycm9yLXN0YWNrLXBhcnNlcic7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvZnAvY2xvbmVEZWVwJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2ZwL2dldCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvZnAvaXNFbXB0eSc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL2ZwL21lcmdlJztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoL2ZwL3NldCc7XG5cbmltcG9ydCB7QXJraGFtQ29uc3RhbnRzfSBmcm9tICcuLi9jb25zdGFudHMvQXJraGFtQ29uc3RhbnRzJztcbmltcG9ydCB7Rmx1eEFjdGlvbiwgRmx1eE1pZGRsZXdhcmVUeXBlLCBGbHV4T3B0aW9ucywgRmx1eFBsdWdpblR5cGUsIEZsdXhTdG9yZX0gZnJvbSAnLi9GbHV4LnR5cGVzJztcblxuLyoqXG4gKiBGbHV4RnJhbWV3b3JrXG4gKiBAdHlwZSB7RXZlbnRFbWl0dGVyfVxuICovXG5leHBvcnQgY2xhc3MgRmx1eEZyYW1ld29yayBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIHN0YXRpYyBpbml0Rmx1eDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0luaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8gUHVibGljIHByb3BlcnRpZXNcbiAgcGx1Z2luVHlwZXM6IHN0cmluZ1tdID0gWydwcmVEaXNwYXRjaCcsICdwb3N0RGlzcGF0Y2gnXTtcbiAgLy8gUHJpdmF0ZSBwcm9wZXJ0aWVzXG4gIHByaXZhdGUgc3RhdGU6IGFueSA9IHt9O1xuICBwcml2YXRlIHN0b3JlQWN0aW9uczogYW55ID0ge307XG4gIHByaXZhdGUgZGVmYXVsdE9wdGlvbnM6IEZsdXhPcHRpb25zID0ge1xuICAgIG5hbWU6ICdhcmtoYW1qcycsXG4gICAgcm91dGVyVHlwZTogJ2Jyb3dzZXInLFxuICAgIHNjcm9sbFRvVG9wOiB0cnVlLFxuICAgIHN0YXRlOiBudWxsLFxuICAgIHN0b3JhZ2U6IG51bGwsXG4gICAgc3RvcmFnZVdhaXQ6IDMwMCxcbiAgICBzdG9yZXM6IFtdLFxuICAgIHRpdGxlOiAnQXJraGFtSlMnXG4gIH07XG4gIHByaXZhdGUgbWlkZGxld2FyZTogYW55ID0ge307XG4gIHByaXZhdGUgb3B0aW9uczogRmx1eE9wdGlvbnMgPSB0aGlzLmRlZmF1bHRPcHRpb25zO1xuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEZsdXguICBOb3RlIHRoYXQgdGhlIEZsdXggb2JqZWN0XG4gICAqIGlzIGEgU2luZ2xldG9uIHBhdHRlcm4sIHNvIG9ubHkgb25lIHNob3VsZCBldmVyIGV4aXN0LlxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHRoaXMge0ZsdXhGcmFtZXdvcmt9XG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgLy8gTWV0aG9kc1xuICAgIHRoaXMuYWRkTWlkZGxld2FyZSA9IHRoaXMuYWRkTWlkZGxld2FyZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuYWRkU3RvcmVzID0gdGhpcy5hZGRTdG9yZXMuYmluZCh0aGlzKTtcbiAgICB0aGlzLmNsZWFyQXBwRGF0YSA9IHRoaXMuY2xlYXJBcHBEYXRhLmJpbmQodGhpcyk7XG4gICAgdGhpcy5jbGVhck1pZGRsZXdhcmUgPSB0aGlzLmNsZWFyTWlkZGxld2FyZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZGVyZWdpc3RlciA9IHRoaXMuZGVyZWdpc3Rlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZGlzcGF0Y2ggPSB0aGlzLmRpc3BhdGNoLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRPcHRpb25zID0gdGhpcy5nZXRPcHRpb25zLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRTdGF0ZSA9IHRoaXMuZ2V0U3RhdGUuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFN0b3JlID0gdGhpcy5nZXRTdG9yZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaW5pdCA9IHRoaXMuaW5pdC5iaW5kKHRoaXMpO1xuICAgIHRoaXMub2ZmID0gdGhpcy5vZmYuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlZ2lzdGVyID0gdGhpcy5yZWdpc3Rlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVtb3ZlTWlkZGxld2FyZSA9IHRoaXMucmVtb3ZlTWlkZGxld2FyZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVtb3ZlU3RvcmVzID0gdGhpcy5yZW1vdmVTdG9yZXMuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlc2V0ID0gdGhpcy5yZXNldC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0U3RhdGUgPSB0aGlzLnNldFN0YXRlLmJpbmQodGhpcyk7XG5cbiAgICAvLyBBZGQgbWlkZGxld2FyZSBwbHVnaW4gdHlwZXNcbiAgICB0aGlzLnBsdWdpblR5cGVzLmZvckVhY2goKHR5cGU6IHN0cmluZykgPT4gdGhpcy5taWRkbGV3YXJlW2Ake3R5cGV9TGlzdGBdID0gW10pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBtaWRkbGV3YXJlIHRvIGZyYW1ld29yay5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gbWlkZGxld2FyZSBBbiBhcnJheSBvZiBtaWRkbGV3YXJlIHRvIGFkZCB0byB0aGUgZnJhbWV3b3JrLlxuICAgKi9cbiAgYWRkTWlkZGxld2FyZShtaWRkbGV3YXJlOiBGbHV4TWlkZGxld2FyZVR5cGVbXSk6IHZvaWQge1xuICAgIG1pZGRsZXdhcmUuZm9yRWFjaCgobWlkZGxlT2JqOiBGbHV4TWlkZGxld2FyZVR5cGUpID0+IHtcbiAgICAgIC8vIE1ha2Ugc3VyZSBtaWRkbGV3YXJlIGlzIGVpdGhlciBhIGNsYXNzIG9yIG9iamVjdC5cbiAgICAgIGlmKCEhbWlkZGxlT2JqICYmICgodHlwZW9mIG1pZGRsZU9iaiA9PT0gJ2Z1bmN0aW9uJykgfHwgKHR5cGVvZiBtaWRkbGVPYmogPT09ICdvYmplY3QnKSkpIHtcbiAgICAgICAgY29uc3QgbWlkZGxlTmFtZTogc3RyaW5nID0gbWlkZGxlT2JqLm5hbWUgfHwgJyc7XG5cbiAgICAgICAgaWYoIW1pZGRsZU5hbWUpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBtaWRkbGV3YXJlIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5LiBSZXF1aXJlcyBuYW1lIHByb3BlcnR5LiBDYW5ub3QgYWRkIHRvIEZsdXguJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTb3J0IG1pZGRsZXdhcmUgcGx1Z2lucyBmb3IgZWZmaWNpZW5jeVxuICAgICAgICB0aGlzLnBsdWdpblR5cGVzLmZvckVhY2goKHR5cGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IG1pZGRsZU9ialt0eXBlXTtcbiAgICAgICAgICBjb25zdCBwbHVnaW46IEZsdXhQbHVnaW5UeXBlID0ge21ldGhvZCwgbmFtZTogbWlkZGxlTmFtZX07XG4gICAgICAgICAgdGhpcy5taWRkbGV3YXJlW2Ake3R5cGV9TGlzdGBdID0gdGhpcy5hZGRQbHVnaW4odHlwZSwgcGx1Z2luKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBtaWRkbGV3YXJlIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5LiBDYW5ub3QgYWRkIHRvIEZsdXguJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFsbCBhcHAgZGF0YSBmcm9tIHN0b3JhZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIGFwcCBkYXRhIHdhcyBzdWNjZXNzZnVsbHkgcmVtb3ZlZC5cbiAgICovXG4gIGNsZWFyQXBwRGF0YSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBTZXQgYWxsIHN0b3JlIGRhdGEgdG8gaW5pdGlhbCBzdGF0ZVxuICAgIE9iamVjdFxuICAgICAgLmtleXModGhpcy5zdG9yZUFjdGlvbnMpXG4gICAgICAuZm9yRWFjaCgoc3RvcmVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcmVGbiA9IHRoaXMuc3RvcmVBY3Rpb25zW3N0b3JlTmFtZV07XG4gICAgICAgIHRoaXMuc3RhdGVbc3RvcmVGbi5uYW1lXSA9IGNsb25lRGVlcChzdG9yZUZuLmluaXRpYWxTdGF0ZSk7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHtuYW1lLCBzdG9yYWdlfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgIHJldHVybiBzdG9yYWdlLnNldFN0b3JhZ2VEYXRhKG5hbWUsIHRoaXMuc3RhdGUpO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFsbCBtaWRkbGV3YXJlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBtaWRkbGV3YXJlIHdhcyBzdWNjZXNzZnVsbHkgcmVtb3ZlZC5cbiAgICovXG4gIGNsZWFyTWlkZGxld2FyZSgpOiBib29sZWFuIHtcbiAgICAvLyBTZXQgYWxsIHN0b3JlIGRhdGEgdG8gaW5pdGlhbCBzdGF0ZVxuICAgIE9iamVjdFxuICAgICAgLmtleXModGhpcy5taWRkbGV3YXJlKVxuICAgICAgLmZvckVhY2goKHBsdWdpblR5cGU6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLm1pZGRsZXdhcmVbcGx1Z2luVHlwZV0gPSBbXTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRGUtcmVnaXN0ZXJzIG5hbWVkIHN0b3Jlcy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gc3RvcmVOYW1lcyBBbiBhcnJheSBvZiBzdG9yZSBuYW1lcyB0byByZW1vdmUgZnJvbSB0aGUgZnJhbWV3b3JrLlxuICAgKi9cbiAgcmVtb3ZlU3RvcmVzKHN0b3JlTmFtZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgc3RvcmVOYW1lcy5mb3JFYWNoKChuYW1lOiBzdHJpbmcpID0+IHRoaXMuZGVyZWdpc3RlcihuYW1lKSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24gdG8gYWxsIHN0b3Jlcy5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGFjdGlvbiB0byBkaXNwYXRjaCB0byBhbGwgdGhlIHN0b3Jlcy5cbiAgICogQHBhcmFtIHtib29sZWFufSBzaWxlbnQgVG8gc2lsZW5jZSBhbnkgZXZlbnRzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgd2hlbiBhbmQgaWYgdGhlIGFwcCBzYXZlcyBkYXRhIHRvIHN0b3JhZ2UsIHJldHVybmluZ1xuICAgKiB0aGUgYWN0aW9uLlxuICAgKi9cbiAgYXN5bmMgZGlzcGF0Y2goYWN0aW9uOiBGbHV4QWN0aW9uLCBzaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8Rmx1eEFjdGlvbj4ge1xuICAgIGlmKCFhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJraGFtSlMgRXJyb3I6IEZsdXguZGlzcGF0Y2ggcmVxdWlyZXMgYW4gYWN0aW9uLicpO1xuICAgIH1cblxuICAgIGxldCBjbG9uZWRBY3Rpb246IEZsdXhBY3Rpb24gPSBjbG9uZURlZXAoYWN0aW9uKTtcblxuICAgIC8vIExvZyBkdXJhdGlvbiBvZiBkaXNwYXRjaFxuICAgIGNvbnN0IHN0YXJ0VGltZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcblxuICAgIC8vIEdldCBzdGFja1xuICAgIGxldCBzdGFjayA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YWNrUHJvcGVydHk6IHN0cmluZyA9ICdzdGFja1RyYWNlTGltaXQnO1xuICAgICAgY29uc3Qge3N0YWNrVHJhY2VMaW1pdH06IGFueSA9IEVycm9yO1xuICAgICAgRXJyb3Jbc3RhY2tQcm9wZXJ0eV0gPSBJbmZpbml0eTtcbiAgICAgIHN0YWNrID0gRXJyb3JTdGFja1BhcnNlci5wYXJzZShuZXcgRXJyb3IoKSk7XG4gICAgICBFcnJvcltzdGFja1Byb3BlcnR5XSA9IHN0YWNrVHJhY2VMaW1pdDtcbiAgICB9IGNhdGNoKGVycm9yKSB7fVxuXG4gICAgLy8gR2V0IG9wdGlvbnNcbiAgICBjb25zdCBvcHRpb25zID0gY2xvbmVEZWVwKHRoaXMub3B0aW9ucyk7XG5cbiAgICAvLyBBcHAgaW5mb1xuICAgIGNvbnN0IGFwcEluZm8gPSB7ZHVyYXRpb246IDAsIG9wdGlvbnMsIHN0YWNrfTtcblxuICAgIC8vIEFwcGx5IG1pZGRsZXdhcmUgYmVmb3JlIHRoZSBhY3Rpb24gaXMgcHJvY2Vzc2VkXG4gICAgY29uc3Qge3Bvc3REaXNwYXRjaExpc3QgPSBbXSwgcHJlRGlzcGF0Y2hMaXN0ID0gW119ID0gdGhpcy5taWRkbGV3YXJlO1xuXG4gICAgaWYocHJlRGlzcGF0Y2hMaXN0Lmxlbmd0aCkge1xuICAgICAgY2xvbmVkQWN0aW9uID0gYXdhaXQgUHJvbWlzZVxuICAgICAgICAuYWxsKFxuICAgICAgICAgIHByZURpc3BhdGNoTGlzdC5tYXAoKHBsdWdpbjogRmx1eFBsdWdpblR5cGUpID0+IHBsdWdpbi5tZXRob2QoXG4gICAgICAgICAgICBjbG9uZURlZXAoY2xvbmVkQWN0aW9uKSwgY2xvbmVEZWVwKHRoaXMuc3RhdGUpLCBhcHBJbmZvKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAudGhlbihcbiAgICAgICAgICAoYWN0aW9ucykgPT4gYWN0aW9ucy5yZWR1Y2UoKHVwZGF0ZWRBY3Rpb24sIGFjdGlvbikgPT5cbiAgICAgICAgICAgIG1lcmdlKHVwZGF0ZWRBY3Rpb24sIGFjdGlvbiksIGNsb25lZEFjdGlvbikgYXMgRmx1eEFjdGlvblxuICAgICAgICApXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qge3R5cGUsIC4uLmRhdGF9ID0gY2xvbmVkQWN0aW9uO1xuXG4gICAgLy8gUmVxdWlyZSBhIHR5cGVcbiAgICBpZighdHlwZSB8fCB0eXBlID09PSAnJykge1xuICAgICAgY29uc29sZS53YXJuKCdBcmtoYW1KUyBXYXJuaW5nOiBGbHV4LmRpc3BhdGNoIGlzIG1pc3NpbmcgYW4gYWN0aW9uIHR5cGUgZm9yIHRoZSBwYXlsb2FkOicsIGRhdGEpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjbG9uZWRBY3Rpb24pO1xuICAgIH1cblxuICAgIC8vIFdoZW4gYW4gYWN0aW9uIGNvbWVzIGluLCBpdCBtdXN0IGJlIGNvbXBsZXRlbHkgaGFuZGxlZCBieSBhbGwgc3RvcmVzXG4gICAgT2JqZWN0XG4gICAgICAua2V5cyh0aGlzLnN0b3JlQWN0aW9ucylcbiAgICAgIC5mb3JFYWNoKChzdG9yZU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBzdG9yZUZuID0gdGhpcy5zdG9yZUFjdGlvbnNbc3RvcmVOYW1lXTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBjbG9uZURlZXAodGhpcy5zdGF0ZVtzdG9yZU5hbWVdKSB8fCBjbG9uZURlZXAoc3RvcmVGbi5pbml0aWFsU3RhdGUpIHx8IHt9O1xuICAgICAgICB0aGlzLnN0YXRlW3N0b3JlTmFtZV0gPSBjbG9uZURlZXAoc3RvcmVGbi5hY3Rpb24odHlwZSwgZGF0YSwgc3RhdGUpKSB8fCBzdGF0ZTtcbiAgICAgIH0pO1xuXG4gICAgLy8gU2F2ZSBjYWNoZSBpbiBzdG9yYWdlXG4gICAgY29uc3Qge3N0b3JhZ2V9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgaWYoc3RvcmFnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVTdG9yYWdlKCk7XG4gICAgICB9IGNhdGNoKGVycm9yKSB7fVxuICAgIH1cblxuICAgIGNvbnN0IGVuZFRpbWU6IG51bWJlciA9ICsobmV3IERhdGUoKSk7XG4gICAgY29uc3QgZHVyYXRpb246IG51bWJlciA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XG4gICAgYXBwSW5mby5kdXJhdGlvbiA9IGR1cmF0aW9uO1xuXG4gICAgaWYocG9zdERpc3BhdGNoTGlzdC5sZW5ndGgpIHtcbiAgICAgIGNsb25lZEFjdGlvbiA9IGF3YWl0IFByb21pc2VcbiAgICAgICAgLmFsbChcbiAgICAgICAgICBwb3N0RGlzcGF0Y2hMaXN0Lm1hcChcbiAgICAgICAgICAgIGFzeW5jIChwbHVnaW46IEZsdXhQbHVnaW5UeXBlKSA9PiBwbHVnaW4ubWV0aG9kKGNsb25lRGVlcChjbG9uZWRBY3Rpb24pLCBjbG9uZURlZXAodGhpcy5zdGF0ZSksIGFwcEluZm8pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC50aGVuKFxuICAgICAgICAgIChhY3Rpb25zKSA9PiBhY3Rpb25zLnJlZHVjZSgodXBkYXRlZEFjdGlvbiwgYWN0aW9uKSA9PlxuICAgICAgICAgICAgbWVyZ2UodXBkYXRlZEFjdGlvbiwgYWN0aW9uKSwgY2xvbmVkQWN0aW9uKSBhcyBGbHV4QWN0aW9uXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZighc2lsZW50KSB7XG4gICAgICB0aGlzLmVtaXQodHlwZSwgY2xvbmVkQWN0aW9uKTtcbiAgICAgIHRoaXMuZW1pdCgnYXJraGFtanMnLCB0aGlzLnN0YXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNsb25lZEFjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IEZsdXggb3B0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMge0ZsdXhPcHRpb25zfSB0aGUgRmx1eCBvcHRpb25zIG9iamVjdC5cbiAgICovXG4gIGdldE9wdGlvbnMoKTogRmx1eE9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHN0YXRlIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8YXJyYXl9IFtuYW1lXSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIHRoZSBzdG9yZSBmb3IgYW4gb2JqZWN0LCBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gYWxsIHN0b3JlXG4gICAqICAgb2JqZWN0cy4gWW91IGNhbiBhbHNvIHVzZSBhbiBhcnJheSB0byBzcGVjaWZ5IGEgcHJvcGVydHkgcGF0aCB3aXRoaW4gdGhlIG9iamVjdC5cbiAgICogQHBhcmFtIHthbnl9IFtkZWZhdWx0VmFsdWVdIChvcHRpb25hbCkgQSBkZWZhdWx0IHZhbHVlIHRvIHJldHVybiBpZiBudWxsLlxuICAgKiBAcmV0dXJucyB7YW55fSB0aGUgc3RhdGUgb2JqZWN0IG9yIGEgcHJvcGVydHkgdmFsdWUgd2l0aGluLlxuICAgKi9cbiAgZ2V0U3RhdGUocGF0aDogc3RyaW5nIHwgc3RyaW5nW10gPSAnJywgZGVmYXVsdFZhbHVlPyk6IGFueSB7XG4gICAgbGV0IHN0b3JlVmFsdWU7XG5cbiAgICBpZighcGF0aCkge1xuICAgICAgc3RvcmVWYWx1ZSA9IHRoaXMuc3RhdGUgfHwge307XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3JlVmFsdWUgPSBnZXQocGF0aCwgdGhpcy5zdGF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBzdG9yZVZhbHVlID8gY2xvbmVEZWVwKHN0b3JlVmFsdWUpIDogc3RvcmVWYWx1ZTtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHN0b3JlIG9iamVjdCByZWdpc3RlcmVkIHdpdGggRmx1eC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHN0b3JlLlxuICAgKiBAcmV0dXJucyB7Rmx1eFN0b3JlfSB0aGUgc3RvcmUgb2JqZWN0LlxuICAgKi9cbiAgZ2V0U3RvcmUobmFtZTogc3RyaW5nID0gJycpOiBGbHV4U3RvcmUge1xuICAgIHJldHVybiB0aGlzLnN0b3JlQWN0aW9uc1tuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGFuZCBzZXQgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqL1xuICBhc3luYyBpbml0KG9wdGlvbnM6IEZsdXhPcHRpb25zID0ge30sIHJlc2V0OiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPEZsdXhGcmFtZXdvcms+IHtcbiAgICAvLyBTaG91bGQgcmVzZXQgcHJldmlvdXMgcGFyYW1zXG4gICAgaWYocmVzZXQpIHtcbiAgICAgIHRoaXMuaXNJbml0ID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc2V0KGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgb3B0aW9uc1xuICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0gey4uLm9wdGlvbnN9O1xuXG4gICAgaWYodGhpcy5pc0luaXQpIHtcbiAgICAgIC8vIFJlbW92ZSB0aGUgbmFtZSBmcm9tIG9wdGlvbnMgaWYgYWxyZWFkeSBpbml0aWFsaXplZCwgb3RoZXJ3aXNlIHRoZSByb290IGFwcCB3aWxsIG5vdCBiZSBhYmxlIHRvIGFjY2Vzc1xuICAgICAgLy8gdGhlIHN0YXRlIHRyZWVcbiAgICAgIHVwZGF0ZWRPcHRpb25zLm5hbWUgPSB0aGlzLm9wdGlvbnMubmFtZTtcbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbnMgPSB7Li4udGhpcy5kZWZhdWx0T3B0aW9ucywgLi4udXBkYXRlZE9wdGlvbnN9O1xuICAgIGNvbnN0IHtkZWJ1ZywgbWlkZGxld2FyZSwgbmFtZSwgc3RvcmVzfSA9IHRoaXMub3B0aW9ucztcblxuICAgIC8vIFVwZGF0ZSBkZWZhdWx0IHN0b3JlXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudXNlU3RvcmFnZShuYW1lKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdBcmtoYW0gRXJyb3I6IFRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSB1c2luZyBzdG9yYWdlLicsIG5hbWUpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgaWYoISFzdG9yZXMgJiYgc3RvcmVzLmxlbmd0aCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGRTdG9yZXMoc3RvcmVzKTtcbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignQXJraGFtIEVycm9yOiBUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgYWRkaW5nIHN0b3Jlcy4nLCBzdG9yZXMpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZighIW1pZGRsZXdhcmUgJiYgbWlkZGxld2FyZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYWRkTWlkZGxld2FyZShtaWRkbGV3YXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCB3aW5kb3dQcm9wZXJ0eTogc3RyaW5nID0gJ2Fya2hhbWpzJztcblxuICAgIGlmKGRlYnVnKSB7XG4gICAgICB3aW5kb3dbd2luZG93UHJvcGVydHldID0gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHdpbmRvd1t3aW5kb3dQcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgdGhpcy5pc0luaXQgPSB0cnVlO1xuICAgIHRoaXMuZW1pdChBcmtoYW1Db25zdGFudHMuSU5JVCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGluaXRpYWxpemF0aW9uIGxpc3RlbmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBbbGlzdGVuZXJdIFRoZSBjYWxsYmFjayBhc3NvY2lhdGVkIHdpdGggdGhlIHN1YnNjcmliZWQgZXZlbnQuXG4gICAqL1xuICBvbkluaXQobGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub24oQXJraGFtQ29uc3RhbnRzLklOSVQsIGxpc3RlbmVyKTtcblxuICAgIGlmKHRoaXMuaXNJbml0KSB7XG4gICAgICBsaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBpbml0aWFsaXphdGlvbiBsaXN0ZW5lci5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2xpc3RlbmVyXSBUaGUgY2FsbGJhY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdWJzY3JpYmVkIGV2ZW50LlxuICAgKi9cbiAgb2ZmSW5pdChsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vZmYoQXJraGFtQ29uc3RhbnRzLklOSVQsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFuIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V2ZW50VHlwZV0gRXZlbnQgdG8gdW5zdWJzY3JpYmUuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtsaXN0ZW5lcl0gVGhlIGNhbGxiYWNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3Vic2NyaWJlZCBldmVudC5cbiAgICovXG4gIG9mZihldmVudFR5cGU6IHN0cmluZywgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZUxpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXZlbnRUeXBlXSBFdmVudCB0byBzdWJzY3JpYmUuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtsaXN0ZW5lcl0gVGhlIGNhbGxiYWNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3Vic2NyaWJlZCBldmVudC5cbiAgICovXG4gIG9uKGV2ZW50VHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuYWRkTGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lcik7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIG5ldyBTdG9yZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXl9IHN0b3JlcyBTdG9yZSBjbGFzcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0W10+fSB0aGUgY2xhc3Mgb2JqZWN0KHMpLlxuICAgKi9cbiAgYXN5bmMgYWRkU3RvcmVzKHN0b3JlczogYW55W10pOiBQcm9taXNlPG9iamVjdFtdPiB7XG4gICAgY29uc3QgcmVnaXN0ZXJlZFN0b3JlczogRmx1eFN0b3JlW10gPSBzdG9yZXMubWFwKChzdG9yZTogRmx1eFN0b3JlKSA9PiB0aGlzLnJlZ2lzdGVyKHN0b3JlKSk7XG5cbiAgICAvLyBTYXZlIGNhY2hlIGluIHNlc3Npb24gc3RvcmFnZVxuICAgIGNvbnN0IHtuYW1lLCBzdG9yYWdlfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHN0b3JhZ2Uuc2V0U3RvcmFnZURhdGEobmFtZSwgdGhpcy5zdGF0ZSk7XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBjbGFzc2VzXG4gICAgcmV0dXJuIHJlZ2lzdGVyZWRTdG9yZXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIG1pZGRsZXdhcmUgZnJvbSBmcmFtZXdvcmsuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXl9IHN0cmluZyBtaWRkbGV3YXJlIG5hbWVzIHRvIHJlbW92ZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0W10+fSB0aGUgY2xhc3Mgb2JqZWN0KHMpLlxuICAgKi9cbiAgcmVtb3ZlTWlkZGxld2FyZShuYW1lczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBuYW1lcy5mb3JFYWNoKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIFJlbW92ZSBtaWRkbGV3YXJlIHBsdWdpbnNcbiAgICAgIHRoaXMucGx1Z2luVHlwZXMuZm9yRWFjaCgodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMubWlkZGxld2FyZVtgJHt0eXBlfUxpc3RgXSA9IHRoaXMucmVtb3ZlUGx1Z2luKHR5cGUsIG5hbWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgZnJhbWV3b3JrLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5fSBzdHJpbmcgbWlkZGxld2FyZSBuYW1lcyB0byByZW1vdmUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdFtdPn0gdGhlIGNsYXNzIG9iamVjdChzKS5cbiAgICovXG4gIGFzeW5jIHJlc2V0KGNsZWFyU3RvcmFnZTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7bmFtZSwgc3RvcmFnZX0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAvLyBDbGVhciBwZXJzaXN0ZW50IGNhY2hlXG4gICAgaWYoc3RvcmFnZSAmJiBjbGVhclN0b3JhZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHN0b3JhZ2Uuc2V0U3RvcmFnZURhdGEobmFtZSwge30pO1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGVhciBhbGwgcHJvcGVydGllc1xuICAgIHRoaXMubWlkZGxld2FyZSA9IHt9O1xuICAgIHRoaXMub3B0aW9ucyA9IHsuLi50aGlzLmRlZmF1bHRPcHRpb25zfTtcbiAgICB0aGlzLnN0YXRlID0ge307XG4gICAgdGhpcy5zdG9yZUFjdGlvbnMgPSB7fTtcbiAgICB0aGlzLmlzSW5pdCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGN1cnJlbnQgc3RhdGUgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xhcnJheX0gW25hbWVdIFRoZSBuYW1lIG9mIHRoZSBzdG9yZSB0byBzZXQuIFlvdSBjYW4gYWxzbyB1c2UgYW4gYXJyYXkgdG8gc3BlY2lmeSBhIHByb3BlcnR5IHBhdGhcbiAgICogd2l0aGluIHRoZSBvYmplY3QuXG4gICAqIEBwYXJhbSB7YW55fSBbdmFsdWVdIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAqL1xuICBzZXRTdGF0ZShwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnLCB2YWx1ZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmKCEhcGF0aCkge1xuICAgICAgdGhpcy5zdGF0ZSA9IHNldChwYXRoLCBjbG9uZURlZXAodmFsdWUpLCB0aGlzLnN0YXRlKTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgcGVyc2lzdGVudCBjYWNoZVxuICAgIGNvbnN0IHtzdG9yYWdlfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVN0b3JhZ2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUGx1Z2luKHR5cGU6IHN0cmluZywgcGx1Z2luOiBGbHV4UGx1Z2luVHlwZSk6IEZsdXhQbHVnaW5UeXBlW10ge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLm1pZGRsZXdhcmVbYCR7dHlwZX1MaXN0YF0gfHwgW107XG4gICAgY29uc3Qge21ldGhvZCwgbmFtZX0gPSBwbHVnaW47XG5cbiAgICBpZihtZXRob2QgJiYgdHlwZW9mIG1ldGhvZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gQ2hlY2sgaWYgcGx1Z2luIGFscmVhZHkgZXhpc3RzXG4gICAgICBjb25zdCBleGlzdHM6IGJvb2xlYW4gPSAhIWxpc3QuZmlsdGVyKChvYmo6IEZsdXhQbHVnaW5UeXBlKSA9PiBvYmoubmFtZSA9PT0gbmFtZSkubGVuZ3RoO1xuXG4gICAgICAvLyBEbyBub3QgYWRkIGR1cGxpY2F0ZSBwbHVnaW5zXG4gICAgICBpZighZXhpc3RzKSB7XG4gICAgICAgIGxpc3QucHVzaCh7bWV0aG9kLCBuYW1lfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmKG1ldGhvZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBFcnJvcihgJHtwbHVnaW4ubmFtZX0gbWlkZGxld2FyZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4gTWV0aG9kIGlzIG5vdCBhIGZ1bmN0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBkZXJlZ2lzdGVyKG5hbWU6IHN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgZGVsZXRlIHRoaXMuc3RvcmVBY3Rpb25zW25hbWVdO1xuICAgIGRlbGV0ZSB0aGlzLnN0YXRlW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlcihzdG9yZUZuKTogRmx1eFN0b3JlIHtcbiAgICBpZighc3RvcmVGbikge1xuICAgICAgdGhyb3cgRXJyb3IoJ1N0b3JlIGlzIHVuZGVmaW5lZC4gQ2Fubm90IHJlZ2lzdGVyIHdpdGggRmx1eC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0ZuYzogYm9vbGVhbiA9IHR5cGVvZiBzdG9yZUZuID09PSAnZnVuY3Rpb24nO1xuXG4gICAgaWYoIWlzRm5jKSB7XG4gICAgICB0aHJvdyBFcnJvcihgJHtzdG9yZUZufSBpcyBub3QgYSBzdG9yZSBmdW5jdGlvbi4gQ2Fubm90IHJlZ2lzdGVyIHdpdGggRmx1eC5gKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgc3RvcmUgb2JqZWN0XG4gICAgY29uc3Qge25hbWV9ID0gc3RvcmVGbjtcbiAgICBjb25zdCBpbml0aWFsU3RhdGU6IGFueSA9IHN0b3JlRm4oKTtcbiAgICBjb25zdCBzdG9yZUFjdGlvbiA9IHtcbiAgICAgIGFjdGlvbjogc3RvcmVGbixcbiAgICAgIGluaXRpYWxTdGF0ZTogc3RvcmVGbigpLFxuICAgICAgbmFtZVxuICAgIH07XG5cbiAgICBpZighaXNFbXB0eShuYW1lKSAmJiAhdGhpcy5zdG9yZUFjdGlvbnNbbmFtZV0pIHtcbiAgICAgIC8vIFNhdmUgc3RvcmUgb2JqZWN0XG4gICAgICB0aGlzLnN0b3JlQWN0aW9uc1tuYW1lXSA9IHN0b3JlQWN0aW9uO1xuXG4gICAgICAvLyBHZXQgZGVmYXVsdCB2YWx1ZXNcbiAgICAgIGlmKCF0aGlzLnN0YXRlW25hbWVdKSB7XG4gICAgICAgIGlmKGluaXRpYWxTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuc3RhdGVbbmFtZV0gPSBjbG9uZURlZXAoaW5pdGlhbFN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0YXRlW25hbWVdID0ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gc3RvcmUgY2xhc3NcbiAgICByZXR1cm4gdGhpcy5zdG9yZUFjdGlvbnNbbmFtZV07XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVBsdWdpbih0eXBlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IEZsdXhQbHVnaW5UeXBlW10ge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLm1pZGRsZXdhcmVbYCR7dHlwZX1MaXN0YF0gfHwgW107XG5cbiAgICAvLyByZW1vdmUgYWxsIG9jY3VycmVuY2VzIG9mIHRoZSBwbHVnaW5cbiAgICByZXR1cm4gbGlzdC5maWx0ZXIoKG9iajogRmx1eFBsdWdpblR5cGUpID0+IG9iai5uYW1lICE9PSBuYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RvcmFnZSA9ICgpID0+IFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG5cbiAgcHJpdmF0ZSBhc3luYyB1c2VTdG9yYWdlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHtzdG9yYWdlLCBzdGF0ZSwgc3RvcmFnZVdhaXR9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgLy8gQ2FjaGVcbiAgICBpZihzdG9yYWdlKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGUgfHwgYXdhaXQgc3RvcmFnZS5nZXRTdG9yYWdlRGF0YShuYW1lKSB8fCB7fTtcbiAgICAgICAgdGhpcy51cGRhdGVTdG9yYWdlID0gZGVib3VuY2UoXG4gICAgICAgICAgKCkgPT4gc3RvcmFnZS5zZXRTdG9yYWdlRGF0YShuYW1lLCB0aGlzLnN0YXRlKSxcbiAgICAgICAgICBzdG9yYWdlV2FpdCxcbiAgICAgICAgICB7bGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IHRydWV9XG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEFya2hhbUpTIEVycm9yOiBVc2luZyBzdG9yYWdlLCBcIiR7bmFtZX1cIi5gKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZSB8fCB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgRmx1eDogRmx1eEZyYW1ld29yayA9IG5ldyBGbHV4RnJhbWV3b3JrKCk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7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O0FBQ3BELFVBQU0sRUFBQyxTQUFTLE9BQU8sWUFBVyxJQUFJLEtBQUs7QUFHM0MsUUFBRyxTQUFTO0FBQ1YsVUFBSTtBQUNGLGFBQUssUUFBUSxTQUFTLE1BQU0sUUFBUSxlQUFlLElBQUksS0FBSyxDQUFDO0FBQzdELGFBQUssb0JBQWdCLGdCQUFBTztBQUFBLFVBQ25CLE1BQU0sUUFBUSxlQUFlLE1BQU0sS0FBSyxLQUFLO0FBQUEsVUFDN0M7QUFBQSxVQUNBLEVBQUMsU0FBUyxNQUFNLFVBQVUsS0FBSTtBQUFBLFFBQ2hDO0FBQUEsTUFDRixTQUFRLE9BQU47QUFDQSxnQkFBUSxNQUFNLG1DQUFtQyxRQUFRO0FBQ3pELGNBQU07QUFBQSxNQUNSO0FBQUEsSUFDRixPQUFPO0FBQ0wsV0FBSyxRQUFRLFNBQVMsQ0FBQztBQUFBLElBQ3pCO0FBRUEsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQTVpQmEsY0FDSixXQUFvQjtBQTZpQnRCLE1BQU0sT0FBc0IsSUFBSSxjQUFjOyIsCiAgIm5hbWVzIjogWyJjbG9uZURlZXAiLCAiRXJyb3JTdGFja1BhcnNlciIsICJhY3Rpb24iLCAibWVyZ2UiLCAiZ2V0IiwgInNldCIsICJpc0VtcHR5IiwgImRlYm91bmNlIl0KfQo=
|
@@ -0,0 +1,47 @@
|
|
1
|
+
export interface FluxOptions {
|
2
|
+
readonly basename?: string;
|
3
|
+
readonly context?: object;
|
4
|
+
readonly debug?: boolean;
|
5
|
+
readonly getUserConfirmation?: () => void;
|
6
|
+
readonly hashType?: 'slash' | 'noslash' | 'hashbang';
|
7
|
+
readonly history?: object;
|
8
|
+
readonly initialEntries?: any[];
|
9
|
+
readonly initialIndex?: number;
|
10
|
+
readonly keyLength?: number;
|
11
|
+
readonly location?: string | object;
|
12
|
+
readonly middleware?: FluxMiddlewareType[];
|
13
|
+
readonly name?: string;
|
14
|
+
readonly routerType?: string;
|
15
|
+
readonly scrollToTop?: boolean;
|
16
|
+
readonly state?: any;
|
17
|
+
readonly storage?: FluxStorageType;
|
18
|
+
readonly storageWait?: number;
|
19
|
+
readonly stores?: any[];
|
20
|
+
readonly title?: string;
|
21
|
+
}
|
22
|
+
export interface FluxAction {
|
23
|
+
readonly [key: string]: any;
|
24
|
+
readonly type: string;
|
25
|
+
}
|
26
|
+
export interface FluxStorageType {
|
27
|
+
readonly getStorageData: (key: string) => Promise<any>;
|
28
|
+
readonly setStorageData: (key: string, value: any) => Promise<boolean>;
|
29
|
+
}
|
30
|
+
export interface FluxStore {
|
31
|
+
readonly action: (type: string, data: any, state: any) => any;
|
32
|
+
readonly name: string;
|
33
|
+
readonly initialState: any;
|
34
|
+
}
|
35
|
+
export type FluxPluginMethodType = (action: FluxAction, store: object, appData?: object) => Promise<FluxAction>;
|
36
|
+
export interface FluxMiddlewareType {
|
37
|
+
readonly name: string;
|
38
|
+
readonly preDispatch?: FluxPluginMethodType;
|
39
|
+
readonly postDispatch?: FluxPluginMethodType;
|
40
|
+
}
|
41
|
+
export interface FluxPluginType {
|
42
|
+
readonly name: string;
|
43
|
+
readonly method: FluxPluginMethodType;
|
44
|
+
}
|
45
|
+
export interface ErrorConstructor {
|
46
|
+
captureStackTrace(thisArg: any, func: any): void;
|
47
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
var __defProp = Object.defineProperty;
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
7
|
+
for (let key of __getOwnPropNames(from))
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
10
|
+
}
|
11
|
+
return to;
|
12
|
+
};
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
14
|
+
var Flux_types_exports = {};
|
15
|
+
module.exports = __toCommonJS(Flux_types_exports);
|
16
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL0ZsdXgvRmx1eC50eXBlcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmx1eE9wdGlvbnMge1xuICByZWFkb25seSBiYXNlbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY29udGV4dD86IG9iamVjdDtcbiAgcmVhZG9ubHkgZGVidWc/OiBib29sZWFuO1xuICByZWFkb25seSBnZXRVc2VyQ29uZmlybWF0aW9uPzogKCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgaGFzaFR5cGU/OiAnc2xhc2gnIHwgJ25vc2xhc2gnIHwgJ2hhc2hiYW5nJztcbiAgcmVhZG9ubHkgaGlzdG9yeT86IG9iamVjdDtcbiAgcmVhZG9ubHkgaW5pdGlhbEVudHJpZXM/OiBhbnlbXTtcbiAgcmVhZG9ubHkgaW5pdGlhbEluZGV4PzogbnVtYmVyO1xuICByZWFkb25seSBrZXlMZW5ndGg/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGxvY2F0aW9uPzogc3RyaW5nIHwgb2JqZWN0O1xuICByZWFkb25seSBtaWRkbGV3YXJlPzogRmx1eE1pZGRsZXdhcmVUeXBlW107XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJvdXRlclR5cGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNjcm9sbFRvVG9wPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc3RhdGU/OiBhbnk7XG4gIHJlYWRvbmx5IHN0b3JhZ2U/OiBGbHV4U3RvcmFnZVR5cGU7XG4gIHJlYWRvbmx5IHN0b3JhZ2VXYWl0PzogbnVtYmVyO1xuICByZWFkb25seSBzdG9yZXM/OiBhbnlbXTtcbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmx1eEFjdGlvbiB7XG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IGFueTtcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsdXhTdG9yYWdlVHlwZSB7XG4gIHJlYWRvbmx5IGdldFN0b3JhZ2VEYXRhOiAoa2V5OiBzdHJpbmcpID0+IFByb21pc2U8YW55PjtcbiAgcmVhZG9ubHkgc2V0U3RvcmFnZURhdGE6IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gUHJvbWlzZTxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHV4U3RvcmUge1xuICByZWFkb25seSBhY3Rpb246ICh0eXBlOiBzdHJpbmcsIGRhdGE6IGFueSwgc3RhdGU6IGFueSkgPT4gYW55O1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGluaXRpYWxTdGF0ZTogYW55O1xufVxuXG5leHBvcnQgdHlwZSBGbHV4UGx1Z2luTWV0aG9kVHlwZSA9IChhY3Rpb246IEZsdXhBY3Rpb24sIHN0b3JlOiBvYmplY3QsIGFwcERhdGE/OiBvYmplY3QpID0+IFByb21pc2U8Rmx1eEFjdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmx1eE1pZGRsZXdhcmVUeXBlIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwcmVEaXNwYXRjaD86IEZsdXhQbHVnaW5NZXRob2RUeXBlO1xuICByZWFkb25seSBwb3N0RGlzcGF0Y2g/OiBGbHV4UGx1Z2luTWV0aG9kVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHV4UGx1Z2luVHlwZSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbWV0aG9kOiBGbHV4UGx1Z2luTWV0aG9kVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckNvbnN0cnVjdG9yIHtcbiAgY2FwdHVyZVN0YWNrVHJhY2UodGhpc0FyZzogYW55LCBmdW5jOiBhbnkpOiB2b2lkXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
|
@@ -0,0 +1,35 @@
|
|
1
|
+
var __defProp = Object.defineProperty;
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
5
|
+
var __export = (target, all) => {
|
6
|
+
for (var name in all)
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
8
|
+
};
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
11
|
+
for (let key of __getOwnPropNames(from))
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
14
|
+
}
|
15
|
+
return to;
|
16
|
+
};
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
18
|
+
var ArkhamConstants_exports = {};
|
19
|
+
__export(ArkhamConstants_exports, {
|
20
|
+
ArkhamConstants: () => ArkhamConstants
|
21
|
+
});
|
22
|
+
module.exports = __toCommonJS(ArkhamConstants_exports);
|
23
|
+
class ArkhamConstants {
|
24
|
+
}
|
25
|
+
ArkhamConstants.GO_BACK = "ARKHAM_GO_BACK";
|
26
|
+
ArkhamConstants.GO_REPLACE = "ARKHAM_GO_REPLACE";
|
27
|
+
ArkhamConstants.GOTO = "ARKHAM_GOTO";
|
28
|
+
ArkhamConstants.INIT = "ARKHAM_INIT";
|
29
|
+
ArkhamConstants.UPDATE_TITLE = "ARKHAM_UPDATE_TITLE";
|
30
|
+
ArkhamConstants.UPDATE_VIEW = "ARKHAM_UPDATE_VIEW";
|
31
|
+
// Annotate the CommonJS export names for ESM import in node:
|
32
|
+
0 && (module.exports = {
|
33
|
+
ArkhamConstants
|
34
|
+
});
|
35
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbnN0YW50cy9BcmtoYW1Db25zdGFudHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmV4cG9ydCBjbGFzcyBBcmtoYW1Db25zdGFudHMge1xuICBzdGF0aWMgcmVhZG9ubHkgR09fQkFDSzogc3RyaW5nID0gJ0FSS0hBTV9HT19CQUNLJztcbiAgc3RhdGljIHJlYWRvbmx5IEdPX1JFUExBQ0U6IHN0cmluZyA9ICdBUktIQU1fR09fUkVQTEFDRSc7XG4gIHN0YXRpYyByZWFkb25seSBHT1RPOiBzdHJpbmcgPSAnQVJLSEFNX0dPVE8nO1xuICBzdGF0aWMgcmVhZG9ubHkgSU5JVDogc3RyaW5nID0gJ0FSS0hBTV9JTklUJztcbiAgc3RhdGljIHJlYWRvbmx5IFVQREFURV9USVRMRTogc3RyaW5nID0gJ0FSS0hBTV9VUERBVEVfVElUTEUnO1xuICBzdGF0aWMgcmVhZG9ubHkgVVBEQVRFX1ZJRVc6IHN0cmluZyA9ICdBUktIQU1fVVBEQVRFX1ZJRVcnO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS08sTUFBTSxnQkFBZ0I7QUFPN0I7QUFQYSxnQkFDSyxVQUFrQjtBQUR2QixnQkFFSyxhQUFxQjtBQUYxQixnQkFHSyxPQUFlO0FBSHBCLGdCQUlLLE9BQWU7QUFKcEIsZ0JBS0ssZUFBdUI7QUFMNUIsZ0JBTUssY0FBc0I7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
var __defProp = Object.defineProperty;
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
5
|
+
var __export = (target, all) => {
|
6
|
+
for (var name in all)
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
8
|
+
};
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
11
|
+
for (let key of __getOwnPropNames(from))
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
14
|
+
}
|
15
|
+
return to;
|
16
|
+
};
|
17
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var src_exports = {};
|
20
|
+
__export(src_exports, {
|
21
|
+
ArkhamConstants: () => import_ArkhamConstants.ArkhamConstants,
|
22
|
+
Flux: () => import_Flux.Flux,
|
23
|
+
FluxFramework: () => import_Flux.FluxFramework
|
24
|
+
});
|
25
|
+
module.exports = __toCommonJS(src_exports);
|
26
|
+
var import_ArkhamConstants = require("./constants/ArkhamConstants");
|
27
|
+
var import_Flux = require("./Flux/Flux");
|
28
|
+
__reExport(src_exports, require("./Flux/Flux.types"), module.exports);
|
29
|
+
// Annotate the CommonJS export names for ESM import in node:
|
30
|
+
0 && (module.exports = {
|
31
|
+
ArkhamConstants,
|
32
|
+
Flux,
|
33
|
+
FluxFramework
|
34
|
+
});
|
35
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtBcmtoYW1Db25zdGFudHN9IGZyb20gJy4vY29uc3RhbnRzL0Fya2hhbUNvbnN0YW50cyc7XG5pbXBvcnQge0ZsdXgsIEZsdXhGcmFtZXdvcmt9IGZyb20gJy4vRmx1eC9GbHV4JztcblxuZXhwb3J0ICogZnJvbSAnLi9GbHV4L0ZsdXgudHlwZXMnO1xuZXhwb3J0IHtBcmtoYW1Db25zdGFudHMsIEZsdXgsIEZsdXhGcmFtZXdvcmt9O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSw2QkFBOEI7QUFDOUIsa0JBQWtDO0FBRWxDLHdCQUFjLDhCQVBkOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nlabs/arkhamjs",
|
3
|
-
"version": "3.26.
|
3
|
+
"version": "3.26.2",
|
4
4
|
"publishConfig": {
|
5
5
|
"access": "public"
|
6
6
|
},
|
@@ -45,18 +45,25 @@
|
|
45
45
|
"update": "lex update -i"
|
46
46
|
},
|
47
47
|
"dependencies": {
|
48
|
-
"error-stack-parser": "^2.
|
48
|
+
"error-stack-parser": "^2.1.4",
|
49
49
|
"events": "^3.3.0",
|
50
50
|
"lodash": "^4.17.21"
|
51
51
|
},
|
52
52
|
"devDependencies": {
|
53
53
|
"@types/events": "^3.0.0",
|
54
|
-
"@types/jest": "^29.5.
|
55
|
-
"@types/lodash": "^4.14.
|
56
|
-
"@types/node": "^
|
57
|
-
"eslint": "^8.
|
54
|
+
"@types/jest": "^29.5.1",
|
55
|
+
"@types/lodash": "^4.14.194",
|
56
|
+
"@types/node": "^20.2.1",
|
57
|
+
"eslint": "^8.40.0",
|
58
58
|
"eslint-config-styleguidejs": "^3.2.1",
|
59
|
-
"typescript": "^5.0.
|
59
|
+
"typescript": "^5.0.4"
|
60
60
|
},
|
61
|
+
"files": [
|
62
|
+
"index.js",
|
63
|
+
"lib",
|
64
|
+
"LICENSE",
|
65
|
+
"package.json",
|
66
|
+
"README.md"
|
67
|
+
],
|
61
68
|
"gitHead": "fc371e1e28fe0ae35d40d29a217d5f0e990ec32a"
|
62
69
|
}
|