bernie-core 3.767.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.

Potentially problematic release.


This version of bernie-core might be problematic. Click here for more details.

Files changed (46) hide show
  1. package/dist/code-split.js +172 -0
  2. package/dist/components/get-providers.js +17 -0
  3. package/dist/components/index.js +14 -0
  4. package/dist/controller/get-controllers.js +25 -0
  5. package/dist/controller/index.js +18 -0
  6. package/dist/controller/match-route.js +34 -0
  7. package/dist/controller/result.js +21 -0
  8. package/dist/index.js +22 -0
  9. package/dist/logger/bernie-core-events.js +14 -0
  10. package/dist/logger/index.js +18 -0
  11. package/dist/logger/logger-provider.js +45 -0
  12. package/dist/logger/logger.js +44 -0
  13. package/dist/routing/close-dialog.js +19 -0
  14. package/dist/routing/dialog-route.js +69 -0
  15. package/dist/routing/index.js +24 -0
  16. package/dist/routing/matches-query.js +47 -0
  17. package/dist/routing/merge-query-string.js +29 -0
  18. package/dist/routing/query-route.js +90 -0
  19. package/dist/routing/query-switch.js +75 -0
  20. package/dist/routing/update-search.js +19 -0
  21. package/dist/source/bff-source.js +33 -0
  22. package/dist/source/index.js +16 -0
  23. package/dist/source/options/index.js +3 -0
  24. package/dist/source/spi/index.js +3 -0
  25. package/dist/store/common/analytics-store.js +250 -0
  26. package/dist/store/common/context-store.js +140 -0
  27. package/dist/store/common/experiment-store.js +64 -0
  28. package/dist/store/common/get-experiment-logger.js +80 -0
  29. package/dist/store/common/index.js +13 -0
  30. package/dist/store/common/page-store.js +102 -0
  31. package/dist/store/index.js +15 -0
  32. package/dist/store/spi/index.js +7 -0
  33. package/dist/store/spi/store-container.js +27 -0
  34. package/dist/store/spi/store.js +37 -0
  35. package/dist/util/autobind.js +44 -0
  36. package/dist/util/batch-queue.js +33 -0
  37. package/dist/util/brand-config.js +32 -0
  38. package/dist/util/debounce.js +19 -0
  39. package/dist/util/index.js +44 -0
  40. package/dist/util/merge.js +120 -0
  41. package/dist/util/not-serialize.js +43 -0
  42. package/dist/util/retry.js +21 -0
  43. package/dist/util/timeout-promise.js +17 -0
  44. package/dist/util/unique-batch-queue.js +40 -0
  45. package/index.js +28 -0
  46. package/package.json +22 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ extendStatics(d, b);
