@nocobase/utils 0.9.1-alpha.1 → 0.9.2-alpha.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.
@@ -0,0 +1,142 @@
1
+ export declare type ParseFilterOptions = {
2
+ vars?: Record<string, any>;
3
+ now?: any;
4
+ timezone?: string;
5
+ getField?: any;
6
+ };
7
+ export declare const parseFilter: (filter: any, opts?: ParseFilterOptions) => Promise<{}>;
8
+ export declare type GetDayRangeOptions = {
9
+ now?: any;
10
+ timezone?: string;
11
+ offset: number;
12
+ };
13
+ export declare function getDayRange(options: GetDayRangeOptions): string[];
14
+ export declare type Utc2unitOptions = {
15
+ now?: any;
16
+ unit: any;
17
+ timezone?: string;
18
+ offset?: number;
19
+ };
20
+ export declare function utc2unit(options: Utc2unitOptions): any;
21
+ export declare function getDateVars(): {
22
+ today: ({ now, timezone, field }: {
23
+ now: any;
24
+ timezone: any;
25
+ field: any;
26
+ }) => any;
27
+ yesterday: ({ now, timezone, field }: {
28
+ now: any;
29
+ timezone: any;
30
+ field: any;
31
+ }) => any;
32
+ tomorrow: ({ now, timezone, field }: {
33
+ now: any;
34
+ timezone: any;
35
+ field: any;
36
+ }) => any;
37
+ thisWeek: ({ now, timezone, field }: {
38
+ now: any;
39
+ timezone: any;
40
+ field: any;
41
+ }) => any;
42
+ lastWeek: ({ now, timezone, field }: {
43
+ now: any;
44
+ timezone: any;
45
+ field: any;
46
+ }) => any;
47
+ nextWeek: ({ now, timezone, field }: {
48
+ now: any;
49
+ timezone: any;
50
+ field: any;
51
+ }) => any;
52
+ thisIsoWeek: ({ now, timezone, field }: {
53
+ now: any;
54
+ timezone: any;
55
+ field: any;
56
+ }) => any;
57
+ lastIsoWeek: ({ now, timezone, field }: {
58
+ now: any;
59
+ timezone: any;
60
+ field: any;
61
+ }) => any;
62
+ nextIsoWeek: ({ now, timezone, field }: {
63
+ now: any;
64
+ timezone: any;
65
+ field: any;
66
+ }) => any;
67
+ thisMonth: ({ now, timezone, field }: {
68
+ now: any;
69
+ timezone: any;
70
+ field: any;
71
+ }) => any;
72
+ lastMonth: ({ now, timezone, field }: {
73
+ now: any;
74
+ timezone: any;
75
+ field: any;
76
+ }) => any;
77
+ nextMonth: ({ now, timezone, field }: {
78
+ now: any;
79
+ timezone: any;
80
+ field: any;
81
+ }) => any;
82
+ thisQuarter: ({ now, timezone, field }: {
83
+ now: any;
84
+ timezone: any;
85
+ field: any;
86
+ }) => any;
87
+ lastQuarter: ({ now, timezone, field }: {
88
+ now: any;
89
+ timezone: any;
90
+ field: any;
91
+ }) => any;
92
+ nextQuarter: ({ now, timezone, field }: {
93
+ now: any;
94
+ timezone: any;
95
+ field: any;
96
+ }) => any;
97
+ thisYear: ({ now, timezone, field }: {
98
+ now: any;
99
+ timezone: any;
100
+ field: any;
101
+ }) => any;
102
+ lastYear: ({ now, timezone, field }: {
103
+ now: any;
104
+ timezone: any;
105
+ field: any;
106
+ }) => any;
107
+ nextYear: ({ now, timezone, field }: {
108
+ now: any;
109
+ timezone: any;
110
+ field: any;
111
+ }) => any;
112
+ last7Days: ({ now, timezone, field }: {
113
+ now: any;
114
+ timezone: any;
115
+ field: any;
116
+ }) => string[];
117
+ next7Days: ({ now, timezone, field }: {
118
+ now: any;
119
+ timezone: any;
120
+ field: any;
121
+ }) => string[];
122
+ last30Days: ({ now, timezone, field }: {
123
+ now: any;
124
+ timezone: any;
125
+ field: any;
126
+ }) => string[];
127
+ next30Days: ({ now, timezone, field }: {
128
+ now: any;
129
+ timezone: any;
130
+ field: any;
131
+ }) => string[];
132
+ last90Days: ({ now, timezone, field }: {
133
+ now: any;
134
+ timezone: any;
135
+ field: any;
136
+ }) => string[];
137
+ next90Days: ({ now, timezone, field }: {
138
+ now: any;
139
+ timezone: any;
140
+ field: any;
141
+ }) => string[];
142
+ };
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getDateVars = getDateVars;
7
+ exports.getDayRange = getDayRange;
8
+ exports.parseFilter = void 0;
9
+ exports.utc2unit = utc2unit;
10
+ function _get() {
11
+ const data = _interopRequireDefault(require("lodash/get"));
12
+ _get = function _get() {
13
+ return data;
14
+ };
15
+ return data;
16
+ }
17
+ function _set() {
18
+ const data = _interopRequireDefault(require("lodash/set"));
19
+ _set = function _set() {
20
+ return data;
21
+ };
22
+ return data;
23
+ }
24
+ function _moment() {
25
+ const data = _interopRequireDefault(require("moment"));
26
+ _moment = function _moment() {
27
+ return data;
28
+ };
29
+ return data;
30
+ }
31
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
33
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
34
+ const re = /^\s*\{\{([\s\S]*)\}\}\s*$/;
35
+ function isBuffer(obj) {
36
+ return obj && obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);
37
+ }
38
+ function keyIdentity(key) {
39
+ return key;
40
+ }
41
+ function flatten(target, opts) {
42
+ opts = opts || {};
43
+ const delimiter = opts.delimiter || '.';
44
+ const maxDepth = opts.maxDepth;
45
+ const transformKey = opts.transformKey || keyIdentity;
46
+ const transformValue = opts.transformValue || keyIdentity;
47
+ const output = {};
48
+ function step(object, prev, currentDepth) {
49
+ currentDepth = currentDepth || 1;
50
+ Object.keys(object).forEach(function (key) {
51
+ const value = object[key];
52
+ const isarray = opts.safe && Array.isArray(value);
53
+ const type = Object.prototype.toString.call(value);
54
+ const isbuffer = isBuffer(value);
55
+ const isobject = type === '[object Object]' || type === '[object Array]';
56
+ const newKey = prev ? prev + delimiter + transformKey(key) : transformKey(key);
57
+ if (opts.breakOn({
58
+ key
59
+ })) {
60
+ output[newKey] = transformValue(value, newKey);
61
+ return;
62
+ }
63
+ if (!isarray && !isbuffer && isobject && Object.keys(value).length && (!opts.maxDepth || currentDepth < maxDepth)) {
64
+ return step(value, newKey, currentDepth + 1);
65
+ }
66
+ output[newKey] = transformValue(value, newKey);
67
+ });
68
+ }
69
+ step(target);
70
+ return output;
71
+ }
72
+ function unflatten(obj, opts = {}) {
73
+ const parsed = {};
74
+ const transformValue = opts.transformValue || keyIdentity;
75
+ Object.keys(obj).forEach(key => {
76
+ (0, _set().default)(parsed, key, transformValue(obj[key], key));
77
+ });
78
+ return parsed;
79
+ }
80
+ const parsePath = path => {
81
+ let operator = path.split('.').pop() || '';
82
+ if (!operator.startsWith('$')) {
83
+ operator = '';
84
+ }
85
+ return {
86
+ operator
87
+ };
88
+ };
89
+ const isDateOperator = op => {
90
+ return ['$dateOn', '$dateNotOn', '$dateBefore', '$dateAfter', '$dateNotBefore', '$dateNotAfter', '$dateBetween'].includes(op);
91
+ };
92
+ function isDate(input) {
93
+ return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
94
+ }
95
+ const dateValueWrapper = (value, timezone) => {
96
+ if (!value) {
97
+ return null;
98
+ }
99
+ if (Array.isArray(value)) {
100
+ if (value.length === 2) {
101
+ value.push('[]', timezone);
102
+ } else if (value.length === 3) {
103
+ value.push(timezone);
104
+ }
105
+ return value;
106
+ }
107
+ if (typeof value === 'string') {
108
+ if (!timezone || /(\+|\-)\d\d\:\d\d$/.test(value)) {
109
+ return value;
110
+ }
111
+ return value + timezone;
112
+ }
113
+ if (isDate(value)) {
114
+ return value.toISOString();
115
+ }
116
+ };
117
+ const parseFilter = /*#__PURE__*/function () {
118
+ var _ref = _asyncToGenerator(function* (filter, opts = {}) {
119
+ const userFieldsSet = new Set();
120
+ const vars = opts.vars || {};
121
+ const timezone = opts.timezone;
122
+ const now = opts.now;
123
+ const getField = opts.getField;
124
+ const flat = flatten(filter, {
125
+ breakOn({
126
+ key
127
+ }) {
128
+ return key.startsWith('$') && key !== '$and' && key !== '$or';
129
+ },
130
+ transformValue(value) {
131
+ if (typeof value !== 'string') {
132
+ return value;
133
+ }
134
+ // parse user fields parameter
135
+ const match = re.exec(value);
136
+ if (match) {
137
+ const key = match[1].trim();
138
+ if (key.startsWith('$user')) {
139
+ userFieldsSet.add(key.substring(6));
140
+ }
141
+ }
142
+ return value;
143
+ }
144
+ });
145
+ if (userFieldsSet.size > 0) {
146
+ const $user = yield vars.$user({
147
+ fields: [...userFieldsSet.values()]
148
+ });
149
+ Object.assign(vars, {
150
+ $user
151
+ });
152
+ }
153
+ return unflatten(flat, {
154
+ transformValue(value, path) {
155
+ const _parsePath = parsePath(path),
156
+ operator = _parsePath.operator;
157
+ // parse string variables
158
+ if (typeof value === 'string') {
159
+ const match = re.exec(value);
160
+ if (match) {
161
+ const key = match[1].trim();
162
+ const val = (0, _get().default)(vars, key, null);
163
+ const field = getField === null || getField === void 0 ? void 0 : getField(path);
164
+ value = typeof val === 'function' ? val === null || val === void 0 ? void 0 : val({
165
+ field,
166
+ operator,
167
+ timezone,
168
+ now
169
+ }) : val;
170
+ }
171
+ }
172
+ if (isDateOperator(operator)) {
173
+ const field = getField === null || getField === void 0 ? void 0 : getField(path);
174
+ return dateValueWrapper(value, (field === null || field === void 0 ? void 0 : field.timezone) || timezone);
175
+ }
176
+ return value;
177
+ }
178
+ });
179
+ });
180
+ return function parseFilter(_x) {
181
+ return _ref.apply(this, arguments);
182
+ };
183
+ }();
184
+ exports.parseFilter = parseFilter;
185
+ function getDayRange(options) {
186
+ const now = options.now,
187
+ _options$timezone = options.timezone,
188
+ timezone = _options$timezone === void 0 ? '+00:00' : _options$timezone,
189
+ offset = options.offset;
190
+ let m = toMoment(now).utcOffset(timezone);
191
+ if (offset > 0) {
192
+ return [
193
+ // 第二天开始计算
194
+ m.add(1, 'day').startOf('day').format('YYYY-MM-DD'),
195
+ // 第九天开始前结束
196
+ m.clone().add(offset, 'day').startOf('day').format('YYYY-MM-DD'), '[)', timezone];
197
+ }
198
+ return [
199
+ // 今天开始前
200
+ m.clone().subtract(-1 * offset - 1, 'day').startOf('day').format('YYYY-MM-DD'),
201
+ // 明天开始前
202
+ m.clone().add(1, 'day').startOf('day').format('YYYY-MM-DD'), '[)', timezone];
203
+ }
204
+ function toMoment(value) {
205
+ if (!value) {
206
+ return (0, _moment().default)();
207
+ }
208
+ if (_moment().default.isMoment(value)) {
209
+ return value;
210
+ }
211
+ return (0, _moment().default)(value);
212
+ }
213
+ function utc2unit(options) {
214
+ var _fn$unit;
215
+ const now = options.now,
216
+ unit = options.unit,
217
+ _options$timezone2 = options.timezone,
218
+ timezone = _options$timezone2 === void 0 ? '+00:00' : _options$timezone2,
219
+ offset = options.offset;
220
+ let m = toMoment(now);
221
+ m.utcOffset(timezone);
222
+ m.startOf(unit);
223
+ if (offset > 0) {
224
+ m.add(offset, unit === 'isoWeek' ? 'week' : unit);
225
+ } else if (offset < 0) {
226
+ m.subtract(-1 * offset, unit === 'isoWeek' ? 'week' : unit);
227
+ }
228
+ const fn = {
229
+ year: () => m.format('YYYY'),
230
+ quarter: () => m.format('YYYY[Q]Q'),
231
+ month: () => m.format('YYYY-MM'),
232
+ week: () => m.format('gggg[w]ww'),
233
+ isoWeek: () => m.format('GGGG[W]WW'),
234
+ day: () => m.format('YYYY-MM-DD')
235
+ };
236
+ const r = (_fn$unit = fn[unit]) === null || _fn$unit === void 0 ? void 0 : _fn$unit.call(fn);
237
+ return timezone ? r + timezone : r;
238
+ }
239
+ const toUnit = (unit, offset) => {
240
+ return ({
241
+ now,
242
+ timezone,
243
+ field
244
+ }) => {
245
+ if (field === null || field === void 0 ? void 0 : field.timezone) {
246
+ timezone = field === null || field === void 0 ? void 0 : field.timezone;
247
+ }
248
+ return utc2unit({
249
+ now,
250
+ timezone,
251
+ unit,
252
+ offset
253
+ });
254
+ };
255
+ };
256
+ const toDays = offset => {
257
+ return ({
258
+ now,
259
+ timezone,
260
+ field
261
+ }) => {
262
+ if (field === null || field === void 0 ? void 0 : field.timezone) {
263
+ timezone = field === null || field === void 0 ? void 0 : field.timezone;
264
+ }
265
+ return getDayRange({
266
+ now,
267
+ timezone,
268
+ offset
269
+ });
270
+ };
271
+ };
272
+ function getDateVars() {
273
+ return {
274
+ today: toUnit('day'),
275
+ yesterday: toUnit('day', -1),
276
+ tomorrow: toUnit('day', 1),
277
+ thisWeek: toUnit('week'),
278
+ lastWeek: toUnit('week', -1),
279
+ nextWeek: toUnit('week', 1),
280
+ thisIsoWeek: toUnit('isoWeek'),
281
+ lastIsoWeek: toUnit('isoWeek', -1),
282
+ nextIsoWeek: toUnit('isoWeek', 1),
283
+ thisMonth: toUnit('month'),
284
+ lastMonth: toUnit('month', -1),
285
+ nextMonth: toUnit('month', 1),
286
+ thisQuarter: toUnit('quarter'),
287
+ lastQuarter: toUnit('quarter', -1),
288
+ nextQuarter: toUnit('quarter', 1),
289
+ thisYear: toUnit('year'),
290
+ lastYear: toUnit('year', -1),
291
+ nextYear: toUnit('year', 1),
292
+ last7Days: toDays(-7),
293
+ next7Days: toDays(7),
294
+ last30Days: toDays(-30),
295
+ next30Days: toDays(30),
296
+ last90Days: toDays(-90),
297
+ next90Days: toDays(90)
298
+ };
299
+ }
package/lib/registry.js CHANGED
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.Registry = void 0;
7
-
8
7
  class Registry {
9
8
  constructor(options = {
10
9
  override: false
@@ -13,37 +12,29 @@ class Registry {
13
12
  this.options = void 0;
14
13
  this.options = options;
15
14
  }
16
-
17
15
  register(key, value) {
18
16
  if (!this.options.override && this.map.has(key)) {
19
17
  throw new Error(`this registry does not allow to override existing keys: "${key}"`);
20
18
  }
21
-
22
19
  this.map.set(key, value);
23
- } // async import({ directory, extensions = ['.js', '.ts', '.json'] }) {
20
+ }
21
+ // async import({ directory, extensions = ['.js', '.ts', '.json'] }) {
24
22
  // const files = await fs.readdir(directory);
25
23
  // return files.filter(file => extensions.includes(path.extname(file)))
26
24
  // }
27
-
28
-
29
25
  get(key) {
30
26
  return this.map.get(key);
31
27
  }
32
-
33
28
  getKeys() {
34
29
  return this.map.keys();
35
30
  }
36
-
37
31
  getValues() {
38
32
  return this.map.values();
39
33
  }
40
-
41
34
  getEntities() {
42
35
  return this.map.entries();
43
36
  }
44
-
45
37
  }
46
-
47
38
  exports.Registry = Registry;
48
39
  var _default = Registry;
49
40
  exports.default = _default;
@@ -5,18 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  exports.requireModule = requireModule;
8
-
9
8
  function requireModule(m) {
10
9
  if (typeof m === 'string') {
11
10
  m = require(m);
12
11
  }
13
-
14
12
  if (typeof m !== 'object') {
15
13
  return m;
16
14
  }
17
-
18
15
  return m.__esModule ? m.default : m;
19
16
  }
20
-
21
17
  var _default = requireModule;
22
18
  exports.default = _default;
package/lib/server.js CHANGED
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  var _date = require("./date");
8
-
9
7
  Object.keys(_date).forEach(function (key) {
10
8
  if (key === "default" || key === "__esModule") return;
11
9
  if (key in exports && exports[key] === _date[key]) return;
@@ -16,9 +14,7 @@ Object.keys(_date).forEach(function (key) {
16
14
  }
17
15
  });
18
16
  });
