@ngrx/entity 9.1.0 → 9.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license NgRx 9.1.0
2
+ * @license NgRx 9.2.1
3
3
  * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license NgRx 9.1.0
2
+ * @license NgRx 9.2.1
3
3
  * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin
4
4
  * License: MIT
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["modules/entity/entity.umd.js"],"names":["global","factory","exports","module","require","define","amd","self","ngrx","entity","tslib","store","ng","core","this","DidMutate","createStateOperator","mutator","operation","arg","state","clonedEntityState","ids","__spread","entities","__assign","didMutate","Both","Object","assign","EntitiesOnly","selectIdValue","selectId","key","isDevMode","undefined","console","warn","toString","createUnsortedStateAdapter","addOneMutably","None","push","addManyMutably","e_1","_a","entities_1","__values","entities_1_1","next","done","value","e_1_1","error","return","call","setAllMutably","removeManyMutably","keysOrPredicate","Array","filter","map","length","id","updateManyMutably","updates","newKeys","update","takeNewKey","keys","updated","changes","newKey","hasNewKey","upsertManyMutably","e_2","added","entities_2","entities_2_1","e_2_1","didMutateByUpdated","didMutateByAdded","removeAll","addOne","addMany","addAll","setAll","setOne","setOneMutably","updateOne","updateOneMutably","updateMany","upsertOne","upsertOneMutably","upsertMany","removeOne","removeOneMutably","removeMany","mapMutably","reduce","change","Dictionary","createEntityAdapter","options","sortComparer","instance","stateFactory","createInitialStateFactory","getInitialState","additionalState","selectorsFactory","createSelectorsFactory","getSelectors","selectState","selectIds","selectEntities","selectAll","createSelector","selectTotal","stateAdapter","createSortedStateAdapter","sort","newModels","models","model","merge","didMutateIds","takeUpdatedModel","originalIds_1","updatedIndexes_1","index","every","i","j","modelId","entityId","concat","slice","forEach","val","updatesOrMap","defineProperty"],"mappings":"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","sourcesContent":["/**\n * @license NgRx 9.1.0\n * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin\n * License: MIT\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('tslib'), require('@ngrx/store'), require('@angular/core')) :\n typeof define === 'function' && define.amd ? define('@ngrx/entity', ['exports', 'tslib', '@ngrx/store', '@angular/core'], factory) :\n (global = global || self, factory((global.ngrx = global.ngrx || {}, global.ngrx.entity = {}), global.tslib, global.ngrx.store, global.ng.core));\n}(this, (function (exports, tslib, store, core) { 'use strict';\n\n function getInitialEntityState() {\n return {\n ids: [],\n entities: {},\n };\n }\n function createInitialStateFactory() {\n function getInitialState(additionalState) {\n if (additionalState === void 0) { additionalState = {}; }\n return Object.assign(getInitialEntityState(), additionalState);\n }\n return { getInitialState: getInitialState };\n }\n\n function createSelectorsFactory() {\n function getSelectors(selectState) {\n var selectIds = function (state) { return state.ids; };\n var selectEntities = function (state) { return state.entities; };\n var selectAll = store.createSelector(selectIds, selectEntities, function (ids, entities) {\n return ids.map(function (id) { return entities[id]; });\n });\n var selectTotal = store.createSelector(selectIds, function (ids) { return ids.length; });\n if (!selectState) {\n return {\n selectIds: selectIds,\n selectEntities: selectEntities,\n selectAll: selectAll,\n selectTotal: selectTotal,\n };\n }\n return {\n selectIds: store.createSelector(selectState, selectIds),\n selectEntities: store.createSelector(selectState, selectEntities),\n selectAll: store.createSelector(selectState, selectAll),\n selectTotal: store.createSelector(selectState, selectTotal),\n };\n }\n return { getSelectors: getSelectors };\n }\n\n var DidMutate;\n (function (DidMutate) {\n DidMutate[DidMutate[\"EntitiesOnly\"] = 0] = \"EntitiesOnly\";\n DidMutate[DidMutate[\"Both\"] = 1] = \"Both\";\n DidMutate[DidMutate[\"None\"] = 2] = \"None\";\n })(DidMutate || (DidMutate = {}));\n function createStateOperator(mutator) {\n return function operation(arg, state) {\n var clonedEntityState = {\n ids: tslib.__spread(state.ids),\n entities: tslib.__assign({}, state.entities),\n };\n var didMutate = mutator(arg, clonedEntityState);\n if (didMutate === DidMutate.Both) {\n return Object.assign({}, state, clonedEntityState);\n }\n if (didMutate === DidMutate.EntitiesOnly) {\n return tslib.__assign(tslib.__assign({}, state), { entities: clonedEntityState.entities });\n }\n return state;\n };\n }\n\n function selectIdValue(entity, selectId) {\n var key = selectId(entity);\n if (core.isDevMode() && key === undefined) {\n console.warn('@ngrx/entity: The entity passed to the `selectId` implementation returned undefined.', 'You should probably provide your own `selectId` implementation.', 'The entity that was passed:', entity, 'The `selectId` implementation:', selectId.toString());\n }\n return key;\n }\n\n function createUnsortedStateAdapter(selectId) {\n function addOneMutably(entity, state) {\n var key = selectIdValue(entity, selectId);\n if (key in state.entities) {\n return DidMutate.None;\n }\n state.ids.push(key);\n state.entities[key] = entity;\n return DidMutate.Both;\n }\n function addManyMutably(entities, state) {\n var e_1, _a;\n var didMutate = false;\n try {\n for (var entities_1 = tslib.__values(entities), entities_1_1 = entities_1.next(); !entities_1_1.done; entities_1_1 = entities_1.next()) {\n var entity = entities_1_1.value;\n didMutate = addOneMutably(entity, state) !== DidMutate.None || didMutate;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return didMutate ? DidMutate.Both : DidMutate.None;\n }\n function setAllMutably(entities, state) {\n state.ids = [];\n state.entities = {};\n addManyMutably(entities, state);\n return DidMutate.Both;\n }\n function setOneMutably(entity, state) {\n var key = selectIdValue(entity, selectId);\n if (key in state.entities) {\n state.entities[key] = entity;\n return DidMutate.EntitiesOnly;\n }\n state.ids.push(key);\n state.entities[key] = entity;\n return DidMutate.Both;\n }\n function removeOneMutably(key, state) {\n return removeManyMutably([key], state);\n }\n function removeManyMutably(keysOrPredicate, state) {\n var keys = keysOrPredicate instanceof Array\n ? keysOrPredicate\n : state.ids.filter(function (key) { return keysOrPredicate(state.entities[key]); });\n var didMutate = keys\n .filter(function (key) { return key in state.entities; })\n .map(function (key) { return delete state.entities[key]; }).length > 0;\n if (didMutate) {\n state.ids = state.ids.filter(function (id) { return id in state.entities; });\n }\n return didMutate ? DidMutate.Both : DidMutate.None;\n }\n function removeAll(state) {\n return Object.assign({}, state, {\n ids: [],\n entities: {},\n });\n }\n function takeNewKey(keys, update, state) {\n var original = state.entities[update.id];\n var updated = Object.assign({}, original, update.changes);\n var newKey = selectIdValue(updated, selectId);\n var hasNewKey = newKey !== update.id;\n if (hasNewKey) {\n keys[update.id] = newKey;\n delete state.entities[update.id];\n }\n state.entities[newKey] = updated;\n return hasNewKey;\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n var newKeys = {};\n updates = updates.filter(function (update) { return update.id in state.entities; });\n var didMutateEntities = updates.length > 0;\n if (didMutateEntities) {\n var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0;\n if (didMutateIds) {\n state.ids = state.ids.map(function (id) { return newKeys[id] || id; });\n return DidMutate.Both;\n }\n else {\n return DidMutate.EntitiesOnly;\n }\n }\n return DidMutate.None;\n }\n function mapMutably(map, state) {\n var changes = state.ids.reduce(function (changes, id) {\n var change = map(state.entities[id]);\n if (change !== state.entities[id]) {\n changes.push({ id: id, changes: change });\n }\n return changes;\n }, []);\n var updates = changes.filter(function (_a) {\n var id = _a.id;\n return id in state.entities;\n });\n return updateManyMutably(updates, state);\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(entities, state) {\n var e_2, _a;\n var added = [];\n var updated = [];\n try {\n for (var entities_2 = tslib.__values(entities), entities_2_1 = entities_2.next(); !entities_2_1.done; entities_2_1 = entities_2.next()) {\n var entity = entities_2_1.value;\n var id = selectIdValue(entity, selectId);\n if (id in state.entities) {\n updated.push({ id: id, changes: entity });\n }\n else {\n added.push(entity);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (entities_2_1 && !entities_2_1.done && (_a = entities_2.return)) _a.call(entities_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var didMutateByUpdated = updateManyMutably(updated, state);\n var didMutateByAdded = addManyMutably(added, state);\n switch (true) {\n case didMutateByAdded === DidMutate.None &&\n didMutateByUpdated === DidMutate.None:\n return DidMutate.None;\n case didMutateByAdded === DidMutate.Both ||\n didMutateByUpdated === DidMutate.Both:\n return DidMutate.Both;\n default:\n return DidMutate.EntitiesOnly;\n }\n }\n return {\n removeAll: removeAll,\n addOne: createStateOperator(addOneMutably),\n addMany: createStateOperator(addManyMutably),\n addAll: createStateOperator(setAllMutably),\n setAll: createStateOperator(setAllMutably),\n setOne: createStateOperator(setOneMutably),\n updateOne: createStateOperator(updateOneMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n upsertMany: createStateOperator(upsertManyMutably),\n removeOne: createStateOperator(removeOneMutably),\n removeMany: createStateOperator(removeManyMutably),\n map: createStateOperator(mapMutably),\n };\n }\n\n function createSortedStateAdapter(selectId, sort) {\n var _a = createUnsortedStateAdapter(selectId), removeOne = _a.removeOne, removeMany = _a.removeMany, removeAll = _a.removeAll;\n function addOneMutably(entity, state) {\n return addManyMutably([entity], state);\n }\n function addManyMutably(newModels, state) {\n var models = newModels.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); });\n if (models.length === 0) {\n return DidMutate.None;\n }\n else {\n merge(models, state);\n return DidMutate.Both;\n }\n }\n function setAllMutably(models, state) {\n state.entities = {};\n state.ids = [];\n addManyMutably(models, state);\n return DidMutate.Both;\n }\n function setOneMutably(entity, state) {\n var id = selectIdValue(entity, selectId);\n if (id in state.entities) {\n state.ids = state.ids.filter(function (val) { return val !== id; });\n merge([entity], state);\n return DidMutate.Both;\n }\n else {\n return addOneMutably(entity, state);\n }\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function takeUpdatedModel(models, update, state) {\n if (!(update.id in state.entities)) {\n return false;\n }\n var original = state.entities[update.id];\n var updated = Object.assign({}, original, update.changes);\n var newKey = selectIdValue(updated, selectId);\n delete state.entities[update.id];\n models.push(updated);\n return newKey !== update.id;\n }\n function updateManyMutably(updates, state) {\n var models = [];\n var didMutateIds = updates.filter(function (update) { return takeUpdatedModel(models, update, state); }).length >\n 0;\n if (models.length === 0) {\n return DidMutate.None;\n }\n else {\n var originalIds_1 = state.ids;\n var updatedIndexes_1 = [];\n state.ids = state.ids.filter(function (id, index) {\n if (id in state.entities) {\n return true;\n }\n else {\n updatedIndexes_1.push(index);\n return false;\n }\n });\n merge(models, state);\n if (!didMutateIds &&\n updatedIndexes_1.every(function (i) { return state.ids[i] === originalIds_1[i]; })) {\n return DidMutate.EntitiesOnly;\n }\n else {\n return DidMutate.Both;\n }\n }\n }\n function mapMutably(updatesOrMap, state) {\n var updates = state.ids.reduce(function (changes, id) {\n var change = updatesOrMap(state.entities[id]);\n if (change !== state.entities[id]) {\n changes.push({ id: id, changes: change });\n }\n return changes;\n }, []);\n return updateManyMutably(updates, state);\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(entities, state) {\n var e_1, _a;\n var added = [];\n var updated = [];\n try {\n for (var entities_1 = tslib.__values(entities), entities_1_1 = entities_1.next(); !entities_1_1.done; entities_1_1 = entities_1.next()) {\n var entity = entities_1_1.value;\n var id = selectIdValue(entity, selectId);\n if (id in state.entities) {\n updated.push({ id: id, changes: entity });\n }\n else {\n added.push(entity);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var didMutateByUpdated = updateManyMutably(updated, state);\n var didMutateByAdded = addManyMutably(added, state);\n switch (true) {\n case didMutateByAdded === DidMutate.None &&\n didMutateByUpdated === DidMutate.None:\n return DidMutate.None;\n case didMutateByAdded === DidMutate.Both ||\n didMutateByUpdated === DidMutate.Both:\n return DidMutate.Both;\n default:\n return DidMutate.EntitiesOnly;\n }\n }\n function merge(models, state) {\n models.sort(sort);\n var ids = [];\n var i = 0;\n var j = 0;\n while (i < models.length && j < state.ids.length) {\n var model = models[i];\n var modelId = selectIdValue(model, selectId);\n var entityId = state.ids[j];\n var entity = state.entities[entityId];\n if (sort(model, entity) <= 0) {\n ids.push(modelId);\n i++;\n }\n else {\n ids.push(entityId);\n j++;\n }\n }\n if (i < models.length) {\n state.ids = ids.concat(models.slice(i).map(selectId));\n }\n else {\n state.ids = ids.concat(state.ids.slice(j));\n }\n models.forEach(function (model, i) {\n state.entities[selectId(model)] = model;\n });\n }\n return {\n removeOne: removeOne,\n removeMany: removeMany,\n removeAll: removeAll,\n addOne: createStateOperator(addOneMutably),\n updateOne: createStateOperator(updateOneMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n addAll: createStateOperator(setAllMutably),\n setAll: createStateOperator(setAllMutably),\n setOne: createStateOperator(setOneMutably),\n addMany: createStateOperator(addManyMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertMany: createStateOperator(upsertManyMutably),\n map: createStateOperator(mapMutably),\n };\n }\n\n function createEntityAdapter(options) {\n if (options === void 0) { options = {}; }\n var _a = tslib.__assign({ sortComparer: false, selectId: function (instance) { return instance.id; } }, options), selectId = _a.selectId, sortComparer = _a.sortComparer;\n var stateFactory = createInitialStateFactory();\n var selectorsFactory = createSelectorsFactory();\n var stateAdapter = sortComparer\n ? createSortedStateAdapter(selectId, sortComparer)\n : createUnsortedStateAdapter(selectId);\n return tslib.__assign(tslib.__assign(tslib.__assign({ selectId: selectId,\n sortComparer: sortComparer }, stateFactory), selectorsFactory), stateAdapter);\n }\n\n var Dictionary = /** @class */ (function () {\n function Dictionary() {\n }\n return Dictionary;\n }());\n\n /**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n /**\n * Generated bundle index. Do not edit.\n */\n\n exports.Dictionary = Dictionary;\n exports.createEntityAdapter = createEntityAdapter;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=entity.umd.js.map\n"]}
1
+ {"version":3,"sources":["modules/entity/entity.umd.js"],"names":["global","factory","exports","module","require","define","amd","self","ngrx","entity","tslib","store","ng","core","this","DidMutate","createStateOperator","mutator","operation","arg","state","clonedEntityState","ids","__spread","entities","__assign","didMutate","Both","Object","assign","EntitiesOnly","selectIdValue","selectId","key","isDevMode","undefined","console","warn","toString","createUnsortedStateAdapter","addOneMutably","None","push","addManyMutably","e_1","_a","entities_1","__values","entities_1_1","next","done","value","e_1_1","error","return","call","setAllMutably","removeManyMutably","keysOrPredicate","Array","filter","map","length","id","updateManyMutably","updates","newKeys","update","takeNewKey","keys","updated","changes","newKey","hasNewKey","upsertManyMutably","e_2","added","entities_2","entities_2_1","e_2_1","didMutateByUpdated","didMutateByAdded","removeAll","addOne","addMany","addAll","setAll","setOne","setOneMutably","updateOne","updateOneMutably","updateMany","upsertOne","upsertOneMutably","upsertMany","removeOne","removeOneMutably","removeMany","mapMutably","reduce","change","Dictionary","createEntityAdapter","options","sortComparer","instance","stateFactory","createInitialStateFactory","getInitialState","additionalState","selectorsFactory","createSelectorsFactory","getSelectors","selectState","selectIds","selectEntities","selectAll","createSelector","selectTotal","stateAdapter","createSortedStateAdapter","sort","newModels","models","model","merge","didMutateIds","takeUpdatedModel","originalIds_1","updatedIndexes_1","index","every","i","j","modelId","entityId","concat","slice","forEach","val","updatesOrMap","defineProperty"],"mappings":"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","sourcesContent":["/**\n * @license NgRx 9.2.1\n * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin\n * License: MIT\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('tslib'), require('@ngrx/store'), require('@angular/core')) :\n typeof define === 'function' && define.amd ? define('@ngrx/entity', ['exports', 'tslib', '@ngrx/store', '@angular/core'], factory) :\n (global = global || self, factory((global.ngrx = global.ngrx || {}, global.ngrx.entity = {}), global.tslib, global.ngrx.store, global.ng.core));\n}(this, (function (exports, tslib, store, core) { 'use strict';\n\n function getInitialEntityState() {\n return {\n ids: [],\n entities: {},\n };\n }\n function createInitialStateFactory() {\n function getInitialState(additionalState) {\n if (additionalState === void 0) { additionalState = {}; }\n return Object.assign(getInitialEntityState(), additionalState);\n }\n return { getInitialState: getInitialState };\n }\n\n function createSelectorsFactory() {\n function getSelectors(selectState) {\n var selectIds = function (state) { return state.ids; };\n var selectEntities = function (state) { return state.entities; };\n var selectAll = store.createSelector(selectIds, selectEntities, function (ids, entities) {\n return ids.map(function (id) { return entities[id]; });\n });\n var selectTotal = store.createSelector(selectIds, function (ids) { return ids.length; });\n if (!selectState) {\n return {\n selectIds: selectIds,\n selectEntities: selectEntities,\n selectAll: selectAll,\n selectTotal: selectTotal,\n };\n }\n return {\n selectIds: store.createSelector(selectState, selectIds),\n selectEntities: store.createSelector(selectState, selectEntities),\n selectAll: store.createSelector(selectState, selectAll),\n selectTotal: store.createSelector(selectState, selectTotal),\n };\n }\n return { getSelectors: getSelectors };\n }\n\n var DidMutate;\n (function (DidMutate) {\n DidMutate[DidMutate[\"EntitiesOnly\"] = 0] = \"EntitiesOnly\";\n DidMutate[DidMutate[\"Both\"] = 1] = \"Both\";\n DidMutate[DidMutate[\"None\"] = 2] = \"None\";\n })(DidMutate || (DidMutate = {}));\n function createStateOperator(mutator) {\n return function operation(arg, state) {\n var clonedEntityState = {\n ids: tslib.__spread(state.ids),\n entities: tslib.__assign({}, state.entities),\n };\n var didMutate = mutator(arg, clonedEntityState);\n if (didMutate === DidMutate.Both) {\n return Object.assign({}, state, clonedEntityState);\n }\n if (didMutate === DidMutate.EntitiesOnly) {\n return tslib.__assign(tslib.__assign({}, state), { entities: clonedEntityState.entities });\n }\n return state;\n };\n }\n\n function selectIdValue(entity, selectId) {\n var key = selectId(entity);\n if (core.isDevMode() && key === undefined) {\n console.warn('@ngrx/entity: The entity passed to the `selectId` implementation returned undefined.', 'You should probably provide your own `selectId` implementation.', 'The entity that was passed:', entity, 'The `selectId` implementation:', selectId.toString());\n }\n return key;\n }\n\n function createUnsortedStateAdapter(selectId) {\n function addOneMutably(entity, state) {\n var key = selectIdValue(entity, selectId);\n if (key in state.entities) {\n return DidMutate.None;\n }\n state.ids.push(key);\n state.entities[key] = entity;\n return DidMutate.Both;\n }\n function addManyMutably(entities, state) {\n var e_1, _a;\n var didMutate = false;\n try {\n for (var entities_1 = tslib.__values(entities), entities_1_1 = entities_1.next(); !entities_1_1.done; entities_1_1 = entities_1.next()) {\n var entity = entities_1_1.value;\n didMutate = addOneMutably(entity, state) !== DidMutate.None || didMutate;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return didMutate ? DidMutate.Both : DidMutate.None;\n }\n function setAllMutably(entities, state) {\n state.ids = [];\n state.entities = {};\n addManyMutably(entities, state);\n return DidMutate.Both;\n }\n function setOneMutably(entity, state) {\n var key = selectIdValue(entity, selectId);\n if (key in state.entities) {\n state.entities[key] = entity;\n return DidMutate.EntitiesOnly;\n }\n state.ids.push(key);\n state.entities[key] = entity;\n return DidMutate.Both;\n }\n function removeOneMutably(key, state) {\n return removeManyMutably([key], state);\n }\n function removeManyMutably(keysOrPredicate, state) {\n var keys = keysOrPredicate instanceof Array\n ? keysOrPredicate\n : state.ids.filter(function (key) { return keysOrPredicate(state.entities[key]); });\n var didMutate = keys\n .filter(function (key) { return key in state.entities; })\n .map(function (key) { return delete state.entities[key]; }).length > 0;\n if (didMutate) {\n state.ids = state.ids.filter(function (id) { return id in state.entities; });\n }\n return didMutate ? DidMutate.Both : DidMutate.None;\n }\n function removeAll(state) {\n return Object.assign({}, state, {\n ids: [],\n entities: {},\n });\n }\n function takeNewKey(keys, update, state) {\n var original = state.entities[update.id];\n var updated = Object.assign({}, original, update.changes);\n var newKey = selectIdValue(updated, selectId);\n var hasNewKey = newKey !== update.id;\n if (hasNewKey) {\n keys[update.id] = newKey;\n delete state.entities[update.id];\n }\n state.entities[newKey] = updated;\n return hasNewKey;\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n var newKeys = {};\n updates = updates.filter(function (update) { return update.id in state.entities; });\n var didMutateEntities = updates.length > 0;\n if (didMutateEntities) {\n var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0;\n if (didMutateIds) {\n state.ids = state.ids.map(function (id) { return newKeys[id] || id; });\n return DidMutate.Both;\n }\n else {\n return DidMutate.EntitiesOnly;\n }\n }\n return DidMutate.None;\n }\n function mapMutably(map, state) {\n var changes = state.ids.reduce(function (changes, id) {\n var change = map(state.entities[id]);\n if (change !== state.entities[id]) {\n changes.push({ id: id, changes: change });\n }\n return changes;\n }, []);\n var updates = changes.filter(function (_a) {\n var id = _a.id;\n return id in state.entities;\n });\n return updateManyMutably(updates, state);\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(entities, state) {\n var e_2, _a;\n var added = [];\n var updated = [];\n try {\n for (var entities_2 = tslib.__values(entities), entities_2_1 = entities_2.next(); !entities_2_1.done; entities_2_1 = entities_2.next()) {\n var entity = entities_2_1.value;\n var id = selectIdValue(entity, selectId);\n if (id in state.entities) {\n updated.push({ id: id, changes: entity });\n }\n else {\n added.push(entity);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (entities_2_1 && !entities_2_1.done && (_a = entities_2.return)) _a.call(entities_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var didMutateByUpdated = updateManyMutably(updated, state);\n var didMutateByAdded = addManyMutably(added, state);\n switch (true) {\n case didMutateByAdded === DidMutate.None &&\n didMutateByUpdated === DidMutate.None:\n return DidMutate.None;\n case didMutateByAdded === DidMutate.Both ||\n didMutateByUpdated === DidMutate.Both:\n return DidMutate.Both;\n default:\n return DidMutate.EntitiesOnly;\n }\n }\n return {\n removeAll: removeAll,\n addOne: createStateOperator(addOneMutably),\n addMany: createStateOperator(addManyMutably),\n addAll: createStateOperator(setAllMutably),\n setAll: createStateOperator(setAllMutably),\n setOne: createStateOperator(setOneMutably),\n updateOne: createStateOperator(updateOneMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n upsertMany: createStateOperator(upsertManyMutably),\n removeOne: createStateOperator(removeOneMutably),\n removeMany: createStateOperator(removeManyMutably),\n map: createStateOperator(mapMutably),\n };\n }\n\n function createSortedStateAdapter(selectId, sort) {\n var _a = createUnsortedStateAdapter(selectId), removeOne = _a.removeOne, removeMany = _a.removeMany, removeAll = _a.removeAll;\n function addOneMutably(entity, state) {\n return addManyMutably([entity], state);\n }\n function addManyMutably(newModels, state) {\n var models = newModels.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); });\n if (models.length === 0) {\n return DidMutate.None;\n }\n else {\n merge(models, state);\n return DidMutate.Both;\n }\n }\n function setAllMutably(models, state) {\n state.entities = {};\n state.ids = [];\n addManyMutably(models, state);\n return DidMutate.Both;\n }\n function setOneMutably(entity, state) {\n var id = selectIdValue(entity, selectId);\n if (id in state.entities) {\n state.ids = state.ids.filter(function (val) { return val !== id; });\n merge([entity], state);\n return DidMutate.Both;\n }\n else {\n return addOneMutably(entity, state);\n }\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function takeUpdatedModel(models, update, state) {\n if (!(update.id in state.entities)) {\n return false;\n }\n var original = state.entities[update.id];\n var updated = Object.assign({}, original, update.changes);\n var newKey = selectIdValue(updated, selectId);\n delete state.entities[update.id];\n models.push(updated);\n return newKey !== update.id;\n }\n function updateManyMutably(updates, state) {\n var models = [];\n var didMutateIds = updates.filter(function (update) { return takeUpdatedModel(models, update, state); }).length >\n 0;\n if (models.length === 0) {\n return DidMutate.None;\n }\n else {\n var originalIds_1 = state.ids;\n var updatedIndexes_1 = [];\n state.ids = state.ids.filter(function (id, index) {\n if (id in state.entities) {\n return true;\n }\n else {\n updatedIndexes_1.push(index);\n return false;\n }\n });\n merge(models, state);\n if (!didMutateIds &&\n updatedIndexes_1.every(function (i) { return state.ids[i] === originalIds_1[i]; })) {\n return DidMutate.EntitiesOnly;\n }\n else {\n return DidMutate.Both;\n }\n }\n }\n function mapMutably(updatesOrMap, state) {\n var updates = state.ids.reduce(function (changes, id) {\n var change = updatesOrMap(state.entities[id]);\n if (change !== state.entities[id]) {\n changes.push({ id: id, changes: change });\n }\n return changes;\n }, []);\n return updateManyMutably(updates, state);\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(entities, state) {\n var e_1, _a;\n var added = [];\n var updated = [];\n try {\n for (var entities_1 = tslib.__values(entities), entities_1_1 = entities_1.next(); !entities_1_1.done; entities_1_1 = entities_1.next()) {\n var entity = entities_1_1.value;\n var id = selectIdValue(entity, selectId);\n if (id in state.entities) {\n updated.push({ id: id, changes: entity });\n }\n else {\n added.push(entity);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var didMutateByUpdated = updateManyMutably(updated, state);\n var didMutateByAdded = addManyMutably(added, state);\n switch (true) {\n case didMutateByAdded === DidMutate.None &&\n didMutateByUpdated === DidMutate.None:\n return DidMutate.None;\n case didMutateByAdded === DidMutate.Both ||\n didMutateByUpdated === DidMutate.Both:\n return DidMutate.Both;\n default:\n return DidMutate.EntitiesOnly;\n }\n }\n function merge(models, state) {\n models.sort(sort);\n var ids = [];\n var i = 0;\n var j = 0;\n while (i < models.length && j < state.ids.length) {\n var model = models[i];\n var modelId = selectIdValue(model, selectId);\n var entityId = state.ids[j];\n var entity = state.entities[entityId];\n if (sort(model, entity) <= 0) {\n ids.push(modelId);\n i++;\n }\n else {\n ids.push(entityId);\n j++;\n }\n }\n if (i < models.length) {\n state.ids = ids.concat(models.slice(i).map(selectId));\n }\n else {\n state.ids = ids.concat(state.ids.slice(j));\n }\n models.forEach(function (model, i) {\n state.entities[selectId(model)] = model;\n });\n }\n return {\n removeOne: removeOne,\n removeMany: removeMany,\n removeAll: removeAll,\n addOne: createStateOperator(addOneMutably),\n updateOne: createStateOperator(updateOneMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n addAll: createStateOperator(setAllMutably),\n setAll: createStateOperator(setAllMutably),\n setOne: createStateOperator(setOneMutably),\n addMany: createStateOperator(addManyMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertMany: createStateOperator(upsertManyMutably),\n map: createStateOperator(mapMutably),\n };\n }\n\n function createEntityAdapter(options) {\n if (options === void 0) { options = {}; }\n var _a = tslib.__assign({ sortComparer: false, selectId: function (instance) { return instance.id; } }, options), selectId = _a.selectId, sortComparer = _a.sortComparer;\n var stateFactory = createInitialStateFactory();\n var selectorsFactory = createSelectorsFactory();\n var stateAdapter = sortComparer\n ? createSortedStateAdapter(selectId, sortComparer)\n : createUnsortedStateAdapter(selectId);\n return tslib.__assign(tslib.__assign(tslib.__assign({ selectId: selectId,\n sortComparer: sortComparer }, stateFactory), selectorsFactory), stateAdapter);\n }\n\n var Dictionary = /** @class */ (function () {\n function Dictionary() {\n }\n return Dictionary;\n }());\n\n /**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n /**\n * Generated bundle index. Do not edit.\n */\n\n exports.Dictionary = Dictionary;\n exports.createEntityAdapter = createEntityAdapter;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=entity.umd.js.map\n"]}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license NgRx 9.1.0
2
+ * @license NgRx 9.2.1
3
3
  * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin
