@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.
- package/lib/assign.d.ts +0 -1
- package/lib/assign.js +3 -38
- package/lib/client.d.ts +4 -0
- package/lib/client.js +44 -10
- package/lib/collections-graph.d.ts +16 -0
- package/lib/collections-graph.js +137 -0
- package/lib/common.d.ts +5 -0
- package/lib/common.js +49 -0
- package/lib/date.d.ts +4 -4
- package/lib/date.js +15 -78
- package/lib/forEach.d.ts +1 -0
- package/lib/forEach.js +16 -0
- package/lib/index.d.ts +6 -1
- package/lib/index.js +66 -31
- package/lib/merge.js +0 -6
- package/lib/mixin/AsyncEmitter.js +2 -18
- package/lib/mixin/index.js +0 -1
- package/lib/number.js +2 -10
- package/lib/parse-date.d.ts +3 -0
- package/lib/parse-date.js +220 -0
- package/lib/parse-filter.d.ts +142 -0
- package/lib/parse-filter.js +299 -0
- package/lib/registry.js +2 -11
- package/lib/requireModule.js +0 -4
- package/lib/server.js +0 -18
- package/lib/toposort.js +0 -10
- package/lib/uid.js +2 -6
- package/package.json +4 -3
|
@@ -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
|
-
}
|
|
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;
|
package/lib/requireModule.js
CHANGED
|
@@ -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
|
-
|
|
9
|
-
|
|
8
|
+
HEX = '';
|
|
10
9
|
while (IDX--) HEX += IDX.toString(36);
|
|
11
|
-
|
|
12
10
|
function uid(len) {
|
|
13
11
|
let str = '',
|
|
14
|
-
|
|
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.
|
|
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": "
|
|
17
|
+
"gitHead": "a4f103eb0144f07205aff7b2a6be8ea6aa1330df"
|
|
17
18
|
}
|