19
-
20
17
  var _merge = require("./merge");
21
-
22
18
  Object.keys(_merge).forEach(function (key) {
23
19
  if (key === "default" || key === "__esModule") return;
24
20
  if (key in exports && exports[key] === _merge[key]) return;
@@ -29,9 +25,7 @@ Object.keys(_merge).forEach(function (key) {
29
25
  }
30
26
  });
31
27
  });
32
-
33
28
  var _mixin = require("./mixin");
34
-
35
29
  Object.keys(_mixin).forEach(function (key) {
36
30
  if (key === "default" || key === "__esModule") return;
37
31
  if (key in exports && exports[key] === _mixin[key]) return;
@@ -42,9 +36,7 @@ Object.keys(_mixin).forEach(function (key) {
42
36
  }
43
37
  });
44
38
  });
45
-
46
39
  var _AsyncEmitter = require("./mixin/AsyncEmitter");
47
-
48
40
  Object.keys(_AsyncEmitter).forEach(function (key) {
49
41
  if (key === "default" || key === "__esModule") return;
50
42
  if (key in exports && exports[key] === _AsyncEmitter[key]) return;
@@ -55,9 +47,7 @@ Object.keys(_AsyncEmitter).forEach(function (key) {
55
47
  }
56
48
  });
57
49
  });