4
4
  * License: MIT
5
5
  */
package/fesm5/entity.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license NgRx 9.1.0
2
+ * @license NgRx 9.2.1
3
3
  * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin
4
4
  * License: MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngrx/entity",
3
- "version": "9.1.0",
3
+ "version": "9.2.1",
4
4
  "description": "Common utilities for entity reducers",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  "homepage": "https://github.com/ngrx/platform#readme",
22
22
  "peerDependencies": {
23
23
  "@angular/core": "^9.0.0",
24
- "@ngrx/store": "9.1.0",
24
+ "@ngrx/store": "9.2.1",
25
25
  "rxjs": "^6.5.3"
26
26
  },
27
27
  "schematics": "./schematics/collection.json",
@@ -33,6 +33,7 @@
33
33
  "@ngrx/router-store",
34
34
  "@ngrx/data",
35
35
  "@ngrx/component",
36
+ "@ngrx/component-store",
36
37
  "@ngrx/schematics",
37
38
  "@ngrx/store-devtools"
38
39
  ],
@@ -23,4 +23,4 @@ export { updatePackage } from './utility/update';
23
23
  export { parseName } from './utility/parse-name';
24
24
  export { addPackageToPackageJson } from './utility/package';
25
25
  export { platformVersion } from './utility/libs-version';
