@nlabs/arkhamjs 3.28.6 → 3.28.8
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 +37 -0
- package/lib/Flux/Flux.js +486 -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 +47 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +36 -0
- package/package.json +9 -1
@@ -0,0 +1,37 @@
|
|
1
|
+
import { EventEmitter } from 'events';
|
2
|
+
import { FluxAction, FluxMiddlewareType, FluxOptions, FluxStore } from './Flux.types';
|
3
|
+
export declare class FluxFramework extends EventEmitter {
|
4
|
+
static initFlux: boolean;
|
5
|
+
isInit: boolean;
|
6
|
+
pluginTypes: string[];
|
7
|
+
private state;
|
8
|
+
private storeActions;
|
9
|
+
private defaultOptions;
|
10
|
+
private middleware;
|
11
|
+
private options;
|
12
|
+
constructor();
|
13
|
+
addMiddleware(middleware: FluxMiddlewareType[]): void;
|
14
|
+
clearAppData(): Promise<boolean>;
|
15
|
+
clearMiddleware(): boolean;
|
16
|
+
removeStores(storeNames: string[]): void;
|
17
|
+
dispatch(action: FluxAction, silent?: boolean): Promise<FluxAction>;
|
18
|
+
getOptions(): FluxOptions;
|
19
|
+
getState(path?: string | string[], defaultValue?: any): any;
|
20
|
+
getStore(name?: string): FluxStore;
|
21
|
+
init(options?: FluxOptions, reset?: boolean): Promise<FluxFramework>;
|
22
|
+
onInit(listener: (...args: any[]) => void): void;
|
23
|
+
offInit(listener: (...args: any[]) => void): void;
|
24
|
+
off(eventType: string, listener: (...args: any[]) => void): this;
|
25
|
+
on(eventType: string, listener: (...args: any[]) => void): this;
|
26
|
+
addStores(stores: any[]): Promise<object[]>;
|
27
|
+
removeMiddleware(names: string[]): void;
|
28
|
+
reset(clearStorage?: boolean): Promise<void>;
|
29
|
+
setState(path: string | string[], value: any): Promise<boolean>;
|
30
|
+
private addPlugin;
|
31
|
+
private deregister;
|
32
|
+
private register;
|
33
|
+
private removePlugin;
|
34
|
+
private updateStorage;
|
35
|
+
private useStorage;
|
36
|
+
}
|
37
|
+
export declare const Flux: FluxFramework;
|
package/lib/Flux/Flux.js
ADDED
@@ -0,0 +1,486 @@
|
|
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
|
+
static {
|
91
|
+
this.initFlux = false;
|
92
|
+
}
|
93
|
+
/**
|
94
|
+
* Add middleware to framework.
|
95
|
+
*
|
96
|
+
* @param {array} middleware An array of middleware to add to the framework.
|
97
|
+
*/
|
98
|
+
addMiddleware(middleware) {
|
99
|
+
middleware.forEach((middleObj) => {
|
100
|
+
if (!!middleObj && (typeof middleObj === "function" || typeof middleObj === "object")) {
|
101
|
+
const middleName = middleObj.name || "";
|
102
|
+
if (!middleName) {
|
103
|
+
throw Error("Unknown middleware is not configured properly. Requires name property. Cannot add to Flux.");
|
104
|
+
}
|
105
|
+
this.pluginTypes.forEach((type) => {
|
106
|
+
const method = middleObj[type];
|
107
|
+
const plugin = { method, name: middleName };
|
108
|
+
this.middleware[`${type}List`] = this.addPlugin(type, plugin);
|
109
|
+
});
|
110
|
+
} else {
|
111
|
+
throw Error("Unknown middleware is not configured properly. Cannot add to Flux.");
|
112
|
+
}
|
113
|
+
});
|
114
|
+
}
|
115
|
+
/**
|
116
|
+
* Remove all app data from storage.
|
117
|
+
*
|
118
|
+
* @returns {Promise<boolean>} Whether app data was successfully removed.
|
119
|
+
*/
|
120
|
+
clearAppData() {
|
121
|
+
Object.keys(this.storeActions).forEach((storeName) => {
|
122
|
+
const storeFn = this.storeActions[storeName];
|
123
|
+
this.state[storeFn.name] = (0, import_cloneDeep.default)(storeFn.initialState);
|
124
|
+
});
|
125
|
+
const { name, storage } = this.options;
|
126
|
+
if (storage?.setStorageData) {
|
127
|
+
return storage.setStorageData(name, this.state);
|
128
|
+
}
|
129
|
+
return Promise.resolve(true);
|
130
|
+
}
|
131
|
+
/**
|
132
|
+
* Remove all middleware.
|
133
|
+
*
|
134
|
+
* @returns {boolean} Whether middleware was successfully removed.
|
135
|
+
*/
|
136
|
+
clearMiddleware() {
|
137
|
+
Object.keys(this.middleware).forEach((pluginType) => {
|
138
|
+
this.middleware[pluginType] = [];
|
139
|
+
});
|
140
|
+
return true;
|
141
|
+
}
|
142
|
+
/**
|
143
|
+
* De-registers named stores.
|
144
|
+
*
|
145
|
+
* @param {array} storeNames An array of store names to remove from the framework.
|
146
|
+
*/
|
147
|
+
removeStores(storeNames) {
|
148
|
+
storeNames.forEach((name) => this.deregister(name));
|
149
|
+
}
|
150
|
+
/**
|
151
|
+
* Dispatches an action to all stores.
|
152
|
+
*
|
153
|
+
* @param {object} action to dispatch to all the stores.
|
154
|
+
* @param {boolean} silent To silence any events.
|
155
|
+
* @returns {Promise} The promise is resolved when and if the app saves data to storage, returning
|
156
|
+
* the action.
|
157
|
+
*/
|
158
|
+
async dispatch(action, silent = false) {
|
159
|
+
if (!action) {
|
160
|
+
throw new Error("ArkhamJS Error: Flux.dispatch requires an action.");
|
161
|
+
}
|
162
|
+
let clonedAction = (0, import_cloneDeep.default)(action);
|
163
|
+
const startTime = Date.now();
|
164
|
+
let stack = [];
|
165
|
+
try {
|
166
|
+
const stackProperty = "stackTraceLimit";
|
167
|
+
const { stackTraceLimit } = Error;
|
168
|
+
Error[stackProperty] = Infinity;
|
169
|
+
stack = import_error_stack_parser.default.parse(new Error());
|
170
|
+
Error[stackProperty] = stackTraceLimit;
|
171
|
+
} catch (error) {
|
172
|
+
}
|
173
|
+
const options = (0, import_cloneDeep.default)(this.options);
|
174
|
+
const appInfo = { duration: 0, options, stack };
|
175
|
+
const { postDispatchList = [], preDispatchList = [] } = this.middleware;
|
176
|
+
if (preDispatchList.length) {
|
177
|
+
clonedAction = await Promise.all(
|
178
|
+
preDispatchList.map(
|
179
|
+
(plugin) => plugin.method(
|
180
|
+
(0, import_cloneDeep.default)(clonedAction),
|
181
|
+
(0, import_cloneDeep.default)(this.state),
|
182
|
+
appInfo
|
183
|
+
)
|
184
|
+
)
|
185
|
+
).then(
|
186
|
+
(actions) => actions.reduce((updatedAction, action2) => (0, import_merge.default)(updatedAction, action2), clonedAction)
|
187
|
+
).catch((error) => {
|
188
|
+
throw error;
|
189
|
+
});
|
190
|
+
}
|
191
|
+
const { type, ...data } = clonedAction;
|
192
|
+
if (!type || type === "") {
|
193
|
+
console.warn("ArkhamJS Warning: Flux.dispatch is missing an action type for the payload:", data);
|
194
|
+
return Promise.resolve(clonedAction);
|
195
|
+
}
|
196
|
+
Object.keys(this.storeActions).forEach((storeName) => {
|
197
|
+
const storeFn = this.storeActions[storeName];
|
198
|
+
const state = (0, import_cloneDeep.default)(this.state[storeName]) || (0, import_cloneDeep.default)(storeFn.initialState) || {};
|
199
|
+
this.state[storeName] = (0, import_cloneDeep.default)(storeFn.action(type, data, state)) || state;
|
200
|
+
});
|
201
|
+
const { storage } = this.options;
|
202
|
+
if (storage && this.updateStorage) {
|
203
|
+
try {
|
204
|
+
await this.updateStorage();
|
205
|
+
} catch (error) {
|
206
|
+
}
|
207
|
+
}
|
208
|
+
const endTime = +/* @__PURE__ */ new Date();
|
209
|
+
const duration = endTime - startTime;
|
210
|
+
appInfo.duration = duration;
|
211
|
+
if (postDispatchList.length) {
|
212
|
+
clonedAction = await Promise.all(
|
213
|
+
postDispatchList.map(
|
214
|
+
async (plugin) => plugin.method((0, import_cloneDeep.default)(clonedAction), (0, import_cloneDeep.default)(this.state), appInfo)
|
215
|
+
)
|
216
|
+
).then(
|
217
|
+
(actions) => actions.reduce((updatedAction, action2) => (0, import_merge.default)(updatedAction, action2), clonedAction)
|
218
|
+
).catch((error) => {
|
219
|
+
throw error;
|
220
|
+
});
|
221
|
+
}
|
222
|
+
if (!silent) {
|
223
|
+
this.emit(type, clonedAction);
|
224
|
+
this.emit("arkhamjs", this.state);
|
225
|
+
}
|
226
|
+
return Promise.resolve(clonedAction);
|
227
|
+
}
|
228
|
+
/**
|
229
|
+
* Get the current Flux options.
|
230
|
+
*
|
231
|
+
* @returns {FluxOptions} the Flux options object.
|
232
|
+
*/
|
233
|
+
getOptions() {
|
234
|
+
return this.options;
|
235
|
+
}
|
236
|
+
/**
|
237
|
+
* Get the current state object.
|
238
|
+
*
|
239
|
+
* @param {string|array} [name] (optional) The name of the store for an object, otherwise it will return all store
|
240
|
+
* objects. You can also use an array to specify a property path within the object.
|
241
|
+
* @param {any} [defaultValue] (optional) A default value to return if null.
|
242
|
+
* @returns {any} the state object or a property value within.
|
243
|
+
*/
|
244
|
+
getState(path = "", defaultValue) {
|
245
|
+
let storeValue;
|
246
|
+
if (!path) {
|
247
|
+
storeValue = this.state || {};
|
248
|
+
} else {
|
249
|
+
storeValue = (0, import_get.default)(path, this.state);
|
250
|
+
}
|
251
|
+
const value = storeValue ? (0, import_cloneDeep.default)(storeValue) : storeValue;
|
252
|
+
return value === void 0 ? defaultValue : value;
|
253
|
+
}
|
254
|
+
/**
|
255
|
+
* Get a store object registered with Flux.
|
256
|
+
*
|
257
|
+
* @param {string} name The name of the store.
|
258
|
+
* @returns {FluxStore} the store object.
|
259
|
+
*/
|
260
|
+
getStore(name = "") {
|
261
|
+
return this.storeActions[name];
|
262
|
+
}
|
263
|
+
/**
|
264
|
+
* Initialize and set configuration options.
|
265
|
+
*
|
266
|
+
* @param {object} options Configuration options.
|
267
|
+
*/
|
268
|
+
async init(options = {}, reset = false) {
|
269
|
+
if (reset) {
|
270
|
+
this.isInit = false;
|
271
|
+
this.reset(false);
|
272
|
+
}
|
273
|
+
const updatedOptions = { ...options };
|
274
|
+
if (this.isInit) {
|
275
|
+
updatedOptions.name = this.options.name;
|
276
|
+
}
|
277
|
+
this.options = { ...this.defaultOptions, ...updatedOptions };
|
278
|
+
const { debug, middleware, name, stores } = this.options;
|
279
|
+
try {
|
280
|
+
await this.useStorage(name);
|
281
|
+
} catch (error) {
|
282
|
+
console.error("Arkham Error: There was an error while using storage.", name);
|
283
|
+
throw error;
|
284
|
+
}
|
285
|
+
if (!!stores && stores.length) {
|
286
|
+
try {
|
287
|
+
await this.addStores(stores);
|
288
|
+
} catch (error) {
|
289
|
+
console.error("Arkham Error: There was an error while adding stores.", stores);
|
290
|
+
throw error;
|
291
|
+
}
|
292
|
+
}
|
293
|
+
if (!!middleware && middleware.length) {
|
294
|
+
this.addMiddleware(middleware);
|
295
|
+
}
|
296
|
+
const windowProperty = "arkhamjs";
|
297
|
+
if (debug) {
|
298
|
+
window[windowProperty] = this;
|
299
|
+
} else {
|
300
|
+
delete window[windowProperty];
|
301
|
+
}
|
302
|
+
this.isInit = true;
|
303
|
+
this.emit(import_ArkhamConstants.ArkhamConstants.INIT);
|
304
|
+
return this;
|
305
|
+
}
|
306
|
+
/**
|
307
|
+
* Adds an initialization listener.
|
308
|
+
*
|
309
|
+
* @param {function} [listener] The callback associated with the subscribed event.
|
310
|
+
*/
|
311
|
+
onInit(listener) {
|
312
|
+
this.on(import_ArkhamConstants.ArkhamConstants.INIT, listener);
|
313
|
+
if (this.isInit) {
|
314
|
+
listener();
|
315
|
+
}
|
316
|
+
}
|
317
|
+
/**
|
318
|
+
* Removes the initialization listener.
|
319
|
+
*
|
320
|
+
* @param {function} [listener] The callback associated with the subscribed event.
|
321
|
+
*/
|
322
|
+
offInit(listener) {
|
323
|
+
this.off(import_ArkhamConstants.ArkhamConstants.INIT, listener);
|
324
|
+
}
|
325
|
+
/**
|
326
|
+
* Removes an event listener.
|
327
|
+
*
|
328
|
+
* @param {string} [eventType] Event to unsubscribe.
|
329
|
+
* @param {function} [listener] The callback associated with the subscribed event.
|
330
|
+
*/
|
331
|
+
off(eventType, listener) {
|
332
|
+
return this.removeListener(eventType, listener);
|
333
|
+
}
|
334
|
+
/**
|
335
|
+
* Adds an event listener.
|
336
|
+
*
|
337
|
+
* @param {string} [eventType] Event to subscribe.
|
338
|
+
* @param {function} [listener] The callback associated with the subscribed event.
|
339
|
+
*/
|
340
|
+
on(eventType, listener) {
|
341
|
+
return this.addListener(eventType, listener);
|
342
|
+
}
|
343
|
+
/**
|
344
|
+
* Registers new Stores.
|
345
|
+
*
|
346
|
+
* @param {array} stores Store class.
|
347
|
+
* @returns {Promise<object[]>} the class object(s).
|
348
|
+
*/
|
349
|
+
async addStores(stores) {
|
350
|
+
const registeredStores = stores.map((store) => this.register(store));
|
351
|
+
const { name, storage } = this.options;
|
352
|
+
if (storage?.setStorageData) {
|
353
|
+
try {
|
354
|
+
await storage.setStorageData(name, this.state);
|
355
|
+
} catch (error) {
|
356
|
+
throw error;
|
357
|
+
}
|
358
|
+
}
|
359
|
+
return registeredStores;
|
360
|
+
}
|
361
|
+
/**
|
362
|
+
* Remove middleware from framework.
|
363
|
+
*
|
364
|
+
* @param {array} string middleware names to remove.
|
365
|
+
* @returns {Promise<object[]>} the class object(s).
|
366
|
+
*/
|
367
|
+
removeMiddleware(names) {
|
368
|
+
names.forEach((name) => {
|
369
|
+
this.pluginTypes.forEach((type) => {
|
370
|
+
this.middleware[`${type}List`] = this.removePlugin(type, name);
|
371
|
+
});
|
372
|
+
});
|
373
|
+
}
|
374
|
+
/**
|
375
|
+
* Reset framework.
|
376
|
+
*
|
377
|
+
* @param {array} string middleware names to remove.
|
378
|
+
* @returns {Promise<object[]>} the class object(s).
|
379
|
+
*/
|
380
|
+
async reset(clearStorage = true) {
|
381
|
+
const { name, storage } = this.options;
|
382
|
+
if (storage && clearStorage) {
|
383
|
+
try {
|
384
|
+
await storage.setStorageData(name, {});
|
385
|
+
} catch (error) {
|
386
|
+
throw error;
|
387
|
+
}
|
388
|
+
}
|
389
|
+
this.middleware = {};
|
390
|
+
this.options = { ...this.defaultOptions };
|
391
|
+
this.state = {};
|
392
|
+
this.storeActions = {};
|
393
|
+
this.isInit = false;
|
394
|
+
}
|
395
|
+
/**
|
396
|
+
* Sets the current state object.
|
397
|
+
*
|
398
|
+
* @param {string|array} [name] The name of the store to set. You can also use an array to specify a property path
|
399
|
+
* within the object.
|
400
|
+
* @param {any} [value] The value to set.
|
401
|
+
*/
|
402
|
+
setState(path = "", value) {
|
403
|
+
if (!!path) {
|
404
|
+
this.state = (0, import_set.default)(path, (0, import_cloneDeep.default)(value), this.state);
|
405
|
+
}
|
406
|
+
const { storage } = this.options;
|
407
|
+
if (storage && this.updateStorage) {
|
408
|
+
return this.updateStorage();
|
409
|
+
}
|
410
|
+
return Promise.resolve(false);
|
411
|
+
}
|
412
|
+
addPlugin(type, plugin) {
|
413
|
+
const list = this.middleware[`${type}List`] || [];
|
414
|
+
const { method, name } = plugin;
|
415
|
+
if (method && typeof method === "function") {
|
416
|
+
const exists = !!list.filter((obj) => obj.name === name).length;
|
417
|
+
if (!exists) {
|
418
|
+
list.push({ method, name });
|
419
|
+
}
|
420
|
+
} else if (method !== void 0) {
|
421
|
+
throw Error(`${plugin.name} middleware is not configured properly. Method is not a function.`);
|
422
|
+
}
|
423
|
+
return list;
|
424
|
+
}
|
425
|
+
deregister(name = "") {
|
426
|
+
delete this.storeActions[name];
|
427
|
+
delete this.state[name];
|
428
|
+
}
|
429
|
+
register(storeFn) {
|
430
|
+
if (!storeFn) {
|
431
|
+
throw Error("Store is undefined. Cannot register with Flux.");
|
432
|
+
}
|
433
|
+
const isFnc = typeof storeFn === "function";
|
434
|
+
if (!isFnc) {
|
435
|
+
throw Error(`${storeFn} is not a store function. Cannot register with Flux.`);
|
436
|
+
}
|
437
|
+
const { name } = storeFn;
|
438
|
+
const initialState = storeFn();
|
439
|
+
const storeAction = {
|
440
|
+
action: storeFn,
|
441
|
+
initialState: storeFn(),
|
442
|
+
name
|
443
|
+
};
|
444
|
+
if (!(0, import_isEmpty.default)(name) && !this.storeActions[name]) {
|
445
|
+
this.storeActions[name] = storeAction;
|
446
|
+
if (!this.state[name]) {
|
447
|
+
if (initialState) {
|
448
|
+
this.state[name] = (0, import_cloneDeep.default)(initialState);
|
449
|
+
} else {
|
450
|
+
this.state[name] = {};
|
451
|
+
}
|
452
|
+
}
|
453
|
+
}
|
454
|
+
return this.storeActions[name];
|
455
|
+
}
|
456
|
+
removePlugin(type, name) {
|
457
|
+
const list = this.middleware[`${type}List`] || [];
|
458
|
+
return list.filter((obj) => obj.name !== name);
|
459
|
+
}
|
460
|
+
async useStorage(name) {
|
461
|
+
const { storage, state, storageWait } = this.options;
|
462
|
+
if (storage) {
|
463
|
+
try {
|
464
|
+
this.state = state || await storage.getStorageData(name) || {};
|
465
|
+
this.updateStorage = (0, import_debounce.default)(
|
466
|
+
() => storage.setStorageData(name, this.state),
|
467
|
+
storageWait,
|
468
|
+
{ leading: true, trailing: true }
|
469
|
+
);
|
470
|
+
} catch (error) {
|
471
|
+
console.error(`ArkhamJS Error: Using storage, "${name}".`);
|
472
|
+
throw error;
|
473
|
+
}
|
474
|
+
} else {
|
475
|
+
this.state = state || {};
|
476
|
+
}
|
477
|
+
return null;
|
478
|
+
}
|
479
|
+
}
|
480
|
+
const Flux = new FluxFramework();
|
481
|
+
// Annotate the CommonJS export names for ESM import in node:
|
482
|
+
0 && (module.exports = {
|
483
|
+
Flux,
|
484
|
+
FluxFramework
|
485
|
+
});
|
486
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL0ZsdXgvRmx1eC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBFcnJvclN0YWNrUGFyc2VyIGZyb20gJ2Vycm9yLXN0YWNrLXBhcnNlcic7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvZnAvY2xvbmVEZWVwJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2ZwL2dldCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvZnAvaXNFbXB0eSc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL2ZwL21lcmdlJztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoL2ZwL3NldCc7XG5cbmltcG9ydCB7QXJraGFtQ29uc3RhbnRzfSBmcm9tICcuLi9jb25zdGFudHMvQXJraGFtQ29uc3RhbnRzJztcbmltcG9ydCB7Rmx1eEFjdGlvbiwgRmx1eE1pZGRsZXdhcmVUeXBlLCBGbHV4T3B0aW9ucywgRmx1eFBsdWdpblR5cGUsIEZsdXhTdG9yZX0gZnJvbSAnLi9GbHV4LnR5cGVzJztcblxuLyoqXG4gKiBGbHV4RnJhbWV3b3JrXG4gKiBAdHlwZSB7RXZlbnRFbWl0dGVyfVxuICovXG5leHBvcnQgY2xhc3MgRmx1eEZyYW1ld29yayBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIHN0YXRpYyBpbml0Rmx1eDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0luaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8gUHVibGljIHByb3BlcnRpZXNcbiAgcGx1Z2luVHlwZXM6IHN0cmluZ1tdID0gWydwcmVEaXNwYXRjaCcsICdwb3N0RGlzcGF0Y2gnXTtcbiAgLy8gUHJpdmF0ZSBwcm9wZXJ0aWVzXG4gIHByaXZhdGUgc3RhdGU6IGFueSA9IHt9O1xuICBwcml2YXRlIHN0b3JlQWN0aW9uczogYW55ID0ge307XG4gIHByaXZhdGUgZGVmYXVsdE9wdGlvbnM6IEZsdXhPcHRpb25zID0ge1xuICAgIG5hbWU6ICdhcmtoYW1qcycsXG4gICAgcm91dGVyVHlwZTogJ2Jyb3dzZXInLFxuICAgIHNjcm9sbFRvVG9wOiB0cnVlLFxuICAgIHN0YXRlOiBudWxsLFxuICAgIHN0b3JhZ2U6IG51bGwsXG4gICAgc3RvcmFnZVdhaXQ6IDMwMCxcbiAgICBzdG9yZXM6IFtdLFxuICAgIHRpdGxlOiAnQXJraGFtSlMnXG4gIH07XG4gIHByaXZhdGUgbWlkZGxld2FyZTogYW55ID0ge307XG4gIHByaXZhdGUgb3B0aW9uczogRmx1eE9wdGlvbnMgPSB0aGlzLmRlZmF1bHRPcHRpb25zO1xuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEZsdXguICBOb3RlIHRoYXQgdGhlIEZsdXggb2JqZWN0XG4gICAqIGlzIGEgU2luZ2xldG9uIHBhdHRlcm4sIHNvIG9ubHkgb25lIHNob3VsZCBldmVyIGV4aXN0LlxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHRoaXMge0ZsdXhGcmFtZXdvcmt9XG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgLy8gTWV0aG9kc1xuICAgIHRoaXMuYWRkTWlkZGxld2FyZSA9IHRoaXMuYWRkTWlkZGxld2FyZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuYWRkU3RvcmVzID0gdGhpcy5hZGRTdG9yZXMuYmluZCh0aGlzKTtcbiAgICB0aGlzLmNsZWFyQXBwRGF0YSA9IHRoaXMuY2xlYXJBcHBEYXRhLmJpbmQodGhpcyk7XG4gICAgdGhpcy5jbGVhck1pZGRsZXdhcmUgPSB0aGlzLmNsZWFyTWlkZGxld2FyZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZGVyZWdpc3RlciA9IHRoaXMuZGVyZWdpc3Rlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZGlzcGF0Y2ggPSB0aGlzLmRpc3BhdGNoLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRPcHRpb25zID0gdGhpcy5nZXRPcHRpb25zLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRTdGF0ZSA9IHRoaXMuZ2V0U3RhdGUuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFN0b3JlID0gdGhpcy5nZXRTdG9yZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaW5pdCA9IHRoaXMuaW5pdC5iaW5kKHRoaXMpO1xuICAgIHRoaXMub2ZmID0gdGhpcy5vZmYuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlZ2lzdGVyID0gdGhpcy5yZWdpc3Rlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVtb3ZlTWlkZGxld2FyZSA9IHRoaXMucmVtb3ZlTWlkZGxld2FyZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVtb3ZlU3RvcmVzID0gdGhpcy5yZW1vdmVTdG9yZXMuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlc2V0ID0gdGhpcy5yZXNldC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0U3RhdGUgPSB0aGlzLnNldFN0YXRlLmJpbmQodGhpcyk7XG5cbiAgICAvLyBBZGQgbWlkZGxld2FyZSBwbHVnaW4gdHlwZXNcbiAgICB0aGlzLnBsdWdpblR5cGVzLmZvckVhY2goKHR5cGU6IHN0cmluZykgPT4gdGhpcy5taWRkbGV3YXJlW2Ake3R5cGV9TGlzdGBdID0gW10pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBtaWRkbGV3YXJlIHRvIGZyYW1ld29yay5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gbWlkZGxld2FyZSBBbiBhcnJheSBvZiBtaWRkbGV3YXJlIHRvIGFkZCB0byB0aGUgZnJhbWV3b3JrLlxuICAgKi9cbiAgYWRkTWlkZGxld2FyZShtaWRkbGV3YXJlOiBGbHV4TWlkZGxld2FyZVR5cGVbXSk6IHZvaWQge1xuICAgIG1pZGRsZXdhcmUuZm9yRWFjaCgobWlkZGxlT2JqOiBGbHV4TWlkZGxld2FyZVR5cGUpID0+IHtcbiAgICAgIC8vIE1ha2Ugc3VyZSBtaWRkbGV3YXJlIGlzIGVpdGhlciBhIGNsYXNzIG9yIG9iamVjdC5cbiAgICAgIGlmKCEhbWlkZGxlT2JqICYmICgodHlwZW9mIG1pZGRsZU9iaiA9PT0gJ2Z1bmN0aW9uJykgfHwgKHR5cGVvZiBtaWRkbGVPYmogPT09ICdvYmplY3QnKSkpIHtcbiAgICAgICAgY29uc3QgbWlkZGxlTmFtZTogc3RyaW5nID0gbWlkZGxlT2JqLm5hbWUgfHwgJyc7XG5cbiAgICAgICAgaWYoIW1pZGRsZU5hbWUpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBtaWRkbGV3YXJlIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5LiBSZXF1aXJlcyBuYW1lIHByb3BlcnR5LiBDYW5ub3QgYWRkIHRvIEZsdXguJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTb3J0IG1pZGRsZXdhcmUgcGx1Z2lucyBmb3IgZWZmaWNpZW5jeVxuICAgICAgICB0aGlzLnBsdWdpblR5cGVzLmZvckVhY2goKHR5cGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IG1pZGRsZU9ialt0eXBlXTtcbiAgICAgICAgICBjb25zdCBwbHVnaW46IEZsdXhQbHVnaW5UeXBlID0ge21ldGhvZCwgbmFtZTogbWlkZGxlTmFtZX07XG4gICAgICAgICAgdGhpcy5taWRkbGV3YXJlW2Ake3R5cGV9TGlzdGBdID0gdGhpcy5hZGRQbHVnaW4odHlwZSwgcGx1Z2luKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBtaWRkbGV3YXJlIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5LiBDYW5ub3QgYWRkIHRvIEZsdXguJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFsbCBhcHAgZGF0YSBmcm9tIHN0b3JhZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIGFwcCBkYXRhIHdhcyBzdWNjZXNzZnVsbHkgcmVtb3ZlZC5cbiAgICovXG4gIGNsZWFyQXBwRGF0YSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBTZXQgYWxsIHN0b3JlIGRhdGEgdG8gaW5pdGlhbCBzdGF0ZVxuICAgIE9iamVjdFxuICAgICAgLmtleXModGhpcy5zdG9yZUFjdGlvbnMpXG4gICAgICAuZm9yRWFjaCgoc3RvcmVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcmVGbiA9IHRoaXMuc3RvcmVBY3Rpb25zW3N0b3JlTmFtZV07XG4gICAgICAgIHRoaXMuc3RhdGVbc3RvcmVGbi5uYW1lXSA9IGNsb25lRGVlcChzdG9yZUZuLmluaXRpYWxTdGF0ZSk7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHtuYW1lLCBzdG9yYWdlfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmKHN0b3JhZ2U/LnNldFN0b3JhZ2VEYXRhKSB7XG4gICAgICByZXR1cm4gc3RvcmFnZS5zZXRTdG9yYWdlRGF0YShuYW1lLCB0aGlzLnN0YXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgbWlkZGxld2FyZS5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgbWlkZGxld2FyZSB3YXMgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuXG4gICAqL1xuICBjbGVhck1pZGRsZXdhcmUoKTogYm9vbGVhbiB7XG4gICAgLy8gU2V0IGFsbCBzdG9yZSBkYXRhIHRvIGluaXRpYWwgc3RhdGVcbiAgICBPYmplY3RcbiAgICAgIC5rZXlzKHRoaXMubWlkZGxld2FyZSlcbiAgICAgIC5mb3JFYWNoKChwbHVnaW5UeXBlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5taWRkbGV3YXJlW3BsdWdpblR5cGVdID0gW107XG4gICAgICB9KTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlLXJlZ2lzdGVycyBuYW1lZCBzdG9yZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXl9IHN0b3JlTmFtZXMgQW4gYXJyYXkgb2Ygc3RvcmUgbmFtZXMgdG8gcmVtb3ZlIGZyb20gdGhlIGZyYW1ld29yay5cbiAgICovXG4gIHJlbW92ZVN0b3JlcyhzdG9yZU5hbWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHN0b3JlTmFtZXMuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB0aGlzLmRlcmVnaXN0ZXIobmFtZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgYW4gYWN0aW9uIHRvIGFsbCBzdG9yZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhY3Rpb24gdG8gZGlzcGF0Y2ggdG8gYWxsIHRoZSBzdG9yZXMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2lsZW50IFRvIHNpbGVuY2UgYW55IGV2ZW50cy5cbiAgICogQHJldHVybnMge1Byb21pc2V9IFRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHdoZW4gYW5kIGlmIHRoZSBhcHAgc2F2ZXMgZGF0YSB0byBzdG9yYWdlLCByZXR1cm5pbmdcbiAgICogdGhlIGFjdGlvbi5cbiAgICovXG4gIGFzeW5jIGRpc3BhdGNoKGFjdGlvbjogRmx1eEFjdGlvbiwgc2lsZW50OiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPEZsdXhBY3Rpb24+IHtcbiAgICBpZighYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fya2hhbUpTIEVycm9yOiBGbHV4LmRpc3BhdGNoIHJlcXVpcmVzIGFuIGFjdGlvbi4nKTtcbiAgICB9XG5cbiAgICBsZXQgY2xvbmVkQWN0aW9uOiBGbHV4QWN0aW9uID0gY2xvbmVEZWVwKGFjdGlvbik7XG5cbiAgICAvLyBMb2cgZHVyYXRpb24gb2YgZGlzcGF0Y2hcbiAgICBjb25zdCBzdGFydFRpbWU6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgICAvLyBHZXQgc3RhY2tcbiAgICBsZXQgc3RhY2sgPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGFja1Byb3BlcnR5OiBzdHJpbmcgPSAnc3RhY2tUcmFjZUxpbWl0JztcbiAgICAgIGNvbnN0IHtzdGFja1RyYWNlTGltaXR9OiBhbnkgPSBFcnJvcjtcbiAgICAgIEVycm9yW3N0YWNrUHJvcGVydHldID0gSW5maW5pdHk7XG4gICAgICBzdGFjayA9IEVycm9yU3RhY2tQYXJzZXIucGFyc2UobmV3IEVycm9yKCkpO1xuICAgICAgRXJyb3Jbc3RhY2tQcm9wZXJ0eV0gPSBzdGFja1RyYWNlTGltaXQ7XG4gICAgfSBjYXRjaChlcnJvcikge31cblxuICAgIC8vIEdldCBvcHRpb25zXG4gICAgY29uc3Qgb3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnMpO1xuXG4gICAgLy8gQXBwIGluZm9cbiAgICBjb25zdCBhcHBJbmZvID0ge2R1cmF0aW9uOiAwLCBvcHRpb25zLCBzdGFja307XG5cbiAgICAvLyBBcHBseSBtaWRkbGV3YXJlIGJlZm9yZSB0aGUgYWN0aW9uIGlzIHByb2Nlc3NlZFxuICAgIGNvbnN0IHtwb3N0RGlzcGF0Y2hMaXN0ID0gW10sIHByZURpc3BhdGNoTGlzdCA9IFtdfSA9IHRoaXMubWlkZGxld2FyZTtcblxuICAgIGlmKHByZURpc3BhdGNoTGlzdC5sZW5ndGgpIHtcbiAgICAgIGNsb25lZEFjdGlvbiA9IGF3YWl0IFByb21pc2VcbiAgICAgICAgLmFsbChcbiAgICAgICAgICBwcmVEaXNwYXRjaExpc3QubWFwKChwbHVnaW46IEZsdXhQbHVnaW5UeXBlKSA9PiBwbHVnaW4ubWV0aG9kKFxuICAgICAgICAgICAgY2xvbmVEZWVwKGNsb25lZEFjdGlvbiksIGNsb25lRGVlcCh0aGlzLnN0YXRlKSwgYXBwSW5mbylcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLnRoZW4oXG4gICAgICAgICAgKGFjdGlvbnMpID0+IGFjdGlvbnMucmVkdWNlKCh1cGRhdGVkQWN0aW9uLCBhY3Rpb24pID0+XG4gICAgICAgICAgICBtZXJnZSh1cGRhdGVkQWN0aW9uLCBhY3Rpb24pLCBjbG9uZWRBY3Rpb24pIGFzIEZsdXhBY3Rpb25cbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHt0eXBlLCAuLi5kYXRhfSA9IGNsb25lZEFjdGlvbjtcblxuICAgIC8vIFJlcXVpcmUgYSB0eXBlXG4gICAgaWYoIXR5cGUgfHwgdHlwZSA9PT0gJycpIHtcbiAgICAgIGNvbnNvbGUud2FybignQXJraGFtSlMgV2FybmluZzogRmx1eC5kaXNwYXRjaCBpcyBtaXNzaW5nIGFuIGFjdGlvbiB0eXBlIGZvciB0aGUgcGF5bG9hZDonLCBkYXRhKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY2xvbmVkQWN0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBXaGVuIGFuIGFjdGlvbiBjb21lcyBpbiwgaXQgbXVzdCBiZSBjb21wbGV0ZWx5IGhhbmRsZWQgYnkgYWxsIHN0b3Jlc1xuICAgIE9iamVjdFxuICAgICAgLmtleXModGhpcy5zdG9yZUFjdGlvbnMpXG4gICAgICAuZm9yRWFjaCgoc3RvcmVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcmVGbiA9IHRoaXMuc3RvcmVBY3Rpb25zW3N0b3JlTmFtZV07XG4gICAgICAgIGNvbnN0IHN0YXRlID0gY2xvbmVEZWVwKHRoaXMuc3RhdGVbc3RvcmVOYW1lXSkgfHwgY2xvbmVEZWVwKHN0b3JlRm4uaW5pdGlhbFN0YXRlKSB8fCB7fTtcbiAgICAgICAgdGhpcy5zdGF0ZVtzdG9yZU5hbWVdID0gY2xvbmVEZWVwKHN0b3JlRm4uYWN0aW9uKHR5cGUsIGRhdGEsIHN0YXRlKSkgfHwgc3RhdGU7XG4gICAgICB9KTtcblxuICAgIC8vIFNhdmUgY2FjaGUgaW4gc3RvcmFnZVxuICAgIGNvbnN0IHtzdG9yYWdlfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmKHN0b3JhZ2UgJiYgdGhpcy51cGRhdGVTdG9yYWdlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVN0b3JhZ2UoKTtcbiAgICAgIH0gY2F0Y2goZXJyb3IpIHt9XG4gICAgfVxuXG4gICAgY29uc3QgZW5kVGltZTogbnVtYmVyID0gKyhuZXcgRGF0ZSgpKTtcbiAgICBjb25zdCBkdXJhdGlvbjogbnVtYmVyID0gZW5kVGltZSAtIHN0YXJ0VGltZTtcbiAgICBhcHBJbmZvLmR1cmF0aW9uID0gZHVyYXRpb247XG5cbiAgICBpZihwb3N0RGlzcGF0Y2hMaXN0Lmxlbmd0aCkge1xuICAgICAgY2xvbmVkQWN0aW9uID0gYXdhaXQgUHJvbWlzZVxuICAgICAgICAuYWxsKFxuICAgICAgICAgIHBvc3REaXNwYXRjaExpc3QubWFwKFxuICAgICAgICAgICAgYXN5bmMgKHBsdWdpbjogRmx1eFBsdWdpblR5cGUpID0+IHBsdWdpbi5tZXRob2QoY2xvbmVEZWVwKGNsb25lZEFjdGlvbiksIGNsb25lRGVlcCh0aGlzLnN0YXRlKSwgYXBwSW5mbylcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLnRoZW4oXG4gICAgICAgICAgKGFjdGlvbnMpID0+IGFjdGlvbnMucmVkdWNlKCh1cGRhdGVkQWN0aW9uLCBhY3Rpb24pID0+XG4gICAgICAgICAgICBtZXJnZSh1cGRhdGVkQWN0aW9uLCBhY3Rpb24pLCBjbG9uZWRBY3Rpb24pIGFzIEZsdXhBY3Rpb25cbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmKCFzaWxlbnQpIHtcbiAgICAgIHRoaXMuZW1pdCh0eXBlLCBjbG9uZWRBY3Rpb24pO1xuICAgICAgdGhpcy5lbWl0KCdhcmtoYW1qcycsIHRoaXMuc3RhdGUpO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY2xvbmVkQWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgRmx1eCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Rmx1eE9wdGlvbnN9IHRoZSBGbHV4IG9wdGlvbnMgb2JqZWN0LlxuICAgKi9cbiAgZ2V0T3B0aW9ucygpOiBGbHV4T3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgc3RhdGUgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xhcnJheX0gW25hbWVdIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgdGhlIHN0b3JlIGZvciBhbiBvYmplY3QsIG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiBhbGwgc3RvcmVcbiAgICogICBvYmplY3RzLiBZb3UgY2FuIGFsc28gdXNlIGFuIGFycmF5IHRvIHNwZWNpZnkgYSBwcm9wZXJ0eSBwYXRoIHdpdGhpbiB0aGUgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2FueX0gW2RlZmF1bHRWYWx1ZV0gKG9wdGlvbmFsKSBBIGRlZmF1bHQgdmFsdWUgdG8gcmV0dXJuIGlmIG51bGwuXG4gICAqIEByZXR1cm5zIHthbnl9IHRoZSBzdGF0ZSBvYmplY3Qgb3IgYSBwcm9wZXJ0eSB2YWx1ZSB3aXRoaW4uXG4gICAqL1xuICBnZXRTdGF0ZShwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnLCBkZWZhdWx0VmFsdWU/KTogYW55IHtcbiAgICBsZXQgc3RvcmVWYWx1ZTtcblxuICAgIGlmKCFwYXRoKSB7XG4gICAgICBzdG9yZVZhbHVlID0gdGhpcy5zdGF0ZSB8fCB7fTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RvcmVWYWx1ZSA9IGdldChwYXRoLCB0aGlzLnN0YXRlKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHN0b3JlVmFsdWUgPyBjbG9uZURlZXAoc3RvcmVWYWx1ZSkgOiBzdG9yZVZhbHVlO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc3RvcmUgb2JqZWN0IHJlZ2lzdGVyZWQgd2l0aCBGbHV4LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgc3RvcmUuXG4gICAqIEByZXR1cm5zIHtGbHV4U3RvcmV9IHRoZSBzdG9yZSBvYmplY3QuXG4gICAqL1xuICBnZXRTdG9yZShuYW1lOiBzdHJpbmcgPSAnJyk6IEZsdXhTdG9yZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmVBY3Rpb25zW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgYW5kIHNldCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICovXG4gIGFzeW5jIGluaXQob3B0aW9uczogRmx1eE9wdGlvbnMgPSB7fSwgcmVzZXQ6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8Rmx1eEZyYW1ld29yaz4ge1xuICAgIC8vIFNob3VsZCByZXNldCBwcmV2aW91cyBwYXJhbXNcbiAgICBpZihyZXNldCkge1xuICAgICAgdGhpcy5pc0luaXQgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIFNldCBvcHRpb25zXG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB7Li4ub3B0aW9uc307XG5cbiAgICBpZih0aGlzLmlzSW5pdCkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBuYW1lIGZyb20gb3B0aW9ucyBpZiBhbHJlYWR5IGluaXRpYWxpemVkLCBvdGhlcndpc2UgdGhlIHJvb3QgYXBwIHdpbGwgbm90IGJlIGFibGUgdG8gYWNjZXNzXG4gICAgICAvLyB0aGUgc3RhdGUgdHJlZVxuICAgICAgdXBkYXRlZE9wdGlvbnMubmFtZSA9IHRoaXMub3B0aW9ucy5uYW1lO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucyA9IHsuLi50aGlzLmRlZmF1bHRPcHRpb25zLCAuLi51cGRhdGVkT3B0aW9uc307XG4gICAgY29uc3Qge2RlYnVnLCBtaWRkbGV3YXJlLCBuYW1lLCBzdG9yZXN9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgLy8gVXBkYXRlIGRlZmF1bHQgc3RvcmVcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy51c2VTdG9yYWdlKG5hbWUpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Fya2hhbSBFcnJvcjogVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHVzaW5nIHN0b3JhZ2UuJywgbmFtZSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBpZighIXN0b3JlcyAmJiBzdG9yZXMubGVuZ3RoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkZFN0b3JlcyhzdG9yZXMpO1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdBcmtoYW0gRXJyb3I6IFRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBhZGRpbmcgc3RvcmVzLicsIHN0b3Jlcyk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKCEhbWlkZGxld2FyZSAmJiBtaWRkbGV3YXJlLmxlbmd0aCkge1xuICAgICAgdGhpcy5hZGRNaWRkbGV3YXJlKG1pZGRsZXdhcmUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdpbmRvd1Byb3BlcnR5OiBzdHJpbmcgPSAnYXJraGFtanMnO1xuXG4gICAgaWYoZGVidWcpIHtcbiAgICAgIHdpbmRvd1t3aW5kb3dQcm9wZXJ0eV0gPSB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgd2luZG93W3dpbmRvd1Byb3BlcnR5XTtcbiAgICB9XG5cbiAgICB0aGlzLmlzSW5pdCA9IHRydWU7XG4gICAgdGhpcy5lbWl0KEFya2hhbUNvbnN0YW50cy5JTklUKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gaW5pdGlhbGl6YXRpb24gbGlzdGVuZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtsaXN0ZW5lcl0gVGhlIGNhbGxiYWNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3Vic2NyaWJlZCBldmVudC5cbiAgICovXG4gIG9uSW5pdChsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbihBcmtoYW1Db25zdGFudHMuSU5JVCwgbGlzdGVuZXIpO1xuXG4gICAgaWYodGhpcy5pc0luaXQpIHtcbiAgICAgIGxpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIGxpc3RlbmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBbbGlzdGVuZXJdIFRoZSBjYWxsYmFjayBhc3NvY2lhdGVkIHdpdGggdGhlIHN1YnNjcmliZWQgZXZlbnQuXG4gICAqL1xuICBvZmZJbml0KGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9mZihBcmtoYW1Db25zdGFudHMuSU5JVCwgbGlzdGVuZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gZXZlbnQgbGlzdGVuZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXZlbnRUeXBlXSBFdmVudCB0byB1bnN1YnNjcmliZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2xpc3RlbmVyXSBUaGUgY2FsbGJhY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdWJzY3JpYmVkIGV2ZW50LlxuICAgKi9cbiAgb2ZmKGV2ZW50VHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlTGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lcik7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBldmVudCBsaXN0ZW5lci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtldmVudFR5cGVdIEV2ZW50IHRvIHN1YnNjcmliZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2xpc3RlbmVyXSBUaGUgY2FsbGJhY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdWJzY3JpYmVkIGV2ZW50LlxuICAgKi9cbiAgb24oZXZlbnRUeXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5hZGRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgbmV3IFN0b3Jlcy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gc3RvcmVzIFN0b3JlIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3RbXT59IHRoZSBjbGFzcyBvYmplY3QocykuXG4gICAqL1xuICBhc3luYyBhZGRTdG9yZXMoc3RvcmVzOiBhbnlbXSk6IFByb21pc2U8b2JqZWN0W10+IHtcbiAgICBjb25zdCByZWdpc3RlcmVkU3RvcmVzOiBGbHV4U3RvcmVbXSA9IHN0b3Jlcy5tYXAoKHN0b3JlOiBGbHV4U3RvcmUpID0+IHRoaXMucmVnaXN0ZXIoc3RvcmUpKTtcblxuICAgIC8vIFNhdmUgY2FjaGUgaW4gc2Vzc2lvbiBzdG9yYWdlXG4gICAgY29uc3Qge25hbWUsIHN0b3JhZ2V9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgaWYoc3RvcmFnZT8uc2V0U3RvcmFnZURhdGEpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHN0b3JhZ2Uuc2V0U3RvcmFnZURhdGEobmFtZSwgdGhpcy5zdGF0ZSk7XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBjbGFzc2VzXG4gICAgcmV0dXJuIHJlZ2lzdGVyZWRTdG9yZXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIG1pZGRsZXdhcmUgZnJvbSBmcmFtZXdvcmsuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXl9IHN0cmluZyBtaWRkbGV3YXJlIG5hbWVzIHRvIHJlbW92ZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0W10+fSB0aGUgY2xhc3Mgb2JqZWN0KHMpLlxuICAgKi9cbiAgcmVtb3ZlTWlkZGxld2FyZShuYW1lczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBuYW1lcy5mb3JFYWNoKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIFJlbW92ZSBtaWRkbGV3YXJlIHBsdWdpbnNcbiAgICAgIHRoaXMucGx1Z2luVHlwZXMuZm9yRWFjaCgodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMubWlkZGxld2FyZVtgJHt0eXBlfUxpc3RgXSA9IHRoaXMucmVtb3ZlUGx1Z2luKHR5cGUsIG5hbWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgZnJhbWV3b3JrLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5fSBzdHJpbmcgbWlkZGxld2FyZSBuYW1lcyB0byByZW1vdmUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdFtdPn0gdGhlIGNsYXNzIG9iamVjdChzKS5cbiAgICovXG4gIGFzeW5jIHJlc2V0KGNsZWFyU3RvcmFnZTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7bmFtZSwgc3RvcmFnZX0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAvLyBDbGVhciBwZXJzaXN0ZW50IGNhY2hlXG4gICAgaWYoc3RvcmFnZSAmJiBjbGVhclN0b3JhZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHN0b3JhZ2Uuc2V0U3RvcmFnZURhdGEobmFtZSwge30pO1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGVhciBhbGwgcHJvcGVydGllc1xuICAgIHRoaXMubWlkZGxld2FyZSA9IHt9O1xuICAgIHRoaXMub3B0aW9ucyA9IHsuLi50aGlzLmRlZmF1bHRPcHRpb25zfTtcbiAgICB0aGlzLnN0YXRlID0ge307XG4gICAgdGhpcy5zdG9yZUFjdGlvbnMgPSB7fTtcbiAgICB0aGlzLmlzSW5pdCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGN1cnJlbnQgc3RhdGUgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xhcnJheX0gW25hbWVdIFRoZSBuYW1lIG9mIHRoZSBzdG9yZSB0byBzZXQuIFlvdSBjYW4gYWxzbyB1c2UgYW4gYXJyYXkgdG8gc3BlY2lmeSBhIHByb3BlcnR5IHBhdGhcbiAgICogd2l0aGluIHRoZSBvYmplY3QuXG4gICAqIEBwYXJhbSB7YW55fSBbdmFsdWVdIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAqL1xuICBzZXRTdGF0ZShwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnLCB2YWx1ZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmKCEhcGF0aCkge1xuICAgICAgdGhpcy5zdGF0ZSA9IHNldChwYXRoLCBjbG9uZURlZXAodmFsdWUpLCB0aGlzLnN0YXRlKTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgcGVyc2lzdGVudCBjYWNoZVxuICAgIGNvbnN0IHtzdG9yYWdlfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmKHN0b3JhZ2UgJiYgdGhpcy51cGRhdGVTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVTdG9yYWdlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFBsdWdpbih0eXBlOiBzdHJpbmcsIHBsdWdpbjogRmx1eFBsdWdpblR5cGUpOiBGbHV4UGx1Z2luVHlwZVtdIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5taWRkbGV3YXJlW2Ake3R5cGV9TGlzdGBdIHx8IFtdO1xuICAgIGNvbnN0IHttZXRob2QsIG5hbWV9ID0gcGx1Z2luO1xuXG4gICAgaWYobWV0aG9kICYmIHR5cGVvZiBtZXRob2QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIENoZWNrIGlmIHBsdWdpbiBhbHJlYWR5IGV4aXN0c1xuICAgICAgY29uc3QgZXhpc3RzOiBib29sZWFuID0gISFsaXN0LmZpbHRlcigob2JqOiBGbHV4UGx1Z2luVHlwZSkgPT4gb2JqLm5hbWUgPT09IG5hbWUpLmxlbmd0aDtcblxuICAgICAgLy8gRG8gbm90IGFkZCBkdXBsaWNhdGUgcGx1Z2luc1xuICAgICAgaWYoIWV4aXN0cykge1xuICAgICAgICBsaXN0LnB1c2goe21ldGhvZCwgbmFtZX0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZihtZXRob2QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgRXJyb3IoYCR7cGx1Z2luLm5hbWV9IG1pZGRsZXdhcmUgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkuIE1ldGhvZCBpcyBub3QgYSBmdW5jdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIHByaXZhdGUgZGVyZWdpc3RlcihuYW1lOiBzdHJpbmcgPSAnJyk6IHZvaWQge1xuICAgIGRlbGV0ZSB0aGlzLnN0b3JlQWN0aW9uc1tuYW1lXTtcbiAgICBkZWxldGUgdGhpcy5zdGF0ZVtuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXIoc3RvcmVGbik6IEZsdXhTdG9yZSB7XG4gICAgaWYoIXN0b3JlRm4pIHtcbiAgICAgIHRocm93IEVycm9yKCdTdG9yZSBpcyB1bmRlZmluZWQuIENhbm5vdCByZWdpc3RlciB3aXRoIEZsdXguJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNGbmM6IGJvb2xlYW4gPSB0eXBlb2Ygc3RvcmVGbiA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIGlmKCFpc0ZuYykge1xuICAgICAgdGhyb3cgRXJyb3IoYCR7c3RvcmVGbn0gaXMgbm90IGEgc3RvcmUgZnVuY3Rpb24uIENhbm5vdCByZWdpc3RlciB3aXRoIEZsdXguYCk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHN0b3JlIG9iamVjdFxuICAgIGNvbnN0IHtuYW1lfSA9IHN0b3JlRm47XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlOiBhbnkgPSBzdG9yZUZuKCk7XG4gICAgY29uc3Qgc3RvcmVBY3Rpb24gPSB7XG4gICAgICBhY3Rpb246IHN0b3JlRm4sXG4gICAgICBpbml0aWFsU3RhdGU6IHN0b3JlRm4oKSxcbiAgICAgIG5hbWVcbiAgICB9O1xuXG4gICAgaWYoIWlzRW1wdHkobmFtZSkgJiYgIXRoaXMuc3RvcmVBY3Rpb25zW25hbWVdKSB7XG4gICAgICAvLyBTYXZlIHN0b3JlIG9iamVjdFxuICAgICAgdGhpcy5zdG9yZUFjdGlvbnNbbmFtZV0gPSBzdG9yZUFjdGlvbjtcblxuICAgICAgLy8gR2V0IGRlZmF1bHQgdmFsdWVzXG4gICAgICBpZighdGhpcy5zdGF0ZVtuYW1lXSkge1xuICAgICAgICBpZihpbml0aWFsU3RhdGUpIHtcbiAgICAgICAgICB0aGlzLnN0YXRlW25hbWVdID0gY2xvbmVEZWVwKGluaXRpYWxTdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZVtuYW1lXSA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHN0b3JlIGNsYXNzXG4gICAgcmV0dXJuIHRoaXMuc3RvcmVBY3Rpb25zW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVQbHVnaW4odHlwZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBGbHV4UGx1Z2luVHlwZVtdIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5taWRkbGV3YXJlW2Ake3R5cGV9TGlzdGBdIHx8IFtdO1xuXG4gICAgLy8gcmVtb3ZlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGUgcGx1Z2luXG4gICAgcmV0dXJuIGxpc3QuZmlsdGVyKChvYmo6IEZsdXhQbHVnaW5UeXBlKSA9PiBvYmoubmFtZSAhPT0gbmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0b3JhZ2UgPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuXG4gIHByaXZhdGUgYXN5bmMgdXNlU3RvcmFnZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7c3RvcmFnZSwgc3RhdGUsIHN0b3JhZ2VXYWl0fSA9IHRoaXMub3B0aW9ucztcblxuICAgIC8vIENhY2hlXG4gICAgaWYoc3RvcmFnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlIHx8IGF3YWl0IHN0b3JhZ2UuZ2V0U3RvcmFnZURhdGEobmFtZSkgfHwge307XG4gICAgICAgIHRoaXMudXBkYXRlU3RvcmFnZSA9IGRlYm91bmNlKFxuICAgICAgICAgICgpID0+IHN0b3JhZ2Uuc2V0U3RvcmFnZURhdGEobmFtZSwgdGhpcy5zdGF0ZSksXG4gICAgICAgICAgc3RvcmFnZVdhaXQsXG4gICAgICAgICAge2xlYWRpbmc6IHRydWUsIHRyYWlsaW5nOiB0cnVlfVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBBcmtoYW1KUyBFcnJvcjogVXNpbmcgc3RvcmFnZSwgXCIke25hbWV9XCIuYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXRlID0gc3RhdGUgfHwge307XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNv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SyxhQUFhLElBQUk7QUFBQSxFQUMvQjtBQUFBLEVBRVEsYUFBYSxNQUFjLE1BQWdDO0FBQ2pFLFVBQU0sT0FBTyxLQUFLLFdBQVcsR0FBRyxJQUFJLE1BQU0sS0FBSyxDQUFDO0FBR2hELFdBQU8sS0FBSyxPQUFPLENBQUMsUUFBd0IsSUFBSSxTQUFTLElBQUk7QUFBQSxFQUMvRDtBQUFBLEVBSUEsTUFBYyxXQUFXLE1BQTZCO0FBQ3BELFVBQU0sRUFBQyxTQUFTLE9BQU8sWUFBVyxJQUFJLEtBQUs7QUFHM0MsUUFBRyxTQUFTO0FBQ1YsVUFBSTtBQUNGLGFBQUssUUFBUSxTQUFTLE1BQU0sUUFBUSxlQUFlLElBQUksS0FBSyxDQUFDO0FBQzdELGFBQUssb0JBQWdCLGdCQUFBTztBQUFBLFVBQ25CLE1BQU0sUUFBUSxlQUFlLE1BQU0sS0FBSyxLQUFLO0FBQUEsVUFDN0M7QUFBQSxVQUNBLEVBQUMsU0FBUyxNQUFNLFVBQVUsS0FBSTtBQUFBLFFBQ2hDO0FBQUEsTUFDRixTQUFRLE9BQU87QUFDYixnQkFBUSxNQUFNLG1DQUFtQyxJQUFJLElBQUk7QUFDekQsY0FBTTtBQUFBLE1BQ1I7QUFBQSxJQUNGLE9BQU87QUFDTCxXQUFLLFFBQVEsU0FBUyxDQUFDO0FBQUEsSUFDekI7QUFFQSxXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRU8sTUFBTSxPQUFzQixJQUFJLGNBQWM7IiwKICAibmFtZXMiOiBbImNsb25lRGVlcCIsICJFcnJvclN0YWNrUGFyc2VyIiwgImFjdGlvbiIsICJtZXJnZSIsICJnZXQiLCAic2V0IiwgImlzRW1wdHkiLCAiZGVib3VuY2UiXQp9Cg==
|
@@ -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,47 @@
|
|
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
|
+
static {
|
25
|
+
this.GO_BACK = "ARKHAM_GO_BACK";
|
26
|
+
}
|
27
|
+
static {
|
28
|
+
this.GO_REPLACE = "ARKHAM_GO_REPLACE";
|
29
|
+
}
|
30
|
+
static {
|
31
|
+
this.GOTO = "ARKHAM_GOTO";
|
32
|
+
}
|
33
|
+
static {
|
34
|
+
this.INIT = "ARKHAM_INIT";
|
35
|
+
}
|
36
|
+
static {
|
37
|
+
this.UPDATE_TITLE = "ARKHAM_UPDATE_TITLE";
|
38
|
+
}
|
39
|
+
static {
|
40
|
+
this.UPDATE_VIEW = "ARKHAM_UPDATE_VIEW";
|
41
|
+
}
|
42
|
+
}
|
43
|
+
// Annotate the CommonJS export names for ESM import in node:
|
44
|
+
0 && (module.exports = {
|
45
|
+
ArkhamConstants
|
46
|
+
});
|
47
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbnN0YW50cy9BcmtoYW1Db25zdGFudHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmV4cG9ydCBjbGFzcyBBcmtoYW1Db25zdGFudHMge1xuICBzdGF0aWMgcmVhZG9ubHkgR09fQkFDSzogc3RyaW5nID0gJ0FSS0hBTV9HT19CQUNLJztcbiAgc3RhdGljIHJlYWRvbmx5IEdPX1JFUExBQ0U6IHN0cmluZyA9ICdBUktIQU1fR09fUkVQTEFDRSc7XG4gIHN0YXRpYyByZWFkb25seSBHT1RPOiBzdHJpbmcgPSAnQVJLSEFNX0dPVE8nO1xuICBzdGF0aWMgcmVhZG9ubHkgSU5JVDogc3RyaW5nID0gJ0FSS0hBTV9JTklUJztcbiAgc3RhdGljIHJlYWRvbmx5IFVQREFURV9USVRMRTogc3RyaW5nID0gJ0FSS0hBTV9VUERBVEVfVElUTEUnO1xuICBzdGF0aWMgcmVhZG9ubHkgVVBEQVRFX1ZJRVc6IHN0cmluZyA9ICdBUktIQU1fVVBEQVRFX1ZJRVcnO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS08sTUFBTSxnQkFBZ0I7QUFBQSxFQUMzQjtBQUFBLFNBQWdCLFVBQWtCO0FBQUE7QUFBQSxFQUNsQztBQUFBLFNBQWdCLGFBQXFCO0FBQUE7QUFBQSxFQUNyQztBQUFBLFNBQWdCLE9BQWU7QUFBQTtBQUFBLEVBQy9CO0FBQUEsU0FBZ0IsT0FBZTtBQUFBO0FBQUEsRUFDL0I7QUFBQSxTQUFnQixlQUF1QjtBQUFBO0FBQUEsRUFDdkM7QUFBQSxTQUFnQixjQUFzQjtBQUFBO0FBQ3hDOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
@@ -0,0 +1,36 @@
|
|
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 index_exports = {};
|
20
|
+
__export(index_exports, {
|
21
|
+
ArkhamConstants: () => import_ArkhamConstants.ArkhamConstants,
|
22
|
+
Flux: () => import_Flux.Flux,
|
23
|
+
FluxFramework: () => import_Flux.FluxFramework
|
24
|
+
});
|
25
|
+
module.exports = __toCommonJS(index_exports);
|
26
|
+
var import_ArkhamConstants = require("./constants/ArkhamConstants");
|
27
|
+
var import_Flux = require("./Flux/Flux");
|
28
|
+
__reExport(index_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
|
+
...require("./Flux/Flux.types")
|
35
|
+
});
|
36
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtBcmtoYW1Db25zdGFudHN9IGZyb20gJy4vY29uc3RhbnRzL0Fya2hhbUNvbnN0YW50cyc7XG5pbXBvcnQge0ZsdXgsIEZsdXhGcmFtZXdvcmt9IGZyb20gJy4vRmx1eC9GbHV4JztcblxuZXhwb3J0ICogZnJvbSAnLi9GbHV4L0ZsdXgudHlwZXMnO1xuZXhwb3J0IHtBcmtoYW1Db25zdGFudHMsIEZsdXgsIEZsdXhGcmFtZXdvcmt9O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSw2QkFBOEI7QUFDOUIsa0JBQWtDO0FBRWxDLDBCQUFjLDhCQVBkOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nlabs/arkhamjs",
|
3
|
-
"version": "3.28.
|
3
|
+
"version": "3.28.8",
|
4
4
|
"publishConfig": {
|
5
5
|
"access": "public"
|
6
6
|
},
|
@@ -58,5 +58,13 @@
|
|
58
58
|
"eslint-config-styleguidejs": "^3.2.1",
|
59
59
|
"typescript": "^5.7.3"
|
60
60
|
},
|
61
|
+
"files": [
|
62
|
+
"lib",
|
63
|
+
"index.js",
|
64
|
+
"index.d.ts",
|
65
|
+
"LICENSE",
|
66
|
+
"package.json",
|
67
|
+
"README.md"
|
68
|
+
],
|
61
69
|
"gitHead": "fc371e1e28fe0ae35d40d29a217d5f0e990ec32a"
|
62
70
|
}
|