@cluesurf/form 0.1.0
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/host/code/tool.d.ts +9 -0
- package/host/code/tool.js +65 -0
- package/host/code/tool.js.map +1 -0
- package/host/code/type.d.ts +102 -0
- package/host/code/type.js +2 -0
- package/host/code/type.js.map +1 -0
- package/host/index.d.ts +2 -0
- package/host/index.js +3 -0
- package/host/index.js.map +1 -0
- package/host/make/constants.d.ts +20 -0
- package/host/make/constants.js +87 -0
- package/host/make/constants.js.map +1 -0
- package/host/make/index.d.ts +8 -0
- package/host/make/index.js +91 -0
- package/host/make/index.js.map +1 -0
- package/host/make/parsers.d.ts +35 -0
- package/host/make/parsers.js +396 -0
- package/host/make/parsers.js.map +1 -0
- package/host/make/types.d.ts +47 -0
- package/host/make/types.js +337 -0
- package/host/make/types.js.map +1 -0
- package/package.json +53 -0
- package/readme.md +37 -0
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import { toPascalCase } from '../code/tool.js';
|
|
2
|
+
import snakeCase from 'lodash/snakeCase.js';
|
|
3
|
+
const TYPE = {
|
|
4
|
+
boolean: 'z.boolean()',
|
|
5
|
+
decimal: 'z.number()',
|
|
6
|
+
integer: 'z.number().int()',
|
|
7
|
+
json: 'z.object({}).passthrough()',
|
|
8
|
+
string: 'z.string()',
|
|
9
|
+
timestamp: 'z.coerce.date()',
|
|
10
|
+
date: 'z.coerce.date()',
|
|
11
|
+
uuid: 'z.string().uuid()',
|
|
12
|
+
natural_number: 'z.number().int().gte(0)',
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Make parsers in the `~/code/type/parser/index.ts` file.
|
|
16
|
+
*/
|
|
17
|
+
export default function make(base, hold) {
|
|
18
|
+
var _a;
|
|
19
|
+
const hash = {};
|
|
20
|
+
for (const name in base.link) {
|
|
21
|
+
const site = base.link[name];
|
|
22
|
+
if (!site) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const file = `${site.save}/parsers`;
|
|
26
|
+
(_a = hash[file]) !== null && _a !== void 0 ? _a : (hash[file] = []);
|
|
27
|
+
const list = hash[file];
|
|
28
|
+
switch (site.form) {
|
|
29
|
+
case 'form':
|
|
30
|
+
list.push(``);
|
|
31
|
+
make_form({
|
|
32
|
+
form: site,
|
|
33
|
+
base,
|
|
34
|
+
name,
|
|
35
|
+
file,
|
|
36
|
+
hold,
|
|
37
|
+
}).forEach(line => {
|
|
38
|
+
list.push(line);
|
|
39
|
+
});
|
|
40
|
+
break;
|
|
41
|
+
case 'hash':
|
|
42
|
+
make_hash({
|
|
43
|
+
hash: site,
|
|
44
|
+
base,
|
|
45
|
+
name,
|
|
46
|
+
file,
|
|
47
|
+
hold,
|
|
48
|
+
}).forEach(line => {
|
|
49
|
+
list.push(line);
|
|
50
|
+
});
|
|
51
|
+
break;
|
|
52
|
+
case 'list':
|
|
53
|
+
list.push(``);
|
|
54
|
+
make_list({
|
|
55
|
+
list: site,
|
|
56
|
+
base,
|
|
57
|
+
name,
|
|
58
|
+
file,
|
|
59
|
+
hold,
|
|
60
|
+
}).forEach(line => {
|
|
61
|
+
list.push(line);
|
|
62
|
+
});
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return hash;
|
|
67
|
+
}
|
|
68
|
+
export function make_hash({ name, hash, base, file, hold, }) {
|
|
69
|
+
var _a, _b;
|
|
70
|
+
var _c, _d;
|
|
71
|
+
const list = [];
|
|
72
|
+
const typeName = toPascalCase(name);
|
|
73
|
+
const TYPE_NAME = snakeCase(name).toUpperCase();
|
|
74
|
+
if (hash.link) {
|
|
75
|
+
//
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const load = ((_a = (_c = hold.load)[file]) !== null && _a !== void 0 ? _a : (_c[file] = {}));
|
|
79
|
+
const typeNameKey = `${typeName}Key`;
|
|
80
|
+
const typeNameKeyModel = `${typeName}KeyParser`;
|
|
81
|
+
const TYPE_NAME_KEY = `${TYPE_NAME}_KEY`;
|
|
82
|
+
load[typeNameKey] = true;
|
|
83
|
+
load[TYPE_NAME_KEY] = true;
|
|
84
|
+
(_b = (_d = hold.save)[typeNameKeyModel]) !== null && _b !== void 0 ? _b : (_d[typeNameKeyModel] = { file });
|
|
85
|
+
list.push(``);
|
|
86
|
+
list.push(`export const ${typeNameKeyModel}: z.ZodType<${typeNameKey}> = z.enum(${TYPE_NAME_KEY})`);
|
|
87
|
+
}
|
|
88
|
+
return list;
|
|
89
|
+
}
|
|
90
|
+
export function make_list({ name, list, base, file, hold, }) {
|
|
91
|
+
var _a, _b;
|
|
92
|
+
var _c, _d, _e;
|
|
93
|
+
const text = [];
|
|
94
|
+
const typeName = toPascalCase(name);
|
|
95
|
+
const TYPE_NAME = snakeCase(name);
|
|
96
|
+
const load = ((_a = (_c = hold.load)[file]) !== null && _a !== void 0 ? _a : (_c[file] = {}));
|
|
97
|
+
const typeNameModel = `${typeName}`;
|
|
98
|
+
load[typeName] = true;
|
|
99
|
+
(_b = (_d = hold.save)[_e = `${typeNameModel}Parser`]) !== null && _b !== void 0 ? _b : (_d[_e] = { file });
|
|
100
|
+
text.push(`let ${typeNameModel}Model: z.ZodType<${typeName}>`);
|
|
101
|
+
text.push(``);
|
|
102
|
+
text.push(`export const ${typeNameModel}Parser = () => {`, ` if (!${typeNameModel}Model) {`, ` ${typeNameModel}Model = z.enum(LOAD('${TYPE_NAME}') as readonly [string, ...string[]]) as z.ZodType<${typeName}>`, ` }`, ` return ${typeNameModel}Model!`, `}`);
|
|
103
|
+
return text;
|
|
104
|
+
}
|
|
105
|
+
export function make_form({ name, form, base, file, hold, }) {
|
|
106
|
+
var _a, _b, _c;
|
|
107
|
+
var _d, _e, _f;
|
|
108
|
+
const list = [];
|
|
109
|
+
const typeName = toPascalCase(name);
|
|
110
|
+
const leak = 'leak' in form && form.leak;
|
|
111
|
+
const load = ((_a = (_d = hold.load)[file]) !== null && _a !== void 0 ? _a : (_d[file] = {}));
|
|
112
|
+
load[typeName] = true;
|
|
113
|
+
const typeParserName = `${typeName}Parser`;
|
|
114
|
+
const typeModelName = `${typeName}Model`;
|
|
115
|
+
if ('link' in form) {
|
|
116
|
+
let base;
|
|
117
|
+
if (form.base) {
|
|
118
|
+
const baseParserName = `${toPascalCase(form.base)}Parser`;
|
|
119
|
+
load[baseParserName] = true;
|
|
120
|
+
// base = `(${baseParserName} as z.ZodObject<z.ZodRawShape>).extend(`
|
|
121
|
+
base = `(${baseParserName}() as any).extend(`;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
base = 'z.object(';
|
|
125
|
+
}
|
|
126
|
+
(_b = (_e = hold.save)[typeParserName]) !== null && _b !== void 0 ? _b : (_e[typeParserName] = { file });
|
|
127
|
+
list.push(`let ${typeModelName}: z.ZodType<${typeName}>`);
|
|
128
|
+
list.push(``);
|
|
129
|
+
list.push(`export const ${typeParserName} = (): z.ZodType<${typeName}> => {`, ` if (!${typeModelName}) {`, ` ${typeModelName} = (${base}{`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
(_c = (_f = hold.save)[typeParserName]) !== null && _c !== void 0 ? _c : (_f[typeParserName] = { file });
|
|
133
|
+
list.push(`let ${typeModelName}: z.ZodType<${typeName}>`);
|
|
134
|
+
list.push(``);
|
|
135
|
+
list.push(`export const ${typeParserName} = (): z.ZodType<${typeName}> => {`, ` if (!${typeModelName}) {`, ` ${typeModelName} =`);
|
|
136
|
+
}
|
|
137
|
+
make_link_list({
|
|
138
|
+
name,
|
|
139
|
+
form,
|
|
140
|
+
base,
|
|
141
|
+
leak,
|
|
142
|
+
file,
|
|
143
|
+
hold,
|
|
144
|
+
}).forEach(line => {
|
|
145
|
+
list.push(` ${line}`);
|
|
146
|
+
});
|
|
147
|
+
if ('link' in form) {
|
|
148
|
+
list.push(` })`);
|
|
149
|
+
if (form.make) {
|
|
150
|
+
list.push(` .transform(MAKE('${name}', code.${form.make}.make))`);
|
|
151
|
+
}
|
|
152
|
+
if (leak) {
|
|
153
|
+
list.push(` .passthrough()`);
|
|
154
|
+
}
|
|
155
|
+
list.push(`) as z.ZodType<${typeName}>`);
|
|
156
|
+
}
|
|
157
|
+
list.push(`}`);
|
|
158
|
+
list.push(` return ${typeModelName}!`, `}`);
|
|
159
|
+
// const link: Array<string> = []
|
|
160
|
+
// if (load) {
|
|
161
|
+
// load.forEach(l => {
|
|
162
|
+
// link.push(toPascalCase(l))
|
|
163
|
+
// })
|
|
164
|
+
// }
|
|
165
|
+
// list.push(``)
|
|
166
|
+
// list.push(
|
|
167
|
+
// `export function load${typeName}(source: any): ${typeName} {`,
|
|
168
|
+
// )
|
|
169
|
+
// list.push(` let x = source`)
|
|
170
|
+
// link.forEach(l => {
|
|
171
|
+
// list.push(` x = ${l}Model.parse(x)`)
|
|
172
|
+
// })
|
|
173
|
+
// list.push(` return x as ${typeName}`)
|
|
174
|
+
// list.push(`}`)
|
|
175
|
+
return list;
|
|
176
|
+
}
|
|
177
|
+
export function make_link_list({ form, base, leak, name, file, hold, }) {
|
|
178
|
+
var _a;
|
|
179
|
+
var _b;
|
|
180
|
+
const list = [];
|
|
181
|
+
const load = ((_a = (_b = hold.load)[file]) !== null && _a !== void 0 ? _a : (_b[file] = {}));
|
|
182
|
+
if ('link' in form) {
|
|
183
|
+
for (const name in form.link) {
|
|
184
|
+
const link = form.link[name];
|
|
185
|
+
if (!link) {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
const oS = link.need === false ? 'z.optional(' : '';
|
|
189
|
+
const oE = link.need === false ? ')' : '';
|
|
190
|
+
const aS = link.list === true ? 'z.array(' : '';
|
|
191
|
+
const aE = link.list === true ? ')' : '';
|
|
192
|
+
const r = link.test
|
|
193
|
+
? `.refine(TEST('${name}', code.${link.test}.test))`
|
|
194
|
+
: '';
|
|
195
|
+
const f = link.fall != null
|
|
196
|
+
? `.default(${JSON.stringify(link.fall)})`
|
|
197
|
+
: '';
|
|
198
|
+
const l = leak ? `.passthrough()` : '';
|
|
199
|
+
if (typeof link.like === 'string') {
|
|
200
|
+
let type = TYPE[link.like];
|
|
201
|
+
if (type) {
|
|
202
|
+
list.push(` ${name}: ${oS}${aS}${type}${r}${aE}${oE}${f},`);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
const linkLikeModelName = `${toPascalCase(link.like)}Parser`;
|
|
206
|
+
if (base.mesh[link.like]) {
|
|
207
|
+
const meshForm = base.mesh[link.like];
|
|
208
|
+
if ((meshForm === null || meshForm === void 0 ? void 0 : meshForm.form) === 'list') {
|
|
209
|
+
type = `${linkLikeModelName}()`;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
type = `${linkLikeModelName}()${l}`;
|
|
213
|
+
}
|
|
214
|
+
load[linkLikeModelName] = true;
|
|
215
|
+
list.push(` ${name}: ${oS}${aS}z.lazy(() => ${type})${r}${aE}${oE}${f},`);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
type = `z.instanceof(${findAndLinkName({
|
|
219
|
+
like: link.like,
|
|
220
|
+
base,
|
|
221
|
+
file,
|
|
222
|
+
hold,
|
|
223
|
+
})})`;
|
|
224
|
+
list.push(` ${name}: ${oS}${aS}${type}${r}${aE}${oE}${f},`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
else if (link.case) {
|
|
229
|
+
if (Array.isArray(link.case)) {
|
|
230
|
+
const like_case = [];
|
|
231
|
+
link.case.forEach((c, i) => {
|
|
232
|
+
if (c.like) {
|
|
233
|
+
let type = TYPE[c.like];
|
|
234
|
+
const r = c.test
|
|
235
|
+
? `.refine(TEST('${name}', code.${c.test}.test))`
|
|
236
|
+
: '';
|
|
237
|
+
if (type) {
|
|
238
|
+
like_case.push(`${type}${r}`);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
type = `${toPascalCase(c.like)}Parser`;
|
|
242
|
+
if (base.mesh[c.like]) {
|
|
243
|
+
load[type] = true;
|
|
244
|
+
like_case.push(`z.lazy(() => ${type}())${r}`);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
type = `z.instanceof(${findAndLinkName({
|
|
248
|
+
like: c.like,
|
|
249
|
+
base,
|
|
250
|
+
file,
|
|
251
|
+
hold,
|
|
252
|
+
})})`;
|
|
253
|
+
like_case.push(`${type}${r}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
list.push(` ${name}: ${oS}${aS}z.union([${like_case.join(', ')}])${aE}${oE},`);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
const like_case = [];
|
|
262
|
+
for (const name in link.case) {
|
|
263
|
+
like_case.push(`'${name}'`);
|
|
264
|
+
}
|
|
265
|
+
list.push(` ${name}: ${oS}${aS}z.enum([${like_case.join(', ')}])${aE}${oE},`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
else if (link.fuse) {
|
|
269
|
+
const like_fuse = [];
|
|
270
|
+
link.fuse.forEach((c, i) => {
|
|
271
|
+
if (c.like) {
|
|
272
|
+
let type = TYPE[c.like];
|
|
273
|
+
const r = c.test
|
|
274
|
+
? `.refine(TEST('${name}', code.${c.test}.test))`
|
|
275
|
+
: '';
|
|
276
|
+
if (type) {
|
|
277
|
+
like_fuse.push(`${type}${r}`);
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
type = `${toPascalCase(c.like)}Parser`;
|
|
281
|
+
if (base.mesh[c.like]) {
|
|
282
|
+
load[type] = true;
|
|
283
|
+
like_fuse.push(`z.lazy(() => ${type}())${r}`);
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
type = `z.instanceof(${findAndLinkName({
|
|
287
|
+
like: c.like,
|
|
288
|
+
base,
|
|
289
|
+
file,
|
|
290
|
+
hold,
|
|
291
|
+
})})`;
|
|
292
|
+
like_fuse.push(`${type}${r}`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
list.push(` ${name}: ${oS}${aS}z.intersection([${like_fuse.join(', ')}])${aE}${oE},`);
|
|
298
|
+
}
|
|
299
|
+
else if (link.link) {
|
|
300
|
+
list.push(` ${name}: ${oS}${aS}z.object({`);
|
|
301
|
+
make_link_list({
|
|
302
|
+
name,
|
|
303
|
+
form: link,
|
|
304
|
+
base,
|
|
305
|
+
leak,
|
|
306
|
+
file,
|
|
307
|
+
hold,
|
|
308
|
+
}).forEach(line => {
|
|
309
|
+
list.push(` ${line}`);
|
|
310
|
+
});
|
|
311
|
+
list.push(`})${l}${aE}${oE},`);
|
|
312
|
+
}
|
|
313
|
+
else if (link.take) {
|
|
314
|
+
if (link.take.length === 1) {
|
|
315
|
+
list.push(` ${name}: ${oS}${aS}z.literal(`);
|
|
316
|
+
list.push(` ${JSON.stringify(link.take[0])}`);
|
|
317
|
+
list.push(`)${l}${aE}${oE},`);
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
list.push(` ${name}: ${oS}${aS}z.enum(`);
|
|
321
|
+
list.push(` ${JSON.stringify(link.take)}`);
|
|
322
|
+
list.push(`)${l}${aE}${oE},`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
else if ('case' in form) {
|
|
328
|
+
const formList = [];
|
|
329
|
+
const baseList = [];
|
|
330
|
+
const formCase = form.case;
|
|
331
|
+
formCase.forEach(item => {
|
|
332
|
+
let type = TYPE[item.like];
|
|
333
|
+
const r = item.test
|
|
334
|
+
? `.refine(TEST('${name}', code.${item.test}.test))`
|
|
335
|
+
: '';
|
|
336
|
+
if (type) {
|
|
337
|
+
formList.push(`${type}${r}`);
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
type = `${toPascalCase(item.like)}Parser`;
|
|
341
|
+
if (base.mesh[item.like]) {
|
|
342
|
+
load[type] = true;
|
|
343
|
+
formList.push(`z.lazy(() => ${type}())${r}`);
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
type = `z.instanceof(${findAndLinkName({
|
|
347
|
+
like: item.like,
|
|
348
|
+
base,
|
|
349
|
+
file,
|
|
350
|
+
hold,
|
|
351
|
+
})})`;
|
|
352
|
+
formList.push(`${type}${r}`);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
let baseSite = baseList.length > 0
|
|
357
|
+
? `z.enum([${baseList.join(', ')}])`
|
|
358
|
+
: undefined;
|
|
359
|
+
if (baseSite) {
|
|
360
|
+
formList.push(baseSite);
|
|
361
|
+
}
|
|
362
|
+
let formSite = formList.length === 1 && baseSite
|
|
363
|
+
? baseSite
|
|
364
|
+
: `z.union([${formList.join(', ')}])`;
|
|
365
|
+
list.push(formSite);
|
|
366
|
+
}
|
|
367
|
+
else if ('fuse' in form) {
|
|
368
|
+
const formList = [];
|
|
369
|
+
const fuse = form.fuse;
|
|
370
|
+
fuse.forEach(item => {
|
|
371
|
+
const itemModelName = `${item.like}Parser`;
|
|
372
|
+
load[itemModelName] = true;
|
|
373
|
+
formList.push(`z.lazy(() => ${itemModelName}())`);
|
|
374
|
+
});
|
|
375
|
+
let formSite = `z.intersection([${formList.join(', ')}])`;
|
|
376
|
+
list.push(formSite);
|
|
377
|
+
}
|
|
378
|
+
return list;
|
|
379
|
+
}
|
|
380
|
+
function findAndLinkName({ like, base, file, hold, }) {
|
|
381
|
+
var _a;
|
|
382
|
+
var _b;
|
|
383
|
+
const type = TYPE[like];
|
|
384
|
+
if (typeof type === 'string') {
|
|
385
|
+
return type;
|
|
386
|
+
}
|
|
387
|
+
const name = base.name[like];
|
|
388
|
+
if (typeof name === 'string') {
|
|
389
|
+
return name;
|
|
390
|
+
}
|
|
391
|
+
const headName = toPascalCase(like);
|
|
392
|
+
const load = ((_a = (_b = hold.load)[file]) !== null && _a !== void 0 ? _a : (_b[file] = {}));
|
|
393
|
+
load[headName] = true;
|
|
394
|
+
return headName;
|
|
395
|
+
}
|
|
396
|
+
//# sourceMappingURL=parsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../make/parsers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Form, FormLinkMesh, Hash, List, Base } from '../code/type.js';
|
|
2
|
+
export type HoldFile = {
|
|
3
|
+
file: FileName;
|
|
4
|
+
form?: 'form' | 'hash' | 'list' | 'test';
|
|
5
|
+
};
|
|
6
|
+
export type Hold = {
|
|
7
|
+
save: Record<TypeName, HoldFile>;
|
|
8
|
+
load: Load;
|
|
9
|
+
};
|
|
10
|
+
export type FileName = string;
|
|
11
|
+
export type TypeName = string;
|
|
12
|
+
export type Load = Record<FileName, Record<TypeName, boolean>>;
|
|
13
|
+
/**
|
|
14
|
+
* Make types in the `~/code/type/index.ts` file.
|
|
15
|
+
*/
|
|
16
|
+
export default function make(base: Base, hold: Hold, need?: boolean): Record<string, string[]>;
|
|
17
|
+
export declare function make_form({ name, form, base, hold, file, need, }: {
|
|
18
|
+
name: string;
|
|
19
|
+
form: Form;
|
|
20
|
+
base: Base;
|
|
21
|
+
hold: Hold;
|
|
22
|
+
file: string;
|
|
23
|
+
need?: boolean;
|
|
24
|
+
}): string[];
|
|
25
|
+
export declare function make_hash({ name, hash, base, file, hold, need, }: {
|
|
26
|
+
name: string;
|
|
27
|
+
hash: Hash;
|
|
28
|
+
base: Base;
|
|
29
|
+
file: string;
|
|
30
|
+
hold: Hold;
|
|
31
|
+
need?: boolean;
|
|
32
|
+
}): string[];
|
|
33
|
+
export declare function make_list({ name, list, base, file, hold, need, }: {
|
|
34
|
+
name: string;
|
|
35
|
+
list: List;
|
|
36
|
+
base: Base;
|
|
37
|
+
file: string;
|
|
38
|
+
hold: Hold;
|
|
39
|
+
need?: boolean;
|
|
40
|
+
}): string[];
|
|
41
|
+
export declare function make_link_list({ form, base, hold, file, need, }: {
|
|
42
|
+
form: Form | FormLinkMesh;
|
|
43
|
+
base: Base;
|
|
44
|
+
hold: Hold;
|
|
45
|
+
file: string;
|
|
46
|
+
need?: boolean;
|
|
47
|
+
}): string[];
|