@launchdarkly/js-client-sdk-common 1.16.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/cjs/LDClientImpl.d.ts +25 -1
- package/dist/cjs/LDClientImpl.d.ts.map +1 -1
- package/dist/cjs/LDEmitter.d.ts +1 -1
- package/dist/cjs/LDEmitter.d.ts.map +1 -1
- package/dist/cjs/api/LDClient.d.ts +33 -0
- package/dist/cjs/api/LDClient.d.ts.map +1 -1
- package/dist/cjs/api/LDOptions.d.ts +7 -0
- package/dist/cjs/api/LDOptions.d.ts.map +1 -1
- package/dist/cjs/api/LDWaitForInitialization.d.ts +50 -0
- package/dist/cjs/api/LDWaitForInitialization.d.ts.map +1 -0
- package/dist/cjs/api/index.d.ts +1 -0
- package/dist/cjs/api/index.d.ts.map +1 -1
- package/dist/cjs/configuration/Configuration.d.ts +1 -0
- package/dist/cjs/configuration/Configuration.d.ts.map +1 -1
- package/dist/cjs/configuration/validators.d.ts.map +1 -1
- package/dist/cjs/flag-manager/FlagManager.d.ts.map +1 -1
- package/dist/cjs/flag-manager/FlagPersistence.d.ts +1 -1
- package/dist/cjs/flag-manager/FlagPersistence.d.ts.map +1 -1
- package/dist/cjs/flag-manager/FlagStore.d.ts +15 -13
- package/dist/cjs/flag-manager/FlagStore.d.ts.map +1 -1
- package/dist/cjs/flag-manager/FlagUpdater.d.ts +33 -6
- package/dist/cjs/flag-manager/FlagUpdater.d.ts.map +1 -1
- package/dist/cjs/index.cjs +183 -92
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/esm/LDClientImpl.d.ts +25 -1
- package/dist/esm/LDClientImpl.d.ts.map +1 -1
- package/dist/esm/LDEmitter.d.ts +1 -1
- package/dist/esm/LDEmitter.d.ts.map +1 -1
- package/dist/esm/api/LDClient.d.ts +33 -0
- package/dist/esm/api/LDClient.d.ts.map +1 -1
- package/dist/esm/api/LDOptions.d.ts +7 -0
- package/dist/esm/api/LDOptions.d.ts.map +1 -1
- package/dist/esm/api/LDWaitForInitialization.d.ts +50 -0
- package/dist/esm/api/LDWaitForInitialization.d.ts.map +1 -0
- package/dist/esm/api/index.d.ts +1 -0
- package/dist/esm/api/index.d.ts.map +1 -1
- package/dist/esm/configuration/Configuration.d.ts +1 -0
- package/dist/esm/configuration/Configuration.d.ts.map +1 -1
- package/dist/esm/configuration/validators.d.ts.map +1 -1
- package/dist/esm/flag-manager/FlagManager.d.ts.map +1 -1
- package/dist/esm/flag-manager/FlagPersistence.d.ts +1 -1
- package/dist/esm/flag-manager/FlagPersistence.d.ts.map +1 -1
- package/dist/esm/flag-manager/FlagStore.d.ts +15 -13
- package/dist/esm/flag-manager/FlagStore.d.ts.map +1 -1
- package/dist/esm/flag-manager/FlagUpdater.d.ts +33 -6
- package/dist/esm/flag-manager/FlagUpdater.d.ts.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.mjs +184 -93
- package/dist/esm/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDWaitForInitialization.d.ts","sourceRoot":"","sources":["../../src/api/LDWaitForInitialization.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,6BAA6B,GACrC,6BAA6B,GAC7B,8BAA8B,GAC9B,+BAA+B,CAAC;AAEpC;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
package/dist/esm/api/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC"}
|
|
@@ -5,6 +5,7 @@ export interface LDClientInternalOptions extends internal.LDInternalOptions {
|
|
|
5
5
|
trackEventModifier?: (event: internal.InputCustomEvent) => internal.InputCustomEvent;
|
|
6
6
|
getImplementationHooks: (environmentMetadata: LDPluginEnvironmentMetadata) => Hook[];
|
|
7
7
|
credentialType: 'clientSideId' | 'mobileKey';
|
|
8
|
+
getLegacyStorageKeys?: () => string[];
|
|
8
9
|
}
|
|
9
10
|
export interface Configuration {
|
|
10
11
|
readonly logger: LDLogger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Configuration.d.ts","sourceRoot":"","sources":["../../src/configuration/Configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,2BAA2B,EAI3B,gBAAgB,EAEjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD,MAAM,WAAW,uBAAwB,SAAQ,QAAQ,CAAC,iBAAiB;IACzE,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,KAAK,QAAQ,CAAC,gBAAgB,CAAC;IACrF,sBAAsB,EAAE,CAAC,mBAAmB,EAAE,2BAA2B,KAAK,IAAI,EAAE,CAAC;IACrF,cAAc,EAAE,cAAc,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"Configuration.d.ts","sourceRoot":"","sources":["../../src/configuration/Configuration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/configuration/validators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAkB,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,SAAS,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/configuration/validators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAkB,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,SAAS,EAAE,aAAa,CAgCtD,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlagManager.d.ts","sourceRoot":"","sources":["../../src/flag-manager/FlagManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAKvF,
|
|
1
|
+
{"version":3,"file":"FlagManager.d.ts","sourceRoot":"","sources":["../../src/flag-manager/FlagManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Context, LDLogger, Platform } from '@launchdarkly/js-sdk-common';
|
|
2
2
|
import FlagStore from './FlagStore';
|
|
3
|
-
import FlagUpdater from './FlagUpdater';
|
|
3
|
+
import { FlagUpdater } from './FlagUpdater';
|
|
4
4
|
import { ItemDescriptor } from './ItemDescriptor';
|
|
5
5
|
/**
|
|
6
6
|
* This class handles persisting and loading flag values from a persistent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlagPersistence.d.ts","sourceRoot":"","sources":["../../src/flag-manager/FlagPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAK1E,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,WAAW,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"FlagPersistence.d.ts","sourceRoot":"","sources":["../../src/flag-manager/FlagPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAK1E,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAMhC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAX/B,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAkB;gBAGvB,SAAS,EAAE,QAAQ,EACnB,qBAAqB,EAAE,MAAM,EAC7B,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,SAAS,EACrB,YAAY,EAAE,WAAW,EACzB,OAAO,EAAE,QAAQ,EACjB,YAAY,GAAE,MAAM,MAAyB;IAKhE;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxF;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnF;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YA4CtC,UAAU;YAqBV,WAAW;CA4B1B"}
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
import { ItemDescriptor } from './ItemDescriptor';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* FlagStore used to store flag data in memory.
|
|
4
4
|
*/
|
|
5
5
|
export default interface FlagStore {
|
|
6
|
+
/**
|
|
7
|
+
* Initializes the flag store with the given flags.
|
|
8
|
+
*/
|
|
6
9
|
init(newFlags: {
|
|
7
10
|
[key: string]: ItemDescriptor;
|
|
8
11
|
}): void;
|
|
12
|
+
/**
|
|
13
|
+
* Inserts or updates the flag with the given key and update.
|
|
14
|
+
*/
|
|
9
15
|
insertOrUpdate(key: string, update: ItemDescriptor): void;
|
|
16
|
+
/**
|
|
17
|
+
* Gets the flag with the given key.
|
|
18
|
+
*/
|
|
10
19
|
get(key: string): ItemDescriptor | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Gets all the flags in the flag store.
|
|
22
|
+
*/
|
|
11
23
|
getAll(): {
|
|
12
24
|
[key: string]: ItemDescriptor;
|
|
13
25
|
};
|
|
14
26
|
}
|
|
15
27
|
/**
|
|
16
|
-
*
|
|
28
|
+
* Creates the default implementation of the flag store.
|
|
17
29
|
*/
|
|
18
|
-
export declare
|
|
19
|
-
private _flags;
|
|
20
|
-
init(newFlags: {
|
|
21
|
-
[key: string]: ItemDescriptor;
|
|
22
|
-
}): void;
|
|
23
|
-
insertOrUpdate(key: string, update: ItemDescriptor): void;
|
|
24
|
-
get(key: string): ItemDescriptor | undefined;
|
|
25
|
-
getAll(): {
|
|
26
|
-
[key: string]: ItemDescriptor;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
30
|
+
export declare function createDefaultFlagStore(): FlagStore;
|
|
29
31
|
//# sourceMappingURL=FlagStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlagStore.d.ts","sourceRoot":"","sources":["../../src/flag-manager/FlagStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,SAAS;IAChC,IAAI,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,GAAG,IAAI,CAAC;IACxD,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC1D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAC7C,MAAM,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAC;CAC7C;AAED;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"FlagStore.d.ts","sourceRoot":"","sources":["../../src/flag-manager/FlagStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,SAAS;IAChC;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,GAAG,IAAI,CAAC;IACxD;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC1D;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAC7C;;OAEG;IACH,MAAM,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,SAAS,CAyBlD"}
|
|
@@ -21,21 +21,48 @@ export type FlagsChangeCallback = (context: Context, flagKeys: Array<string>, ty
|
|
|
21
21
|
* It handles versions checking to handle out of order flag updates and
|
|
22
22
|
* also handles flag comparisons for change notification.
|
|
23
23
|
*/
|
|
24
|
-
export
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
export interface FlagUpdater {
|
|
25
|
+
/**
|
|
26
|
+
* Handles the flag changes by calling the change callbacks.
|
|
27
|
+
*
|
|
28
|
+
* @param keys keys of the flags that changed
|
|
29
|
+
* @param type type of change that occurred see {@link FlagChangeType}
|
|
30
|
+
*/
|
|
30
31
|
handleFlagChanges(keys: string[], type: FlagChangeType): void;
|
|
32
|
+
/**
|
|
33
|
+
* Initializes the flag updater with the given context and flags.
|
|
34
|
+
* This will be called every time a new context is identified.
|
|
35
|
+
*
|
|
36
|
+
* @param context the context to initialize the flag updater with
|
|
37
|
+
* @param newFlags the flags to initialize the flag updater with
|
|
38
|
+
*/
|
|
31
39
|
init(context: Context, newFlags: {
|
|
32
40
|
[key: string]: ItemDescriptor;
|
|
33
41
|
}): void;
|
|
34
42
|
initCached(context: Context, newFlags: {
|
|
35
43
|
[key: string]: ItemDescriptor;
|
|
36
44
|
}): void;
|
|
45
|
+
/**
|
|
46
|
+
* Upserts the flag with the given key and item.
|
|
47
|
+
*
|
|
48
|
+
* @param context the context to upsert the flag with
|
|
49
|
+
* @param key the key of the flag to upsert
|
|
50
|
+
* @param item the item to upsert the flag with
|
|
51
|
+
* @returns true if the flag was upserted, false otherwise
|
|
52
|
+
*/
|
|
37
53
|
upsert(context: Context, key: string, item: ItemDescriptor): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Registers a callback to be called when the flags change.
|
|
56
|
+
*
|
|
57
|
+
* @param callback the callback to register
|
|
58
|
+
*/
|
|
38
59
|
on(callback: FlagsChangeCallback): void;
|
|
60
|
+
/**
|
|
61
|
+
* Unregisters a callback to be called when the flags change.
|
|
62
|
+
*
|
|
63
|
+
* @param callback the callback to unregister
|
|
64
|
+
*/
|
|
39
65
|
off(callback: FlagsChangeCallback): void;
|
|
40
66
|
}
|
|
67
|
+
export default function createFlagUpdater(_flagStore: FlagStore, _logger: LDLogger): FlagUpdater;
|
|
41
68
|
//# sourceMappingURL=FlagUpdater.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlagUpdater.d.ts","sourceRoot":"","sources":["../../src/flag-manager/FlagUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EACvB,IAAI,EAAE,cAAc,KACjB,IAAI,CAAC;AAEV;;;;GAIG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"FlagUpdater.d.ts","sourceRoot":"","sources":["../../src/flag-manager/FlagUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EACvB,IAAI,EAAE,cAAc,KACjB,IAAI,CAAC;AAEV;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAE9D;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,GAAG,IAAI,CAAC;IAE1E,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,GAAG,IAAI,CAAC;IAEhF;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC;IAErE;;;;OAIG;IACH,EAAE,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAExC;;;;OAIG;IACH,GAAG,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,GAAG,WAAW,CAoE/F"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import LDClientImpl from './LDClientImpl';
|
|
|
6
6
|
import LDEmitter, { EventName } from './LDEmitter';
|
|
7
7
|
export * from '@launchdarkly/js-sdk-common';
|
|
8
8
|
export * as platform from '@launchdarkly/js-sdk-common';
|
|
9
|
-
export type { LDEvaluationDetail, LDEvaluationDetailTyped, LDClient, LDOptions, ConnectionMode, LDIdentifyOptions, Hook, HookMetadata, EvaluationSeriesContext, EvaluationSeriesData, IdentifySeriesContext, IdentifySeriesData, IdentifySeriesResult, IdentifySeriesStatus, TrackSeriesContext, LDInspection, LDIdentifyResult, LDIdentifySuccess, LDIdentifyError, LDIdentifyTimeout, LDIdentifyShed, LDClientIdentifyResult, LDPluginBase, } from './api';
|
|
9
|
+
export type { LDEvaluationDetail, LDEvaluationDetailTyped, LDClient, LDOptions, ConnectionMode, LDIdentifyOptions, Hook, HookMetadata, EvaluationSeriesContext, EvaluationSeriesData, IdentifySeriesContext, IdentifySeriesData, IdentifySeriesResult, IdentifySeriesStatus, TrackSeriesContext, LDInspection, LDIdentifyResult, LDIdentifySuccess, LDIdentifyError, LDIdentifyTimeout, LDIdentifyShed, LDClientIdentifyResult, LDPluginBase, LDWaitForInitializationOptions, LDWaitForInitializationResult, LDWaitForInitializationComplete, LDWaitForInitializationFailed, LDWaitForInitializationTimeout, } from './api';
|
|
10
10
|
export type { DataManager, DataManagerFactory, ConnectionParams } from './DataManager';
|
|
11
11
|
export type { FlagManager, LDDebugOverride } from './flag-manager/FlagManager';
|
|
12
12
|
export { safeRegisterDebugOverridePlugins } from './plugins/safeRegisterDebugOverridePlugins';
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,gBAAgB,EAAE,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,yBAAyB,MAAM,wCAAwC,CAAC;AAC/E,OAAO,SAAS,EAAE,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnD,cAAc,6BAA6B,CAAC;AAE5C,OAAO,KAAK,QAAQ,MAAM,6BAA6B,CAAC;AAMxD,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,IAAI,EACJ,YAAY,EACZ,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,gBAAgB,EAAE,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,yBAAyB,MAAM,wCAAwC,CAAC;AAC/E,OAAO,SAAS,EAAE,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnD,cAAc,6BAA6B,CAAC;AAE5C,OAAO,KAAK,QAAQ,MAAM,6BAA6B,CAAC;AAMxD,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,IAAI,EACJ,YAAY,EACZ,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,8BAA8B,EAC9B,6BAA6B,EAC7B,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,OAAO,CAAC;AAEf,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvF,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC9F,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,YAAY,EAAE,SAAS,EAAE,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AAEpC,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,SAAS,IAAI,kBAAkB,GAChC,CAAC"}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getPollingUri, TypeValidators, createSafeLogger, ServiceEndpoints, ApplicationTags, OptionMessages, NumberWithMinimum, SafeLogger, internal, deepCompact, clone, secondsToMillis, ClientContext, fastDeepEqual, defaultHeaders, Context, LDTimeoutError, AutoEnvAttributes, LDClientError, isHttpRecoverable, httpErrorMessage, LDPollingError, DataSourceErrorKind, getStreamingUri, shouldRetry, LDStreamingError } from '@launchdarkly/js-sdk-common';
|
|
1
|
+
import { getPollingUri, TypeValidators, createSafeLogger, ServiceEndpoints, ApplicationTags, OptionMessages, NumberWithMinimum, SafeLogger, internal, deepCompact, clone, secondsToMillis, ClientContext, fastDeepEqual, defaultHeaders, Context, LDTimeoutError, AutoEnvAttributes, cancelableTimedPromise, LDClientError, isHttpRecoverable, httpErrorMessage, LDPollingError, DataSourceErrorKind, getStreamingUri, shouldRetry, LDStreamingError } from '@launchdarkly/js-sdk-common';
|
|
2
2
|
export * from '@launchdarkly/js-sdk-common';
|
|
3
3
|
import * as jsSdkCommon from '@launchdarkly/js-sdk-common';
|
|
4
4
|
export { jsSdkCommon as platform };
|
|
@@ -242,6 +242,7 @@ const validators = {
|
|
|
242
242
|
payloadFilterKey: TypeValidators.stringMatchingRegex(/^[a-zA-Z0-9](\w|\.|-)*$/),
|
|
243
243
|
hooks: TypeValidators.createTypeArray('Hook[]', {}),
|
|
244
244
|
inspectors: TypeValidators.createTypeArray('LDInspection', {}),
|
|
245
|
+
cleanOldPersistentData: TypeValidators.Boolean,
|
|
245
246
|
};
|
|
246
247
|
|
|
247
248
|
const DEFAULT_POLLING_INTERVAL = 60 * 5;
|
|
@@ -845,30 +846,30 @@ class FlagPersistence {
|
|
|
845
846
|
}
|
|
846
847
|
|
|
847
848
|
/**
|
|
848
|
-
*
|
|
849
|
+
* Creates the default implementation of the flag store.
|
|
849
850
|
*/
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
},
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
}
|
|
851
|
+
function createDefaultFlagStore() {
|
|
852
|
+
let flags = {};
|
|
853
|
+
return {
|
|
854
|
+
init(newFlags) {
|
|
855
|
+
flags = Object.entries(newFlags).reduce((acc, [key, flag]) => {
|
|
856
|
+
acc[key] = flag;
|
|
857
|
+
return acc;
|
|
858
|
+
}, {});
|
|
859
|
+
},
|
|
860
|
+
insertOrUpdate(key, update) {
|
|
861
|
+
flags[key] = update;
|
|
862
|
+
},
|
|
863
|
+
get(key) {
|
|
864
|
+
if (Object.prototype.hasOwnProperty.call(flags, key)) {
|
|
865
|
+
return flags[key];
|
|
866
|
+
}
|
|
867
|
+
return undefined;
|
|
868
|
+
},
|
|
869
|
+
getAll() {
|
|
870
|
+
return flags;
|
|
871
|
+
},
|
|
872
|
+
};
|
|
872
873
|
}
|
|
873
874
|
|
|
874
875
|
function calculateChangedKeys(existingObject, newObject) {
|
|
@@ -889,70 +890,66 @@ function calculateChangedKeys(existingObject, newObject) {
|
|
|
889
890
|
return changedKeys;
|
|
890
891
|
}
|
|
891
892
|
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
if (index > -1) {
|
|
953
|
-
this._changeCallbacks.splice(index, 1);
|
|
954
|
-
}
|
|
955
|
-
}
|
|
893
|
+
function createFlagUpdater(_flagStore, _logger) {
|
|
894
|
+
const flagStore = _flagStore;
|
|
895
|
+
const logger = _logger;
|
|
896
|
+
let activeContext;
|
|
897
|
+
const changeCallbacks = new Array();
|
|
898
|
+
return {
|
|
899
|
+
handleFlagChanges(keys, type) {
|
|
900
|
+
if (activeContext) {
|
|
901
|
+
changeCallbacks.forEach((callback) => {
|
|
902
|
+
try {
|
|
903
|
+
callback(activeContext, keys, type);
|
|
904
|
+
}
|
|
905
|
+
catch (err) {
|
|
906
|
+
/* intentionally empty */
|
|
907
|
+
}
|
|
908
|
+
});
|
|
909
|
+
}
|
|
910
|
+
else {
|
|
911
|
+
logger.warn('Received a change event without an active context. Changes will not be propagated.');
|
|
912
|
+
}
|
|
913
|
+
},
|
|
914
|
+
init(context, newFlags) {
|
|
915
|
+
activeContext = context;
|
|
916
|
+
const oldFlags = flagStore.getAll();
|
|
917
|
+
flagStore.init(newFlags);
|
|
918
|
+
const changed = calculateChangedKeys(oldFlags, newFlags);
|
|
919
|
+
if (changed.length > 0) {
|
|
920
|
+
this.handleFlagChanges(changed, 'init');
|
|
921
|
+
}
|
|
922
|
+
},
|
|
923
|
+
initCached(context, newFlags) {
|
|
924
|
+
if (activeContext?.canonicalKey === context.canonicalKey) {
|
|
925
|
+
return;
|
|
926
|
+
}
|
|
927
|
+
this.init(context, newFlags);
|
|
928
|
+
},
|
|
929
|
+
upsert(context, key, item) {
|
|
930
|
+
if (activeContext?.canonicalKey !== context.canonicalKey) {
|
|
931
|
+
logger.warn('Received an update for an inactive context.');
|
|
932
|
+
return false;
|
|
933
|
+
}
|
|
934
|
+
const currentValue = flagStore.get(key);
|
|
935
|
+
if (currentValue !== undefined && currentValue.version >= item.version) {
|
|
936
|
+
// this is an out of order update that can be ignored
|
|
937
|
+
return false;
|
|
938
|
+
}
|
|
939
|
+
flagStore.insertOrUpdate(key, item);
|
|
940
|
+
this.handleFlagChanges([key], 'patch');
|
|
941
|
+
return true;
|
|
942
|
+
},
|
|
943
|
+
on(callback) {
|
|
944
|
+
changeCallbacks.push(callback);
|
|
945
|
+
},
|
|
946
|
+
off(callback) {
|
|
947
|
+
const index = changeCallbacks.indexOf(callback);
|
|
948
|
+
if (index > -1) {
|
|
949
|
+
changeCallbacks.splice(index, 1);
|
|
950
|
+
}
|
|
951
|
+
},
|
|
952
|
+
};
|
|
956
953
|
}
|
|
957
954
|
|
|
958
955
|
class DefaultFlagManager {
|
|
@@ -964,8 +961,8 @@ class DefaultFlagManager {
|
|
|
964
961
|
* @param timeStamper exists for testing purposes
|
|
965
962
|
*/
|
|
966
963
|
constructor(platform, sdkKey, maxCachedContexts, logger, timeStamper = () => Date.now()) {
|
|
967
|
-
this._flagStore =
|
|
968
|
-
this._flagUpdater =
|
|
964
|
+
this._flagStore = createDefaultFlagStore();
|
|
965
|
+
this._flagUpdater = createFlagUpdater(this._flagStore, logger);
|
|
969
966
|
this._flagPersistencePromise = this._initPersistence(platform, sdkKey, maxCachedContexts, logger, timeStamper);
|
|
970
967
|
}
|
|
971
968
|
async _initPersistence(platform, sdkKey, maxCachedContexts, logger, timeStamper = () => Date.now()) {
|
|
@@ -1468,6 +1465,24 @@ class LDClientImpl {
|
|
|
1468
1465
|
if (this._inspectorManager.hasInspectors()) {
|
|
1469
1466
|
this._hookRunner.addHook(getInspectorHook(this._inspectorManager));
|
|
1470
1467
|
}
|
|
1468
|
+
if (options.cleanOldPersistentData &&
|
|
1469
|
+
internalOptions?.getLegacyStorageKeys &&
|
|
1470
|
+
this.platform.storage) {
|
|
1471
|
+
// NOTE: we are letting this fail silently because it's not critical and we don't want to block the client from initializing.
|
|
1472
|
+
try {
|
|
1473
|
+
this.logger.debug('Cleaning old persistent data.');
|
|
1474
|
+
Promise.all(internalOptions.getLegacyStorageKeys().map((key) => this.platform.storage?.clear(key)))
|
|
1475
|
+
.catch((error) => {
|
|
1476
|
+
this.logger.error(`Error cleaning old persistent data: ${error}`);
|
|
1477
|
+
})
|
|
1478
|
+
.finally(() => {
|
|
1479
|
+
this.logger.debug('Cleaned old persistent data.');
|
|
1480
|
+
});
|
|
1481
|
+
}
|
|
1482
|
+
catch (error) {
|
|
1483
|
+
this.logger.error(`Error cleaning old persistent data: ${error}`);
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1471
1486
|
}
|
|
1472
1487
|
allFlags() {
|
|
1473
1488
|
// extracting all flag values
|
|
@@ -1612,13 +1627,18 @@ class LDClientImpl {
|
|
|
1612
1627
|
}, identifyOptions?.sheddable ?? false)
|
|
1613
1628
|
.then((res) => {
|
|
1614
1629
|
if (res.status === 'error') {
|
|
1615
|
-
|
|
1630
|
+
const errorResult = { status: 'error', error: res.error };
|
|
1631
|
+
// Track initialization state for waitForInitialization
|
|
1632
|
+
this.maybeSetInitializationResult({ status: 'failed', error: res.error });
|
|
1633
|
+
return errorResult;
|
|
1616
1634
|
}
|
|
1617
1635
|
if (res.status === 'shed') {
|
|
1618
1636
|
return { status: 'shed' };
|
|
1619
1637
|
}
|
|
1620
|
-
|
|
1621
|
-
|
|
1638
|
+
const successResult = { status: 'completed' };
|
|
1639
|
+
// Track initialization state for waitForInitialization
|
|
1640
|
+
this.maybeSetInitializationResult({ status: 'complete' });
|
|
1641
|
+
return successResult;
|
|
1622
1642
|
});
|
|
1623
1643
|
if (noTimeout) {
|
|
1624
1644
|
return callSitePromise;
|
|
@@ -1630,6 +1650,74 @@ class LDClientImpl {
|
|
|
1630
1650
|
});
|
|
1631
1651
|
return Promise.race([callSitePromise, timeoutPromise]);
|
|
1632
1652
|
}
|
|
1653
|
+
/**
|
|
1654
|
+
* Sets the initialization result and resolves any pending waitForInitialization promises.
|
|
1655
|
+
* This method is idempotent and will only be set by the initialization flow. Subsequent calls
|
|
1656
|
+
* should not do anything.
|
|
1657
|
+
* @param result The initialization result.
|
|
1658
|
+
*/
|
|
1659
|
+
maybeSetInitializationResult(result) {
|
|
1660
|
+
if (this.initializeResult === undefined) {
|
|
1661
|
+
this.initializeResult = result;
|
|
1662
|
+
this.emitter.emit('ready');
|
|
1663
|
+
if (result.status === 'complete') {
|
|
1664
|
+
this.emitter.emit('initialized');
|
|
1665
|
+
}
|
|
1666
|
+
if (this.initResolve) {
|
|
1667
|
+
this.initResolve(result);
|
|
1668
|
+
this.initResolve = undefined;
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1672
|
+
waitForInitialization(options) {
|
|
1673
|
+
const timeout = options?.timeout ?? 5;
|
|
1674
|
+
// If initialization has already completed (successfully or failed), return the result immediately.
|
|
1675
|
+
if (this.initializeResult) {
|
|
1676
|
+
return Promise.resolve(this.initializeResult);
|
|
1677
|
+
}
|
|
1678
|
+
// If waitForInitialization was previously called, then return the promise with a timeout.
|
|
1679
|
+
// This condition should only be triggered if waitForInitialization was called multiple times.
|
|
1680
|
+
if (this.initializedPromise) {
|
|
1681
|
+
return this.promiseWithTimeout(this.initializedPromise, timeout);
|
|
1682
|
+
}
|
|
1683
|
+
// Create a new promise for tracking initialization
|
|
1684
|
+
if (!this.initializedPromise) {
|
|
1685
|
+
this.initializedPromise = new Promise((resolve) => {
|
|
1686
|
+
this.initResolve = resolve;
|
|
1687
|
+
});
|
|
1688
|
+
}
|
|
1689
|
+
return this.promiseWithTimeout(this.initializedPromise, timeout);
|
|
1690
|
+
}
|
|
1691
|
+
/**
|
|
1692
|
+
* Apply a timeout promise to a base promise. This is for use with waitForInitialization.
|
|
1693
|
+
*
|
|
1694
|
+
* @param basePromise The promise to race against a timeout.
|
|
1695
|
+
* @param timeout The timeout in seconds.
|
|
1696
|
+
* @returns A promise that resolves to the initialization result or timeout.
|
|
1697
|
+
*
|
|
1698
|
+
* @privateRemarks
|
|
1699
|
+
* This method is protected because it is used by the browser SDK's `start` method.
|
|
1700
|
+
* Eventually, the start method will be moved to this common implementation and this method will
|
|
1701
|
+
* be made private.
|
|
1702
|
+
*/
|
|
1703
|
+
promiseWithTimeout(basePromise, timeout) {
|
|
1704
|
+
const cancelableTimeout = cancelableTimedPromise(timeout, 'waitForInitialization');
|
|
1705
|
+
return Promise.race([
|
|
1706
|
+
basePromise.then((res) => {
|
|
1707
|
+
cancelableTimeout.cancel();
|
|
1708
|
+
return res;
|
|
1709
|
+
}),
|
|
1710
|
+
cancelableTimeout.promise
|
|
1711
|
+
// If the promise resolves without error, then the initialization completed successfully.
|
|
1712
|
+
// NOTE: this should never return as the resolution would only be triggered by the basePromise
|
|
1713
|
+
// being resolved.
|
|
1714
|
+
.then(() => ({ status: 'complete' }))
|
|
1715
|
+
.catch(() => ({ status: 'timeout' })),
|
|
1716
|
+
]).catch((reason) => {
|
|
1717
|
+
this.logger?.error(reason.message);
|
|
1718
|
+
return { status: 'failed', error: reason };
|
|
1719
|
+
});
|
|
1720
|
+
}
|
|
1633
1721
|
on(eventName, listener) {
|
|
1634
1722
|
this.emitter.on(eventName, listener);
|
|
1635
1723
|
}
|
|
@@ -1815,6 +1903,9 @@ class LDClientImpl {
|
|
|
1815
1903
|
};
|
|
1816
1904
|
}
|
|
1817
1905
|
});
|
|
1906
|
+
// NOTE: we are not tracking "override" changes because, at the time of writing,
|
|
1907
|
+
// these changes are only used for debugging purposes and are not persisted. This
|
|
1908
|
+
// may change in the future.
|
|
1818
1909
|
if (type === 'init') {
|
|
1819
1910
|
this._inspectorManager.onFlagsChanged(details);
|
|
1820
1911
|
}
|