@astrolimit/fc-utils 25.12.18

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,157 @@
1
+ //#region src/debounce.d.ts
2
+ /**
3
+ * 防抖函数工具
4
+ * 在指定时间内只执行最后一次函数调用
5
+ */
6
+ /**
7
+ * 防抖函数
8
+ * @param fn - 要防抖的函数
9
+ * @param wait - 等待时间(毫秒)
10
+ * @returns 防抖后的函数
11
+ */
12
+ declare function debounce<T extends (...args: any[]) => any>(fn: T, wait: number): (...args: Parameters<T>) => void;
13
+ //#endregion
14
+ //#region src/toarray.d.ts
15
+ declare function toArray(value: any): any[];
16
+ //#endregion
17
+ //#region src/tostring.d.ts
18
+ /**
19
+ * 转换为字符串工具
20
+ * 将值转换为字符串表示
21
+ */
22
+ /**
23
+ * 将值转换为字符串
24
+ * @param val - 要转换的值
25
+ * @returns 字符串表示
26
+ */
27
+ declare function toString(val: any): string;
28
+ //#endregion
29
+ //#region src/topromise.d.ts
30
+ declare function toPromise(value: any): any;
31
+ //#endregion
32
+ //#region src/toline.d.ts
33
+ declare function toLine(name: string): string;
34
+ //#endregion
35
+ //#region src/todate.d.ts
36
+ declare function toDate(timeStamp: number | string | Date): string | number | Date;
37
+ //#endregion
38
+ //#region src/deepextend.d.ts
39
+ /**
40
+ * 深度扩展对象
41
+ * @param origin - 源对象
42
+ * @param target - 目标对象,默认为空对象
43
+ * @param mode - 模式:true 表示使用 getRule,false 表示使用 _clone,undefined 表示普通模式
44
+ * @returns 扩展后的对象
45
+ */
46
+ declare function deepExtend<T extends Record<string, any> | any[]>(origin: T, target?: any, mode?: boolean): T;
47
+ /**
48
+ * 深度复制对象
49
+ * @param value - 要复制的值
50
+ * @returns 复制后的值
51
+ */
52
+ declare function deepCopy<T>(value: T): T;
53
+ /**
54
+ * 深度扩展多个对象
55
+ * @param origin - 源对象
56
+ * @param lst - 要扩展的对象列表
57
+ * @returns 扩展后的对象
58
+ */
59
+ declare function deepExtendArgs<T extends Record<string, any> | any[]>(origin: T, ...lst: any[]): T;
60
+ //#endregion
61
+ //#region src/extend.d.ts
62
+ declare function extend(): any;
63
+ declare function copy<T>(obj: T): T;
64
+ //#endregion
65
+ //#region src/json.d.ts
66
+ declare function toJson(obj: Record<string | number, any>, space: number): string;
67
+ declare function parseFn(fn: string, mode: boolean): any;
68
+ declare function parseJson(json: string, mode: boolean): any;
69
+ //#endregion
70
+ //#region src/modify.d.ts
71
+ declare function $set<T extends Record<string, any>, K extends keyof T>(target: T, field: K, value: T[K]): void;
72
+ declare function $del<T extends Record<string, any>, K extends keyof T>(target: T, field: K): void;
73
+ //#endregion
74
+ //#region src/type.d.ts
75
+ /**
76
+ * 类型检查工具
77
+ * 提供各种类型判断方法
78
+ */
79
+ declare const is: {
80
+ readonly availStr: (val: any) => boolean;
81
+ /**
82
+ * 检查参数是否为指定类型
83
+ */
84
+ readonly type: (arg: any, type: string) => boolean;
85
+ /**
86
+ * 检查值是否为 undefined 或 null
87
+ */
88
+ readonly Nil: (v: any) => boolean;
89
+ /**
90
+ * 检查值是否为 undefined 或 null
91
+ */
92
+ readonly Undef: (v: any) => boolean;
93
+ /**
94
+ * 检查是否为 DOM 元素
95
+ */
96
+ readonly Element: (arg: any) => boolean;
97
+ /**
98
+ * 检查是否为非空数组
99
+ */
100
+ readonly trueArray: (data: any) => boolean;
101
+ /**
102
+ * 检查是否为函数
103
+ */
104
+ readonly Function: (v: any) => boolean;
105
+ /**
106
+ * 获取值的类型名称
107
+ */
108
+ readonly getType: (v: any) => string;
109
+ /**
110
+ * 检查值是否为空
111
+ */
112
+ readonly empty: (value: any) => boolean;
113
+ readonly Date: (arg: any) => boolean;
114
+ readonly Object: (arg: any) => boolean;
115
+ readonly String: (arg: any) => boolean;
116
+ readonly Boolean: (arg: any) => boolean;
117
+ readonly Array: (arg: any) => boolean;
118
+ readonly Number: (arg: any) => boolean;
119
+ };
120
+ /**
121
+ * 检查对象是否具有指定属性
122
+ * @param rule - 要检查的对象
123
+ * @param k - 属性名
124
+ * @returns 是否具有该属性
125
+ */
126
+ declare function hasProperty(rule: any, k: string): boolean;
127
+ //#endregion
128
+ //#region src/unique.d.ts
129
+ declare function uniqueId(): string;
130
+ declare function shortKey(): string;
131
+ //#endregion
132
+ //#region src/slot.d.ts
133
+ declare function getSlot(slots: Record<string, any>, exclude: string[]): Record<string, any>;
134
+ //#endregion
135
+ //#region src/deepset.d.ts
136
+ declare function deepSet<T extends Record<string, any>>(data: T, idx: string, val: any): T;
137
+ //#endregion
138
+ //#region src/mitt.d.ts
139
+ interface IHandler {
140
+ (...args: any[]): void;
141
+ _once?: boolean;
142
+ }
143
+ declare function Mitt<T extends string>(all: Map<T | "*", Array<IHandler>>): {
144
+ readonly $on: (type: T, handler: IHandler) => void;
145
+ readonly $once: (type: T, handler: IHandler) => void;
146
+ readonly $off: (type: T, handler: IHandler) => void;
147
+ readonly $emit: (type: T, ...args: any[]) => void;
148
+ };
149
+ //#endregion
150
+ //#region src/tocase.d.ts
151
+ declare function toCase(str: string): string;
152
+ declare function lower(str: string): string;
153
+ //#endregion
154
+ //#region src/mergeprops.d.ts
155
+ declare const mergeProps: (objects: Array<Record<string, any>>, initial?: Record<string, any>, opt?: Record<string, any>) => Record<string, any>;
156
+ //#endregion
157
+ export { $del, $set, Mitt, copy, debounce, deepCopy, deepExtend, deepExtendArgs, deepSet, extend, getSlot, hasProperty, is, lower, mergeProps, parseFn, parseJson, shortKey, toArray, toCase, toDate, toJson, toLine, toPromise, toString, uniqueId };
package/dist/index.js ADDED
@@ -0,0 +1,452 @@
1
+ import { isString } from "lodash-es";
2
+ import dayjs from "dayjs";
3
+
4
+ //#region src/debounce.ts
5
+ /**
6
+ * 防抖函数工具
7
+ * 在指定时间内只执行最后一次函数调用
8
+ */
9
+ /**
10
+ * 防抖函数
11
+ * @param fn - 要防抖的函数
12
+ * @param wait - 等待时间(毫秒)
13
+ * @returns 防抖后的函数
14
+ */
15
+ function debounce(fn, wait) {
16
+ let timeout = null;
17
+ return function(...arg) {
18
+ if (timeout !== null) clearTimeout(timeout);
19
+ timeout = setTimeout(() => fn.call(this, ...arg), wait);
20
+ };
21
+ }
22
+
23
+ //#endregion
24
+ //#region src/toarray.ts
25
+ function toArray(value) {
26
+ return Array.isArray(value) ? value : [
27
+ null,
28
+ void 0,
29
+ ""
30
+ ].indexOf(value) > -1 ? [] : [value];
31
+ }
32
+
33
+ //#endregion
34
+ //#region src/tostring.ts
35
+ /**
36
+ * 转换为字符串工具
37
+ * 将值转换为字符串表示
38
+ */
39
+ /**
40
+ * 将值转换为字符串
41
+ * @param val - 要转换的值
42
+ * @returns 字符串表示
43
+ */
44
+ function toString(val) {
45
+ return val == null ? "" : typeof val === "object" ? JSON.stringify(val, null, 2) : String(val);
46
+ }
47
+
48
+ //#endregion
49
+ //#region src/topromise.ts
50
+ function isPromise(value) {
51
+ return value && typeof value === "object" && typeof value.then === "function";
52
+ }
53
+ function toPromise(value) {
54
+ if (isPromise(value)) return value;
55
+ return Promise.resolve(value);
56
+ }
57
+
58
+ //#endregion
59
+ //#region src/toline.ts
60
+ function toLine(name) {
61
+ let line = name.replace(/([A-Z])/g, "-$1").toLocaleLowerCase();
62
+ if (line.indexOf("-") === 0) line = line.substr(1);
63
+ return line;
64
+ }
65
+
66
+ //#endregion
67
+ //#region src/type.ts
68
+ /**
69
+ * 类型检查工具
70
+ * 提供各种类型判断方法
71
+ */
72
+ const is = {
73
+ availStr(val) {
74
+ return isString(val) && val.trim() != "";
75
+ },
76
+ type(arg, type) {
77
+ return Object.prototype.toString.call(arg) === "[object " + type + "]";
78
+ },
79
+ Nil(v) {
80
+ return v === null || v === void 0;
81
+ },
82
+ Undef(v) {
83
+ return v === void 0 || v === null;
84
+ },
85
+ Element(arg) {
86
+ return typeof arg === "object" && arg !== null && arg.nodeType === 1 && !is.Object(arg);
87
+ },
88
+ trueArray(data) {
89
+ return Array.isArray(data) && data.length > 0;
90
+ },
91
+ Function(v) {
92
+ const type = this.getType(v);
93
+ return type === "Function" || type === "AsyncFunction";
94
+ },
95
+ getType(v) {
96
+ const str = Object.prototype.toString.call(v);
97
+ const match = /^\[object (.*)\]$/.exec(str);
98
+ return match ? match[1] : "";
99
+ },
100
+ empty(value) {
101
+ if (value === void 0 || value === null) return true;
102
+ if (Array.isArray(value) && !value.length) return true;
103
+ return typeof value === "string" && !value;
104
+ },
105
+ Date(arg) {
106
+ return is.type(arg, "Date");
107
+ },
108
+ Object(arg) {
109
+ return is.type(arg, "Object");
110
+ },
111
+ String(arg) {
112
+ return is.type(arg, "String");
113
+ },
114
+ Boolean(arg) {
115
+ return is.type(arg, "Boolean");
116
+ },
117
+ Array(arg) {
118
+ return is.type(arg, "Array");
119
+ },
120
+ Number(arg) {
121
+ return is.type(arg, "Number");
122
+ }
123
+ };
124
+ /**
125
+ * 检查对象是否具有指定属性
126
+ * @param rule - 要检查的对象
127
+ * @param k - 属性名
128
+ * @returns 是否具有该属性
129
+ */
130
+ function hasProperty(rule, k) {
131
+ return {}.hasOwnProperty.call(rule, k);
132
+ }
133
+ var type_default = is;
134
+
135
+ //#endregion
136
+ //#region src/todate.ts
137
+ function toDate(timeStamp) {
138
+ if (type_default.Date(timeStamp)) return timeStamp;
139
+ else {
140
+ let date = new Date(timeStamp);
141
+ return date.toString() === "Invalid Date" ? timeStamp : date;
142
+ }
143
+ }
144
+
145
+ //#endregion
146
+ //#region src/modify.ts
147
+ function $set(target, field, value) {
148
+ target[field] = value;
149
+ }
150
+ function $del(target, field) {
151
+ delete target[field];
152
+ }
153
+
154
+ //#endregion
155
+ //#region src/deepextend.ts
156
+ /**
157
+ * 深度扩展对象
158
+ * @param origin - 源对象
159
+ * @param target - 目标对象,默认为空对象
160
+ * @param mode - 模式:true 表示使用 getRule,false 表示使用 _clone,undefined 表示普通模式
161
+ * @returns 扩展后的对象
162
+ */
163
+ function deepExtend(origin, target = {}, mode) {
164
+ let isArr = false;
165
+ const originObj = origin;
166
+ for (const key in target) if (Object.prototype.hasOwnProperty.call(target, key)) {
167
+ let clone = target[key];
168
+ const isObject = typeof clone === "object" && clone !== null && !Array.isArray(clone);
169
+ if ((isArr = Array.isArray(clone)) || isObject) {
170
+ const nst = originObj[key] === void 0;
171
+ if (isArr) {
172
+ isArr = false;
173
+ if (nst) $set(originObj, key, []);
174
+ } else if (clone._clone && mode !== void 0) if (mode) {
175
+ clone = clone.getRule?.();
176
+ if (nst) $set(originObj, key, {});
177
+ } else {
178
+ $set(originObj, key, clone._clone());
179
+ continue;
180
+ }
181
+ else if (nst) $set(originObj, key, {});
182
+ originObj[key] = deepExtend(originObj[key], clone, mode);
183
+ } else {
184
+ $set(originObj, key, clone);
185
+ if (!type_default.Undef(clone)) {
186
+ if (!type_default.Undef(clone.__json)) originObj[key].__json = clone.__json;
187
+ if (!type_default.Undef(clone.__origin)) originObj[key].__origin = clone.__origin;
188
+ }
189
+ }
190
+ }
191
+ return mode !== void 0 && Array.isArray(origin) ? origin.filter((v) => !v || !v.__ctrl) : origin;
192
+ }
193
+ /**
194
+ * 深度复制对象
195
+ * @param value - 要复制的值
196
+ * @returns 复制后的值
197
+ */
198
+ function deepCopy(value) {
199
+ return deepExtend({}, { value }).value;
200
+ }
201
+ /**
202
+ * 深度扩展多个对象
203
+ * @param origin - 源对象
204
+ * @param lst - 要扩展的对象列表
205
+ * @returns 扩展后的对象
206
+ */
207
+ function deepExtendArgs(origin, ...lst) {
208
+ lst.forEach((target) => {
209
+ origin = deepExtend(origin, target);
210
+ });
211
+ return origin;
212
+ }
213
+
214
+ //#endregion
215
+ //#region src/extend.ts
216
+ const _extends = Object.assign || function(a) {
217
+ for (let b, c = 1; c < arguments.length; c++) for (let d in b = arguments[c], b) Object.prototype.hasOwnProperty.call(b, d) && $set(a, d, b[d]);
218
+ return a;
219
+ };
220
+ function extend() {
221
+ return _extends.apply(this, arguments);
222
+ }
223
+ function copy(obj) {
224
+ if (typeof obj !== "object" || obj === null) return obj;
225
+ return obj instanceof Array ? [...obj] : { ...obj };
226
+ }
227
+
228
+ //#endregion
229
+ //#region src/console.ts
230
+ /**
231
+ * 格式化消息
232
+ * @param type - 消息类型
233
+ * @param msg - 消息内容
234
+ * @param rule - 规则对象(可选)
235
+ * @returns 格式化后的消息字符串
236
+ */
237
+ function format(type, msg, rule) {
238
+ return `[form-create ${type}]: ${msg}` + (rule ? "\n\nrule: " + JSON.stringify(rule.getRule ? rule.getRule() : rule) : "");
239
+ }
240
+ /**
241
+ * 输出错误信息
242
+ * @param msg - 错误消息
243
+ * @param rule - 规则对象(可选)
244
+ */
245
+ function err(msg, rule) {
246
+ console.error(format("err", msg, rule));
247
+ }
248
+
249
+ //#endregion
250
+ //#region src/json.ts
251
+ const PREFIX = "[[FORM-CREATE-PREFIX-";
252
+ const SUFFIX = "-FORM-CREATE-SUFFIX]]";
253
+ function toJson(obj, space) {
254
+ return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function(key, val) {
255
+ if (val && val._isVue === true) return void 0;
256
+ if (typeof val !== "function") return val;
257
+ if (val.__json) return val.__json;
258
+ if (val.__origin) val = val.__origin;
259
+ if (val.__emit) return void 0;
260
+ return PREFIX + val + SUFFIX;
261
+ }, space);
262
+ }
263
+ function makeFn(fn) {
264
+ return new Function("return " + fn)();
265
+ }
266
+ function parseFn(fn, mode) {
267
+ if (fn && type_default.String(fn) && fn.length > 4) {
268
+ let v = fn.trim();
269
+ let flag = false;
270
+ try {
271
+ if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {
272
+ v = v.replace(SUFFIX, "").replace(PREFIX, "");
273
+ flag = true;
274
+ } else if (v.indexOf("$FN:") === 0) {
275
+ v = v.substring(4);
276
+ flag = true;
277
+ } else if (v.indexOf("$EXEC:") === 0) {
278
+ v = v.substring(6);
279
+ flag = true;
280
+ } else if (v.indexOf("$GLOBAL:") === 0) {
281
+ const name = v.substring(8);
282
+ v = function(...args) {
283
+ const callback = args[0].api.getGlobalEvent(name);
284
+ if (callback) return callback.call(this, ...args);
285
+ };
286
+ v.__json = fn;
287
+ v.__inject = true;
288
+ return v;
289
+ } else if (v.indexOf("$FNX:") === 0) {
290
+ v = makeFn("function($inject){\n" + v.substring(5) + "\n}");
291
+ v.__json = fn;
292
+ v.__inject = true;
293
+ return v;
294
+ } else if (!mode && v.indexOf("function ") === 0 && v !== "function ") flag = true;
295
+ else if (!mode && v.indexOf("function(") === 0 && v !== "function(") flag = true;
296
+ if (!flag) return fn;
297
+ let val;
298
+ try {
299
+ val = makeFn(v);
300
+ } catch (e) {
301
+ val = makeFn("function " + v);
302
+ }
303
+ val.__json = fn;
304
+ return val;
305
+ } catch (e) {
306
+ err(`解析失败:${v}\n\nerr: ${e}`);
307
+ return;
308
+ }
309
+ }
310
+ return fn;
311
+ }
312
+ function parseJson(json, mode) {
313
+ return JSON.parse(json, function(k, v) {
314
+ if (type_default.Undef(v) || !v.indexOf) return v;
315
+ return parseFn(v, mode);
316
+ });
317
+ }
318
+
319
+ //#endregion
320
+ //#region src/unique.ts
321
+ var NumIdSingleton = class NumIdSingleton {
322
+ static _value = 36;
323
+ get value() {
324
+ NumIdSingleton._value = NumIdSingleton._value + 1;
325
+ if (NumIdSingleton._value > 1200) NumIdSingleton._value = 36;
326
+ return NumIdSingleton._value.toString(36);
327
+ }
328
+ };
329
+ const numId = new NumIdSingleton();
330
+ let id = 0;
331
+ function uniqueId() {
332
+ const num = 370 + ++id;
333
+ return "F" + Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}`).toString(36) + num.toString(36) + "c";
334
+ }
335
+ function shortKey() {
336
+ return Number(`${dayjs().diff(dayjs("2025-01-01"), "millisecond")}`).toString(36) + numId.value;
337
+ }
338
+
339
+ //#endregion
340
+ //#region src/slot.ts
341
+ function getSlot(slots, exclude) {
342
+ return Object.keys(slots).reduce((lst, name) => {
343
+ if (!exclude || exclude.indexOf(name) === -1) lst[name] = slots[name];
344
+ return lst;
345
+ }, {});
346
+ }
347
+
348
+ //#endregion
349
+ //#region src/deepset.ts
350
+ function deepSet(data, idx, val) {
351
+ let _data = data, to;
352
+ (idx || "").split(".").forEach((v) => {
353
+ if (to) {
354
+ if (!_data[to] || typeof _data[to] != "object") _data[to] = {};
355
+ _data = _data[to];
356
+ }
357
+ to = v;
358
+ });
359
+ _data[to] = val;
360
+ return _data;
361
+ }
362
+
363
+ //#endregion
364
+ //#region src/mitt.ts
365
+ function Mitt(all) {
366
+ all = all || /* @__PURE__ */ new Map();
367
+ const mitt = {
368
+ $on(type, handler) {
369
+ const handlers = all.get(type);
370
+ if (!(handlers && handlers.push(handler))) all.set(type, [handler]);
371
+ },
372
+ $once(type, handler) {
373
+ handler._once = true;
374
+ mitt.$on(type, handler);
375
+ },
376
+ $off(type, handler) {
377
+ const handlers = all.get(type);
378
+ if (handlers) handlers.splice(handlers.indexOf(handler) >>> 0, 1);
379
+ },
380
+ $emit(type, ...args) {
381
+ (all.get(type) || []).slice().map((handler) => {
382
+ if (handler._once) {
383
+ mitt.$off(type, handler);
384
+ delete handler._once;
385
+ }
386
+ handler(...args);
387
+ });
388
+ (all.get("*") || []).slice().map((handler) => {
389
+ handler(type, args);
390
+ });
391
+ }
392
+ };
393
+ return mitt;
394
+ }
395
+
396
+ //#endregion
397
+ //#region src/tocase.ts
398
+ function toCase(str) {
399
+ return lower(str.replace(/(-[a-z])/g, function(v) {
400
+ return v.replace("-", "").toLocaleUpperCase();
401
+ }));
402
+ }
403
+ function lower(str) {
404
+ return str.replace(str[0], str[0].toLowerCase());
405
+ }
406
+
407
+ //#endregion
408
+ //#region src/mergeprops.ts
409
+ const normalMerge = ["props"];
410
+ const toArrayMerge = [
411
+ "class",
412
+ "style",
413
+ "directives"
414
+ ];
415
+ const functionalMerge = ["on", "hook"];
416
+ const mergeProps = (objects, initial = {}, opt = {}) => {
417
+ const _normalMerge = [...normalMerge, ...opt["normal"] || []];
418
+ const _toArrayMerge = [...toArrayMerge, ...opt["array"] || []];
419
+ const _functionalMerge = [...functionalMerge, ...opt["functional"] || []];
420
+ const propsMerge = opt["props"] || [];
421
+ return objects.reduce((a, b) => {
422
+ for (const key in b) if (a[key]) if (propsMerge.indexOf(key) > -1) a[key] = mergeProps([b[key]], a[key]);
423
+ else if (_normalMerge.indexOf(key) > -1) a[key] = {
424
+ ...a[key],
425
+ ...b[key]
426
+ };
427
+ else if (_toArrayMerge.indexOf(key) > -1) {
428
+ const arrA = a[key] instanceof Array ? a[key] : [a[key]];
429
+ const arrB = b[key] instanceof Array ? b[key] : [b[key]];
430
+ a[key] = [...arrA, ...arrB];
431
+ } else if (_functionalMerge.indexOf(key) > -1) for (const event in b[key]) if (a[key][event]) {
432
+ const arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];
433
+ const arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];
434
+ a[key][event] = [...arrA, ...arrB];
435
+ } else a[key][event] = b[key][event];
436
+ else if (key === "hook") for (let hook in b[key]) if (a[key][hook]) a[key][hook] = mergeFn(a[key][hook], b[key][hook]);
437
+ else a[key][hook] = b[key][hook];
438
+ else a[key] = b[key];
439
+ else if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) a[key] = { ...b[key] };
440
+ else if (_toArrayMerge.indexOf(key) > -1) a[key] = b[key] instanceof Array ? [...b[key]] : typeof b[key] === "object" ? { ...b[key] } : b[key];
441
+ else a[key] = b[key];
442
+ return a;
443
+ }, initial);
444
+ };
445
+ const mergeFn = (fn1, fn2) => function() {
446
+ fn1 && fn1.apply(this, arguments);
447
+ fn2 && fn2.apply(this, arguments);
448
+ };
449
+ var mergeprops_default = mergeProps;
450
+
451
+ //#endregion
452
+ export { $del, $set, Mitt, copy, debounce, deepCopy, deepExtend, deepExtendArgs, deepSet, extend, getSlot, hasProperty, type_default as is, lower, mergeprops_default as mergeProps, parseFn, parseJson, shortKey, toArray, toCase, toDate, toJson, toLine, toPromise, toString, uniqueId };
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@astrolimit/fc-utils",
3
+ "version": "25.12.018",
4
+ "description": "",
5
+ "type": "module",
6
+ "license": "SFR",
7
+ "author": "Jack Lee",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "main": "./dist/index.js",
12
+ "module": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js"
18
+ },
19
+ "./*": "./*"
20
+ },
21
+ "publishConfig": {
22
+ "access": "public",
23
+ "registry": "https://registry.npmjs.org"
24
+ },
25
+ "peerDependencies": {
26
+ "change-case": "^5.4.4",
27
+ "dayjs": "^1.11.0",
28
+ "lodash-es": "^4.17.21"
29
+ }
30
+ }
package/readme.md ADDED
@@ -0,0 +1,6 @@
1
+ # 对@form-create/utils的重新打包
2
+
3
+ ## 安装
4
+ ```bash
5
+ pnpm i @astrolimit/fc-utils
6
+ ```