58
-
59
50
  var _number = require("./number");
60
-
61
51
  Object.keys(_number).forEach(function (key) {
62
52
  if (key === "default" || key === "__esModule") return;
63
53
  if (key in exports && exports[key] === _number[key]) return;
@@ -68,9 +58,7 @@ Object.keys(_number).forEach(function (key) {
68
58
  }
69
59
  });
70
60
  });
71
-
72
61
  var _registry = require("./registry");
73
-
74
62
  Object.keys(_registry).forEach(function (key) {
75
63
  if (key === "default" || key === "__esModule") return;
76
64
  if (key in exports && exports[key] === _registry[key]) return;
@@ -81,9 +69,7 @@ Object.keys(_registry).forEach(function (key) {
81
69
  }
82
70
  });
83
71
  });
84
-
85
72
  var _requireModule = require("./requireModule");
86
-
87
73
  Object.keys(_requireModule).forEach(function (key) {
88
74
  if (key === "default" || key === "__esModule") return;
89
75
  if (key in exports && exports[key] === _requireModule[key]) return;
@@ -94,9 +80,7 @@ Object.keys(_requireModule).forEach(function (key) {
94
80
  }
95
81
  });
96
82
  });
97
-
98
83
  var _toposort = require("./toposort");
99
-
100
84
  Object.keys(_toposort).forEach(function (key) {
101
85
  if (key === "default" || key === "__esModule") return;
102
86
  if (key in exports && exports[key] === _toposort[key]) return;
@@ -107,9 +91,7 @@ Object.keys(_toposort).forEach(function (key) {
107
91
  }
108
92
  });
109
93
  });