26
- export { visitTSSourceFiles, visitNgModuleImports } from './utility/visitors';
26
+ export { visitTSSourceFiles, visitNgModuleImports, visitNgModuleExports, visitComponents, visitDecorator, visitNgModules, visitTemplates, } from './utility/visitors';
@@ -75,5 +75,10 @@
75
75
  var visitors_1 = require("@ngrx/entity/schematics-core/utility/visitors");
76
76
  exports.visitTSSourceFiles = visitors_1.visitTSSourceFiles;
77
77
  exports.visitNgModuleImports = visitors_1.visitNgModuleImports;
78
+ exports.visitNgModuleExports = visitors_1.visitNgModuleExports;
79
+ exports.visitComponents = visitors_1.visitComponents;
80
+ exports.visitDecorator = visitors_1.visitDecorator;
81
+ exports.visitNgModules = visitors_1.visitNgModules;
82
+ exports.visitTemplates = visitors_1.visitTemplates;
78
83
  });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2VudGl0eS9zY2hlbWF0aWNzLWNvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSwwRUFVMkI7SUFFM0Isb0ZBQXVEO0lBQTlDLHVDQUFBLFlBQVksQ0FBQTtJQUVyQiw0RUFjNkI7SUFiM0IsZ0NBQUEsU0FBUyxDQUFBO0lBQ1QscUNBQUEsY0FBYyxDQUFBO0lBQ2QsMkNBQUEsb0JBQW9CLENBQUE7SUFDcEIsNkNBQUEsc0JBQXNCLENBQUE7SUFDdEIsZ0RBQUEseUJBQXlCLENBQUE7SUFDekIsbUNBQUEsWUFBWSxDQUFBO0lBQ1osMkNBQUEsb0JBQW9CLENBQUE7SUFDcEIsNkNBQUEsc0JBQXNCLENBQUE7SUFDdEIsd0NBQUEsaUJBQWlCLENBQUE7SUFDakIsd0NBQUEsaUJBQWlCLENBQUE7SUFDakIsMENBQUEsbUJBQW1CLENBQUE7SUFDbkIsb0NBQUEsYUFBYSxDQUFBO0lBQ2IsdUNBQUEsZ0JBQWdCLENBQUE7SUFHbEIsc0VBVTBCO0lBUHhCLDhCQUFBLFVBQVUsQ0FBQTtJQUNWLGdDQUFBLFlBQVksQ0FBQTtJQUNaLGdDQUFBLFlBQVksQ0FBQTtJQUNaLGlDQUFBLGFBQWEsQ0FBQTtJQUNiLHVDQUFBLG1CQUFtQixDQUFBO0lBQ25CLHdDQUFBLG9CQUFvQixDQUFBO0lBQ3BCLGlDQUFBLGFBQWEsQ0FBQTtJQUdmLHNFQUE2RTtJQUF6RCxnQ0FBQSxZQUFZLENBQUE7SUFBRSxvQ0FBQSxnQkFBZ0IsQ0FBQTtJQUVsRCxnRkFLK0I7SUFKN0IsbUNBQUEsVUFBVSxDQUFBO0lBQ1YsOENBQUEscUJBQXFCLENBQUE7SUFDckIsMENBQUEsaUJBQWlCLENBQUE7SUFJbkIsZ0ZBQWdFO0lBQXZELGdEQUFBLHVCQUF1QixDQUFBO0lBRWhDLDhFQU04QjtJQUw1Qix5Q0FBQSxpQkFBaUIsQ0FBQTtJQUNqQixrREFBQSwwQkFBMEIsQ0FBQTtJQUMxQixrREFBQSwwQkFBMEIsQ0FBQTtJQUMxQixvREFBQSw0QkFBNEIsQ0FBQTtJQUM1Qiw0QkFBQSxJQUFJLENBQUE7SUFHTix3RUFBc0U7SUFBN0QsbUNBQUEsY0FBYyxDQUFBO0lBQUUsK0JBQUEsVUFBVSxDQUFBO0lBQUUsMEJBQUEsS0FBSyxDQUFBO0lBRTdCLFFBQUEsV0FBVyxHQUFHO1FBQ3pCLFNBQVMsRUFBVCxtQkFBUztRQUNULFVBQVUsRUFBVixvQkFBVTtRQUNWLFFBQVEsRUFBUixrQkFBUTtRQUNSLFFBQVEsRUFBUixrQkFBUTtRQUNSLFVBQVUsRUFBVixvQkFBVTtRQUNWLEtBQUssRUFBTCxlQUFLO1FBQ0wsVUFBVSxFQUFWLG9CQUFVO1FBQ1YsV0FBVyxFQUFYLHFCQUFXO1FBQ1gsU0FBUyxFQUFULG1CQUFTO0tBQ1YsQ0FBQztJQUVGLHNFQUFpRDtJQUF4QyxpQ0FBQSxhQUFhLENBQUE7SUFFdEIsOEVBQWlEO0lBQXhDLGlDQUFBLFNBQVMsQ0FBQTtJQUVsQix3RUFBNEQ7SUFBbkQsNENBQUEsdUJBQXVCLENBQUE7SUFFaEMsa0ZBQXlEO0lBQWhELHlDQUFBLGVBQWUsQ0FBQTtJQUV4QiwwRUFBOEU7SUFBckUsd0NBQUEsa0JBQWtCLENBQUE7SUFBRSwwQ0FBQSxvQkFBb0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGRhc2hlcml6ZSxcbiAgZGVjYW1lbGl6ZSxcbiAgY2FtZWxpemUsXG4gIGNsYXNzaWZ5LFxuICB1bmRlcnNjb3JlLFxuICBncm91cCxcbiAgY2FwaXRhbGl6ZSxcbiAgZmVhdHVyZVBhdGgsXG4gIHBsdXJhbGl6ZSxcbn0gZnJvbSAnLi91dGlsaXR5L3N0cmluZ3MnO1xuXG5leHBvcnQgeyBpc0l2eUVuYWJsZWQgfSBmcm9tICcuL3V0aWxpdHkvYW5ndWxhci11dGlscyc7XG5cbmV4cG9ydCB7XG4gIGZpbmROb2RlcyxcbiAgZ2V0U291cmNlTm9kZXMsXG4gIGdldERlY29yYXRvck1ldGFkYXRhLFxuICBnZXRDb250ZW50T2ZLZXlMaXRlcmFsLFxuICBpbnNlcnRBZnRlckxhc3RPY2N1cnJlbmNlLFxuICBpbnNlcnRJbXBvcnQsXG4gIGFkZEJvb3RzdHJhcFRvTW9kdWxlLFxuICBhZGREZWNsYXJhdGlvblRvTW9kdWxlLFxuICBhZGRFeHBvcnRUb01vZHVsZSxcbiAgYWRkSW1wb3J0VG9Nb2R1bGUsXG4gIGFkZFByb3ZpZGVyVG9Nb2R1bGUsXG4gIHJlcGxhY2VJbXBvcnQsXG4gIGNvbnRhaW5zUHJvcGVydHksXG59IGZyb20gJy4vdXRpbGl0eS9hc3QtdXRpbHMnO1xuXG5leHBvcnQge1xuICBIb3N0LFxuICBDaGFuZ2UsXG4gIE5vb3BDaGFuZ2UsXG4gIEluc2VydENoYW5nZSxcbiAgUmVtb3ZlQ2hhbmdlLFxuICBSZXBsYWNlQ2hhbmdlLFxuICBjcmVhdGVSZXBsYWNlQ2hhbmdlLFxuICBjcmVhdGVDaGFuZ2VSZWNvcmRlcixcbiAgY29tbWl0Q2hhbmdlcyxcbn0gZnJvbSAnLi91dGlsaXR5L2NoYW5nZSc7XG5cbmV4cG9ydCB7IEFwcENvbmZpZywgZ2V0V29ya3NwYWNlLCBnZXRXb3Jrc3BhY2VQYXRoIH0gZnJvbSAnLi91dGlsaXR5L2NvbmZpZyc7XG5cbmV4cG9ydCB7XG4gIGZpbmRNb2R1bGUsXG4gIGZpbmRNb2R1bGVGcm9tT3B0aW9ucyxcbiAgYnVpbGRSZWxhdGl2ZVBhdGgsXG4gIE1vZHVsZU9wdGlvbnMsXG59IGZyb20gJy4vdXRpbGl0eS9maW5kLW1vZHVsZSc7XG5cbmV4cG9ydCB7IGZpbmRQcm9wZXJ0eUluQXN0T2JqZWN0IH0gZnJvbSAnLi91dGlsaXR5L2pzb24tdXRpbHRzJztcblxuZXhwb3J0IHtcbiAgYWRkUmVkdWNlclRvU3RhdGUsXG4gIGFkZFJlZHVjZXJUb1N0YXRlSW50ZXJmYWNlLFxuICBhZGRSZWR1Y2VySW1wb3J0VG9OZ01vZHVsZSxcbiAgYWRkUmVkdWNlclRvQWN0aW9uUmVkdWNlck1hcCxcbiAgb21pdCxcbn0gZnJvbSAnLi91dGlsaXR5L25ncngtdXRpbHMnO1xuXG5leHBvcnQgeyBnZXRQcm9qZWN0UGF0aCwgZ2V0UHJvamVjdCwgaXNMaWIgfSBmcm9tICcuL3V0aWxpdHkvcHJvamVjdCc7XG5cbmV4cG9ydCBjb25zdCBzdHJpbmdVdGlscyA9IHtcbiAgZGFzaGVyaXplLFxuICBkZWNhbWVsaXplLFxuICBjYW1lbGl6ZSxcbiAgY2xhc3NpZnksXG4gIHVuZGVyc2NvcmUsXG4gIGdyb3VwLFxuICBjYXBpdGFsaXplLFxuICBmZWF0dXJlUGF0aCxcbiAgcGx1cmFsaXplLFxufTtcblxuZXhwb3J0IHsgdXBkYXRlUGFja2FnZSB9IGZyb20gJy4vdXRpbGl0eS91cGRhdGUnO1xuXG5leHBvcnQgeyBwYXJzZU5hbWUgfSBmcm9tICcuL3V0aWxpdHkvcGFyc2UtbmFtZSc7XG5cbmV4cG9ydCB7IGFkZFBhY2thZ2VUb1BhY2thZ2VKc29uIH0gZnJvbSAnLi91dGlsaXR5L3BhY2thZ2UnO1xuXG5leHBvcnQgeyBwbGF0Zm9ybVZlcnNpb24gfSBmcm9tICcuL3V0aWxpdHkvbGlicy12ZXJzaW9uJztcblxuZXhwb3J0IHsgdmlzaXRUU1NvdXJjZUZpbGVzLCB2aXNpdE5nTW9kdWxlSW1wb3J0cyB9IGZyb20gJy4vdXRpbGl0eS92aXNpdG9ycyc7XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2VudGl0eS9zY2hlbWF0aWNzLWNvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSwwRUFVMkI7SUFFM0Isb0ZBQXVEO0lBQTlDLHVDQUFBLFlBQVksQ0FBQTtJQUVyQiw0RUFjNkI7SUFiM0IsZ0NBQUEsU0FBUyxDQUFBO0lBQ1QscUNBQUEsY0FBYyxDQUFBO0lBQ2QsMkNBQUEsb0JBQW9CLENBQUE7SUFDcEIsNkNBQUEsc0JBQXNCLENBQUE7SUFDdEIsZ0RBQUEseUJBQXlCLENBQUE7SUFDekIsbUNBQUEsWUFBWSxDQUFBO0lBQ1osMkNBQUEsb0JBQW9CLENBQUE7SUFDcEIsNkNBQUEsc0JBQXNCLENBQUE7SUFDdEIsd0NBQUEsaUJBQWlCLENBQUE7SUFDakIsd0NBQUEsaUJBQWlCLENBQUE7SUFDakIsMENBQUEsbUJBQW1CLENBQUE7SUFDbkIsb0NBQUEsYUFBYSxDQUFBO0lBQ2IsdUNBQUEsZ0JBQWdCLENBQUE7SUFHbEIsc0VBVTBCO0lBUHhCLDhCQUFBLFVBQVUsQ0FBQTtJQUNWLGdDQUFBLFlBQVksQ0FBQTtJQUNaLGdDQUFBLFlBQVksQ0FBQTtJQUNaLGlDQUFBLGFBQWEsQ0FBQTtJQUNiLHVDQUFBLG1CQUFtQixDQUFBO0lBQ25CLHdDQUFBLG9CQUFvQixDQUFBO0lBQ3BCLGlDQUFBLGFBQWEsQ0FBQTtJQUdmLHNFQUE2RTtJQUF6RCxnQ0FBQSxZQUFZLENBQUE7SUFBRSxvQ0FBQSxnQkFBZ0IsQ0FBQTtJQUVsRCxnRkFLK0I7SUFKN0IsbUNBQUEsVUFBVSxDQUFBO0lBQ1YsOENBQUEscUJBQXFCLENBQUE7SUFDckIsMENBQUEsaUJBQWlCLENBQUE7SUFJbkIsZ0ZBQWdFO0lBQXZELGdEQUFBLHVCQUF1QixDQUFBO0lBRWhDLDhFQU04QjtJQUw1Qix5Q0FBQSxpQkFBaUIsQ0FBQTtJQUNqQixrREFBQSwwQkFBMEIsQ0FBQTtJQUMxQixrREFBQSwwQkFBMEIsQ0FBQTtJQUMxQixvREFBQSw0QkFBNEIsQ0FBQTtJQUM1Qiw0QkFBQSxJQUFJLENBQUE7SUFHTix3RUFBc0U7SUFBN0QsbUNBQUEsY0FBYyxDQUFBO0lBQUUsK0JBQUEsVUFBVSxDQUFBO0lBQUUsMEJBQUEsS0FBSyxDQUFBO0lBRTdCLFFBQUEsV0FBVyxHQUFHO1FBQ3pCLFNBQVMsRUFBVCxtQkFBUztRQUNULFVBQVUsRUFBVixvQkFBVTtRQUNWLFFBQVEsRUFBUixrQkFBUTtRQUNSLFFBQVEsRUFBUixrQkFBUTtRQUNSLFVBQVUsRUFBVixvQkFBVTtRQUNWLEtBQUssRUFBTCxlQUFLO1FBQ0wsVUFBVSxFQUFWLG9CQUFVO1FBQ1YsV0FBVyxFQUFYLHFCQUFXO1FBQ1gsU0FBUyxFQUFULG1CQUFTO0tBQ1YsQ0FBQztJQUVGLHNFQUFpRDtJQUF4QyxpQ0FBQSxhQUFhLENBQUE7SUFFdEIsOEVBQWlEO0lBQXhDLGlDQUFBLFNBQVMsQ0FBQTtJQUVsQix3RUFBNEQ7SUFBbkQsNENBQUEsdUJBQXVCLENBQUE7SUFFaEMsa0ZBQXlEO0lBQWhELHlDQUFBLGVBQWUsQ0FBQTtJQUV4QiwwRUFRNEI7SUFQMUIsd0NBQUEsa0JBQWtCLENBQUE7SUFDbEIsMENBQUEsb0JBQW9CLENBQUE7SUFDcEIsMENBQUEsb0JBQW9CLENBQUE7SUFDcEIscUNBQUEsZUFBZSxDQUFBO0lBQ2Ysb0NBQUEsY0FBYyxDQUFBO0lBQ2Qsb0NBQUEsY0FBYyxDQUFBO0lBQ2Qsb0NBQUEsY0FBYyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZGFzaGVyaXplLFxuICBkZWNhbWVsaXplLFxuICBjYW1lbGl6ZSxcbiAgY2xhc3NpZnksXG4gIHVuZGVyc2NvcmUsXG4gIGdyb3VwLFxuICBjYXBpdGFsaXplLFxuICBmZWF0dXJlUGF0aCxcbiAgcGx1cmFsaXplLFxufSBmcm9tICcuL3V0aWxpdHkvc3RyaW5ncyc7XG5cbmV4cG9ydCB7IGlzSXZ5RW5hYmxlZCB9IGZyb20gJy4vdXRpbGl0eS9hbmd1bGFyLXV0aWxzJztcblxuZXhwb3J0IHtcbiAgZmluZE5vZGVzLFxuICBnZXRTb3VyY2VOb2RlcyxcbiAgZ2V0RGVjb3JhdG9yTWV0YWRhdGEsXG4gIGdldENvbnRlbnRPZktleUxpdGVyYWwsXG4gIGluc2VydEFmdGVyTGFzdE9jY3VycmVuY2UsXG4gIGluc2VydEltcG9ydCxcbiAgYWRkQm9vdHN0cmFwVG9Nb2R1bGUsXG4gIGFkZERlY2xhcmF0aW9uVG9Nb2R1bGUsXG4gIGFkZEV4cG9ydFRvTW9kdWxlLFxuICBhZGRJbXBvcnRUb01vZHVsZSxcbiAgYWRkUHJvdmlkZXJUb01vZHVsZSxcbiAgcmVwbGFjZUltcG9ydCxcbiAgY29udGFpbnNQcm9wZXJ0eSxcbn0gZnJvbSAnLi91dGlsaXR5L2FzdC11dGlscyc7XG5cbmV4cG9ydCB7XG4gIEhvc3QsXG4gIENoYW5nZSxcbiAgTm9vcENoYW5nZSxcbiAgSW5zZXJ0Q2hhbmdlLFxuICBSZW1vdmVDaGFuZ2UsXG4gIFJlcGxhY2VDaGFuZ2UsXG4gIGNyZWF0ZVJlcGxhY2VDaGFuZ2UsXG4gIGNyZWF0ZUNoYW5nZVJlY29yZGVyLFxuICBjb21taXRDaGFuZ2VzLFxufSBmcm9tICcuL3V0aWxpdHkvY2hhbmdlJztcblxuZXhwb3J0IHsgQXBwQ29uZmlnLCBnZXRXb3Jrc3BhY2UsIGdldFdvcmtzcGFjZVBhdGggfSBmcm9tICcuL3V0aWxpdHkvY29uZmlnJztcblxuZXhwb3J0IHtcbiAgZmluZE1vZHVsZSxcbiAgZmluZE1vZHVsZUZyb21PcHRpb25zLFxuICBidWlsZFJlbGF0aXZlUGF0aCxcbiAgTW9kdWxlT3B0aW9ucyxcbn0gZnJvbSAnLi91dGlsaXR5L2ZpbmQtbW9kdWxlJztcblxuZXhwb3J0IHsgZmluZFByb3BlcnR5SW5Bc3RPYmplY3QgfSBmcm9tICcuL3V0aWxpdHkvanNvbi11dGlsdHMnO1xuXG5leHBvcnQge1xuICBhZGRSZWR1Y2VyVG9TdGF0ZSxcbiAgYWRkUmVkdWNlclRvU3RhdGVJbnRlcmZhY2UsXG4gIGFkZFJlZHVjZXJJbXBvcnRUb05nTW9kdWxlLFxuICBhZGRSZWR1Y2VyVG9BY3Rpb25SZWR1Y2VyTWFwLFxuICBvbWl0LFxufSBmcm9tICcuL3V0aWxpdHkvbmdyeC11dGlscyc7XG5cbmV4cG9ydCB7IGdldFByb2plY3RQYXRoLCBnZXRQcm9qZWN0LCBpc0xpYiB9IGZyb20gJy4vdXRpbGl0eS9wcm9qZWN0JztcblxuZXhwb3J0IGNvbnN0IHN0cmluZ1V0aWxzID0ge1xuICBkYXNoZXJpemUsXG4gIGRlY2FtZWxpemUsXG4gIGNhbWVsaXplLFxuICBjbGFzc2lmeSxcbiAgdW5kZXJzY29yZSxcbiAgZ3JvdXAsXG4gIGNhcGl0YWxpemUsXG4gIGZlYXR1cmVQYXRoLFxuICBwbHVyYWxpemUsXG59O1xuXG5leHBvcnQgeyB1cGRhdGVQYWNrYWdlIH0gZnJvbSAnLi91dGlsaXR5L3VwZGF0ZSc7XG5cbmV4cG9ydCB7IHBhcnNlTmFtZSB9IGZyb20gJy4vdXRpbGl0eS9wYXJzZS1uYW1lJztcblxuZXhwb3J0IHsgYWRkUGFja2FnZVRvUGFja2FnZUpzb24gfSBmcm9tICcuL3V0aWxpdHkvcGFja2FnZSc7XG5cbmV4cG9ydCB7IHBsYXRmb3JtVmVyc2lvbiB9IGZyb20gJy4vdXRpbGl0eS9saWJzLXZlcnNpb24nO1xuXG5leHBvcnQge1xuICB2aXNpdFRTU291cmNlRmlsZXMsXG4gIHZpc2l0TmdNb2R1bGVJbXBvcnRzLFxuICB2aXNpdE5nTW9kdWxlRXhwb3J0cyxcbiAgdmlzaXRDb21wb25lbnRzLFxuICB2aXNpdERlY29yYXRvcixcbiAgdmlzaXROZ01vZHVsZXMsXG4gIHZpc2l0VGVtcGxhdGVzLFxufSBmcm9tICcuL3V0aWxpdHkvdmlzaXRvcnMnO1xuIl19