11
+ function __() { this.constructor = d; }
12
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
+ };
14
+ })();
15
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
16
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.ExperimentStore = void 0;
23
+ var spi_1 = require("../spi");
24
+ var bernie_logger_1 = require("bernie-logger");
25
+ var mobx_1 = require("mobx");
26
+ /**
27
+ * Future home of Abacus related data. Currently just allows
28
+ * `.logExperiment` to be injected.
29
+ */
30
+ var ExperimentStore = /** @class */ (function (_super) {
31
+ __extends(ExperimentStore, _super);
32
+ /**
33
+ * @param experimentLogger The experiment logger
34
+ * @param logger The standard logger
35
+ */
36
+ function ExperimentStore(experimentContext, experimentLogger, logger) {
37
+ if (logger === void 0) { logger = bernie_logger_1.NOOP_LOGGER; }
38
+ var _this = _super.call(this, {}, logger) || this;
39
+ _this.experimentLogger = experimentLogger;
40
+ _this.exposures = experimentContext && experimentContext.exposures;
41
+ return _this;
42
+ }
43
+ /**
44
+ * Using the Abacus public API, log a batch of exposures.
45
+ * @param context The platform `Context`.
46
+ * @param pageData The `PageData` store containing `pageName`.
47
+ * @param exposure An Abacus exposure.
48
+ */
49
+ ExperimentStore.prototype.logExperiment = function (context, pageData, exposure) {
50
+ this.experimentLogger(context, pageData, exposure);
51
+ };
52
+ /**
53
+ * Does nothing for now.
54
+ */
55
+ ExperimentStore.prototype.hydrate = function (data) {
56
+ this.exposures = data.exposures;
57
+ };
58
+ __decorate([
59
+ mobx_1.observable
60
+ ], ExperimentStore.prototype, "exposures", void 0);
61
+ return ExperimentStore;
62
+ }(spi_1.Store));
63
+ exports.ExperimentStore = ExperimentStore;
64
+ //# sourceMappingURL=experiment-store.js.map
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.getExperimentLogger = void 0;
15
+ var fetch = require("isomorphic-fetch");
16
+ var bernie_logger_1 = require("bernie-logger");
17
+ var __1 = require("../..");
18
+ var util_1 = require("../../util");
19
+ var TIMEOUT = 400;
20
+ /**
21
+ * Retrieves and configures an `ExperimentLogger`.
22
+ * @param options Configuration options, e.g. the base URL for server side calls
23
+ */
24
+ exports.getExperimentLogger = function (options) {
25
+ var baseUrl = options.baseUrl || '';
26
+ var logger = options.logger || bernie_logger_1.NOOP_LOGGER;
27
+ var loggedExperiments = new Set();
28
+ var queue;
29
+ var fetchWithTimeout = function (url, requestOptions) {
30
+ var fetchOptions = requestOptions;
31
+ if (typeof window === 'undefined' && typeof options.timeout === 'number') {
32
+ fetchOptions = __assign(__assign({}, fetchOptions), { timeout: options.timeout });
33
+ }
34
+ return fetch(url, __assign({}, fetchOptions));
35
+ };
36
+ /**
37
+ * Using the Abacus public API, log a batch of exposures.
38
+ * @param context The platform `Context`.
39
+ * @param pageData The `PageData` store containing `pageName`.
40
+ * @param exposure An Abacus exposure.
41
+ */
42
+ return function (context, pageData, exposure) {
43
+ var overrides = (context && context.debugContext && context.debugContext.abacusOverrides) || [];
44
+ if (queue === undefined) {
45
+ queue = new util_1.UniqueBatchQueue(TIMEOUT, function (e) { return e.name; }, function (exposures) {
46
+ fetchWithTimeout(baseUrl + "/api/bucketing/v1/evaluateExperimentsAndLog", {
47
+ body: JSON.stringify({
48
+ guid: context.deviceId,
49
+ tpid: context.site.tpid,
50
+ eapid: context.site.eapid,
51
+ pageName: pageData.pageName,
52
+ name: exposures.map(function (item) { return item.name; }),
53
+ overrides: overrides.map(function (override) { return override.id + "|0|" + override.bucket; }).join(':') || undefined
54
+ }),
55
+ headers: {
56
+ 'Content-Type': 'application/json',
57
+ Accept: 'application/json'
58
+ },
59
+ method: 'POST'
60
+ })
61
+ .then(function (res) { return res.json(); })
62
+ .then(function () {
63
+ exposures.forEach(function (e) {
64
+ loggedExperiments.add(e.name);
65
+ });
66
+ })
67
+ .catch(function (error) {
68
+ if (logger) {
69
+ logger.logEvent(__1.BERNIE_CORE_EVENTS.LOG_EXPERIMENT_ERROR, bernie_logger_1.getErrorString(error));
70
+ }
71
+ });
72
+ });
73
+ }
74
+ if (!loggedExperiments.has(exposure.name)) {
75
+ queue.add(exposure);
76
+ }
77
+ return true;
78
+ };
79
+ };
80
+ //# sourceMappingURL=get-experiment-logger.js.map
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var context_store_1 = require("./context-store");
4
+ Object.defineProperty(exports, "ContextStore", { enumerable: true, get: function () { return context_store_1.ContextStore; } });
5
+ var page_store_1 = require("./page-store");
6
+ Object.defineProperty(exports, "PageStore", { enumerable: true, get: function () { return page_store_1.PageStore; } });
7
+ var analytics_store_1 = require("./analytics-store");
8
+ Object.defineProperty(exports, "AnalyticsStore", { enumerable: true, get: function () { return analytics_store_1.AnalyticsStore; } });
9
+ var experiment_store_1 = require("./experiment-store");
10
+ Object.defineProperty(exports, "ExperimentStore", { enumerable: true, get: function () { return experiment_store_1.ExperimentStore; } });
11
+ var get_experiment_logger_1 = require("./get-experiment-logger");
12
+ Object.defineProperty(exports, "getExperimentLogger", { enumerable: true, get: function () { return get_experiment_logger_1.getExperimentLogger; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ extendStatics(d, b);
11
+ function __() { this.constructor = d; }
12
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
+ };
14
+ })();
15
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
16
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.PageStore = void 0;
23
+ var spi_1 = require("../spi");
24
+ var mobx_1 = require("mobx");
25
+ /**
26
+ * MobX store that houses page specific data, such
27
+ * as SEO information or the page title.
28
+ */
29
+ var PageStore = /** @class */ (function (_super) {
30
+ __extends(PageStore, _super);
31
+ /**
32
+ * Constructs a new page store.
33
+ * @param title The HTML page title.
34
+ * @param seo SEO specific information.
35
+ * @param scripts JS scripts to include on page.
36
+ */
37
+ function PageStore(pageData, logger) {
38
+ return _super.call(this, pageData, logger) || this;
39
+ }
40
+ /**
41
+ * {@inheritDoc}
42
+ */
43
+ PageStore.prototype.hydrate = function (data) {
44
+ Object.assign(this, data);
45
+ };
46
+ PageStore.prototype.fetch = function (meta, site, locale) {
47
+ var _this = this;
48
+ this.loading = true;
49
+ var metadata = PageStore.getMeta(meta, site, locale);
50
+ this.title = metadata.title;
51
+ this.meta = metadata;
52
+ return new Promise(function (resolve) {
53
+ _this.loading = false;
54
+ resolve(_this.toJSON());
55
+ });
56
+ };
57
+ PageStore.getMeta = function (meta, site, locale) {
58
+ var robots = meta.robots;
59
+ var localeSpecificMeta = PageStore.localeSpecificMeta(meta, site.id, locale);
60
+ var description = localeSpecificMeta.description;
61
+ var title = localeSpecificMeta.title;
62
+ var canonical = meta.canonical && meta.canonical(site);
63
+ return {
64
+ title: title,
65
+ robots: robots,
66
+ description: description,
67
+ canonical: canonical
68
+ };
69
+ };
70
+ PageStore.localeSpecificMeta = function (meta, siteId, locale) {
71
+ var siteMeta = meta[siteId];
72
+ if (siteMeta) {
73
+ var result = siteMeta[locale];
74
+ if (!result) {
75
+ result = siteMeta.default || {};
76
+ }
77
+ return result;
78
+ }
79
+ return {};
80
+ };
81
+ __decorate([
82
+ mobx_1.observable
83
+ ], PageStore.prototype, "title", void 0);
84
+ __decorate([
85
+ mobx_1.observable
86
+ ], PageStore.prototype, "navigationId", void 0);
87
+ __decorate([
88
+ mobx_1.observable
89
+ ], PageStore.prototype, "meta", void 0);
90
+ __decorate([
91
+ mobx_1.observable
92
+ ], PageStore.prototype, "seo", void 0);
93
+ __decorate([
94
+ mobx_1.action
95
+ ], PageStore.prototype, "hydrate", null);
96
+ __decorate([
97
+ mobx_1.action
98
+ ], PageStore.prototype, "fetch", null);
99
+ return PageStore;
100
+ }(spi_1.Store));
101
+ exports.PageStore = PageStore;
102
+ //# sourceMappingURL=page-store.js.map
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./spi"), exports);
14
+ __exportStar(require("./common"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var store_1 = require("./store");
4
+ Object.defineProperty(exports, "Store", { enumerable: true, get: function () { return store_1.Store; } });
5
+ var store_container_1 = require("./store-container");
6
+ Object.defineProperty(exports, "StoreContainer", { enumerable: true, get: function () { return store_container_1.StoreContainer; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StoreContainer = void 0;
4
+ /**
5
+ * Wraps an object containing MobX stores to all for
6
+ * typed access.
7
+ */
8
+ var StoreContainer = /** @class */ (function () {
9
+ /**
10
+ * Constructs a new `StoreContainer` from an object
11
+ * containing stores.
12
+ * @param stores A `Stores` object.
13
+ */
14
+ function StoreContainer(stores) {
15
+ this.stores = stores;
16
+ }
17
+ /**
18
+ * Retrieves an individual store from the container.
19
+ * @param name The name of the store.
20
+ */
21
+ StoreContainer.prototype.get = function (name) {
22
+ return this.stores[name];
23
+ };
24
+ return StoreContainer;
25
+ }());
26
+ exports.StoreContainer = StoreContainer;
27
+ //# sourceMappingURL=store-container.js.map
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Store = void 0;
4
+ var mobx_1 = require("mobx");
5
+ var merge_1 = require("../../util/merge");
6
+ var Store = /** @class */ (function () {
7
+ /**
8
+ * Constructs a new `Store`.
9
+ * @param state Serialized state JSON.
10
+ * @param logger Bernie logger
11
+ */
12
+ function Store(state, logger) {
13
+ var _this = this;
14
+ if (state === void 0) { state = {}; }
15
+ var defaults = this.constructor['DEFAULTS'] || {};
16
+ mobx_1.runInAction(function () { return Object.assign(_this, defaults, state, { logger: logger }); });
17
+ }
18
+ /**
19
+ * Creates a basic JSON object from the store, excluding
20
+ * any fields provided in `excludedFields`.
21
+ */
22
+ Store.prototype.toJSON = function (ignoreAdditionalKeys) {
23
+ if (ignoreAdditionalKeys === void 0) { ignoreAdditionalKeys = []; }
24
+ if (!Array.isArray(ignoreAdditionalKeys)) {
25
+ ignoreAdditionalKeys = ignoreAdditionalKeys.constructor === String ? [ignoreAdditionalKeys] : [];
26
+ }
27
+ var regexIgnorePrivate = /^_.+/;
28
+ var simpleObject = mobx_1.toJS(this);
29
+ var ignoreKeys = Object.keys(simpleObject)
30
+ .filter(function (key) { return regexIgnorePrivate.test(key) || typeof simpleObject[key] === 'function'; })
31
+ .concat(ignoreAdditionalKeys, 'logger');
32
+ return merge_1.withoutKeys(ignoreKeys).merge({}, simpleObject);
33
+ };
34
+ return Store;
35
+ }());
36
+ exports.Store = Store;
37
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.autobind = void 0;
4
+ /*
5
+ * Code pulled from https://github.com/andreypopp/autobind-decorator/blob/master/src/index.js
6
+ *
7
+ * A decorator that automatically bind a class method to an instance of that class.
8
+ */
9
+ exports.autobind = function (target, key, descriptor) {
10
+ var fn = descriptor.value;
11
+ if (typeof fn !== 'function') {
12
+ throw new Error("@autobind decorator can only be applied to methods not: " + typeof fn);
13
+ }
14
+ // In IE11 calling Object.defineProperty has a side-effect of evaluating the
15
+ // getter for the property which is being replaced. This causes infinite
16
+ // recursion and an "Out of stack space" error.
17
+ var definingProperty = false;
18
+ return {
19
+ configurable: true,
20
+ get: function () {
21
+ if (definingProperty || this === target.prototype || this.hasOwnProperty(key) || typeof fn !== 'function') {
22
+ return fn;
23
+ }
24
+ var boundFn = fn.bind(this);
25
+ definingProperty = true;
26
+ Object.defineProperty(this, key, {
27
+ configurable: true,
28
+ get: function () {
29
+ return boundFn;
30
+ },
31
+ set: function (value) {
32
+ fn = value;
33
+ delete this[key];
34
+ }
35
+ });
36
+ definingProperty = false;
37
+ return boundFn;
38
+ },
39
+ set: function (value) {
40
+ fn = value;
41
+ }
42
+ };
43
+ };
44
+ //# sourceMappingURL=autobind.js.map
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BatchQueue = void 0;
4
+ /**
5
+ * A Queue which will process elements at intervals, only if the
6
+ * queue contains any elements.
7
+ */
8
+ var BatchQueue = /** @class */ (function () {
9
+ function BatchQueue(batchPeriod, handler) {
10
+ this.batchPeriod = batchPeriod;
11
+ this.handler = handler;
12
+ this.timeoutId = null;
13
+ this.items = [];
14
+ }
15
+ BatchQueue.prototype.add = function (item) {
16
+ var _this = this;
17
+ this.items.push(item);
18
+ if (this.timeoutId === null) {
19
+ this.timeoutId = setTimeout(function () {
20
+ _this.handleBatch();
21
+ }, this.batchPeriod);
22
+ }
23
+ };
24
+ BatchQueue.prototype.handleBatch = function () {
25
+ var batch = this.items;
26
+ this.timeoutId = null;
27
+ this.items = [];
28
+ this.handler(batch);
29
+ };
30
+ return BatchQueue;
31
+ }());
32
+ exports.BatchQueue = BatchQueue;
33
+ //# sourceMappingURL=batch-queue.js.map
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.getBrandConfiguration = void 0;
15
+ var React = require("react");
16
+ exports.getBrandConfiguration = function (brandData) {
17
+ var iconSet = (brandData && brandData.iconData) || null;
18
+ var getIcon = function (name) {
19
+ if (!iconSet || (!iconSet.icons[name] && !iconSet.nameMapping[name])) {
20
+ return null;
21
+ }
22
+ var iconDataVal = iconSet.nameMapping[name] || name;
23
+ return function (props) {
24
+ var innerSvgProps = __assign({ dangerouslySetInnerHTML: { __html: iconSet.icons[iconDataVal].data } }, props);
25
+ return React.createElement("svg", __assign({}, innerSvgProps));
26
+ };
27
+ };
28
+ return {
29
+ getIcon: getIcon
30
+ };
31
+ };
32
+ //# sourceMappingURL=brand-config.js.map
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.debounce = void 0;
4
+ exports.debounce = function (func, delay, thisContext) {
5
+ var timer;
6
+ return function () {
7
+ var args = [];
8
+ for (var _i = 0; _i < arguments.length; _i++) {
9
+ args[_i] = arguments[_i];
10
+ }
11
+ var callback = function () {
12
+ timer = null;
13
+ func.apply(thisContext || null, args);
14
+ };
15
+ clearTimeout(timer);
16
+ timer = setTimeout(callback, delay);
17
+ };
18
+ };
19
+ //# sourceMappingURL=debounce.js.map
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.isValidDate = exports.parseDate = exports.autobind = exports.merge = void 0;
14
+ var merge = require("./merge");
15
+ exports.merge = merge;
16
+ var autobind_1 = require("./autobind");
17
+ Object.defineProperty(exports, "autobind", { enumerable: true, get: function () { return autobind_1.autobind; } });
18
+ var BernieL10n = require("bernie-l10n");
19
+ __exportStar(require("./timeout-promise"), exports);
20
+ __exportStar(require("./retry"), exports);
21
+ var batch_queue_1 = require("./batch-queue");
22
+ Object.defineProperty(exports, "BatchQueue", { enumerable: true, get: function () { return batch_queue_1.BatchQueue; } });
23
+ var unique_batch_queue_1 = require("./unique-batch-queue");
24
+ Object.defineProperty(exports, "UniqueBatchQueue", { enumerable: true, get: function () { return unique_batch_queue_1.UniqueBatchQueue; } });
25
+ var not_serialize_1 = require("./not-serialize");
26
+ Object.defineProperty(exports, "serializable", { enumerable: true, get: function () { return not_serialize_1.serializable; } });
27
+ Object.defineProperty(exports, "toJSON", { enumerable: true, get: function () { return not_serialize_1.toJSON; } });
28
+ var debounce_1 = require("./debounce");
29
+ Object.defineProperty(exports, "debounce", { enumerable: true, get: function () { return debounce_1.debounce; } });
30
+ __exportStar(require("./brand-config"), exports);
31
+ /***/
32
+ /*** previously from: ./parse-data ***/
33
+ /************************************/
34
+ /**
35
+ * @deprecated
36
+ * @see bernie-l10n for replacement
37
+ */
38
+ exports.parseDate = BernieL10n.parseDate;
39
+ /**
40
+ * @deprecated
41
+ * @see bernie-l10n for replacement
42
+ */
43
+ exports.isValidDate = BernieL10n.isValidDate;
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flattenFields = exports.withoutKeys = exports.withKeys = exports.allKeys = void 0;
4
+ /* tslint:disable */
5
+ function _mergeWithKeys(keys, objects) {
6
+ if (keys === void 0) { keys = []; }
7
+ if (objects.length === 0 || keys instanceof Array === false) {
8
+ return {};
9
+ }
10
+ // only use objects for the merge, ignore null which is also typeof object
11
+ objects = objects.filter(function (object) { return typeof object === 'object' && object; });
12
+ var base = {};
13
+ objects.forEach(function (object) {
14
+ keys.forEach(function (key) {
15
+ if (object.hasOwnProperty(key)) {
16
+ base[key] = object[key];
17
+ }
18
+ });
19
+ });
20
+ return base;
21
+ }
22
+ function _mergeWithoutKeys(keys, objects) {
23
+ if (keys === void 0) { keys = []; }
24
+ if (objects.length === 0 || keys instanceof Array === false) {
25
+ return {};
26
+ }
27
+ // only use objects for the merge, ignore null which is also typeof object
28
+ objects = objects.filter(function (object) { return typeof object === 'object' && object; });
29
+ // bracket notation lookup should be faster than repeated indexOf
30
+ var omittedKeys = keys.reduce(function (holder, key) {
31
+ holder[key] = true;
32
+ return holder;
33
+ }, {});
34
+ var base = {};
35
+ objects.forEach(function (object) {
36
+ Object.keys(object).forEach(function (key) {
37
+ if (omittedKeys[key] !== true) {
38
+ base[key] = object[key];
39
+ }
40
+ });
41
+ });
42
+ return base;
43
+ }
44
+ function _validKeys(keys) {
45
+ if (Array.isArray(keys)) {
46
+ // only use strings as keys, and make sure they're unique
47
+ return keys.filter(function (key, index, array) { return typeof key === 'string' && array.indexOf(key) === index && key.length > 0; });
48
+ }
49
+ return [];
50
+ }
51
+ function _flattenFields(refObject, delimiter, flattenArrays, newObject, prefix) {
52
+ if (delimiter === void 0) { delimiter = '_'; }
53
+ if (flattenArrays === void 0) { flattenArrays = false; }
54
+ if (newObject === void 0) { newObject = {}; }
55
+ var label;
56
+ var currentItem;
57
+ if (typeof delimiter !== 'string' || delimiter.length > 5) {
58
+ delimiter = '_';
59
+ }
60
+ flattenArrays = Boolean(flattenArrays);
61
+ if (typeof refObject === 'object' && refObject) {
62
+ Object.keys(refObject).forEach(function (key) {
63
+ label = prefix ? "" + prefix + delimiter + key : key;
64
+ currentItem = refObject[key];
65
+ if (currentItem !== null &&
66
+ ((typeof currentItem === 'object' && Object.keys(currentItem).length > 0) || Array.isArray(currentItem))) {
67
+ if (Array.isArray(currentItem) && flattenArrays === false) {
68
+ newObject[label] = currentItem.concat();
69
+ }
70
+ else {
71
+ _flattenFields(currentItem, delimiter, flattenArrays, newObject, label);
72
+ }
73
+ }
74
+ else {
75
+ newObject[label] = currentItem;
76
+ }
77
+ });
78
+ }
79
+ return newObject;
80
+ }
81
+ // public exports
82
+ function allKeys() {
83
+ return withoutKeys([]);
84
+ }
85
+ exports.allKeys = allKeys;
86
+ function withKeys(keys) {
87
+ if (keys === void 0) { keys = []; }
88
+ keys = _validKeys(keys);
89
+ return {
90
+ merge: function () {
91
+ var objects = [];
92
+ for (var _i = 0; _i < arguments.length; _i++) {
93
+ objects[_i] = arguments[_i];
94
+ }
95
+ return _mergeWithKeys(keys, objects);
96
+ }
97
+ };
98
+ }
99
+ exports.withKeys = withKeys;
100
+ function withoutKeys(keys) {
101
+ if (keys === void 0) { keys = []; }
102
+ keys = _validKeys(keys);
103
+ return {
104
+ merge: function () {
105
+ var objects = [];
106
+ for (var _i = 0; _i < arguments.length; _i++) {
107
+ objects[_i] = arguments[_i];
108
+ }
109
+ return _mergeWithoutKeys(keys, objects);
110
+ }
111
+ };
112
+ }
113
+ exports.withoutKeys = withoutKeys;
114
+ function flattenFields(refObject, delimiter, flattenArrays) {
115
+ if (delimiter === void 0) { delimiter = '_'; }
116
+ if (flattenArrays === void 0) { flattenArrays = false; }
117
+ return _flattenFields(refObject, delimiter, flattenArrays, {}, '');
118
+ }
119
+ exports.flattenFields = flattenFields;
120
+ //# sourceMappingURL=merge.js.map