110
-
111
94
  var _uid = require("./uid");
112
-
113
95
  Object.keys(_uid).forEach(function (key) {
114
96
  if (key === "default" || key === "__esModule") return;
115
97
  if (key in exports && exports[key] === _uid[key]) return;
package/lib/toposort.js CHANGED
@@ -4,19 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.Toposort = void 0;
7
-
8
7
  function _topo() {
9
8
  const data = _interopRequireDefault(require("@hapi/topo"));
10
-
11
9
  _topo = function _topo() {
12
10
  return data;
13
11
  };
14
-
15
12
  return data;
16
13
  }
17
-
18
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
15
  class Toposort extends _topo().default.Sorter {
21
16
  unshift(...items) {
22
17
  this._items.unshift(...items.map(node => ({
@@ -28,7 +23,6 @@ class Toposort extends _topo().default.Sorter {
28
23
  group: '?'
29
24
  })));
30
25
  }
31
-
32
26
  push(...items) {
33
27
  this._items.push(...items.map(node => ({
34
28
  node,
@@ -39,18 +33,14 @@ class Toposort extends _topo().default.Sorter {
39
33
  group: '?'
40
34
  })));
41
35
  }
42
-
43
36
  add(nodes, options) {
44
37
  if (options === null || options === void 0 ? void 0 : options.tag) {
45
38
  // @ts-ignore
46
39
  options.group = options.tag;
47
40
  }
48
-
49
41
  return super.add(nodes, options);
50
42
  }
51
-
52
43
  }
53
-
54
44
  exports.Toposort = Toposort;
55
45
  var _default = Toposort;
56
46
  exports.default = _default;
package/lib/uid.js CHANGED
@@ -5,15 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.uid = uid;
7
7
  let IDX = 36,
8
- HEX = '';
9
-
8
+ HEX = '';
10
9
  while (IDX--) HEX += IDX.toString(36);
11
-
12
10
  function uid(len) {
13
11
  let str = '',
14
- num = len || 11;
15
-
12
+ num = len || 11;
16
13
  while (num--) str += HEX[Math.random() * 36 | 0];
17
-
18
14
  return str;
19
15
  }
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "@nocobase/utils",
3
- "version": "0.9.1-alpha.1",
3
+ "version": "0.9.2-alpha.1",
4
4
  "main": "lib/index.js",
5
5
  "types": "./lib/index.d.ts",
6
6
  "license": "Apache-2.0",
7
7
  "dependencies": {
8
8
  "@hapi/topo": "^6.0.0",
9
9
  "deepmerge": "^4.2.2",
10
- "flat-to-nested": "^1.1.1"
10
+ "flat-to-nested": "^1.1.1",
11
+ "graphlib": "^2.1.8"
11
12
  },
12
13
  "peerDependencies": {
13
14
  "moment": "2.x",
14
15
  "rc-input-number": "7.x"
15
16
  },
16
- "gitHead": "56cb184b00dc383b853015d525bf6e79dea92169"
17
+ "gitHead": "a4f103eb0144f07205aff7b2a6be8ea6aa1330df"
17
18
  }