@@ -2,4 +2,14 @@
2
2
  import * as ts from 'typescript';
3
3
  import { Tree } from '@angular-devkit/schematics';
4
4
  export declare function visitTSSourceFiles<Result = void>(tree: Tree, visitor: (sourceFile: ts.SourceFile, tree: Tree, result?: Result) => Result | undefined): Result | undefined;
5
+ export declare function visitTemplates(tree: Tree, visitor: (template: {
6
+ fileName: string;
7
+ content: string;
8
+ inline: boolean;
9
+ start: number;
10
+ }, tree: Tree) => void): void;
5
11
  export declare function visitNgModuleImports(sourceFile: ts.SourceFile, callback: (importNode: ts.PropertyAssignment, elementExpressions: ts.NodeArray<ts.Expression>) => void): void;
12
+ export declare function visitNgModuleExports(sourceFile: ts.SourceFile, callback: (exportNode: ts.PropertyAssignment, elementExpressions: ts.NodeArray<ts.Expression>) => void): void;
13
+ export declare function visitComponents(sourceFile: ts.SourceFile, callback: (classDeclarationNode: ts.ClassDeclaration, decoratorExpressionNode: ts.ObjectLiteralExpression) => void): void;
14
+ export declare function visitNgModules(sourceFile: ts.SourceFile, callback: (classDeclarationNode: ts.ClassDeclaration, decoratorExpressionNode: ts.ObjectLiteralExpression) => void): void;
15
+ export declare function visitDecorator(sourceFile: ts.SourceFile, decoratorName: string, callback: (classDeclarationNode: ts.ClassDeclaration, decoratorExpressionNode: ts.ObjectLiteralExpression) => void): void;
@@ -4,12 +4,13 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define("@ngrx/entity/schematics-core/utility/visitors", ["require", "exports", "typescript"], factory);
7
+ define("@ngrx/entity/schematics-core/utility/visitors", ["require", "exports", "typescript", "@angular-devkit/core"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const ts = require("typescript");
13
+ const core_1 = require("@angular-devkit/core");
13
14
  function visitTSSourceFiles(tree, visitor) {
14
15
  let result = undefined;
15
16
  for (const sourceFile of visit(tree.root)) {
@@ -18,6 +19,112 @@
18
19
  return result;
19
20
  }
20
21
  exports.visitTSSourceFiles = visitTSSourceFiles;
22
+ function visitTemplates(tree, visitor) {
23
+ visitTSSourceFiles(tree, source => {
24
+ visitComponents(source, (_, decoratorExpressionNode) => {
25
+ ts.forEachChild(decoratorExpressionNode, function findTemplates(n) {
26
+ if (ts.isPropertyAssignment(n) && ts.isIdentifier(n.name)) {
27
+ if (n.name.text === 'template' &&
28
+ ts.isStringLiteralLike(n.initializer)) {
29
+ // Need to add an offset of one to the start because the template quotes are
30
+ // not part of the template content.
31
+ const templateStartIdx = n.initializer.getStart() + 1;
32
+ visitor({
33
+ fileName: source.fileName,
34
+ content: n.initializer.text,
35
+ inline: true,
36
+ start: templateStartIdx,
37
+ }, tree);
38
+ return;
39
+ }
40
+ else if (n.name.text === 'templateUrl' &&
41
+ ts.isStringLiteralLike(n.initializer)) {
42
+ const parts = core_1.normalize(source.fileName)
43
+ .split('/')
44
+ .slice(0, -1);
45
+ const templatePath = core_1.resolve(core_1.normalize(parts.join('/')), core_1.normalize(n.initializer.text));
46
+ if (!tree.exists(templatePath)) {
47
+ return;
48
+ }
49
+ const fileContent = tree.read(templatePath);
50
+ if (!fileContent) {
51
+ return;
52
+ }
53
+ visitor({
54
+ fileName: templatePath,
55
+ content: fileContent.toString(),
56
+ inline: false,
57
+ start: 0,
58
+ }, tree);
59
+ return;
60
+ }
61
+ }
62
+ ts.forEachChild(n, findTemplates);
63
+ });
64
+ });
65
+ });
66
+ }
67
+ exports.visitTemplates = visitTemplates;
68
+ function visitNgModuleImports(sourceFile, callback) {
69
+ visitNgModuleProperty(sourceFile, callback, 'imports');
70
+ }
71
+ exports.visitNgModuleImports = visitNgModuleImports;
72
+ function visitNgModuleExports(sourceFile, callback) {
73
+ visitNgModuleProperty(sourceFile, callback, 'exports');
74
+ }
75
+ exports.visitNgModuleExports = visitNgModuleExports;
76
+ function visitNgModuleProperty(sourceFile, callback, property) {
77
+ visitNgModules(sourceFile, (_, decoratorExpressionNode) => {
78
+ ts.forEachChild(decoratorExpressionNode, function findTemplates(n) {
79
+ if (ts.isPropertyAssignment(n) &&
80
+ ts.isIdentifier(n.name) &&
81
+ n.name.text === property &&
82
+ ts.isArrayLiteralExpression(n.initializer)) {
83
+ callback(n, n.initializer.elements);
84
+ return;
85
+ }
86
+ ts.forEachChild(n, findTemplates);
87
+ });
88
+ });
89
+ }
90
+ function visitComponents(sourceFile, callback) {
91
+ visitDecorator(sourceFile, 'Component', callback);
92
+ }
93
+ exports.visitComponents = visitComponents;
94
+ function visitNgModules(sourceFile, callback) {
95
+ visitDecorator(sourceFile, 'NgModule', callback);
96
+ }
97
+ exports.visitNgModules = visitNgModules;
98
+ function visitDecorator(sourceFile, decoratorName, callback) {
99
+ ts.forEachChild(sourceFile, function findClassDeclaration(node) {
100
+ if (!ts.isClassDeclaration(node)) {
101
+ ts.forEachChild(node, findClassDeclaration);
102
+ }
103
+ const classDeclarationNode = node;
104
+ if (!classDeclarationNode.decorators ||
105
+ !classDeclarationNode.decorators.length) {
106
+ return;
107
+ }
108
+ const componentDecorator = classDeclarationNode.decorators.find(d => {
109
+ return (ts.isCallExpression(d.expression) &&
110
+ ts.isIdentifier(d.expression.expression) &&
111
+ d.expression.expression.text === decoratorName);
112
+ });
113
+ if (!componentDecorator) {
114
+ return;
115
+ }
116
+ const { expression } = componentDecorator;
117
+ if (!ts.isCallExpression(expression)) {
118
+ return;
119
+ }
120
+ const [arg] = expression.arguments;
121
+ if (!ts.isObjectLiteralExpression(arg)) {
122
+ return;
123
+ }
124
+ callback(classDeclarationNode, arg);
125
+ });
126
+ }
127
+ exports.visitDecorator = visitDecorator;
21
128
  function* visit(directory) {
22
129
  for (const path of directory.subfiles) {
23
130
  if (path.endsWith('.ts') && !path.endsWith('.d.ts')) {
@@ -36,23 +143,5 @@
36
143
  yield* visit(directory.dir(path));
37
144
  }
38
145
  }
39
- function visitNgModuleImports(sourceFile, callback) {
40
- ts.forEachChild(sourceFile, function findDecorator(node) {
41
- if (!ts.isDecorator(node)) {
42
- ts.forEachChild(node, findDecorator);
43
- return;
44
- }
45
- ts.forEachChild(node, function findImportsNode(n) {
46
- if (ts.isPropertyAssignment(n) &&
47
- ts.isArrayLiteralExpression(n.initializer) &&
48
- ts.isIdentifier(n.name) &&
49
- n.name.text === 'imports') {
50
- callback(n, n.initializer.elements);
51
- }
52
- ts.forEachChild(n, findImportsNode);
53
- });
54
- });
55
- }
56
- exports.visitNgModuleImports = visitNgModuleImports;
57
146
  });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2VudGl0eS9zY2hlbWF0aWNzLWNvcmUvdXRpbGl0eS92aXNpdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFBLGlDQUFpQztJQUdqQyxTQUFnQixrQkFBa0IsQ0FDaEMsSUFBVSxFQUNWLE9BSXVCO1FBRXZCLElBQUksTUFBTSxHQUF1QixTQUFTLENBQUM7UUFDM0MsS0FBSyxNQUFNLFVBQVUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM1QztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFkRCxnREFjQztJQUVELFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFtQjtRQUNqQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxLQUFLLEVBQUU7b0JBQ1QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztvQkFDOUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUNoQyxLQUFLLENBQUMsSUFBSSxFQUNWLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUN6QyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFDdEIsSUFBSSxDQUNMLENBQUM7b0JBQ0YsTUFBTSxNQUFNLENBQUM7aUJBQ2Q7YUFDRjtTQUNGO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQ3BDLElBQUksSUFBSSxLQUFLLGNBQWMsRUFBRTtnQkFDM0IsU0FBUzthQUNWO1lBRUQsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxTQUFnQixvQkFBb0IsQ0FDbEMsVUFBeUIsRUFDekIsUUFHUztRQUVULEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFNBQVMsYUFBYSxDQUFDLElBQUk7WUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pCLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNyQyxPQUFPO2FBQ1I7WUFFRCxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLGVBQWUsQ0FBQyxDQUFDO2dCQUM5QyxJQUNFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7b0JBQzFCLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO29CQUMxQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFDekI7b0JBQ0EsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNyQztnQkFFRCxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQTFCRCxvREEwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFRyZWUsIERpckVudHJ5IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmlzaXRUU1NvdXJjZUZpbGVzPFJlc3VsdCA9IHZvaWQ+KFxuICB0cmVlOiBUcmVlLFxuICB2aXNpdG9yOiAoXG4gICAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgICB0cmVlOiBUcmVlLFxuICAgIHJlc3VsdD86IFJlc3VsdFxuICApID0+IFJlc3VsdCB8IHVuZGVmaW5lZFxuKTogUmVzdWx0IHwgdW5kZWZpbmVkIHtcbiAgbGV0IHJlc3VsdDogUmVzdWx0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2YgdmlzaXQodHJlZS5yb290KSkge1xuICAgIHJlc3VsdCA9IHZpc2l0b3Ioc291cmNlRmlsZSwgdHJlZSwgcmVzdWx0KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uKiB2aXNpdChkaXJlY3Rvcnk6IERpckVudHJ5KTogSXRlcmFibGVJdGVyYXRvcjx0cy5Tb3VyY2VGaWxlPiB7XG4gIGZvciAoY29uc3QgcGF0aCBvZiBkaXJlY3Rvcnkuc3ViZmlsZXMpIHtcbiAgICBpZiAocGF0aC5lbmRzV2l0aCgnLnRzJykgJiYgIXBhdGguZW5kc1dpdGgoJy5kLnRzJykpIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gZGlyZWN0b3J5LmZpbGUocGF0aCk7XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGVudHJ5LmNvbnRlbnQ7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgICAgICAgZW50cnkucGF0aCxcbiAgICAgICAgICBjb250ZW50LnRvU3RyaW5nKCkucmVwbGFjZSgvXlxcdUZFRkYvLCAnJyksXG4gICAgICAgICAgdHMuU2NyaXB0VGFyZ2V0LkxhdGVzdCxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHlpZWxkIHNvdXJjZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IHBhdGggb2YgZGlyZWN0b3J5LnN1YmRpcnMpIHtcbiAgICBpZiAocGF0aCA9PT0gJ25vZGVfbW9kdWxlcycpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHlpZWxkKiB2aXNpdChkaXJlY3RvcnkuZGlyKHBhdGgpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmlzaXROZ01vZHVsZUltcG9ydHMoXG4gIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG4gIGNhbGxiYWNrOiAoXG4gICAgaW1wb3J0Tm9kZTogdHMuUHJvcGVydHlBc3NpZ25tZW50LFxuICAgIGVsZW1lbnRFeHByZXNzaW9uczogdHMuTm9kZUFycmF5PHRzLkV4cHJlc3Npb24+XG4gICkgPT4gdm9pZFxuKSB7XG4gIHRzLmZvckVhY2hDaGlsZChzb3VyY2VGaWxlLCBmdW5jdGlvbiBmaW5kRGVjb3JhdG9yKG5vZGUpIHtcbiAgICBpZiAoIXRzLmlzRGVjb3JhdG9yKG5vZGUpKSB7XG4gICAgICB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZmluZERlY29yYXRvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZ1bmN0aW9uIGZpbmRJbXBvcnRzTm9kZShuKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRzLmlzUHJvcGVydHlBc3NpZ25tZW50KG4pICYmXG4gICAgICAgIHRzLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihuLmluaXRpYWxpemVyKSAmJlxuICAgICAgICB0cy5pc0lkZW50aWZpZXIobi5uYW1lKSAmJlxuICAgICAgICBuLm5hbWUudGV4dCA9PT0gJ2ltcG9ydHMnXG4gICAgICApIHtcbiAgICAgICAgY2FsbGJhY2sobiwgbi5pbml0aWFsaXplci5lbGVtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHRzLmZvckVhY2hDaGlsZChuLCBmaW5kSW1wb3J0c05vZGUpO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2VudGl0eS9zY2hlbWF0aWNzLWNvcmUvdXRpbGl0eS92aXNpdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFBLGlDQUFpQztJQUNqQywrQ0FBMEQ7SUFHMUQsU0FBZ0Isa0JBQWtCLENBQ2hDLElBQVUsRUFDVixPQUl1QjtRQUV2QixJQUFJLE1BQU0sR0FBdUIsU0FBUyxDQUFDO1FBQzNDLEtBQUssTUFBTSxVQUFVLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QyxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDNUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBZEQsZ0RBY0M7SUFFRCxTQUFnQixjQUFjLENBQzVCLElBQVUsRUFDVixPQVFTO1FBRVQsa0JBQWtCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ2hDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsdUJBQXVCLEVBQUUsRUFBRTtnQkFDckQsRUFBRSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLGFBQWEsQ0FBQyxDQUFDO29CQUMvRCxJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDekQsSUFDRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVOzRCQUMxQixFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUNyQzs0QkFDQSw0RUFBNEU7NEJBQzVFLG9DQUFvQzs0QkFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDdEQsT0FBTyxDQUNMO2dDQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtnQ0FDekIsT0FBTyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSTtnQ0FDM0IsTUFBTSxFQUFFLElBQUk7Z0NBQ1osS0FBSyxFQUFFLGdCQUFnQjs2QkFDeEIsRUFDRCxJQUFJLENBQ0wsQ0FBQzs0QkFDRixPQUFPO3lCQUNSOzZCQUFNLElBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYTs0QkFDN0IsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFDckM7NEJBQ0EsTUFBTSxLQUFLLEdBQUcsZ0JBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO2lDQUNyQyxLQUFLLENBQUMsR0FBRyxDQUFDO2lDQUNWLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDaEIsTUFBTSxZQUFZLEdBQUcsY0FBTyxDQUMxQixnQkFBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDMUIsZ0JBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUM5QixDQUFDOzRCQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dDQUM5QixPQUFPOzZCQUNSOzRCQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQzVDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0NBQ2hCLE9BQU87NkJBQ1I7NEJBRUQsT0FBTyxDQUNMO2dDQUNFLFFBQVEsRUFBRSxZQUFZO2dDQUN0QixPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRTtnQ0FDL0IsTUFBTSxFQUFFLEtBQUs7Z0NBQ2IsS0FBSyxFQUFFLENBQUM7NkJBQ1QsRUFDRCxJQUFJLENBQ0wsQ0FBQzs0QkFDRixPQUFPO3lCQUNSO3FCQUNGO29CQUVELEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBdEVELHdDQXNFQztJQUVELFNBQWdCLG9CQUFvQixDQUNsQyxVQUF5QixFQUN6QixRQUdTO1FBRVQscUJBQXFCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBUkQsb0RBUUM7SUFFRCxTQUFnQixvQkFBb0IsQ0FDbEMsVUFBeUIsRUFDekIsUUFHUztRQUVULHFCQUFxQixDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQVJELG9EQVFDO0lBRUQsU0FBUyxxQkFBcUIsQ0FDNUIsVUFBeUIsRUFDekIsUUFHUyxFQUNULFFBQWdCO1FBRWhCLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsdUJBQXVCLEVBQUUsRUFBRTtZQUN4RCxFQUFFLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLFNBQVMsYUFBYSxDQUFDLENBQUM7Z0JBQy9ELElBQ0UsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztvQkFDMUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRO29CQUN4QixFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUMxQztvQkFDQSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3BDLE9BQU87aUJBQ1I7Z0JBRUQsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxTQUFnQixlQUFlLENBQzdCLFVBQXlCLEVBQ3pCLFFBR1M7UUFFVCxjQUFjLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBUkQsMENBUUM7SUFFRCxTQUFnQixjQUFjLENBQzVCLFVBQXlCLEVBQ3pCLFFBR1M7UUFFVCxjQUFjLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBUkQsd0NBUUM7SUFFRCxTQUFnQixjQUFjLENBQzVCLFVBQXlCLEVBQ3pCLGFBQXFCLEVBQ3JCLFFBR1M7UUFFVCxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxTQUFTLG9CQUFvQixDQUFDLElBQUk7WUFDNUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDaEMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQzthQUM3QztZQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBMkIsQ0FBQztZQUV6RCxJQUNFLENBQUMsb0JBQW9CLENBQUMsVUFBVTtnQkFDaEMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUN2QztnQkFDQSxPQUFPO2FBQ1I7WUFFRCxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xFLE9BQU8sQ0FDTCxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztvQkFDakMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztvQkFDeEMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FDL0MsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUN2QixPQUFPO2FBQ1I7WUFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsa0JBQWtCLENBQUM7WUFDMUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDcEMsT0FBTzthQUNSO1lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUM7WUFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdEMsT0FBTzthQUNSO1lBRUQsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQTlDRCx3Q0E4Q0M7SUFFRCxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBbUI7UUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ25ELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25DLElBQUksS0FBSyxFQUFFO29CQUNULE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7b0JBQzlCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FDaEMsS0FBSyxDQUFDLElBQUksRUFDVixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFDekMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQ3RCLElBQUksQ0FDTCxDQUFDO29CQUNGLE1BQU0sTUFBTSxDQUFDO2lCQUNkO2FBQ0Y7U0FDRjtRQUVELEtBQUssTUFBTSxJQUFJLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxJQUFJLElBQUksS0FBSyxjQUFjLEVBQUU7Z0JBQzNCLFNBQVM7YUFDVjtZQUVELEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBub3JtYWxpemUsIHJlc29sdmUgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQgeyBUcmVlLCBEaXJFbnRyeSB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0VFNTb3VyY2VGaWxlczxSZXN1bHQgPSB2b2lkPihcbiAgdHJlZTogVHJlZSxcbiAgdmlzaXRvcjogKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG4gICAgdHJlZTogVHJlZSxcbiAgICByZXN1bHQ/OiBSZXN1bHRcbiAgKSA9PiBSZXN1bHQgfCB1bmRlZmluZWRcbik6IFJlc3VsdCB8IHVuZGVmaW5lZCB7XG4gIGxldCByZXN1bHQ6IFJlc3VsdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBzb3VyY2VGaWxlIG9mIHZpc2l0KHRyZWUucm9vdCkpIHtcbiAgICByZXN1bHQgPSB2aXNpdG9yKHNvdXJjZUZpbGUsIHRyZWUsIHJlc3VsdCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmlzaXRUZW1wbGF0ZXMoXG4gIHRyZWU6IFRyZWUsXG4gIHZpc2l0b3I6IChcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgZmlsZU5hbWU6IHN0cmluZztcbiAgICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICAgIGlubGluZTogYm9vbGVhbjtcbiAgICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgfSxcbiAgICB0cmVlOiBUcmVlXG4gICkgPT4gdm9pZFxuKTogdm9pZCB7XG4gIHZpc2l0VFNTb3VyY2VGaWxlcyh0cmVlLCBzb3VyY2UgPT4ge1xuICAgIHZpc2l0Q29tcG9uZW50cyhzb3VyY2UsIChfLCBkZWNvcmF0b3JFeHByZXNzaW9uTm9kZSkgPT4ge1xuICAgICAgdHMuZm9yRWFjaENoaWxkKGRlY29yYXRvckV4cHJlc3Npb25Ob2RlLCBmdW5jdGlvbiBmaW5kVGVtcGxhdGVzKG4pIHtcbiAgICAgICAgaWYgKHRzLmlzUHJvcGVydHlBc3NpZ25tZW50KG4pICYmIHRzLmlzSWRlbnRpZmllcihuLm5hbWUpKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbi5uYW1lLnRleHQgPT09ICd0ZW1wbGF0ZScgJiZcbiAgICAgICAgICAgIHRzLmlzU3RyaW5nTGl0ZXJhbExpa2Uobi5pbml0aWFsaXplcilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gYWRkIGFuIG9mZnNldCBvZiBvbmUgdG8gdGhlIHN0YXJ0IGJlY2F1c2UgdGhlIHRlbXBsYXRlIHF1b3RlcyBhcmVcbiAgICAgICAgICAgIC8vIG5vdCBwYXJ0IG9mIHRoZSB0ZW1wbGF0ZSBjb250ZW50LlxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVTdGFydElkeCA9IG4uaW5pdGlhbGl6ZXIuZ2V0U3RhcnQoKSArIDE7XG4gICAgICAgICAgICB2aXNpdG9yKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6IHNvdXJjZS5maWxlTmFtZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBuLmluaXRpYWxpemVyLnRleHQsXG4gICAgICAgICAgICAgICAgaW5saW5lOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXJ0OiB0ZW1wbGF0ZVN0YXJ0SWR4LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0cmVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBuLm5hbWUudGV4dCA9PT0gJ3RlbXBsYXRlVXJsJyAmJlxuICAgICAgICAgICAgdHMuaXNTdHJpbmdMaXRlcmFsTGlrZShuLmluaXRpYWxpemVyKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBub3JtYWxpemUoc291cmNlLmZpbGVOYW1lKVxuICAgICAgICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAgICAgICAuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcmVzb2x2ZShcbiAgICAgICAgICAgICAgbm9ybWFsaXplKHBhcnRzLmpvaW4oJy8nKSksXG4gICAgICAgICAgICAgIG5vcm1hbGl6ZShuLmluaXRpYWxpemVyLnRleHQpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCF0cmVlLmV4aXN0cyh0ZW1wbGF0ZVBhdGgpKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSB0cmVlLnJlYWQodGVtcGxhdGVQYXRoKTtcbiAgICAgICAgICAgIGlmICghZmlsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2aXNpdG9yKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6IHRlbXBsYXRlUGF0aCxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBmaWxlQ29udGVudC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIGlubGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRyZWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdHMuZm9yRWFjaENoaWxkKG4sIGZpbmRUZW1wbGF0ZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmlzaXROZ01vZHVsZUltcG9ydHMoXG4gIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG4gIGNhbGxiYWNrOiAoXG4gICAgaW1wb3J0Tm9kZTogdHMuUHJvcGVydHlBc3NpZ25tZW50LFxuICAgIGVsZW1lbnRFeHByZXNzaW9uczogdHMuTm9kZUFycmF5PHRzLkV4cHJlc3Npb24+XG4gICkgPT4gdm9pZFxuKSB7XG4gIHZpc2l0TmdNb2R1bGVQcm9wZXJ0eShzb3VyY2VGaWxlLCBjYWxsYmFjaywgJ2ltcG9ydHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0TmdNb2R1bGVFeHBvcnRzKFxuICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuICBjYWxsYmFjazogKFxuICAgIGV4cG9ydE5vZGU6IHRzLlByb3BlcnR5QXNzaWdubWVudCxcbiAgICBlbGVtZW50RXhwcmVzc2lvbnM6IHRzLk5vZGVBcnJheTx0cy5FeHByZXNzaW9uPlxuICApID0+IHZvaWRcbikge1xuICB2aXNpdE5nTW9kdWxlUHJvcGVydHkoc291cmNlRmlsZSwgY2FsbGJhY2ssICdleHBvcnRzJyk7XG59XG5cbmZ1bmN0aW9uIHZpc2l0TmdNb2R1bGVQcm9wZXJ0eShcbiAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgY2FsbGJhY2s6IChcbiAgICBub2RlczogdHMuUHJvcGVydHlBc3NpZ25tZW50LFxuICAgIGVsZW1lbnRFeHByZXNzaW9uczogdHMuTm9kZUFycmF5PHRzLkV4cHJlc3Npb24+XG4gICkgPT4gdm9pZCxcbiAgcHJvcGVydHk6IHN0cmluZ1xuKSB7XG4gIHZpc2l0TmdNb2R1bGVzKHNvdXJjZUZpbGUsIChfLCBkZWNvcmF0b3JFeHByZXNzaW9uTm9kZSkgPT4ge1xuICAgIHRzLmZvckVhY2hDaGlsZChkZWNvcmF0b3JFeHByZXNzaW9uTm9kZSwgZnVuY3Rpb24gZmluZFRlbXBsYXRlcyhuKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRzLmlzUHJvcGVydHlBc3NpZ25tZW50KG4pICYmXG4gICAgICAgIHRzLmlzSWRlbnRpZmllcihuLm5hbWUpICYmXG4gICAgICAgIG4ubmFtZS50ZXh0ID09PSBwcm9wZXJ0eSAmJlxuICAgICAgICB0cy5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24obi5pbml0aWFsaXplcilcbiAgICAgICkge1xuICAgICAgICBjYWxsYmFjayhuLCBuLmluaXRpYWxpemVyLmVsZW1lbnRzKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0cy5mb3JFYWNoQ2hpbGQobiwgZmluZFRlbXBsYXRlcyk7XG4gICAgfSk7XG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0Q29tcG9uZW50cyhcbiAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgY2FsbGJhY2s6IChcbiAgICBjbGFzc0RlY2xhcmF0aW9uTm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbixcbiAgICBkZWNvcmF0b3JFeHByZXNzaW9uTm9kZTogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb25cbiAgKSA9PiB2b2lkXG4pIHtcbiAgdmlzaXREZWNvcmF0b3Ioc291cmNlRmlsZSwgJ0NvbXBvbmVudCcsIGNhbGxiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0TmdNb2R1bGVzKFxuICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuICBjYWxsYmFjazogKFxuICAgIGNsYXNzRGVjbGFyYXRpb25Ob2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLFxuICAgIGRlY29yYXRvckV4cHJlc3Npb25Ob2RlOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvblxuICApID0+IHZvaWRcbikge1xuICB2aXNpdERlY29yYXRvcihzb3VyY2VGaWxlLCAnTmdNb2R1bGUnLCBjYWxsYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdERlY29yYXRvcihcbiAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogKFxuICAgIGNsYXNzRGVjbGFyYXRpb25Ob2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLFxuICAgIGRlY29yYXRvckV4cHJlc3Npb25Ob2RlOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvblxuICApID0+IHZvaWRcbikge1xuICB0cy5mb3JFYWNoQ2hpbGQoc291cmNlRmlsZSwgZnVuY3Rpb24gZmluZENsYXNzRGVjbGFyYXRpb24obm9kZSkge1xuICAgIGlmICghdHMuaXNDbGFzc0RlY2xhcmF0aW9uKG5vZGUpKSB7XG4gICAgICB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZmluZENsYXNzRGVjbGFyYXRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzRGVjbGFyYXRpb25Ob2RlID0gbm9kZSBhcyB0cy5DbGFzc0RlY2xhcmF0aW9uO1xuXG4gICAgaWYgKFxuICAgICAgIWNsYXNzRGVjbGFyYXRpb25Ob2RlLmRlY29yYXRvcnMgfHxcbiAgICAgICFjbGFzc0RlY2xhcmF0aW9uTm9kZS5kZWNvcmF0b3JzLmxlbmd0aFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBvbmVudERlY29yYXRvciA9IGNsYXNzRGVjbGFyYXRpb25Ob2RlLmRlY29yYXRvcnMuZmluZChkID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRzLmlzQ2FsbEV4cHJlc3Npb24oZC5leHByZXNzaW9uKSAmJlxuICAgICAgICB0cy5pc0lkZW50aWZpZXIoZC5leHByZXNzaW9uLmV4cHJlc3Npb24pICYmXG4gICAgICAgIGQuZXhwcmVzc2lvbi5leHByZXNzaW9uLnRleHQgPT09IGRlY29yYXRvck5hbWVcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpZiAoIWNvbXBvbmVudERlY29yYXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZXhwcmVzc2lvbiB9ID0gY29tcG9uZW50RGVjb3JhdG9yO1xuICAgIGlmICghdHMuaXNDYWxsRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFthcmddID0gZXhwcmVzc2lvbi5hcmd1bWVudHM7XG4gICAgaWYgKCF0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKGFyZykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjYWxsYmFjayhjbGFzc0RlY2xhcmF0aW9uTm9kZSwgYXJnKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uKiB2aXNpdChkaXJlY3Rvcnk6IERpckVudHJ5KTogSXRlcmFibGVJdGVyYXRvcjx0cy5Tb3VyY2VGaWxlPiB7XG4gIGZvciAoY29uc3QgcGF0aCBvZiBkaXJlY3Rvcnkuc3ViZmlsZXMpIHtcbiAgICBpZiAocGF0aC5lbmRzV2l0aCgnLnRzJykgJiYgIXBhdGguZW5kc1dpdGgoJy5kLnRzJykpIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gZGlyZWN0b3J5LmZpbGUocGF0aCk7XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGVudHJ5LmNvbnRlbnQ7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgICAgICAgZW50cnkucGF0aCxcbiAgICAgICAgICBjb250ZW50LnRvU3RyaW5nKCkucmVwbGFjZSgvXlxcdUZFRkYvLCAnJyksXG4gICAgICAgICAgdHMuU2NyaXB0VGFyZ2V0LkxhdGVzdCxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHlpZWxkIHNvdXJjZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IHBhdGggb2YgZGlyZWN0b3J5LnN1YmRpcnMpIHtcbiAgICBpZiAocGF0aCA9PT0gJ25vZGVfbW9kdWxlcycpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHlpZWxkKiB2aXNpdChkaXJlY3RvcnkuZGlyKHBhdGgpKTtcbiAgfVxufVxuIl19