@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,9 @@
|
|
|
1
|
+
import { TestBack } from './type.js';
|
|
2
|
+
import { RefinementCtx } from 'zod';
|
|
3
|
+
export declare function toPascalCase(text: string): string;
|
|
4
|
+
export declare function save(name: string, bond: any): void;
|
|
5
|
+
export declare function LOAD(name: string): any;
|
|
6
|
+
export declare function MAKE(name: string, fn: (bond: any, ctx: RefinementCtx, name: string) => any): (bond: any, ctx: RefinementCtx) => any;
|
|
7
|
+
export declare function TEST(name: string, fn: (bond: any, name: string) => boolean | string | TestBack): (bond: any) => boolean | TestBack;
|
|
8
|
+
export type StringCase = 'snakeCase' | 'camelCase' | 'pascalCase';
|
|
9
|
+
export declare function convertObjectKeyCase(input: Record<string, any>, to: StringCase): Record<string, any>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import startCase from 'lodash/startCase.js';
|
|
2
|
+
import camelCase from 'lodash/camelCase.js';
|
|
3
|
+
import snakeCase from 'lodash/snakeCase.js';
|
|
4
|
+
import isPlainObject from 'lodash/isPlainObject.js';
|
|
5
|
+
export function toPascalCase(text) {
|
|
6
|
+
return startCase(camelCase(text)).replace(/ /g, '');
|
|
7
|
+
}
|
|
8
|
+
const base = {};
|
|
9
|
+
export function save(name, bond) {
|
|
10
|
+
base[name] = bond;
|
|
11
|
+
}
|
|
12
|
+
export function LOAD(name) {
|
|
13
|
+
if (!(name in base)) {
|
|
14
|
+
throw new Error(`No '${name}' found in @cluesurf/form`);
|
|
15
|
+
}
|
|
16
|
+
return base[name];
|
|
17
|
+
}
|
|
18
|
+
export function MAKE(name, fn) {
|
|
19
|
+
return (bond, ctx) => {
|
|
20
|
+
return fn(bond, ctx, name);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function TEST(name, fn) {
|
|
24
|
+
return (bond) => {
|
|
25
|
+
const back = fn(bond, name);
|
|
26
|
+
if (typeof back === 'string') {
|
|
27
|
+
return {
|
|
28
|
+
message: back,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
else if (typeof back === 'boolean' || back == null) {
|
|
32
|
+
return !!back;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return back;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const STRING_CASE = {
|
|
40
|
+
snakeCase: snakeCase,
|
|
41
|
+
camelCase: camelCase,
|
|
42
|
+
pascalCase: toPascalCase,
|
|
43
|
+
};
|
|
44
|
+
export function convertObjectKeyCase(input, to) {
|
|
45
|
+
const out = {};
|
|
46
|
+
for (const name in input) {
|
|
47
|
+
let val = input[name];
|
|
48
|
+
if (val) {
|
|
49
|
+
if (isPlainObject(val)) {
|
|
50
|
+
val = convertObjectKeyCase(val, to);
|
|
51
|
+
}
|
|
52
|
+
else if (Array.isArray(val)) {
|
|
53
|
+
val = val.map(v => {
|
|
54
|
+
if (isPlainObject(v)) {
|
|
55
|
+
return convertObjectKeyCase(v, to);
|
|
56
|
+
}
|
|
57
|
+
return v;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
out[STRING_CASE[to](name)] = val;
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../code/tool.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,aAAa,MAAM,yBAAyB,CAAA;AAInD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,IAAI,GAAwB,EAAE,CAAA;AAEpC,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,IAAS;IAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,2BAA2B,CAAC,CAAA;KACxD;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,IAAY,EACZ,EAAwD;IAExD,OAAO,CAAC,IAAS,EAAE,GAAkB,EAAO,EAAE;QAC5C,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IAC5B,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,IAAY,EACZ,EAA4D;IAE5D,OAAO,CAAC,IAAS,EAAsB,EAAE;QACvC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO;gBACL,OAAO,EAAE,IAAI;aACd,CAAA;SACF;aAAM,IAAI,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI,EAAE;YACpD,OAAO,CAAC,CAAC,IAAI,CAAA;SACd;aAAM;YACL,OAAO,IAAI,CAAA;SACZ;IACH,CAAC,CAAA;AACH,CAAC;AAID,MAAM,WAAW,GAAgD;IAC/D,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,YAAY;CACzB,CAAA;AAED,MAAM,UAAU,oBAAoB,CAClC,KAA0B,EAC1B,EAAc;IAEd,MAAM,GAAG,GAAwB,EAAE,CAAA;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,GAAG,EAAE;YACP,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;gBACtB,GAAG,GAAG,oBAAoB,CAAC,GAA0B,EAAE,EAAE,CAAC,CAAA;aAC3D;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC7B,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBAChB,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;wBACpB,OAAO,oBAAoB,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAA;qBAC1D;oBAED,OAAO,CAAY,CAAA;gBACrB,CAAC,CAAC,CAAA;aACH;SACF;QACD,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAA;KACjC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { RefinementCtx } from 'zod';
|
|
2
|
+
export type Load = Base & {
|
|
3
|
+
testLink: string;
|
|
4
|
+
};
|
|
5
|
+
export type FormBond = string | number | boolean | null;
|
|
6
|
+
export type FormBase = {
|
|
7
|
+
form: 'form';
|
|
8
|
+
save: string;
|
|
9
|
+
test?: (bond: any, link?: any) => boolean;
|
|
10
|
+
note?: string;
|
|
11
|
+
};
|
|
12
|
+
export type FormBaseCase = FormBase & {
|
|
13
|
+
case: Array<FormLike>;
|
|
14
|
+
};
|
|
15
|
+
export type FormLike = {
|
|
16
|
+
like: string;
|
|
17
|
+
test?: (bond: any, link?: any) => boolean;
|
|
18
|
+
note?: string;
|
|
19
|
+
};
|
|
20
|
+
export type FormLikeCase = {
|
|
21
|
+
case: Array<FormLike>;
|
|
22
|
+
};
|
|
23
|
+
export type FormBaseFuse = FormBase & {
|
|
24
|
+
fuse: Array<FormLike>;
|
|
25
|
+
};
|
|
26
|
+
export type FormBaseLink = FormBase & {
|
|
27
|
+
base?: string;
|
|
28
|
+
link: FormLinkMesh;
|
|
29
|
+
name?: string;
|
|
30
|
+
make?: string;
|
|
31
|
+
leak?: boolean;
|
|
32
|
+
load?: Array<string>;
|
|
33
|
+
};
|
|
34
|
+
export type Form = FormBaseCase | FormBaseFuse | FormBaseLink;
|
|
35
|
+
export type BaseHash = Record<string, Form | Hash | List | Test | Make>;
|
|
36
|
+
export type NameHash = Record<string, string>;
|
|
37
|
+
export type Base = {
|
|
38
|
+
mesh: BaseHash;
|
|
39
|
+
link: BaseHash;
|
|
40
|
+
name: NameHash;
|
|
41
|
+
};
|
|
42
|
+
export type FormLinkMesh = Record<string, FormLink>;
|
|
43
|
+
export type FormLink = {
|
|
44
|
+
head?: string;
|
|
45
|
+
note?: string;
|
|
46
|
+
back?: string;
|
|
47
|
+
base?: string;
|
|
48
|
+
fall?: any;
|
|
49
|
+
bind?: FormBond | Record<string, FormBond> | Array<FormBond>;
|
|
50
|
+
fill?: boolean;
|
|
51
|
+
hold?: boolean;
|
|
52
|
+
like?: string;
|
|
53
|
+
case?: Record<string, FormLink> | Array<FormLink>;
|
|
54
|
+
fuse?: Array<FormLink>;
|
|
55
|
+
bond?: FormLink;
|
|
56
|
+
link?: FormLinkMesh;
|
|
57
|
+
list?: boolean;
|
|
58
|
+
name?: {
|
|
59
|
+
base?: string;
|
|
60
|
+
mark?: string;
|
|
61
|
+
};
|
|
62
|
+
need?: boolean;
|
|
63
|
+
size?: number | {
|
|
64
|
+
fall?: number;
|
|
65
|
+
fall_meet?: number;
|
|
66
|
+
rise?: number;
|
|
67
|
+
rise_meet?: number;
|
|
68
|
+
};
|
|
69
|
+
take?: Array<any>;
|
|
70
|
+
test?: string;
|
|
71
|
+
trim?: boolean;
|
|
72
|
+
load?: boolean;
|
|
73
|
+
};
|
|
74
|
+
export type Hash = {
|
|
75
|
+
form: 'hash';
|
|
76
|
+
save: string;
|
|
77
|
+
hash: Record<string, any>;
|
|
78
|
+
link?: string;
|
|
79
|
+
bond: FormLike | FormLikeCase;
|
|
80
|
+
load?: boolean;
|
|
81
|
+
};
|
|
82
|
+
export type List = {
|
|
83
|
+
form: 'list';
|
|
84
|
+
save: string;
|
|
85
|
+
list: Array<any>;
|
|
86
|
+
load?: boolean;
|
|
87
|
+
};
|
|
88
|
+
export type Test = {
|
|
89
|
+
form: 'test';
|
|
90
|
+
save: string;
|
|
91
|
+
test: (bond: any, name: string) => boolean | string | TestBack;
|
|
92
|
+
};
|
|
93
|
+
export type Make = {
|
|
94
|
+
form: 'make';
|
|
95
|
+
save: string;
|
|
96
|
+
make: (bond: any, ctx: RefinementCtx, name: string) => any;
|
|
97
|
+
};
|
|
98
|
+
export type TestBack = {
|
|
99
|
+
message?: string;
|
|
100
|
+
path?: Array<string>;
|
|
101
|
+
params?: any;
|
|
102
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../code/type.ts"],"names":[],"mappings":""}
|
package/host/index.d.ts
ADDED
package/host/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Hash, List, Base } from '../code/type.js';
|
|
2
|
+
import { Hold } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Make lists and hashes (data) in the `~/code/type/data/index.ts` file.
|
|
5
|
+
*/
|
|
6
|
+
export default function make(base: Base, hold: Hold): Record<string, string[]>;
|
|
7
|
+
export declare function make_hash({ name, hash, base, file, hold, }: {
|
|
8
|
+
name: string;
|
|
9
|
+
hash: Hash;
|
|
10
|
+
base: Base;
|
|
11
|
+
file: string;
|
|
12
|
+
hold: Hold;
|
|
13
|
+
}): string[];
|
|
14
|
+
export declare function make_list({ name, list, base, file, hold, }: {
|
|
15
|
+
name: string;
|
|
16
|
+
list: List;
|
|
17
|
+
base: Base;
|
|
18
|
+
file: string;
|
|
19
|
+
hold: Hold;
|
|
20
|
+
}): string[];
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { toPascalCase } from '../code/tool.js';
|
|
2
|
+
import snakeCase from 'lodash/snakeCase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Make lists and hashes (data) in the `~/code/type/data/index.ts` file.
|
|
5
|
+
*/
|
|
6
|
+
export default function make(base, hold) {
|
|
7
|
+
var _a, _b;
|
|
8
|
+
var _c;
|
|
9
|
+
const hash = {};
|
|
10
|
+
for (const name in base.link) {
|
|
11
|
+
const site = base.link[name];
|
|
12
|
+
if (site) {
|
|
13
|
+
const file = `${site.save}/constants`;
|
|
14
|
+
(_a = (_c = hold.load)[file]) !== null && _a !== void 0 ? _a : (_c[file] = {});
|
|
15
|
+
(_b = hash[file]) !== null && _b !== void 0 ? _b : (hash[file] = []);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
for (const name in base.link) {
|
|
19
|
+
const site = base.link[name];
|
|
20
|
+
if (!site) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const file = `${site.save}/constants`;
|
|
24
|
+
const list = hash[file];
|
|
25
|
+
if (!list) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
switch (site.form) {
|
|
29
|
+
case 'hash':
|
|
30
|
+
make_hash({ hash: site, base, name, hold, file }).forEach(line => {
|
|
31
|
+
list.push(line);
|
|
32
|
+
});
|
|
33
|
+
break;
|
|
34
|
+
case 'list':
|
|
35
|
+
make_list({ list: site, base, name, hold, file }).forEach(line => {
|
|
36
|
+
list.push(line);
|
|
37
|
+
});
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return hash;
|
|
42
|
+
}
|
|
43
|
+
export function make_hash({ name, hash, base, file, hold, }) {
|
|
44
|
+
var _a, _b, _c;
|
|
45
|
+
var _d, _e, _f;
|
|
46
|
+
const list = [];
|
|
47
|
+
list.push(``);
|
|
48
|
+
const load = ((_a = (_d = hold.load)[file]) !== null && _a !== void 0 ? _a : (_d[file] = {}));
|
|
49
|
+
const typeName = toPascalCase(name);
|
|
50
|
+
const TYPE_NAME = snakeCase(name).toUpperCase();
|
|
51
|
+
load[typeName] = true;
|
|
52
|
+
if (hash.hash) {
|
|
53
|
+
(_b = (_e = hold.save)[TYPE_NAME]) !== null && _b !== void 0 ? _b : (_e[TYPE_NAME] = { file });
|
|
54
|
+
}
|
|
55
|
+
if (hash.link) {
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const keyList = Object.keys(hash.hash);
|
|
59
|
+
const TYPE_NAME_KEY = `${TYPE_NAME}_KEY`;
|
|
60
|
+
const typeNameKey = `${typeName}Key`;
|
|
61
|
+
(_c = (_f = hold.save)[TYPE_NAME_KEY]) !== null && _c !== void 0 ? _c : (_f[TYPE_NAME_KEY] = { file });
|
|
62
|
+
load[typeNameKey] = true;
|
|
63
|
+
list.push(`export const ${TYPE_NAME_KEY}: ReadonlyArray<${typeNameKey}> = ` +
|
|
64
|
+
JSON.stringify(keyList, null, 2) +
|
|
65
|
+
' as const');
|
|
66
|
+
list.push(``);
|
|
67
|
+
}
|
|
68
|
+
if (hash.hash) {
|
|
69
|
+
list.push(`export const ${TYPE_NAME}: ${typeName} = ` +
|
|
70
|
+
JSON.stringify(hash.hash, null, 2));
|
|
71
|
+
}
|
|
72
|
+
return list;
|
|
73
|
+
}
|
|
74
|
+
export function make_list({ name, list, base, file, hold, }) {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
var _c, _d;
|
|
77
|
+
const text = [];
|
|
78
|
+
const typeName = toPascalCase(name);
|
|
79
|
+
const TYPE_NAME = snakeCase(name).toUpperCase();
|
|
80
|
+
const load = ((_a = (_c = hold.load)[file]) !== null && _a !== void 0 ? _a : (_c[file] = {}));
|
|
81
|
+
load[typeName] = true;
|
|
82
|
+
(_b = (_d = hold.save)[TYPE_NAME]) !== null && _b !== void 0 ? _b : (_d[TYPE_NAME] = { file });
|
|
83
|
+
text.push(`export const ${TYPE_NAME}: ReadonlyArray<${typeName}> = ` +
|
|
84
|
+
JSON.stringify(list.list, null, 2));
|
|
85
|
+
return text;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../make/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Load } from '../code/type.js';
|
|
2
|
+
export type Make = Load;
|
|
3
|
+
export type MakeBack = {
|
|
4
|
+
type: Record<string, string>;
|
|
5
|
+
parser: Record<string, string>;
|
|
6
|
+
constant: Record<string, string>;
|
|
7
|
+
};
|
|
8
|
+
export default function make({ testLink, ...baseMesh }: Make): Promise<MakeBack>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
import love_code from '@termsurf/love-code';
|
|
22
|
+
import make_types from './types.js';
|
|
23
|
+
import make_parsers from './parsers.js';
|
|
24
|
+
import make_constants from './constants.js';
|
|
25
|
+
export default function make(_a) {
|
|
26
|
+
var { testLink } = _a, baseMesh = __rest(_a, ["testLink"]);
|
|
27
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
const hold = { load: {}, save: {} };
|
|
29
|
+
const type_list_hash = make_types(baseMesh, hold);
|
|
30
|
+
const parser_list_hash = make_parsers(baseMesh, hold);
|
|
31
|
+
const constant_list_hash = make_constants(baseMesh, hold);
|
|
32
|
+
const type = {};
|
|
33
|
+
const parser = {};
|
|
34
|
+
const constant = {};
|
|
35
|
+
for (const file in type_list_hash) {
|
|
36
|
+
const list = type_list_hash[file];
|
|
37
|
+
if (list === null || list === void 0 ? void 0 : list.length) {
|
|
38
|
+
const castList = [
|
|
39
|
+
`import merge from 'lodash/merge'`,
|
|
40
|
+
...makeLoadList(hold, file),
|
|
41
|
+
...list,
|
|
42
|
+
];
|
|
43
|
+
type[file] = yield love_code(castList.join('\n'));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
for (const file in constant_list_hash) {
|
|
47
|
+
const list = constant_list_hash[file];
|
|
48
|
+
if (list === null || list === void 0 ? void 0 : list.length) {
|
|
49
|
+
const castList = [...makeLoadList(hold, file), ...list];
|
|
50
|
+
constant[file] = yield love_code(castList.join('\n'));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
for (const file in parser_list_hash) {
|
|
54
|
+
const list = parser_list_hash[file];
|
|
55
|
+
if (list === null || list === void 0 ? void 0 : list.length) {
|
|
56
|
+
const base = [
|
|
57
|
+
`import { z } from 'zod'`,
|
|
58
|
+
`import { LOAD, MAKE, TEST } from '@cluesurf/form'`,
|
|
59
|
+
`import * as code from '${testLink}'`,
|
|
60
|
+
``,
|
|
61
|
+
...makeLoadList(hold, file),
|
|
62
|
+
...list,
|
|
63
|
+
];
|
|
64
|
+
parser[file] = yield love_code(base.join('\n'));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { type, parser, constant };
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function makeLoadList(hold, file) {
|
|
71
|
+
var _a;
|
|
72
|
+
const hash = {};
|
|
73
|
+
const text = [];
|
|
74
|
+
const load = hold.load[file];
|
|
75
|
+
for (const name in load) {
|
|
76
|
+
const holdFile = hold.save[name];
|
|
77
|
+
const fileLink = holdFile === null || holdFile === void 0 ? void 0 : holdFile.file;
|
|
78
|
+
if (!fileLink || file === fileLink) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const list = ((_a = hash[fileLink]) !== null && _a !== void 0 ? _a : (hash[fileLink] = []));
|
|
82
|
+
list.push(name);
|
|
83
|
+
}
|
|
84
|
+
for (const file in hash) {
|
|
85
|
+
const list = hash[file];
|
|
86
|
+
text.push(`import { ${list.sort().join(', ')} } from '${file}.js'`);
|
|
87
|
+
}
|
|
88
|
+
text.push(``);
|
|
89
|
+
return text;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../make/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Base, Form, FormLinkMesh, Hash, List } from '../code/type.js';
|
|
2
|
+
import { Hold } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Make parsers in the `~/code/type/parser/index.ts` file.
|
|
5
|
+
*/
|
|
6
|
+
export default function make(base: Base, hold: Hold): Record<string, string[]>;
|
|
7
|
+
export declare function make_hash({ name, hash, base, file, hold, }: {
|
|
8
|
+
name: string;
|
|
9
|
+
hash: Hash;
|
|
10
|
+
base: Base;
|
|
11
|
+
file: string;
|
|
12
|
+
hold: Hold;
|
|
13
|
+
}): string[];
|
|
14
|
+
export declare function make_list({ name, list, base, file, hold, }: {
|
|
15
|
+
name: string;
|
|
16
|
+
list: List;
|
|
17
|
+
base: Base;
|
|
18
|
+
file: string;
|
|
19
|
+
hold: Hold;
|
|
20
|
+
}): string[];
|
|
21
|
+
export declare function make_form({ name, form, base, file, hold, }: {
|
|
22
|
+
name: string;
|
|
23
|
+
form: Form;
|
|
24
|
+
base: Base;
|
|
25
|
+
file: string;
|
|
26
|
+
hold: Hold;
|
|
27
|
+
}): string[];
|
|
28
|
+
export declare function make_link_list({ form, base, leak, name, file, hold, }: {
|
|
29
|
+
name: string;
|
|
30
|
+
form: Form | FormLinkMesh;
|
|
31
|
+
base: Base;
|
|
32
|
+
leak?: boolean;
|
|
33
|
+
file: string;
|
|
34
|
+
hold: Hold;
|
|
35
|
+
}): string[];
|