@glitchproof/form-field-generator 1.0.8 → 1.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/dist/core/convert.d.ts.map +1 -1
- package/dist/core/convert.js +10 -1
- package/dist/core/convert.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -9
- package/dist/index.js.map +1 -1
- package/dist/type.d.ts +48 -34
- package/dist/type.d.ts.map +1 -1
- package/package.json +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/core/convert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/core/convert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAqB1C,eAAO,MAAM,OAAO,GAAI,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxD,OAAO,MAAM,EACb,UAAS,OAAwB,wBA6ElC,CAAC"}
|
package/dist/core/convert.js
CHANGED
|
@@ -2,6 +2,12 @@ import { isListed } from '../utils/is-list.js';
|
|
|
2
2
|
import { toSnakeCase } from '../utils/to-snake-case.js';
|
|
3
3
|
import { pathGenerator } from '../utils/path-generator.js';
|
|
4
4
|
import { createIndexFormatter } from '../utils/create-index-formatter.js';
|
|
5
|
+
const RESERVED_KEYS_WITH_ERRORS_MESSAGES = {
|
|
6
|
+
key: 'Error: "key" is a reserved key and cannot be used',
|
|
7
|
+
path: 'Error: "path" is a reserved key and cannot be used',
|
|
8
|
+
elementAt: 'Error: "elementAt" is a reserved key and cannot be used as a field name',
|
|
9
|
+
at: 'Error: "at" is a reserved key and cannot be used as a field name',
|
|
10
|
+
};
|
|
5
11
|
const defaultContext = {
|
|
6
12
|
path: '',
|
|
7
13
|
};
|
|
@@ -13,11 +19,14 @@ export const convert = (field, context = defaultContext) => {
|
|
|
13
19
|
const fields = Object.entries(fieldsObj);
|
|
14
20
|
return fields.reduce((acc, [key, value]) => {
|
|
15
21
|
const convertedName = toSnakeCase(key).toUpperCase();
|
|
22
|
+
if (key in RESERVED_KEYS_WITH_ERRORS_MESSAGES) {
|
|
23
|
+
throw new Error(RESERVED_KEYS_WITH_ERRORS_MESSAGES[key]);
|
|
24
|
+
}
|
|
16
25
|
if (typeof value === 'string') {
|
|
17
26
|
acc[convertedName] = value;
|
|
18
27
|
const accessorName = `${convertedName}_FIELD`;
|
|
19
28
|
if (isList || isListedBefore) {
|
|
20
|
-
acc[accessorName] = createIndexFormatter(`${path}.${
|
|
29
|
+
acc[accessorName] = createIndexFormatter(`${path}.${value}`);
|
|
21
30
|
return acc;
|
|
22
31
|
}
|
|
23
32
|
acc[accessorName] = path ? `${path}.${value}` : value;
|
package/dist/core/convert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/core/convert.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/core/convert.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const generateFields: <const Fields extends
|
|
1
|
+
import type { Dict, GenerateFields, ValidateDICT } from './type.js';
|
|
2
|
+
export declare const generateFields: <const Fields extends Dict>(fields: ValidateDICT<Fields>) => GenerateFields<Fields>;
|
|
3
3
|
export default generateFields;
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIpE,eAAO,MAAM,cAAc,GAAI,KAAK,CAAC,MAAM,SAAS,IAAI,EACtD,QAAQ,YAAY,CAAC,MAAM,CAAC,KAC3B,cAAc,CAAC,MAAM,CAA8C,CAAC;AAEvE,eAAe,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
import { convert } from './core/convert.js';
|
|
2
2
|
export const generateFields = (fields) => convert(fields);
|
|
3
3
|
export default generateFields;
|
|
4
|
-
const Fields = generateFields({
|
|
5
|
-
endpoints: [
|
|
6
|
-
{
|
|
7
|
-
path12: 'path12',
|
|
8
|
-
method: 'method',
|
|
9
|
-
params: [{ name: 'name' }],
|
|
10
|
-
},
|
|
11
|
-
],
|
|
12
|
-
});
|
|
13
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAA4B,EACJ,EAAE,CAAC,OAAO,CAAC,MAAM,CAA2B,CAAC;AAEvE,eAAe,cAAc,CAAC"}
|
package/dist/type.d.ts
CHANGED
|
@@ -1,33 +1,43 @@
|
|
|
1
1
|
export type Context = {
|
|
2
2
|
path: string;
|
|
3
3
|
};
|
|
4
|
+
export type ReservedKeys = 'key' | 'path' | 'elementAt' | 'at';
|
|
4
5
|
type ArrayNumberPattern = `.${number}`;
|
|
5
|
-
type
|
|
6
|
-
readonly [key: string]:
|
|
7
|
-
}
|
|
8
|
-
readonly [key: string]:
|
|
9
|
-
};
|
|
10
|
-
type
|
|
11
|
-
readonly [key: string]:
|
|
12
|
-
};
|
|
13
|
-
type
|
|
14
|
-
readonly [key: string]:
|
|
15
|
-
}
|
|
16
|
-
type
|
|
17
|
-
export type
|
|
6
|
+
type DictValue = string | readonly [{
|
|
7
|
+
readonly [key: string]: DictValue;
|
|
8
|
+
}] | {
|
|
9
|
+
readonly [key: string]: DictValue;
|
|
10
|
+
};
|
|
11
|
+
type DictObjectValue = {
|
|
12
|
+
readonly [key: string]: DictValue;
|
|
13
|
+
};
|
|
14
|
+
type DictArrayValue = readonly [{
|
|
15
|
+
readonly [key: string]: DictValue;
|
|
16
|
+
}];
|
|
17
|
+
type DictNestedValues = DictArrayValue | DictObjectValue;
|
|
18
|
+
export type Dict = Record<string, DictValue>;
|
|
19
|
+
export type ValidateDICT<DictObj extends Dict | DictNestedValues> = {
|
|
20
|
+
[Key in keyof DictObj]: DictObj[Key] extends DictNestedValues ? ValidateDICT<DictObj[Key]> : Key extends ReservedKeys ? `Error: "${Key & string}" is a reserved key and cannot be used` : DictObj[Key];
|
|
21
|
+
};
|
|
18
22
|
type CheckCharIsCharCanBeCapitalize<Char extends string> = Char extends `${number}` ? never : Capitalize<Char>;
|
|
19
23
|
type CamelToSnakeCase<S extends string> = S extends `${infer T}${infer U}` ? `${T extends CheckCharIsCharCanBeCapitalize<T> ? '_' : ''}${Lowercase<T>}${CamelToSnakeCase<U>}` : S;
|
|
20
24
|
type BuildTuple<Type, Length extends number, Acc extends Type[] = []> = Acc['length'] extends Length ? Acc : BuildTuple<Type, Length, [...Acc, Type]>;
|
|
25
|
+
type AddOne<N extends number> = [
|
|
26
|
+
...BuildTuple<unknown, N>,
|
|
27
|
+
unknown
|
|
28
|
+
]['length'] extends infer L ? L extends number ? L : never : never;
|
|
21
29
|
type CountOccurrences<S extends string, Acc extends unknown[] = []> = S extends `${ArrayNumberPattern}${infer Rest}` ? CountOccurrences<Rest, [...Acc, 0]> : S extends `${infer _}${infer Rest}` ? CountOccurrences<Rest, Acc> : Acc['length'];
|
|
22
30
|
type ExtendObjectWithCondition<Condition extends boolean, Obj> = Condition extends true ? Obj : {};
|
|
23
31
|
type CountArrayIndices<Path extends string> = CountOccurrences<Path>;
|
|
24
|
-
type
|
|
25
|
-
type
|
|
26
|
-
type
|
|
27
|
-
type
|
|
28
|
-
type
|
|
32
|
+
type toPropertyName<KEY> = Uppercase<CamelToSnakeCase<KEY & string>>;
|
|
33
|
+
type toFieldName<KEY> = `${toPropertyName<KEY>}_FIELD`;
|
|
34
|
+
type toObjectFieldName<KEY> = `$${toPropertyName<KEY>}`;
|
|
35
|
+
type ListFieldAccessorReturn<ListPath extends string, ArgList extends number[], NewPath extends string = '', ArgIndex extends number = 0> = ListPath extends `.${number}${infer Rest}` ? ArgIndex extends ArgList['length'] ? `${NewPath}.${ListPath}` : ListFieldAccessorReturn<Rest, ArgList, `${NewPath}.${ArgList[ArgIndex]}`, AddOne<ArgIndex>> : ListPath extends `.${infer First}${infer Rest}` ? ListFieldAccessorReturn<Rest, ArgList, `${NewPath}.${First}`, ArgIndex> : ListPath extends `${infer First}${infer Rest}` ? ListFieldAccessorReturn<Rest, ArgList, `${NewPath}${First}`, ArgIndex> : NewPath;
|
|
36
|
+
type ListFieldAccessor<Path extends string, ArgsList extends BuildTuple<number, CountArrayIndices<Path>> = BuildTuple<number, CountArrayIndices<Path>>> = <Args extends ArgsList>(...args: Args) => ListFieldAccessorReturn<Path, Args>;
|
|
37
|
+
type SubArrayElement<Arr extends DictNestedValues> = Arr extends readonly (infer Obj)[] ? Obj : never;
|
|
38
|
+
type HasArrayElements<Field extends DictNestedValues> = SubArrayElement<Field> extends never ? false : true;
|
|
29
39
|
type PathGenerator<Path extends string> = CountArrayIndices<Path> extends 0 ? Path : ListFieldAccessor<Path>;
|
|
30
|
-
type ObjectFieldNameGenerator<Key extends string, Field extends
|
|
40
|
+
type ObjectFieldNameGenerator<Key extends string, Field extends DictObjectValue> = Field[Key] extends string ? toFieldName<Key> : toObjectFieldName<Key>;
|
|
31
41
|
type IsListedBefore<Path extends string> = CountArrayIndices<Path> extends 0 ? false : true;
|
|
32
42
|
type ExceptNumber<Key, Result> = Key extends `${number}` ? never : Result;
|
|
33
43
|
type FeatureFieldsForArrayFields<Path extends string> = {
|
|
@@ -36,28 +46,32 @@ type FeatureFieldsForArrayFields<Path extends string> = {
|
|
|
36
46
|
type FeatureFieldsForArraySubFields<Path extends string> = {
|
|
37
47
|
AT: ListFieldAccessor<Path>;
|
|
38
48
|
};
|
|
39
|
-
type FieldsNameGenerator<Field extends
|
|
40
|
-
[KEY in keyof Field as Field[KEY] extends string ?
|
|
49
|
+
type FieldsNameGenerator<Field extends DictNestedValues> = {
|
|
50
|
+
[KEY in keyof Field as Field[KEY] extends string ? toPropertyName<KEY> : never]: Field[KEY];
|
|
41
51
|
};
|
|
42
|
-
type FieldsFieldGenerator<Field extends
|
|
43
|
-
[KEY in keyof Field as Field[KEY] extends string ?
|
|
52
|
+
type FieldsFieldGenerator<Field extends DictNestedValues, Path extends string = ''> = {
|
|
53
|
+
[KEY in keyof Field as Field[KEY] extends string ? toFieldName<KEY> : never]: Path extends '' ? Field[KEY] : IsListedBefore<Path> extends true ? ListFieldAccessor<`${Path}.${Field[KEY] & string}`> : `${Path}.${Field[KEY] & string}`;
|
|
44
54
|
};
|
|
45
|
-
type GenerateFieldsFromArrays<Field extends
|
|
46
|
-
[KEY in keyof SubArrayElement<Field> as ObjectFieldNameGenerator<KEY & string, SubArrayElement<Field>>]: SubArrayElement<Field>[KEY] extends
|
|
55
|
+
type GenerateFieldsFromArrays<Field extends DictNestedValues, Path extends string> = {
|
|
56
|
+
[KEY in keyof SubArrayElement<Field> as ObjectFieldNameGenerator<KEY & string, SubArrayElement<Field>>]: SubArrayElement<Field>[KEY] extends DictNestedValues ? FieldsGroup<SubArrayElement<Field>[KEY], `${Path}.${number}.${KEY & string}`, KEY & string> : ListFieldAccessor<`${Path}.${number}.${SubArrayElement<Field>[KEY] & string}`>;
|
|
47
57
|
} & {
|
|
48
|
-
[KEY in keyof SubArrayElement<Field> as SubArrayElement<Field>[KEY] extends string ?
|
|
58
|
+
[KEY in keyof SubArrayElement<Field> as SubArrayElement<Field>[KEY] extends string ? toPropertyName<KEY> : never]: SubArrayElement<Field>[KEY];
|
|
49
59
|
};
|
|
50
|
-
type GenerateFieldsFromObjects<Field extends
|
|
51
|
-
[KEY in keyof Field as Field[KEY] extends
|
|
60
|
+
type GenerateFieldsFromObjects<Field extends DictNestedValues, Path extends string> = {
|
|
61
|
+
[KEY in keyof Field as Field[KEY] extends DictNestedValues ? ExceptNumber<KEY, toObjectFieldName<KEY>> : never]: Field[KEY] extends DictObjectValue ? FieldsGroup<Field[KEY], `${Path}.${KEY & string}`, KEY & string> : Field[KEY] extends DictArrayValue ? FieldsGroup<Field[KEY], `${Path}.${KEY & string}`, KEY & string> : never;
|
|
52
62
|
};
|
|
53
|
-
type AddonOnlyArraysFields<Field extends
|
|
54
|
-
type AddonOnlyFieldsThatListedBefore<Field extends
|
|
55
|
-
type
|
|
63
|
+
type AddonOnlyArraysFields<Field extends DictNestedValues, Obj> = ExtendObjectWithCondition<HasArrayElements<Field>, Obj>;
|
|
64
|
+
type AddonOnlyFieldsThatListedBefore<Field extends DictNestedValues, Path extends string, Obj> = ExtendObjectWithCondition<IsListedBefore<Path> extends true ? SubArrayElement<Field> extends never ? true : false : false, Obj>;
|
|
65
|
+
type BaseFields<FieldName extends string, Path extends string> = {
|
|
56
66
|
readonly KEY: FieldName;
|
|
57
67
|
readonly PATH: PathGenerator<Path>;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
68
|
+
};
|
|
69
|
+
type NameFields<Field extends DictNestedValues> = FieldsNameGenerator<Field>;
|
|
70
|
+
type NestedFields<Field extends DictNestedValues, Path extends string> = GenerateFieldsFromArrays<Field, Path> & GenerateFieldsFromObjects<Field, Path>;
|
|
71
|
+
type FieldAccessors<Field extends DictNestedValues, Path extends string> = FieldsFieldGenerator<Field, Path> & AddonOnlyFieldsThatListedBefore<Field, Path, FeatureFieldsForArraySubFields<Path>> & AddonOnlyArraysFields<Field, FeatureFieldsForArrayFields<Path>>;
|
|
72
|
+
type FieldsGroup<Field extends DictNestedValues, Path extends string, FieldName extends string> = BaseFields<FieldName, Path> & NameFields<Field> & NestedFields<Field, Path> & FieldAccessors<Field, Path>;
|
|
73
|
+
export type GenerateFields<Fields extends Dict> = FieldsFieldGenerator<Fields> & FieldsNameGenerator<Fields> & {
|
|
74
|
+
[KEY in keyof Fields as Fields[KEY] extends DictNestedValues ? toObjectFieldName<KEY> : never]: Fields[KEY] extends DictNestedValues ? FieldsGroup<Fields[KEY], KEY & string, KEY & string> : never;
|
|
61
75
|
};
|
|
62
76
|
export {};
|
|
63
77
|
//# sourceMappingURL=type.d.ts.map
|
package/dist/type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,kBAAkB,GAAG,IAAI,MAAM,EAAE,CAAC;AAEvC,KAAK,
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glitchproof/form-field-generator",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "> Type-safe field path generation for nested objects and arrays",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"build": "tsc",
|
|
7
|
-
"ci": "bun run
|
|
6
|
+
"build": "tsc --project tsconfig.build.json",
|
|
7
|
+
"ci": "bun run format:check && bun run test && bun run build",
|
|
8
8
|
"format": "prettier --write .",
|
|
9
9
|
"format:src": "prettier --write src/**/*.ts",
|
|
10
10
|
"format:check": "prettier --write --check .",
|
|
@@ -38,9 +38,10 @@
|
|
|
38
38
|
"license": "MIT",
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@changesets/cli": "^2.29.7",
|
|
41
|
+
"expect-type": "^1.3.0",
|
|
41
42
|
"prettier": "^3.6.2",
|
|
42
43
|
"typescript": "^5.9.3",
|
|
43
|
-
"vitest": "^4.0.
|
|
44
|
+
"vitest": "^4.0.16"
|
|
44
45
|
},
|
|
45
46
|
"types": "./dist/index.d.ts",
|
|
46
47
|
"bugs": {
|