@native-form/core 0.1.0 → 0.1.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/dist/index.cjs +2073 -0
- package/dist/index.d.cts +495 -0
- package/dist/index.d.ts +495 -9
- package/dist/index.js +2030 -7
- package/package.json +5 -3
- package/dist/Discovery.d.ts +0 -2
- package/dist/Discovery.d.ts.map +0 -1
- package/dist/Discovery.js +0 -2
- package/dist/Discovery.js.map +0 -1
- package/dist/FieldErrorRenderer.d.ts +0 -2
- package/dist/FieldErrorRenderer.d.ts.map +0 -1
- package/dist/FieldErrorRenderer.js +0 -2
- package/dist/FieldErrorRenderer.js.map +0 -1
- package/dist/FieldNode.d.ts +0 -2
- package/dist/FieldNode.d.ts.map +0 -1
- package/dist/FieldNode.js +0 -2
- package/dist/FieldNode.js.map +0 -1
- package/dist/FieldRegistry.d.ts +0 -2
- package/dist/FieldRegistry.d.ts.map +0 -1
- package/dist/FieldRegistry.js +0 -2
- package/dist/FieldRegistry.js.map +0 -1
- package/dist/FieldState.d.ts +0 -2
- package/dist/FieldState.d.ts.map +0 -1
- package/dist/FieldState.js +0 -2
- package/dist/FieldState.js.map +0 -1
- package/dist/Path.d.ts +0 -78
- package/dist/Path.d.ts.map +0 -1
- package/dist/Path.js +0 -219
- package/dist/Path.js.map +0 -1
- package/dist/Runtime.d.ts +0 -2
- package/dist/Runtime.d.ts.map +0 -1
- package/dist/Runtime.js +0 -2
- package/dist/Runtime.js.map +0 -1
- package/dist/RuntimeMutationPolicy.d.ts +0 -2
- package/dist/RuntimeMutationPolicy.d.ts.map +0 -1
- package/dist/RuntimeMutationPolicy.js +0 -2
- package/dist/RuntimeMutationPolicy.js.map +0 -1
- package/dist/Serializer.d.ts +0 -2
- package/dist/Serializer.d.ts.map +0 -1
- package/dist/Serializer.js +0 -2
- package/dist/Serializer.js.map +0 -1
- package/dist/Validation.d.ts +0 -2
- package/dist/Validation.d.ts.map +0 -1
- package/dist/Validation.js +0 -2
- package/dist/Validation.js.map +0 -1
- package/dist/ValidationPipeline.d.ts +0 -2
- package/dist/ValidationPipeline.d.ts.map +0 -1
- package/dist/ValidationPipeline.js +0 -2
- package/dist/ValidationPipeline.js.map +0 -1
- package/dist/discovery/Discovery.d.ts +0 -5
- package/dist/discovery/Discovery.d.ts.map +0 -1
- package/dist/discovery/Discovery.js +0 -63
- package/dist/discovery/Discovery.js.map +0 -1
- package/dist/errors/FieldErrorRenderer.d.ts +0 -17
- package/dist/errors/FieldErrorRenderer.d.ts.map +0 -1
- package/dist/errors/FieldErrorRenderer.js +0 -115
- package/dist/errors/FieldErrorRenderer.js.map +0 -1
- package/dist/field/FieldNode.d.ts +0 -38
- package/dist/field/FieldNode.d.ts.map +0 -1
- package/dist/field/FieldNode.js +0 -154
- package/dist/field/FieldNode.js.map +0 -1
- package/dist/field/FieldRegistry.d.ts +0 -19
- package/dist/field/FieldRegistry.d.ts.map +0 -1
- package/dist/field/FieldRegistry.js +0 -46
- package/dist/field/FieldRegistry.js.map +0 -1
- package/dist/field/FieldState.d.ts +0 -13
- package/dist/field/FieldState.d.ts.map +0 -1
- package/dist/field/FieldState.js +0 -2
- package/dist/field/FieldState.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/runtime/Runtime.d.ts +0 -137
- package/dist/runtime/Runtime.d.ts.map +0 -1
- package/dist/runtime/Runtime.js +0 -1374
- package/dist/runtime/Runtime.js.map +0 -1
- package/dist/runtime/RuntimeMutationPolicy.d.ts +0 -3
- package/dist/runtime/RuntimeMutationPolicy.d.ts.map +0 -1
- package/dist/runtime/RuntimeMutationPolicy.js +0 -34
- package/dist/runtime/RuntimeMutationPolicy.js.map +0 -1
- package/dist/serialization/Serializer.d.ts +0 -52
- package/dist/serialization/Serializer.d.ts.map +0 -1
- package/dist/serialization/Serializer.js +0 -115
- package/dist/serialization/Serializer.js.map +0 -1
- package/dist/shared/types.d.ts +0 -66
- package/dist/shared/types.d.ts.map +0 -1
- package/dist/shared/types.js +0 -2
- package/dist/shared/types.js.map +0 -1
- package/dist/tsdoc-metadata.json +0 -11
- package/dist/types.d.ts +0 -2
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/validation/Validation.d.ts +0 -61
- package/dist/validation/Validation.d.ts.map +0 -1
- package/dist/validation/Validation.js +0 -34
- package/dist/validation/Validation.js.map +0 -1
- package/dist/validation/ValidationPipeline.d.ts +0 -61
- package/dist/validation/ValidationPipeline.d.ts.map +0 -1
- package/dist/validation/ValidationPipeline.js +0 -73
- package/dist/validation/ValidationPipeline.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@native-form/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Framework-agnostic native HTML-first form runtime, discovery, and validation contracts.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"main": "./dist/index.
|
|
7
|
+
"main": "./dist/index.cjs",
|
|
8
|
+
"module": "./dist/index.js",
|
|
8
9
|
"types": "./dist/index.d.ts",
|
|
9
10
|
"exports": {
|
|
10
11
|
".": {
|
|
11
12
|
"types": "./dist/index.d.ts",
|
|
12
13
|
"import": "./dist/index.js",
|
|
14
|
+
"require": "./dist/index.cjs",
|
|
13
15
|
"default": "./dist/index.js"
|
|
14
16
|
}
|
|
15
17
|
},
|
|
@@ -39,7 +41,7 @@
|
|
|
39
41
|
"@native-form/adapter-contracts": "0.0.0"
|
|
40
42
|
},
|
|
41
43
|
"scripts": {
|
|
42
|
-
"build": "
|
|
44
|
+
"build": "tsup src/index.ts --format esm,cjs --dts --clean",
|
|
43
45
|
"test": "vitest run",
|
|
44
46
|
"test:watch": "vitest"
|
|
45
47
|
}
|
package/dist/Discovery.d.ts
DELETED
package/dist/Discovery.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Discovery.d.ts","sourceRoot":"","sources":["../src/Discovery.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
package/dist/Discovery.js
DELETED
package/dist/Discovery.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Discovery.js","sourceRoot":"","sources":["../src/Discovery.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldErrorRenderer.d.ts","sourceRoot":"","sources":["../src/FieldErrorRenderer.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldErrorRenderer.js","sourceRoot":"","sources":["../src/FieldErrorRenderer.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
|
package/dist/FieldNode.d.ts
DELETED
package/dist/FieldNode.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldNode.d.ts","sourceRoot":"","sources":["../src/FieldNode.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
package/dist/FieldNode.js
DELETED
package/dist/FieldNode.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldNode.js","sourceRoot":"","sources":["../src/FieldNode.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
package/dist/FieldRegistry.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldRegistry.d.ts","sourceRoot":"","sources":["../src/FieldRegistry.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
package/dist/FieldRegistry.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldRegistry.js","sourceRoot":"","sources":["../src/FieldRegistry.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
package/dist/FieldState.d.ts
DELETED
package/dist/FieldState.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldState.d.ts","sourceRoot":"","sources":["../src/FieldState.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
package/dist/FieldState.js
DELETED
package/dist/FieldState.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldState.js","sourceRoot":"","sources":["../src/FieldState.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
package/dist/Path.d.ts
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/** @public */
|
|
2
|
-
export type FieldPathSegment = string | number;
|
|
3
|
-
/** @public */
|
|
4
|
-
export interface ArrayItemPathInfo {
|
|
5
|
-
arrayName: string;
|
|
6
|
-
index: number;
|
|
7
|
-
subPath: string;
|
|
8
|
-
}
|
|
9
|
-
/** @public */
|
|
10
|
-
export declare function formPath(...segments: FieldPathSegment[]): string;
|
|
11
|
-
/** @public */
|
|
12
|
-
export declare function arrayItemPath(arrayName: string, index: number, ...segments: FieldPathSegment[]): string;
|
|
13
|
-
/**
|
|
14
|
-
* Splits any dot or bracket notation path into string segments.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* splitPath("user.name") // ["user", "name"]
|
|
18
|
-
* splitPath("user[profile][name]") // ["user", "profile", "name"]
|
|
19
|
-
* splitPath("items[0].title") // ["items", "0", "title"]
|
|
20
|
-
*
|
|
21
|
-
* @public
|
|
22
|
-
*/
|
|
23
|
-
export declare function splitPath(path: string): string[];
|
|
24
|
-
/**
|
|
25
|
-
* Normalizes any dot or bracket notation path into canonical dot notation.
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* normalizePath("user[profile][name]") // "user.profile.name"
|
|
29
|
-
* normalizePath("tasks[0].title") // "tasks.0.title"
|
|
30
|
-
*
|
|
31
|
-
* @public
|
|
32
|
-
*/
|
|
33
|
-
export declare function normalizePath(path: string): string;
|
|
34
|
-
/** @public */
|
|
35
|
-
export declare function parseArrayItemPath(path: string): ArrayItemPathInfo | null;
|
|
36
|
-
/** @public */
|
|
37
|
-
export declare function isArrayItemPath(path: string, arrayName?: string): boolean;
|
|
38
|
-
/** @public */
|
|
39
|
-
export declare function matchArrayItemPath(path: string, arrayName: string): {
|
|
40
|
-
index: number;
|
|
41
|
-
subPath: string;
|
|
42
|
-
} | null;
|
|
43
|
-
/** @public */
|
|
44
|
-
export declare function shiftArrayItemIndex(path: string, arrayName: string, fromIndex: number, delta: number): string;
|
|
45
|
-
/** @public */
|
|
46
|
-
export declare function remapArrayItemIndex(path: string, arrayName: string, oldIndex: number, newIndex: number): string;
|
|
47
|
-
/**
|
|
48
|
-
* Safely accesses a value at a nested path inside an object or array.
|
|
49
|
-
*
|
|
50
|
-
* @param target - The root object or array
|
|
51
|
-
* @param path - Dot or bracket path string or segment array
|
|
52
|
-
* @param defaultValue - Optional fallback if the resolved value is undefined
|
|
53
|
-
*
|
|
54
|
-
* @public
|
|
55
|
-
*/
|
|
56
|
-
export declare function getByPath(target: unknown, path: string | readonly string[], defaultValue?: unknown): unknown;
|
|
57
|
-
/**
|
|
58
|
-
* Safely sets a value at a nested path, automatically creating intermediate
|
|
59
|
-
* objects or arrays (for numeric integer segments).
|
|
60
|
-
* Protects against prototype pollution by skipping __proto__, prototype, and constructor.
|
|
61
|
-
*
|
|
62
|
-
* @param target - The root object to modify
|
|
63
|
-
* @param path - Dot or bracket path string or segment array
|
|
64
|
-
* @param value - The value to assign
|
|
65
|
-
*
|
|
66
|
-
* @public
|
|
67
|
-
*/
|
|
68
|
-
export declare function setByPath(target: Record<string, unknown>, path: string | readonly string[], value: unknown): void;
|
|
69
|
-
/**
|
|
70
|
-
* Transforms a flat key-value map into deeply nested objects and arrays.
|
|
71
|
-
*
|
|
72
|
-
* @param flatValues - Flat map of field names to values
|
|
73
|
-
* @returns Deeply nested object/array structure
|
|
74
|
-
*
|
|
75
|
-
* @public
|
|
76
|
-
*/
|
|
77
|
-
export declare function toNestedValues<TOutput extends Record<string, unknown> = Record<string, unknown>>(flatValues: Record<string, unknown>): TOutput;
|
|
78
|
-
//# sourceMappingURL=Path.d.ts.map
|
package/dist/Path.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Path.d.ts","sourceRoot":"","sources":["../src/Path.ts"],"names":[],"mappings":"AAEA,cAAc;AACd,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/C,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,cAAc;AACd,wBAAgB,QAAQ,CAAC,GAAG,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAKhE;AAED,cAAc;AACd,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,QAAQ,EAAE,gBAAgB,EAAE,GAC9B,MAAM,CAMR;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,cAAc;AACd,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAczE;AAED,cAAc;AACd,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAWzE;AAED,cAAc;AACd,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO3C;AAED,cAAc;AACd,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,CAcR;AAED,cAAc;AACd,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAeR;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAChC,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAgCT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAChC,KAAK,EAAE,OAAO,GACb,IAAI,CAwDN;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAY9C"}
|
package/dist/Path.js
DELETED
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
const BLOCKED_PROPERTIES = new Set(["__proto__", "constructor", "prototype"]);
|
|
2
|
-
/** @public */
|
|
3
|
-
export function formPath(...segments) {
|
|
4
|
-
return segments
|
|
5
|
-
.map((segment) => String(segment).trim())
|
|
6
|
-
.filter(Boolean)
|
|
7
|
-
.join(".");
|
|
8
|
-
}
|
|
9
|
-
/** @public */
|
|
10
|
-
export function arrayItemPath(arrayName, index, ...segments) {
|
|
11
|
-
if (!Number.isInteger(index) || index < 0) {
|
|
12
|
-
throw new Error("arrayItemPath index must be a non-negative integer.");
|
|
13
|
-
}
|
|
14
|
-
return formPath(arrayName, index, ...segments);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Splits any dot or bracket notation path into string segments.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* splitPath("user.name") // ["user", "name"]
|
|
21
|
-
* splitPath("user[profile][name]") // ["user", "profile", "name"]
|
|
22
|
-
* splitPath("items[0].title") // ["items", "0", "title"]
|
|
23
|
-
*
|
|
24
|
-
* @public
|
|
25
|
-
*/
|
|
26
|
-
export function splitPath(path) {
|
|
27
|
-
if (!path)
|
|
28
|
-
return [];
|
|
29
|
-
return path
|
|
30
|
-
.replace(/\[/g, ".")
|
|
31
|
-
.replace(/\]/g, "")
|
|
32
|
-
.split(".")
|
|
33
|
-
.map((segment) => segment.replace(/['"]/g, "").trim())
|
|
34
|
-
.filter(Boolean);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Normalizes any dot or bracket notation path into canonical dot notation.
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* normalizePath("user[profile][name]") // "user.profile.name"
|
|
41
|
-
* normalizePath("tasks[0].title") // "tasks.0.title"
|
|
42
|
-
*
|
|
43
|
-
* @public
|
|
44
|
-
*/
|
|
45
|
-
export function normalizePath(path) {
|
|
46
|
-
return splitPath(path).join(".");
|
|
47
|
-
}
|
|
48
|
-
/** @public */
|
|
49
|
-
export function parseArrayItemPath(path) {
|
|
50
|
-
const parts = splitPath(path);
|
|
51
|
-
for (let i = 0; i < parts.length - 1; i++) {
|
|
52
|
-
const next = parts[i + 1];
|
|
53
|
-
if (/^\d+$/.test(next)) {
|
|
54
|
-
const arrayName = parts.slice(0, i + 1).join(".");
|
|
55
|
-
const index = Number(next);
|
|
56
|
-
const subPath = parts.slice(i + 2).join(".");
|
|
57
|
-
return { arrayName, index, subPath };
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
/** @public */
|
|
63
|
-
export function isArrayItemPath(path, arrayName) {
|
|
64
|
-
const parsed = parseArrayItemPath(path);
|
|
65
|
-
if (!parsed) {
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
if (arrayName !== undefined && parsed.arrayName !== arrayName) {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
/** @public */
|
|
74
|
-
export function matchArrayItemPath(path, arrayName) {
|
|
75
|
-
const parsed = parseArrayItemPath(path);
|
|
76
|
-
if (!parsed || parsed.arrayName !== arrayName) {
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
79
|
-
return { index: parsed.index, subPath: parsed.subPath };
|
|
80
|
-
}
|
|
81
|
-
/** @public */
|
|
82
|
-
export function shiftArrayItemIndex(path, arrayName, fromIndex, delta) {
|
|
83
|
-
const parsed = parseArrayItemPath(path);
|
|
84
|
-
if (!parsed || parsed.arrayName !== arrayName || parsed.index < fromIndex) {
|
|
85
|
-
return path;
|
|
86
|
-
}
|
|
87
|
-
const nextIndex = parsed.index + delta;
|
|
88
|
-
if (nextIndex < 0) {
|
|
89
|
-
throw new Error("shiftArrayItemIndex resulted in a negative index.");
|
|
90
|
-
}
|
|
91
|
-
return parsed.subPath
|
|
92
|
-
? arrayItemPath(arrayName, nextIndex, parsed.subPath)
|
|
93
|
-
: arrayItemPath(arrayName, nextIndex);
|
|
94
|
-
}
|
|
95
|
-
/** @public */
|
|
96
|
-
export function remapArrayItemIndex(path, arrayName, oldIndex, newIndex) {
|
|
97
|
-
if (!Number.isInteger(newIndex) || newIndex < 0) {
|
|
98
|
-
throw new Error("remapArrayItemIndex newIndex must be a non-negative integer.");
|
|
99
|
-
}
|
|
100
|
-
const parsed = parseArrayItemPath(path);
|
|
101
|
-
if (!parsed || parsed.arrayName !== arrayName || parsed.index !== oldIndex) {
|
|
102
|
-
return path;
|
|
103
|
-
}
|
|
104
|
-
return parsed.subPath
|
|
105
|
-
? arrayItemPath(arrayName, newIndex, parsed.subPath)
|
|
106
|
-
: arrayItemPath(arrayName, newIndex);
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Safely accesses a value at a nested path inside an object or array.
|
|
110
|
-
*
|
|
111
|
-
* @param target - The root object or array
|
|
112
|
-
* @param path - Dot or bracket path string or segment array
|
|
113
|
-
* @param defaultValue - Optional fallback if the resolved value is undefined
|
|
114
|
-
*
|
|
115
|
-
* @public
|
|
116
|
-
*/
|
|
117
|
-
export function getByPath(target, path, defaultValue) {
|
|
118
|
-
const parts = typeof path === "string" ? splitPath(path) : path;
|
|
119
|
-
if (parts.length === 0) {
|
|
120
|
-
return target !== undefined ? target : defaultValue;
|
|
121
|
-
}
|
|
122
|
-
let current = target;
|
|
123
|
-
for (const part of parts) {
|
|
124
|
-
if (current === null || current === undefined) {
|
|
125
|
-
return defaultValue;
|
|
126
|
-
}
|
|
127
|
-
if (BLOCKED_PROPERTIES.has(part)) {
|
|
128
|
-
return defaultValue;
|
|
129
|
-
}
|
|
130
|
-
if (Array.isArray(current)) {
|
|
131
|
-
const index = Number(part);
|
|
132
|
-
if (!Number.isInteger(index) || index < 0) {
|
|
133
|
-
return defaultValue;
|
|
134
|
-
}
|
|
135
|
-
current = current[index];
|
|
136
|
-
}
|
|
137
|
-
else if (typeof current === "object") {
|
|
138
|
-
current = current[part];
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
return defaultValue;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return current !== undefined ? current : defaultValue;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Safely sets a value at a nested path, automatically creating intermediate
|
|
148
|
-
* objects or arrays (for numeric integer segments).
|
|
149
|
-
* Protects against prototype pollution by skipping __proto__, prototype, and constructor.
|
|
150
|
-
*
|
|
151
|
-
* @param target - The root object to modify
|
|
152
|
-
* @param path - Dot or bracket path string or segment array
|
|
153
|
-
* @param value - The value to assign
|
|
154
|
-
*
|
|
155
|
-
* @public
|
|
156
|
-
*/
|
|
157
|
-
export function setByPath(target, path, value) {
|
|
158
|
-
const parts = typeof path === "string" ? splitPath(path) : path;
|
|
159
|
-
if (parts.length === 0) {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
let current = target;
|
|
163
|
-
for (let i = 0; i < parts.length; i++) {
|
|
164
|
-
const part = parts[i];
|
|
165
|
-
if (BLOCKED_PROPERTIES.has(part)) {
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
const isLast = i === parts.length - 1;
|
|
169
|
-
const nextPart = parts[i + 1];
|
|
170
|
-
const nextIsIndex = nextPart !== undefined && /^\d+$/.test(nextPart);
|
|
171
|
-
if (Array.isArray(current)) {
|
|
172
|
-
const index = Number(part);
|
|
173
|
-
if (!Number.isInteger(index) || index < 0) {
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
if (isLast) {
|
|
177
|
-
current[index] = value;
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
if (current[index] === undefined || current[index] === null) {
|
|
181
|
-
current[index] = nextIsIndex ? [] : {};
|
|
182
|
-
}
|
|
183
|
-
current = current[index];
|
|
184
|
-
continue;
|
|
185
|
-
}
|
|
186
|
-
if (typeof current === "object" && current !== null) {
|
|
187
|
-
if (isLast) {
|
|
188
|
-
current[part] = value;
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
if (current[part] === undefined || current[part] === null) {
|
|
192
|
-
current[part] = nextIsIndex ? [] : {};
|
|
193
|
-
}
|
|
194
|
-
current = current[part];
|
|
195
|
-
continue;
|
|
196
|
-
}
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Transforms a flat key-value map into deeply nested objects and arrays.
|
|
202
|
-
*
|
|
203
|
-
* @param flatValues - Flat map of field names to values
|
|
204
|
-
* @returns Deeply nested object/array structure
|
|
205
|
-
*
|
|
206
|
-
* @public
|
|
207
|
-
*/
|
|
208
|
-
export function toNestedValues(flatValues) {
|
|
209
|
-
const nested = {};
|
|
210
|
-
for (const [path, value] of Object.entries(flatValues)) {
|
|
211
|
-
const parts = splitPath(path);
|
|
212
|
-
if (parts.length === 0) {
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
setByPath(nested, parts, value);
|
|
216
|
-
}
|
|
217
|
-
return nested;
|
|
218
|
-
}
|
|
219
|
-
//# sourceMappingURL=Path.js.map
|
package/dist/Path.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../src/Path.ts"],"names":[],"mappings":"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"}
|
package/dist/Runtime.d.ts
DELETED
package/dist/Runtime.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Runtime.d.ts","sourceRoot":"","sources":["../src/Runtime.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
package/dist/Runtime.js
DELETED
package/dist/Runtime.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Runtime.js","sourceRoot":"","sources":["../src/Runtime.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeMutationPolicy.d.ts","sourceRoot":"","sources":["../src/RuntimeMutationPolicy.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeMutationPolicy.js","sourceRoot":"","sources":["../src/RuntimeMutationPolicy.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
|
package/dist/Serializer.d.ts
DELETED
package/dist/Serializer.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Serializer.d.ts","sourceRoot":"","sources":["../src/Serializer.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
|
package/dist/Serializer.js
DELETED
package/dist/Serializer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Serializer.js","sourceRoot":"","sources":["../src/Serializer.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
|
package/dist/Validation.d.ts
DELETED
package/dist/Validation.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../src/Validation.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
|
package/dist/Validation.js
DELETED
package/dist/Validation.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.js","sourceRoot":"","sources":["../src/Validation.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationPipeline.d.ts","sourceRoot":"","sources":["../src/ValidationPipeline.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationPipeline.js","sourceRoot":"","sources":["../src/ValidationPipeline.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Discovery.d.ts","sourceRoot":"","sources":["../../src/discovery/Discovery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,qBAAa,SAAS;IACpB,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;CA2E/D"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { FieldNode } from "../field/FieldNode";
|
|
2
|
-
export class Discovery {
|
|
3
|
-
discover(form, registry) {
|
|
4
|
-
// Register controls found in the form. If a control with the same
|
|
5
|
-
// name already exists in the registry, reuse it when it's the same
|
|
6
|
-
// DOM element; otherwise replace the entry so the registry always
|
|
7
|
-
// reflects the current DOM node for that name.
|
|
8
|
-
const seen = new Set();
|
|
9
|
-
for (const control of Array.from(form.elements)) {
|
|
10
|
-
if (control instanceof HTMLInputElement ||
|
|
11
|
-
control instanceof HTMLSelectElement ||
|
|
12
|
-
control instanceof HTMLTextAreaElement) {
|
|
13
|
-
if (!control.name) {
|
|
14
|
-
continue;
|
|
15
|
-
}
|
|
16
|
-
const name = control.name;
|
|
17
|
-
seen.add(name);
|
|
18
|
-
if (registry.has(name)) {
|
|
19
|
-
const existing = registry.get(name);
|
|
20
|
-
// If the registry already has the same DOM element, keep it.
|
|
21
|
-
if (existing.element === control) {
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
// If both are radio buttons in the same radio group, prefer the checked one
|
|
25
|
-
// and avoid thrashing on sibling radios.
|
|
26
|
-
if (control instanceof HTMLInputElement &&
|
|
27
|
-
control.type === "radio" &&
|
|
28
|
-
existing.element instanceof HTMLInputElement &&
|
|
29
|
-
existing.element.type === "radio") {
|
|
30
|
-
if (control.checked && !existing.element.checked) {
|
|
31
|
-
registry.unregister(name);
|
|
32
|
-
registry.register(new FieldNode(control));
|
|
33
|
-
}
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
// If multiple checkboxes share the same name, retain the registered node
|
|
37
|
-
// if it is still part of the form, rather than thrashing.
|
|
38
|
-
if (control instanceof HTMLInputElement &&
|
|
39
|
-
control.type === "checkbox" &&
|
|
40
|
-
existing.element instanceof HTMLInputElement &&
|
|
41
|
-
existing.element.type === "checkbox" &&
|
|
42
|
-
existing.element.form === form) {
|
|
43
|
-
continue;
|
|
44
|
-
}
|
|
45
|
-
// Otherwise replace the registry entry so the FieldNode points
|
|
46
|
-
// to the current DOM control.
|
|
47
|
-
registry.unregister(name);
|
|
48
|
-
registry.register(new FieldNode(control));
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
registry.register(new FieldNode(control));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
// Unregister any fields that were removed from the DOM or whose names changed
|
|
55
|
-
// since the previous discovery pass.
|
|
56
|
-
for (const [key, field] of registry.entries()) {
|
|
57
|
-
if (!seen.has(key) || field.element.name !== key) {
|
|
58
|
-
registry.unregister(key);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=Discovery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Discovery.js","sourceRoot":"","sources":["../../src/discovery/Discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,OAAO,SAAS;IACpB,QAAQ,CAAC,IAAqB,EAAE,QAAuB;QACrD,kEAAkE;QAClE,mEAAmE;QACnE,kEAAkE;QAClE,+CAA+C;QAE/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,IACE,OAAO,YAAY,gBAAgB;gBACnC,OAAO,YAAY,iBAAiB;gBACpC,OAAO,YAAY,mBAAmB,EACtC,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;gBAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEf,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;oBAErC,6DAA6D;oBAC7D,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;wBACjC,SAAS;oBACX,CAAC;oBAED,4EAA4E;oBAC5E,yCAAyC;oBACzC,IACE,OAAO,YAAY,gBAAgB;wBACnC,OAAO,CAAC,IAAI,KAAK,OAAO;wBACxB,QAAQ,CAAC,OAAO,YAAY,gBAAgB;wBAC5C,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EACjC,CAAC;wBACD,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;4BACjD,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;4BAC1B,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;wBAC5C,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,yEAAyE;oBACzE,0DAA0D;oBAC1D,IACE,OAAO,YAAY,gBAAgB;wBACnC,OAAO,CAAC,IAAI,KAAK,UAAU;wBAC3B,QAAQ,CAAC,OAAO,YAAY,gBAAgB;wBAC5C,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU;wBACpC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAC9B,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,+DAA+D;oBAC/D,8BAA8B;oBAC9B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC1B,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC1C,SAAS;gBACX,CAAC;gBAED,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,8EAA8E;QAC9E,qCAAqC;QACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjD,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { FieldNode } from "../field/FieldNode";
|
|
2
|
-
export declare class FieldErrorRenderer {
|
|
3
|
-
private static nextErrorId;
|
|
4
|
-
private readonly errorIds;
|
|
5
|
-
private readonly errorElements;
|
|
6
|
-
applyErrors(fields: FieldNode[], errors: Record<string, string>): void;
|
|
7
|
-
normalizeFields(fields: FieldNode[]): void;
|
|
8
|
-
private applyFieldError;
|
|
9
|
-
private normalizeField;
|
|
10
|
-
private getPrimaryErrorElement;
|
|
11
|
-
private findExistingErrorElements;
|
|
12
|
-
private removeErrorElements;
|
|
13
|
-
private createErrorElement;
|
|
14
|
-
private decorateErrorElement;
|
|
15
|
-
private getOrCreateErrorId;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=FieldErrorRenderer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldErrorRenderer.d.ts","sourceRoot":"","sources":["../../src/errors/FieldErrorRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,WAAW,CAAK;IAE/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4C;IAErE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG1B;IAEJ,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAM/D,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE;IAMnC,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,yBAAyB;IA0BjC,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,kBAAkB;CAW3B"}
|