@playfast/reform-forms 0.0.7 → 0.0.9

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/form.js DELETED
@@ -1,292 +0,0 @@
1
- import { Context, Effect, Either, Layer, Option, Runtime, Schema as S, } from 'effect';
2
- import { Bus, CurrentTracker, Event, Reducer, Reducers, State, } from '@playfast/reform';
3
- import { getNestedValue, isPathOrParentDirty, moveAt, recalculateDirtyPaths, replaceAt, setNestedValue, } from './path';
4
- import { error, errorsToRecord, firstError, normalizeErrors, routeParseError, } from './validation';
5
- export { error };
6
- const unknownSchema = S.Unknown;
7
- let nextArrayKey = 0;
8
- const makeArrayKey = () => `form-item-${nextArrayKey++}`;
9
- export const arrayKeysFor = (value, path = '') => {
10
- const out = {};
11
- const visit = (current, currentPath) => {
12
- if (Array.isArray(current)) {
13
- out[currentPath] = current.map(() => makeArrayKey());
14
- current.forEach((item, index) => visit(item, `${currentPath}[${index}]`));
15
- return;
16
- }
17
- if (current !== null && typeof current === 'object') {
18
- for (const [key, child] of Object.entries(current)) {
19
- visit(child, currentPath.length === 0 ? key : `${currentPath}.${key}`);
20
- }
21
- }
22
- };
23
- visit(value, path);
24
- return out;
25
- };
26
- const initialState = (initial) => ({
27
- values: initial,
28
- initialValues: initial,
29
- touched: {},
30
- errors: {},
31
- dirtyPaths: [],
32
- submitCount: 0,
33
- validationCount: 0,
34
- lastSubmittedValues: Option.none(),
35
- arrayKeys: arrayKeysFor(initial),
36
- });
37
- const markTouched = (touched, path) => ({ ...touched, [path]: true });
38
- const withValues = (state, values) => ({
39
- ...state,
40
- values,
41
- dirtyPaths: recalculateDirtyPaths(state.initialValues, values),
42
- });
43
- const currentArray = (values, path) => {
44
- const current = getNestedValue(values, path);
45
- return Array.isArray(current) ? current : [];
46
- };
47
- const updateKeys = (state, path, f) => {
48
- const existing = state.arrayKeys[path] ?? currentArray(state.values, path).map(() => makeArrayKey());
49
- return { ...state.arrayKeys, [path]: f(existing) };
50
- };
51
- const setAtPath = (state, path, value) => withValues(state, setNestedValue(state.values, path, value));
52
- const appendAtPath = (state, path, value) => {
53
- const items = currentArray(state.values, path);
54
- const values = setNestedValue(state.values, path, [...items, value]);
55
- return {
56
- ...withValues(state, values),
57
- arrayKeys: updateKeys(state, path, (keys) => [...keys, makeArrayKey()]),
58
- };
59
- };
60
- const removeAtPath = (state, path, index) => {
61
- const items = currentArray(state.values, path);
62
- if (index < 0 || index >= items.length)
63
- return state;
64
- const values = setNestedValue(state.values, path, items.filter((_, i) => i !== index));
65
- return {
66
- ...withValues(state, values),
67
- arrayKeys: updateKeys(state, path, (keys) => keys.filter((_, i) => i !== index)),
68
- };
69
- };
70
- const moveAtPath = (state, path, from, to) => {
71
- const items = currentArray(state.values, path);
72
- const next = moveAt(items, from, to);
73
- if (next === items)
74
- return state;
75
- const values = setNestedValue(state.values, path, next);
76
- return {
77
- ...withValues(state, values),
78
- arrayKeys: updateKeys(state, path, (keys) => moveAt(keys, from, to)),
79
- };
80
- };
81
- const swapAtPath = (state, path, a, b) => {
82
- const items = currentArray(state.values, path);
83
- if (a < 0 || b < 0 || a >= items.length || b >= items.length || a === b)
84
- return state;
85
- const swapped = replaceAt(replaceAt(items, a, items[b]), b, items[a]);
86
- const values = setNestedValue(state.values, path, swapped);
87
- return {
88
- ...withValues(state, values),
89
- arrayKeys: updateKeys(state, path, (keys) => replaceAt(replaceAt(keys, a, keys[b] ?? makeArrayKey()), b, keys[a] ?? makeArrayKey())),
90
- };
91
- };
92
- export const make = (name, config) => {
93
- const state = State.make(`${name}/state`, unknownSchema, {
94
- title: `${name} form state`,
95
- });
96
- const events = {
97
- set: Event.make(`${name}/SetField`, S.Struct({ path: S.String, value: S.Unknown })),
98
- blur: Event.make(`${name}/BlurField`, S.Struct({ path: S.String })),
99
- reset: Event.make(`${name}/Reset`, S.Struct({})),
100
- validationFinished: Event.make(`${name}/ValidationFinished`, S.Struct({
101
- errors: S.Record({ key: S.String, value: S.String }),
102
- })),
103
- submitAttempted: Event.make(`${name}/SubmitAttempted`, S.Struct({})),
104
- submitSucceeded: Event.make(`${name}/SubmitSucceeded`, S.Struct({ values: S.Unknown })),
105
- append: Event.make(`${name}/AppendItem`, S.Struct({ path: S.String, value: S.Unknown })),
106
- remove: Event.make(`${name}/RemoveItem`, S.Struct({ path: S.String, index: S.Number })),
107
- move: Event.make(`${name}/MoveItem`, S.Struct({ path: S.String, from: S.Number, to: S.Number })),
108
- swap: Event.make(`${name}/SwapItems`, S.Struct({ path: S.String, a: S.Number, b: S.Number })),
109
- };
110
- const reducer = Reducer.make(`${name}/FormReducer`, {
111
- states: [state],
112
- events: Object.values(events),
113
- });
114
- const runtimeConfig = Context.GenericTag(`reform/form/${name}/config`);
115
- const inputs = (config.inputs ?? {});
116
- return Object.assign(class {
117
- }, {
118
- manifest: {
119
- kind: 'Form',
120
- name,
121
- schema: config.schema,
122
- inputs,
123
- },
124
- state,
125
- config: runtimeConfig,
126
- events,
127
- reducer,
128
- });
129
- };
130
- export const live = (form, config) => {
131
- const configTag = form.config;
132
- const configLayer = Layer.effect(configTag, Effect.map(Effect.context(), (context) => {
133
- const runtimeConfig = {
134
- initial: config.initial,
135
- validate: (ctx) => {
136
- const result = config.validate?.(ctx);
137
- const effect = Effect.isEffect(result) ? result : Effect.succeed(result);
138
- return Effect.map(Effect.provide(effect, context), (value) => normalizeErrors(value));
139
- },
140
- submit: (ctx) => {
141
- const result = config.submit?.(ctx);
142
- const effect = Effect.isEffect(result) ? result : Effect.succeed(result);
143
- return Effect.asVoid(Effect.provide(effect, context));
144
- },
145
- };
146
- return config.limit === undefined
147
- ? runtimeConfig
148
- : { ...runtimeConfig, limit: config.limit };
149
- }));
150
- const reducerLayer = Reducer.live(form.reducer, (state, event) => {
151
- switch (event._tag) {
152
- case form.events.set.tag:
153
- return 'path' in event && 'value' in event ? setAtPath(state, event.path, event.value) : state;
154
- case form.events.blur.tag:
155
- return 'path' in event ? { ...state, touched: markTouched(state.touched, event.path) } : state;
156
- case form.events.reset.tag:
157
- return initialState(state.initialValues);
158
- case form.events.validationFinished.tag:
159
- return 'errors' in event ? { ...state, errors: event.errors, validationCount: state.validationCount + 1 } : state;
160
- case form.events.submitAttempted.tag:
161
- return { ...state, submitCount: state.submitCount + 1 };
162
- case form.events.submitSucceeded.tag:
163
- return 'values' in event ? { ...state, lastSubmittedValues: Option.some(event.values) } : state;
164
- case form.events.append.tag:
165
- return 'path' in event && 'value' in event ? appendAtPath(state, event.path, event.value) : state;
166
- case form.events.remove.tag:
167
- return 'path' in event && 'index' in event ? removeAtPath(state, event.path, event.index) : state;
168
- case form.events.move.tag:
169
- return 'path' in event && 'from' in event && 'to' in event ? moveAtPath(state, event.path, event.from, event.to) : state;
170
- case form.events.swap.tag:
171
- return 'path' in event && 'a' in event && 'b' in event ? swapAtPath(state, event.path, event.a, event.b) : state;
172
- default:
173
- return state;
174
- }
175
- });
176
- return Layer.mergeAll(configLayer, reducerLayer).pipe(Layer.provideMerge(State.live(form.state, initialState(config.initial))));
177
- };
178
- const readInput = (source) => Effect.gen(function* () {
179
- const store = yield* source.store;
180
- const tracker = yield* Effect.serviceOption(CurrentTracker);
181
- if (Option.isSome(tracker))
182
- tracker.value.add(store);
183
- return store.getSnapshot();
184
- });
185
- const readInputs = (inputs) => Effect.gen(function* () {
186
- const out = {};
187
- for (const source of Object.values(inputs)) {
188
- out[source.name] = yield* readInput(source);
189
- }
190
- return out;
191
- });
192
- const limitationsFor = (limitations, path) => (limitations[path] ?? {});
193
- const trigger = (eventTrigger) => eventTrigger;
194
- export const view = (form) => Effect.gen(function* () {
195
- const state = yield* form.state;
196
- const runtimeConfig = yield* form.config;
197
- // Erased boundary (same shape as the casts closing `live`/`readInputs`):
198
- // under the `AnyForm` constraint `form.manifest.inputs` is the wildcard
199
- // `any`, which would dissolve the generator's R to `unknown`; restate the
200
- // call at the concrete `F`'s types so R keeps the declared input stores.
201
- const inputs = (yield* readInputs(form.manifest.inputs));
202
- const limitations = runtimeConfig.limit?.({ values: state.values, inputs }) ?? {};
203
- const setField = yield* trigger(form.events.set.trigger);
204
- const blurField = yield* trigger(form.events.blur.trigger);
205
- const reset = yield* trigger(form.events.reset.trigger);
206
- const append = yield* trigger(form.events.append.trigger);
207
- const remove = yield* trigger(form.events.remove.trigger);
208
- const move = yield* trigger(form.events.move.trigger);
209
- const swap = yield* trigger(form.events.swap.trigger);
210
- const runtime = yield* Effect.runtime();
211
- const schema = form.manifest.schema;
212
- const decodeEither = S.decodeUnknownEither(schema, { errors: 'all' })(state.values);
213
- const canSubmit = Either.isRight(decodeEither) && Object.keys(state.errors).length === 0;
214
- const runValidation = (publishSubmitAttempt) => Effect.gen(function* () {
215
- if (publishSubmitAttempt)
216
- yield* Event.dispatch(form.events.submitAttempted, {});
217
- const decoded = S.decodeUnknownEither(schema, { errors: 'all' })(state.values);
218
- if (Either.isLeft(decoded)) {
219
- yield* Event.dispatch(form.events.validationFinished, { errors: routeParseError(decoded.left) });
220
- return Option.none();
221
- }
222
- const custom = yield* runtimeConfig.validate({ values: state.values, decoded: decoded.right, inputs });
223
- const errors = errorsToRecord(custom);
224
- yield* Event.dispatch(form.events.validationFinished, { errors });
225
- return Object.keys(errors).length === 0 ? Option.some(decoded.right) : Option.none();
226
- });
227
- const submit = () => {
228
- Runtime.runFork(runtime)(Effect.gen(function* () {
229
- const decoded = yield* runValidation(true);
230
- if (Option.isNone(decoded))
231
- return;
232
- yield* runtimeConfig.submit({ values: state.values, decoded: decoded.value, inputs });
233
- yield* Event.dispatch(form.events.submitSucceeded, { values: state.values });
234
- }).pipe(Effect.catchAllCause((cause) => Effect.logError('reform form submit failed', cause))));
235
- };
236
- const validate = () => {
237
- Runtime.runFork(runtime)(runValidation(false));
238
- };
239
- const field = (path) => {
240
- const value = getNestedValue(state.values, path);
241
- return {
242
- path,
243
- value,
244
- set: (next) => setField({
245
- path,
246
- value: typeof next === 'function' ? next(value) : next,
247
- }),
248
- blur: () => blurField({ path }),
249
- error: firstError(state.errors, path),
250
- dirty: isPathOrParentDirty(state.dirtyPaths, path),
251
- touched: state.touched[path] === true,
252
- validating: false,
253
- limitations: limitationsFor(limitations, path),
254
- };
255
- };
256
- const array = (path) => {
257
- const values = currentArray(state.values, path);
258
- const keys = state.arrayKeys[path] ?? values.map((_, i) => `${path}-${i}`);
259
- return {
260
- path,
261
- items: values.map((value, index) => ({
262
- value,
263
- index,
264
- key: keys[index] ?? `${path}-${index}`,
265
- remove: () => remove({ path, index }),
266
- move: (to) => move({ path, from: index, to }),
267
- })),
268
- append: (value) => append({ path, value }),
269
- remove: (index) => remove({ path, index }),
270
- move: (from, to) => move({ path, from, to }),
271
- swap: (a, b) => swap({ path, a, b }),
272
- limitations: limitationsFor(limitations, path),
273
- };
274
- };
275
- return {
276
- values: state.values,
277
- inputs,
278
- errors: state.errors,
279
- dirty: state.dirtyPaths.length > 0,
280
- canSubmit,
281
- submitCount: state.submitCount,
282
- validationCount: state.validationCount,
283
- lastSubmittedValues: state.lastSubmittedValues,
284
- submit,
285
- reset: () => reset({}),
286
- validate,
287
- field,
288
- array,
289
- variantValue: (path) => getNestedValue(state.values, path),
290
- };
291
- });
292
- //# sourceMappingURL=form.js.map
package/dist/form.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export * as Form from './form';
2
- export type { ArrayBinding, ArrayItemView, AnyForm, FieldBinding, FieldLimitations, FormClass, FormLiveConfig, FormManifest, RuntimeConfig, FormState, FormView, Inputs, Limitations, Values, View, } from './form';
3
- export { arrayKeysFor as unsafeArrayKeysFor, error, live, make, view, } from './form';
4
- export type { ArrayItem, ArrayPath, FieldPath, PathValue, VariantBody, VariantCase, VariantPath, VariantTag, VariantValue, } from './path';
5
- export { getNestedValue, isPathOrParentDirty, joinPath, moveAt, recalculateDirtyPaths, schemaPathToFieldPath, setNestedValue, } from './path';
6
- export type { FormError, FormErrors } from './validation';
7
- export { errorsToRecord, firstError, normalizeErrors, routeParseError } from './validation';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC9B,YAAY,EACV,YAAY,EACZ,aAAa,EACb,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,YAAY,EACZ,aAAa,EACb,SAAS,EACT,QAAQ,EACR,MAAM,EACN,WAAW,EACX,MAAM,EACN,IAAI,GACL,MAAM,QAAQ,CAAA;AACf,OAAO,EACL,YAAY,IAAI,kBAAkB,EAClC,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,GACL,MAAM,QAAQ,CAAA;AACf,YAAY,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,QAAQ,CAAA;AACf,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,MAAM,EACN,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,GACf,MAAM,QAAQ,CAAA;AACf,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
package/dist/index.js DELETED
@@ -1,5 +0,0 @@
1
- export * as Form from './form';
2
- export { arrayKeysFor as unsafeArrayKeysFor, error, live, make, view, } from './form';
3
- export { getNestedValue, isPathOrParentDirty, joinPath, moveAt, recalculateDirtyPaths, schemaPathToFieldPath, setNestedValue, } from './path';
4
- export { errorsToRecord, firstError, normalizeErrors, routeParseError } from './validation';
5
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAA;AAkB9B,OAAO,EACL,YAAY,IAAI,kBAAkB,EAClC,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,GACL,MAAM,QAAQ,CAAA;AAYf,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,MAAM,EACN,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,GACf,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
package/dist/path.d.ts DELETED
@@ -1,36 +0,0 @@
1
- export type Primitive = string | number | boolean | bigint | symbol | null | undefined | Date;
2
- type StringKey<T> = Extract<keyof T, string>;
3
- type Tagged = {
4
- readonly _tag: string;
5
- };
6
- type IsTagged<T> = T extends Tagged ? true : false;
7
- export type FieldPath<T> = T extends Primitive ? never : {
8
- readonly [K in StringKey<T>]: T[K] extends ReadonlyArray<unknown> ? never : IsTagged<T[K]> extends true ? never : T[K] extends Primitive ? K : T[K] extends object ? K | `${K}.${FieldPath<T[K]>}` : K;
9
- }[StringKey<T>];
10
- export type ArrayPath<T> = T extends Primitive ? never : {
11
- readonly [K in StringKey<T>]: T[K] extends ReadonlyArray<unknown> ? K : IsTagged<T[K]> extends true ? never : T[K] extends object ? `${K}.${ArrayPath<T[K]>}` : never;
12
- }[StringKey<T>];
13
- export type VariantPath<T> = T extends Primitive ? never : {
14
- readonly [K in StringKey<T>]: IsTagged<T[K]> extends true ? K : T[K] extends ReadonlyArray<unknown> ? never : T[K] extends object ? `${K}.${VariantPath<T[K]>}` : never;
15
- }[StringKey<T>];
16
- export type PathValue<T, P extends string> = P extends `${infer Head}.${infer Tail}` ? Head extends keyof T ? PathValue<T[Head], Tail> : never : P extends keyof T ? T[P] : never;
17
- export type ArrayItem<T, P extends string> = PathValue<T, P> extends ReadonlyArray<infer Item> ? Item : never;
18
- export type VariantValue<T, P extends string> = PathValue<T, P>;
19
- export type VariantTag<V> = V extends {
20
- readonly _tag: infer Tag;
21
- } ? Extract<Tag, string> : never;
22
- export type VariantCase<V, Tag extends string> = Extract<V, {
23
- readonly _tag: Tag;
24
- }>;
25
- export type VariantBody<V, Tag extends string> = Omit<VariantCase<V, Tag>, '_tag'>;
26
- export declare const schemaPathToFieldPath: (path: ReadonlyArray<PropertyKey>) => string;
27
- export declare const joinPath: (prefix: string, path: string) => string;
28
- export declare const isPathUnderRoot: (path: string, rootPath: string) => boolean;
29
- export declare const isPathOrParentDirty: (dirtyPaths: ReadonlyArray<string>, path: string) => boolean;
30
- export declare const getNestedValue: (obj: unknown, path: string) => unknown;
31
- export declare const setNestedValue: <T>(obj: T, path: string, value: unknown) => T;
32
- export declare const recalculateDirtyPaths: (initial: unknown, values: unknown, rootPath?: string) => ReadonlyArray<string>;
33
- export declare const replaceAt: <A>(values: ReadonlyArray<A>, index: number, value: A) => ReadonlyArray<A>;
34
- export declare const moveAt: <A>(values: ReadonlyArray<A>, from: number, to: number) => ReadonlyArray<A>;
35
- export {};
36
- //# sourceMappingURL=path.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
package/dist/path.js DELETED
@@ -1,104 +0,0 @@
1
- import { Equal } from 'effect';
2
- const BRACKET_NOTATION_REGEX = /\[(\d+)\]/g;
3
- export const schemaPathToFieldPath = (path) => {
4
- if (path.length === 0)
5
- return '';
6
- let result = String(path[0]);
7
- for (let i = 1; i < path.length; i++) {
8
- const segment = path[i];
9
- result += typeof segment === 'number' ? `[${segment}]` : `.${String(segment)}`;
10
- }
11
- return result;
12
- };
13
- export const joinPath = (prefix, path) => prefix.length === 0 ? path : path.length === 0 ? prefix : `${prefix}.${path}`;
14
- export const isPathUnderRoot = (path, rootPath) => path === rootPath || path.startsWith(`${rootPath}.`) || path.startsWith(`${rootPath}[`);
15
- export const isPathOrParentDirty = (dirtyPaths, path) => {
16
- if (dirtyPaths.includes(path))
17
- return true;
18
- let parent = path;
19
- while (true) {
20
- const lastDot = parent.lastIndexOf('.');
21
- const lastBracket = parent.lastIndexOf('[');
22
- const splitIndex = Math.max(lastDot, lastBracket);
23
- if (splitIndex === -1)
24
- return false;
25
- parent = parent.substring(0, splitIndex);
26
- if (dirtyPaths.includes(parent))
27
- return true;
28
- }
29
- };
30
- const pathParts = (path) => path === '' ? [] : path.replace(BRACKET_NOTATION_REGEX, '.$1').split('.');
31
- export const getNestedValue = (obj, path) => {
32
- const parts = pathParts(path);
33
- let current = obj;
34
- for (const part of parts) {
35
- if (current === null || current === undefined || typeof current !== 'object')
36
- return undefined;
37
- current = current[part];
38
- }
39
- return current;
40
- };
41
- export const setNestedValue = (obj, path, value) => {
42
- const parts = pathParts(path);
43
- if (parts.length === 0)
44
- return value;
45
- const result = Array.isArray(obj) ? [...obj] : { ...obj };
46
- let current = result;
47
- for (let i = 0; i < parts.length - 1; i++) {
48
- const part = parts[i];
49
- if (part === undefined)
50
- return result;
51
- const next = current[part];
52
- current[part] = Array.isArray(next) ? [...next] : { ...next };
53
- current = current[part];
54
- }
55
- const last = parts[parts.length - 1];
56
- if (last !== undefined)
57
- current[last] = value;
58
- return result;
59
- };
60
- export const recalculateDirtyPaths = (initial, values, rootPath = '') => {
61
- const dirty = new Set();
62
- const visit = (current, original, path) => {
63
- if (Equal.equals(current, original))
64
- return;
65
- if (Array.isArray(current) || Array.isArray(original)) {
66
- const currentItems = Array.isArray(current) ? current : [];
67
- const originalItems = Array.isArray(original) ? original : [];
68
- if (currentItems.length !== originalItems.length && path.length > 0)
69
- dirty.add(path);
70
- const length = Math.max(currentItems.length, originalItems.length);
71
- for (let i = 0; i < length; i++) {
72
- visit(currentItems[i], originalItems[i], path.length === 0 ? `[${i}]` : `${path}[${i}]`);
73
- }
74
- return;
75
- }
76
- if (current !== null &&
77
- original !== null &&
78
- typeof current === 'object' &&
79
- typeof original === 'object') {
80
- const currentRecord = current;
81
- const originalRecord = original;
82
- const keys = new Set([...Object.keys(currentRecord), ...Object.keys(originalRecord)]);
83
- for (const key of keys) {
84
- visit(currentRecord[key], originalRecord[key], path.length === 0 ? key : `${path}.${key}`);
85
- }
86
- return;
87
- }
88
- if (path.length > 0)
89
- dirty.add(path);
90
- };
91
- visit(rootPath.length === 0 ? values : getNestedValue(values, rootPath), rootPath.length === 0 ? initial : getNestedValue(initial, rootPath), rootPath);
92
- return Array.from(dirty).sort();
93
- };
94
- export const replaceAt = (values, index, value) => values.map((item, i) => (i === index ? value : item));
95
- export const moveAt = (values, from, to) => {
96
- if (from < 0 || from >= values.length || to < 0 || to > values.length || from === to)
97
- return values;
98
- const next = [...values];
99
- const item = next.splice(from, 1)[0];
100
- if (item !== undefined)
101
- next.splice(to, 0, item);
102
- return next;
103
- };
104
- //# 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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"}
@@ -1,12 +0,0 @@
1
- import { Option, ParseResult } from 'effect';
2
- export interface FormError {
3
- readonly path: string;
4
- readonly message: string;
5
- }
6
- export type FormErrors = Readonly<Record<string, string>>;
7
- export declare const error: (path: string, message: string) => FormError;
8
- export declare const normalizeErrors: (value: void | FormError | ReadonlyArray<FormError>) => ReadonlyArray<FormError>;
9
- export declare const errorsToRecord: (errors: ReadonlyArray<FormError>) => FormErrors;
10
- export declare const routeParseError: (parseError: ParseResult.ParseError) => FormErrors;
11
- export declare const firstError: (errors: FormErrors, path: string) => Option.Option<string>;
12
- //# sourceMappingURL=validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAG5C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEzD,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,SAAgC,CAAA;AAEtF,eAAO,MAAM,eAAe,GAC1B,OAAO,IAAI,GAAG,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,KACjD,aAAa,CAAC,SAAS,CAIzB,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,QAAQ,aAAa,CAAC,SAAS,CAAC,KAAG,UAMjE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,YAAY,WAAW,CAAC,UAAU,KAAG,UAQpE,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU,EAAE,MAAM,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAGjF,CAAA"}
@@ -1,33 +0,0 @@
1
- import { Option, ParseResult } from 'effect';
2
- import { schemaPathToFieldPath } from './path';
3
- export const error = (path, message) => ({ path, message });
4
- export const normalizeErrors = (value) => {
5
- if (value === undefined)
6
- return [];
7
- if (Array.isArray(value))
8
- return value;
9
- return [value];
10
- };
11
- export const errorsToRecord = (errors) => {
12
- const out = {};
13
- for (const entry of errors) {
14
- if (out[entry.path] === undefined)
15
- out[entry.path] = entry.message;
16
- }
17
- return out;
18
- };
19
- export const routeParseError = (parseError) => {
20
- const formatted = ParseResult.ArrayFormatter.formatErrorSync(parseError);
21
- const out = {};
22
- for (const issue of formatted) {
23
- const path = schemaPathToFieldPath(issue.path);
24
- if (out[path] === undefined)
25
- out[path] = issue.message;
26
- }
27
- return out;
28
- };
29
- export const firstError = (errors, path) => {
30
- const message = errors[path];
31
- return message === undefined ? Option.none() : Option.some(message);
32
- };
33
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AAS9C,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,OAAe,EAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAEtF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAAkD,EACxB,EAAE;IAC5B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAiC,CAAA;IAClE,OAAO,CAAC,KAAkB,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAgC,EAAc,EAAE;IAC7E,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAA;IACpE,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,UAAkC,EAAc,EAAE;IAChF,MAAM,SAAS,GAAG,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;IACxE,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAA;IACxD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAkB,EAAE,IAAY,EAAyB,EAAE;IACpF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACrE,CAAC,CAAA"}