@webkrafters/eagleeye 1.0.1 → 1.0.3

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.
@@ -76,3 +76,5 @@ export declare class EagleEyeContext<T extends State = State> {
76
76
  export declare function createEagleEye<T extends State = State>(props?: RawProviderProps<T>): EagleEyeContext<T>;
77
77
  export declare function createEagleEye<T extends State = State>(props?: ProviderProps<T>): EagleEyeContext<T>;
78
78
  export declare function mkReadonly(v: any): any;
79
+ export declare function set<T>(obj: {}, path: Array<string | number>, value: T): void;
80
+ export declare function set<T>(obj: {}, path: string, value: T): void;
@@ -121,11 +121,11 @@ Object.defineProperty(exports, "__esModule", {
121
121
  exports.EagleEyeContext = exports.Channel = exports.ACCESS_SYM = exports.deps = void 0;
122
122
  exports.createEagleEye = createEagleEye;
123
123
  exports.mkReadonly = mkReadonly;
124
+ exports.set = set;
124
125
  var lodash_isboolean_1 = __importDefault(require("lodash.isboolean"));
125
126
  var lodash_isempty_1 = __importDefault(require("lodash.isempty"));
126
127
  var lodash_isequal_1 = __importDefault(require("lodash.isequal"));
127
128
  var lodash_isplainobject_1 = __importDefault(require("lodash.isplainobject"));
128
- var lodash_set_1 = __importDefault(require("lodash.set"));
129
129
  var get_property_1 = __importDefault(require("@webkrafters/get-property"));
130
130
  var path_dotize_1 = __importDefault(require("@webkrafters/path-dotize"));
131
131
  var auto_immutable_1 = __importDefault(require("@webkrafters/auto-immutable"));
@@ -1004,7 +1004,7 @@ function _getState(connection, propertyPaths) {
1004
1004
  var data = connection.get.apply(connection, _toConsumableArray(propertyPaths));
1005
1005
  var state = {};
1006
1006
  for (var d in data) {
1007
- (0, lodash_set_1["default"])(state, d, data[d]);
1007
+ set(state, d, data[d]);
1008
1008
  }
1009
1009
  return mkReadonly(state);
1010
1010
  }
@@ -1048,4 +1048,29 @@ function streamable(method, context) {
1048
1048
  return method.apply(this, args);
1049
1049
  }
1050
1050
  };
1051
+ }
1052
+ var OPEN_PTN = /^[[.]+/;
1053
+ var CLOSE_PTN = /[.\]]+$/;
1054
+ var SEP_PTN = /\]*[[\].]+/;
1055
+ var NUMERIC_PTN = /^[0-9]+$/;
1056
+ function set(obj, path, value) {
1057
+ if (!Array.isArray(path)) {
1058
+ path = path.replace(OPEN_PTN, '').replace(CLOSE_PTN, '').split(SEP_PTN);
1059
+ }
1060
+ var pLen = path.length - 1;
1061
+ for (var p = 0; p < pLen; p++) {
1062
+ var key = path[p];
1063
+ var isArrayChildKey = NUMERIC_PTN.test(path[p + 1]);
1064
+ if (!obj[key] || _typeof(obj[key]) !== 'object') {
1065
+ obj[key] = isArrayChildKey ? [] : {};
1066
+ } else if (!isArrayChildKey && Array.isArray(obj[key])) {
1067
+ var arr = obj[key];
1068
+ obj[key] = {};
1069
+ for (var aLen = arr.length, a = 0; a < aLen; a++) {
1070
+ obj[key][a] = arr[a];
1071
+ }
1072
+ }
1073
+ obj = obj[key];
1074
+ }
1075
+ obj[path[pLen]] = value;
1051
1076
  }
package/package.json CHANGED
@@ -46,7 +46,6 @@
46
46
  "lodash.isobject": "^3.0.2",
47
47
  "lodash.isplainobject": "^4.0.6",
48
48
  "lodash.omit": "^4.5.0",
49
- "lodash.set": "^4.3.2",
50
49
  "setimmediate": "^1.0.5",
51
50
  "ts-jest": "^29.1.2",
52
51
  "ts-node": "^10.9.2",
@@ -79,8 +78,7 @@
79
78
  "lodash.isempty": ">= 0.1.0",
80
79
  "lodash.isequal": ">= 0.1.0",
81
80
  "lodash.isplainobject": ">= 0.8.0",
82
- "lodash.omit": ">= 0.1.0",
83
- "lodash.set": ">= 0.1.0"
81
+ "lodash.omit": ">= 0.1.0"
84
82
  },
85
83
  "publishConfig": {
86
84
  "access": "public"
@@ -97,7 +95,7 @@
97
95
  "test:watch": "eslint --fix && jest --updateSnapshot --watchAll"
98
96
  },
99
97
  "types": "dist/index.d.ts",
100
- "version": "1.0.1",
98
+ "version": "1.0.3",
101
99
  "dependencies": {
102
100
  "@webkrafters/auto-immutable": "^2.0.5"
103
101
  }