@orieljs/inertia-client 0.1.0-alpha.2 → 0.1.0-alpha.3
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.d.ts +2 -2
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Progress, Method, VisitOptions } from '@inertiajs/core';
|
|
1
|
+
import { Progress, Method, VisitOptions, RequestPayload } from '@inertiajs/core';
|
|
2
2
|
export { Errors as InertiaErrors, Method, Page, Progress, VisitOptions, router } from '@inertiajs/core';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -137,7 +137,7 @@ interface LinkProps {
|
|
|
137
137
|
/** A URL, or the result of route(). */
|
|
138
138
|
href: string;
|
|
139
139
|
method?: Method;
|
|
140
|
-
data?:
|
|
140
|
+
data?: RequestPayload;
|
|
141
141
|
replace?: boolean;
|
|
142
142
|
preserveScroll?: boolean;
|
|
143
143
|
preserveState?: boolean;
|
package/dist/index.js
CHANGED
|
@@ -140,6 +140,18 @@ function hasPath(target, path) {
|
|
|
140
140
|
const parent = segments.length === 0 ? target : getPath(target, segments.join("."));
|
|
141
141
|
return typeof parent === "object" && parent !== null && Object.hasOwn(parent, last);
|
|
142
142
|
}
|
|
143
|
+
function withPath(target, path, value) {
|
|
144
|
+
const [segment, ...rest] = path.split(".");
|
|
145
|
+
const node = typeof target === "object" && target !== null ? target : {};
|
|
146
|
+
const next = rest.length === 0 ? value : withPath(node[segment], rest.join("."), value);
|
|
147
|
+
if (!isPlain(node)) {
|
|
148
|
+
node[segment] = next;
|
|
149
|
+
return node;
|
|
150
|
+
}
|
|
151
|
+
const copy = Array.isArray(node) ? [...node] : { ...node };
|
|
152
|
+
copy[segment] = next;
|
|
153
|
+
return copy;
|
|
154
|
+
}
|
|
143
155
|
function setPath(target, path, value) {
|
|
144
156
|
const segments = path.split(".");
|
|
145
157
|
const last = segments.pop();
|
|
@@ -182,8 +194,8 @@ function createForm(initial) {
|
|
|
182
194
|
if (typeof initial === "function") defaults = clone(source);
|
|
183
195
|
data = source;
|
|
184
196
|
} else {
|
|
185
|
-
|
|
186
|
-
for (const field of fields) if (hasPath(source, field))
|
|
197
|
+
let next = data;
|
|
198
|
+
for (const field of fields) if (hasPath(source, field)) next = withPath(next, field, getPath(source, field));
|
|
187
199
|
data = next;
|
|
188
200
|
}
|
|
189
201
|
notify();
|
|
@@ -201,6 +213,7 @@ function createForm(initial) {
|
|
|
201
213
|
wasSuccessful = false;
|
|
202
214
|
recentlySuccessful = false;
|
|
203
215
|
clearTimeout(recentlyTimer);
|
|
216
|
+
notify();
|
|
204
217
|
return options.onBefore?.(pending);
|
|
205
218
|
},
|
|
206
219
|
onStart: (pending) => {
|
|
@@ -277,7 +290,7 @@ function createForm(initial) {
|
|
|
277
290
|
return () => void listeners.delete(listener);
|
|
278
291
|
},
|
|
279
292
|
setData(keyOrData, value) {
|
|
280
|
-
if (typeof keyOrData === "string") data =
|
|
293
|
+
if (typeof keyOrData === "string") data = withPath(data, keyOrData, value);
|
|
281
294
|
else if (typeof keyOrData === "function") data = keyOrData(data);
|
|
282
295
|
else data = { ...data, ...keyOrData };
|
|
283
296
|
notify();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../index.ts","../browser.ts","../routes.ts","../form.ts"],"sourcesContent":["export { router } from '@inertiajs/core'\nexport type { Errors as InertiaErrors, Method, Page, Progress, VisitOptions } from '@inertiajs/core'\nexport type { ErrorBags, Errors, PageName, PageProps, Pages, SharedProps, SharedPropsRegistry, TypedPage } from './types'\nexport {\n currentRoute,\n defineRoutes,\n hasRoute,\n isCurrentRoute,\n route,\n RouteError,\n type RouteArguments,\n type RouteDefinition,\n type RouteList,\n type RouteName,\n type RouteParameter,\n type RouteParameters,\n type RouteTable,\n} from './routes'\nexport { createForm, type FormHelper, type FormState, type FormSubmitOptions } from './form'\nexport type { AdapterForm, LinkProps, LinkVisitOptions, OrielClientApi, UsePage } from './adapter'\n","/**\n * The few browser globals this package reads, typed structurally so the package compiles both against the DOM\n * lib (its own build) and without it (the monorepo's Node program). Nothing here exists during SSR.\n */\ninterface BrowserLocation {\n readonly origin: string\n readonly pathname: string\n readonly search: string\n readonly href: string\n}\n\nexport function browserLocation(): BrowserLocation | undefined {\n return (globalThis as { location?: BrowserLocation }).location\n}\n","import { browserLocation } from './browser'\n\n/** Route name → its parameters. Augmented by the generated routes module (oriel route:types). */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface RouteList {}\n\n/** A route name: the generated ones, or any string before types are generated. */\nexport type RouteName = [keyof RouteList] extends [never] ? string : Extract<keyof RouteList, string>\n\n/** A parameter value: a scalar, or a model-like object (its `id`, or the {post:slug} field, is used). */\nexport type RouteParameter = string | number | boolean | { readonly [key: string]: unknown }\n\ntype ParametersOf<N> = N extends keyof RouteList ? RouteList[N] : Record<string, RouteParameter>\ntype RequiredKeys<T> = { [K in keyof T]-?: Record<never, never> extends Pick<T, K> ? never : K }[keyof T]\n\n/** Named parameters (extras become the query string), one value, or values in URI order. */\nexport type RouteParameters<N> = (ParametersOf<N> & Record<string, unknown>) | RouteParameter | RouteParameter[]\n\n/** route(name) is allowed only when the route has no required parameters. */\nexport type RouteArguments<N> = [RequiredKeys<ParametersOf<N>>] extends [never]\n ? [parameters?: RouteParameters<N>, absolute?: boolean]\n : [parameters: RouteParameters<N>, absolute?: boolean]\n\n/** One named route: its URI (Laravel syntax) and methods. */\nexport interface RouteDefinition {\n readonly uri: string\n readonly methods: readonly string[]\n}\nexport type RouteTable = Readonly<Record<string, RouteDefinition>>\n\nconst PARAMETER = /\\{(\\w+)(?::(\\w+))?(\\?)?\\}/g\nconst WHOLE_OPTIONAL = /^\\{(\\w+)(?::\\w+)?\\?\\}$/\nconst TABLE = Symbol.for('oriel:inertia.routes')\n\nconst registry = (): { table: RouteTable } => {\n const globals = globalThis as unknown as Record<symbol, { table: RouteTable } | undefined>\n return (globals[TABLE] ??= { table: {} })\n}\n\n/** Registers the route table (the generated routes module calls this) and returns it. */\nexport function defineRoutes<const T extends RouteTable>(table: T): T {\n registry().table = table\n return table\n}\n\nexport class RouteError extends Error {\n override readonly name = 'RouteError'\n}\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false\n const prototype = Object.getPrototypeOf(value) as unknown\n return prototype === Object.prototype || prototype === null\n}\n\n/** PHP's http_build_query, like the server's UrlGenerator: a[b]=1&a[0]=2, booleans as 1/0. */\nfunction buildQuery(values: Record<string, unknown>): string {\n const pairs: string[] = []\n const add = (key: string, value: unknown): void => {\n if (value === null || value === undefined) return\n if (typeof value === 'object' && (Array.isArray(value) || isPlainObject(value))) {\n for (const [child, nested] of Object.entries(value)) add(`${key}[${child}]`, nested)\n return\n }\n const text = value === true ? '1' : value === false ? '0' : String(value)\n pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(text)}`)\n }\n for (const [key, value] of Object.entries(values)) add(key, value)\n return pairs.join('&')\n}\n\n/** A model-like object's URL value: the {post:slug} field, else `id`; scalars as they are. */\nfunction routeKey(value: unknown, field: string | undefined): unknown {\n if (typeof value !== 'object' || value === null) return value\n const object = value as Record<string, unknown>\n return field !== undefined ? object[field] : object.id\n}\n\nfunction parametersOf(uri: string): Array<{ name: string; field: string | undefined; optional: boolean }> {\n return [...uri.matchAll(PARAMETER)].map((match) => ({ name: match[1]!, field: match[2], optional: match[3] === '?' }))\n}\n\n/**\n * The URL of a named route, like the server's route(): route('posts.show', post), route('posts.show', { post: 1,\n * page: 2 }), route('posts.show', [post, comment]). Relative ('/posts/1') unless `absolute` is true.\n */\nexport function route<N extends RouteName>(name: N, ...[parameters, absolute = false]: RouteArguments<N>): string {\n const definition = registry().table[name]\n if (definition === undefined) throw new RouteError(`Route [${name}] not defined.`)\n const declared = parametersOf(definition.uri)\n // A lone model-like object (route('posts.show', post)) is the value of the route's only parameter, when that\n // parameter is required. For an optional one the server reads the object's keys as the query, and so does this.\n const only = declared.length === 1 && !declared[0]!.optional ? declared[0]! : undefined\n const isModel = only !== undefined && isPlainObject(parameters) && !Object.hasOwn(parameters, only.name) && Object.hasOwn(parameters, only.field ?? 'id')\n const named: Record<string, unknown> = isModel ? { [only.name]: parameters } : isPlainObject(parameters) ? { ...parameters } : {}\n const positional: unknown[] = Array.isArray(parameters) ? [...parameters] : parameters === undefined || parameters === null || isPlainObject(parameters) ? [] : [parameters]\n\n const values = new Map<string, string | undefined>()\n const missing: string[] = []\n for (const parameter of declared) {\n let value: unknown\n if (Object.hasOwn(named, parameter.name)) {\n value = named[parameter.name]\n delete named[parameter.name]\n } else if (positional.length > 0) {\n value = positional.shift()\n }\n const key = routeKey(value, parameter.field)\n const text = key === undefined || key === null ? undefined : String(key)\n if (text === undefined && !parameter.optional) missing.push(parameter.name)\n values.set(parameter.name, text)\n }\n if (missing.length > 0) {\n throw new RouteError(`Missing required parameter for [Route: ${name}] [URI: ${definition.uri}] [Missing parameter: ${missing.join(', ')}].`)\n }\n\n const path =\n definition.uri === '/'\n ? ''\n : definition.uri\n .split('/')\n .filter((segment) => {\n const whole = WHOLE_OPTIONAL.exec(segment)\n return whole === null || values.get(whole[1]!) !== undefined\n })\n .map((segment) => segment.replace(PARAMETER, (_match, parameter: string) => encodeURIComponent(values.get(parameter) ?? '')))\n .join('/')\n const query = buildQuery(named)\n const relative = `/${path.replace(/^\\/+|\\/+$/g, '')}${query === '' ? '' : `?${query}`}`\n if (!absolute) return relative\n return `${browserLocation()?.origin ?? ''}${relative}`\n}\n\n/** Is `name` a registered route? */\nexport function hasRoute(name: string): boolean {\n return Object.hasOwn(registry().table, name)\n}\n\nconst escape = (text: string): string => text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n/** A regex for the paths a URI matches: parameters match one segment, whole optional segments may be absent. */\nfunction uriPattern(uri: string): RegExp {\n const segments = uri.replace(/^\\/+|\\/+$/g, '').split('/').filter((segment) => segment !== '')\n const body = segments\n .map((segment) => {\n if (WHOLE_OPTIONAL.test(segment)) return '(?:/[^/]+)?'\n return `/${segment\n .split(PARAMETER)\n .map((part, index) => (index % 4 === 0 ? escape(part) : index % 4 === 1 ? '[^/]+' : ''))\n .join('')}`\n })\n .join('')\n return new RegExp(`^${body === '' ? '/' : body}/?$`)\n}\n\n/** The name of the GET route matching the browser's current path, or undefined (also during SSR). */\nexport function currentRoute(): string | undefined {\n const location = browserLocation()\n if (location === undefined) return undefined\n for (const [name, definition] of Object.entries(registry().table)) {\n if (definition.methods.includes('GET') && uriPattern(definition.uri).test(location.pathname)) return name\n }\n return undefined\n}\n\n/** 'posts.*' style wildcard match. */\nfunction matches(pattern: string, name: string): boolean {\n return new RegExp(`^${pattern.split('*').map(escape).join('.*')}$`).test(name)\n}\n\n/** Does the current route match one of the names or wildcard patterns ('posts.*')? */\nexport function isCurrentRoute(...patterns: string[]): boolean {\n const current = currentRoute()\n return current !== undefined && patterns.some((pattern) => matches(pattern, current))\n}\n","import { config, router, type Errors, type Method, type Page, type Progress, type RequestPayload, type VisitOptions } from '@inertiajs/core'\n\ntype Data = Record<string, unknown>\ntype Listener = () => void\n\n/** Form options passed through to the visit; the helper wraps the callbacks. */\nexport type FormSubmitOptions = Omit<VisitOptions, 'data'>\n\n/** The state a form helper exposes (what React's useForm returns, minus the framework plumbing). */\nexport interface FormState<T extends Data> {\n readonly data: T\n readonly defaults: T\n readonly errors: Partial<Record<keyof T | string, string>>\n readonly hasErrors: boolean\n readonly isDirty: boolean\n readonly processing: boolean\n readonly progress: Progress | null\n readonly wasSuccessful: boolean\n readonly recentlySuccessful: boolean\n}\n\n/**\n * A framework-agnostic form helper on the real Inertia router: the core that Solid and Angular adapters wrap in\n * signals (React, Vue and Svelte use the official useForm). Every change notifies subscribers.\n */\nexport interface FormHelper<T extends Data> extends FormState<T> {\n subscribe(listener: Listener): () => void\n setData(key: keyof T & string, value: unknown): void\n setData(data: Partial<T> | ((data: T) => T)): void\n setDefaults(): void\n setDefaults(key: keyof T & string, value: unknown): void\n setDefaults(fields: Partial<T>): void\n reset(...fields: Array<keyof T & string>): void\n clearErrors(...fields: Array<keyof T & string>): void\n resetAndClearErrors(...fields: Array<keyof T & string>): void\n setError(field: keyof T & string, message: string): void\n setError(errors: Record<string, string>): void\n transform(callback: (data: T) => Data): void\n submit(method: Method, url: string, options?: FormSubmitOptions): void\n get(url: string, options?: FormSubmitOptions): void\n post(url: string, options?: FormSubmitOptions): void\n put(url: string, options?: FormSubmitOptions): void\n patch(url: string, options?: FormSubmitOptions): void\n delete(url: string, options?: FormSubmitOptions): void\n cancel(): void\n}\n\nconst isPlain = (value: object) => Array.isArray(value) || Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null\n\n/** Deep-copies plain objects, arrays and dates; files, blobs and other instances are kept by reference so identity comparison holds. */\nfunction clone<V>(value: V): V {\n if (typeof value !== 'object' || value === null) return value\n if (value instanceof Date) return new Date(value.getTime()) as V\n if (!isPlain(value)) return value\n if (Array.isArray(value)) return value.map(clone) as V\n return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, clone(entry)])) as V\n}\n\nfunction equal(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false\n if (a instanceof Date || b instanceof Date) return a instanceof Date && b instanceof Date && a.getTime() === b.getTime()\n if (Array.isArray(a) !== Array.isArray(b)) return false\n if (!isPlain(a) || !isPlain(b)) return false\n const keys = Object.keys(a)\n if (keys.length !== Object.keys(b).length) return false\n return keys.every((key) => Object.hasOwn(b, key) && equal((a as Data)[key], (b as Data)[key]))\n}\n\nfunction getPath(target: Data, path: string): unknown {\n return path.split('.').reduce<unknown>((current, segment) => (typeof current === 'object' && current !== null ? (current as Data)[segment] : undefined), target)\n}\n\nfunction hasPath(target: Data, path: string): boolean {\n const segments = path.split('.')\n const last = segments.pop()!\n const parent = segments.length === 0 ? target : getPath(target, segments.join('.'))\n return typeof parent === 'object' && parent !== null && Object.hasOwn(parent, last)\n}\n\nfunction setPath<V extends Data>(target: V, path: string, value: unknown): V {\n const segments = path.split('.')\n const last = segments.pop()!\n let current: Data = target\n for (const segment of segments) {\n if (typeof current[segment] !== 'object' || current[segment] === null) current[segment] = {}\n current = current[segment] as Data\n }\n current[last] = value\n return target\n}\n\n/** createForm({ title: '' }): a headless form helper (Inertia's useForm without remember or Precognition). */\nexport function createForm<T extends Data>(initial: T | (() => T)): FormHelper<T> {\n const resolve = (): T => clone(typeof initial === 'function' ? (initial as () => T)() : initial)\n const listeners = new Set<Listener>()\n let data = resolve()\n let defaults = clone(data)\n let errors: Record<string, string> = {}\n let processing = false\n let progress: Progress | null = null\n let wasSuccessful = false\n let recentlySuccessful = false\n let recentlyTimer: ReturnType<typeof setTimeout> | undefined\n let transformer: (data: T) => Data = (value) => value\n let cancelToken: { cancel(): void } | undefined\n let defaultsSetInOnSuccess = false\n\n const notify = () => {\n for (const listener of [...listeners]) listener()\n }\n\n const clearErrors = (...fields: string[]) => {\n errors = fields.length === 0 ? {} : Object.fromEntries(Object.entries(errors).filter(([field]) => !fields.includes(field)))\n notify()\n }\n\n const setError = (fieldOrErrors: string | Record<string, string>, message?: string) => {\n errors = { ...errors, ...(typeof fieldOrErrors === 'string' ? { [fieldOrErrors]: message ?? '' } : fieldOrErrors) }\n notify()\n }\n\n const reset = (...fields: string[]) => {\n const source = typeof initial === 'function' ? resolve() : clone(defaults)\n if (fields.length === 0) {\n if (typeof initial === 'function') defaults = clone(source)\n data = source\n } else {\n const next = { ...data }\n for (const field of fields) if (hasPath(source, field)) setPath(next, field, getPath(source, field))\n data = next\n }\n notify()\n }\n\n const submit = (method: Method, url: string, options: FormSubmitOptions = {}) => {\n defaultsSetInOnSuccess = false\n const payload = transformer(data) as RequestPayload\n const visit: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken = token\n return options.onCancelToken?.(token)\n },\n onBefore: (pending) => {\n wasSuccessful = false\n recentlySuccessful = false\n clearTimeout(recentlyTimer)\n return options.onBefore?.(pending)\n },\n onStart: (pending) => {\n processing = true\n notify()\n return options.onStart?.(pending)\n },\n onProgress: (event) => {\n progress = event ?? null\n notify()\n return options.onProgress?.(event)\n },\n onSuccess: async (page: Page) => {\n errors = {}\n wasSuccessful = true\n recentlySuccessful = true\n recentlyTimer = setTimeout(() => {\n recentlySuccessful = false\n notify()\n }, config.get('form.recentlySuccessfulDuration') as number)\n notify()\n const result = await options.onSuccess?.(page)\n if (!defaultsSetInOnSuccess) defaults = clone(data)\n notify()\n return result\n },\n onError: (received: Errors) => {\n errors = Object.fromEntries(Object.entries(received).map(([field, value]) => [field, Array.isArray(value) ? String(value[0] ?? '') : String(value)]))\n notify()\n return options.onError?.(received)\n },\n onCancel: () => options.onCancel?.(),\n onFinish: (visitInfo) => {\n processing = false\n progress = null\n cancelToken = undefined\n notify()\n return options.onFinish?.(visitInfo)\n },\n }\n if (method === 'delete') router.delete(url, { ...visit, data: payload })\n else router[method](url, payload, visit)\n }\n\n const helper = {\n get data() {\n return data\n },\n get defaults() {\n return defaults\n },\n get errors() {\n return errors\n },\n get hasErrors() {\n return Object.keys(errors).length > 0\n },\n get isDirty() {\n return !equal(data, defaults)\n },\n get processing() {\n return processing\n },\n get progress() {\n return progress\n },\n get wasSuccessful() {\n return wasSuccessful\n },\n get recentlySuccessful() {\n return recentlySuccessful\n },\n subscribe(listener: Listener) {\n listeners.add(listener)\n return () => void listeners.delete(listener)\n },\n setData(keyOrData: string | Partial<T> | ((data: T) => T), value?: unknown) {\n if (typeof keyOrData === 'string') data = setPath({ ...data }, keyOrData, value)\n else if (typeof keyOrData === 'function') data = keyOrData(data)\n else data = { ...data, ...keyOrData }\n notify()\n },\n setDefaults(keyOrFields?: string | Partial<T>, value?: unknown) {\n defaultsSetInOnSuccess = true\n if (keyOrFields === undefined) defaults = clone(data)\n else if (typeof keyOrFields === 'string') defaults = setPath(clone(defaults), keyOrFields, value)\n else defaults = { ...clone(defaults), ...keyOrFields }\n notify()\n },\n reset,\n clearErrors,\n resetAndClearErrors(...fields: string[]) {\n reset(...fields)\n clearErrors(...fields)\n },\n setError,\n transform(callback: (data: T) => Data) {\n transformer = callback\n },\n submit,\n get: (url: string, options?: FormSubmitOptions) => submit('get', url, options),\n post: (url: string, options?: FormSubmitOptions) => submit('post', url, options),\n put: (url: string, options?: FormSubmitOptions) => submit('put', url, options),\n patch: (url: string, options?: FormSubmitOptions) => submit('patch', url, options),\n delete: (url: string, options?: FormSubmitOptions) => submit('delete', url, options),\n cancel() {\n cancelToken?.cancel()\n },\n }\n return helper as unknown as FormHelper<T>\n}\n"],"mappings":"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","names":["router"]}
|
|
1
|
+
{"version":3,"sources":["../index.ts","../browser.ts","../routes.ts","../form.ts"],"sourcesContent":["export { router } from '@inertiajs/core'\nexport type { Errors as InertiaErrors, Method, Page, Progress, VisitOptions } from '@inertiajs/core'\nexport type { ErrorBags, Errors, PageName, PageProps, Pages, SharedProps, SharedPropsRegistry, TypedPage } from './types'\nexport {\n currentRoute,\n defineRoutes,\n hasRoute,\n isCurrentRoute,\n route,\n RouteError,\n type RouteArguments,\n type RouteDefinition,\n type RouteList,\n type RouteName,\n type RouteParameter,\n type RouteParameters,\n type RouteTable,\n} from './routes'\nexport { createForm, type FormHelper, type FormState, type FormSubmitOptions } from './form'\nexport type { AdapterForm, LinkProps, LinkVisitOptions, OrielClientApi, UsePage } from './adapter'\n","/**\n * The few browser globals this package reads, typed structurally so the package compiles both against the DOM\n * lib (its own build) and without it (the monorepo's Node program). Nothing here exists during SSR.\n */\ninterface BrowserLocation {\n readonly origin: string\n readonly pathname: string\n readonly search: string\n readonly href: string\n}\n\nexport function browserLocation(): BrowserLocation | undefined {\n return (globalThis as { location?: BrowserLocation }).location\n}\n","import { browserLocation } from './browser'\n\n/** Route name → its parameters. Augmented by the generated routes module (oriel route:types). */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface RouteList {}\n\n/** A route name: the generated ones, or any string before types are generated. */\nexport type RouteName = [keyof RouteList] extends [never] ? string : Extract<keyof RouteList, string>\n\n/** A parameter value: a scalar, or a model-like object (its `id`, or the {post:slug} field, is used). */\nexport type RouteParameter = string | number | boolean | { readonly [key: string]: unknown }\n\ntype ParametersOf<N> = N extends keyof RouteList ? RouteList[N] : Record<string, RouteParameter>\ntype RequiredKeys<T> = { [K in keyof T]-?: Record<never, never> extends Pick<T, K> ? never : K }[keyof T]\n\n/** Named parameters (extras become the query string), one value, or values in URI order. */\nexport type RouteParameters<N> = (ParametersOf<N> & Record<string, unknown>) | RouteParameter | RouteParameter[]\n\n/** route(name) is allowed only when the route has no required parameters. */\nexport type RouteArguments<N> = [RequiredKeys<ParametersOf<N>>] extends [never]\n ? [parameters?: RouteParameters<N>, absolute?: boolean]\n : [parameters: RouteParameters<N>, absolute?: boolean]\n\n/** One named route: its URI (Laravel syntax) and methods. */\nexport interface RouteDefinition {\n readonly uri: string\n readonly methods: readonly string[]\n}\nexport type RouteTable = Readonly<Record<string, RouteDefinition>>\n\nconst PARAMETER = /\\{(\\w+)(?::(\\w+))?(\\?)?\\}/g\nconst WHOLE_OPTIONAL = /^\\{(\\w+)(?::\\w+)?\\?\\}$/\nconst TABLE = Symbol.for('oriel:inertia.routes')\n\nconst registry = (): { table: RouteTable } => {\n const globals = globalThis as unknown as Record<symbol, { table: RouteTable } | undefined>\n return (globals[TABLE] ??= { table: {} })\n}\n\n/** Registers the route table (the generated routes module calls this) and returns it. */\nexport function defineRoutes<const T extends RouteTable>(table: T): T {\n registry().table = table\n return table\n}\n\nexport class RouteError extends Error {\n override readonly name = 'RouteError'\n}\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false\n const prototype = Object.getPrototypeOf(value) as unknown\n return prototype === Object.prototype || prototype === null\n}\n\n/** PHP's http_build_query, like the server's UrlGenerator: a[b]=1&a[0]=2, booleans as 1/0. */\nfunction buildQuery(values: Record<string, unknown>): string {\n const pairs: string[] = []\n const add = (key: string, value: unknown): void => {\n if (value === null || value === undefined) return\n if (typeof value === 'object' && (Array.isArray(value) || isPlainObject(value))) {\n for (const [child, nested] of Object.entries(value)) add(`${key}[${child}]`, nested)\n return\n }\n const text = value === true ? '1' : value === false ? '0' : String(value)\n pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(text)}`)\n }\n for (const [key, value] of Object.entries(values)) add(key, value)\n return pairs.join('&')\n}\n\n/** A model-like object's URL value: the {post:slug} field, else `id`; scalars as they are. */\nfunction routeKey(value: unknown, field: string | undefined): unknown {\n if (typeof value !== 'object' || value === null) return value\n const object = value as Record<string, unknown>\n return field !== undefined ? object[field] : object.id\n}\n\nfunction parametersOf(uri: string): Array<{ name: string; field: string | undefined; optional: boolean }> {\n return [...uri.matchAll(PARAMETER)].map((match) => ({ name: match[1]!, field: match[2], optional: match[3] === '?' }))\n}\n\n/**\n * The URL of a named route, like the server's route(): route('posts.show', post), route('posts.show', { post: 1,\n * page: 2 }), route('posts.show', [post, comment]). Relative ('/posts/1') unless `absolute` is true.\n */\nexport function route<N extends RouteName>(name: N, ...[parameters, absolute = false]: RouteArguments<N>): string {\n const definition = registry().table[name]\n if (definition === undefined) throw new RouteError(`Route [${name}] not defined.`)\n const declared = parametersOf(definition.uri)\n // A lone model-like object (route('posts.show', post)) is the value of the route's only parameter, when that\n // parameter is required. For an optional one the server reads the object's keys as the query, and so does this.\n const only = declared.length === 1 && !declared[0]!.optional ? declared[0]! : undefined\n const isModel = only !== undefined && isPlainObject(parameters) && !Object.hasOwn(parameters, only.name) && Object.hasOwn(parameters, only.field ?? 'id')\n const named: Record<string, unknown> = isModel ? { [only.name]: parameters } : isPlainObject(parameters) ? { ...parameters } : {}\n const positional: unknown[] = Array.isArray(parameters) ? [...parameters] : parameters === undefined || parameters === null || isPlainObject(parameters) ? [] : [parameters]\n\n const values = new Map<string, string | undefined>()\n const missing: string[] = []\n for (const parameter of declared) {\n let value: unknown\n if (Object.hasOwn(named, parameter.name)) {\n value = named[parameter.name]\n delete named[parameter.name]\n } else if (positional.length > 0) {\n value = positional.shift()\n }\n const key = routeKey(value, parameter.field)\n const text = key === undefined || key === null ? undefined : String(key)\n if (text === undefined && !parameter.optional) missing.push(parameter.name)\n values.set(parameter.name, text)\n }\n if (missing.length > 0) {\n throw new RouteError(`Missing required parameter for [Route: ${name}] [URI: ${definition.uri}] [Missing parameter: ${missing.join(', ')}].`)\n }\n\n const path =\n definition.uri === '/'\n ? ''\n : definition.uri\n .split('/')\n .filter((segment) => {\n const whole = WHOLE_OPTIONAL.exec(segment)\n return whole === null || values.get(whole[1]!) !== undefined\n })\n .map((segment) => segment.replace(PARAMETER, (_match, parameter: string) => encodeURIComponent(values.get(parameter) ?? '')))\n .join('/')\n const query = buildQuery(named)\n const relative = `/${path.replace(/^\\/+|\\/+$/g, '')}${query === '' ? '' : `?${query}`}`\n if (!absolute) return relative\n return `${browserLocation()?.origin ?? ''}${relative}`\n}\n\n/** Is `name` a registered route? */\nexport function hasRoute(name: string): boolean {\n return Object.hasOwn(registry().table, name)\n}\n\nconst escape = (text: string): string => text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n/** A regex for the paths a URI matches: parameters match one segment, whole optional segments may be absent. */\nfunction uriPattern(uri: string): RegExp {\n const segments = uri.replace(/^\\/+|\\/+$/g, '').split('/').filter((segment) => segment !== '')\n const body = segments\n .map((segment) => {\n if (WHOLE_OPTIONAL.test(segment)) return '(?:/[^/]+)?'\n return `/${segment\n .split(PARAMETER)\n .map((part, index) => (index % 4 === 0 ? escape(part) : index % 4 === 1 ? '[^/]+' : ''))\n .join('')}`\n })\n .join('')\n return new RegExp(`^${body === '' ? '/' : body}/?$`)\n}\n\n/** The name of the GET route matching the browser's current path, or undefined (also during SSR). */\nexport function currentRoute(): string | undefined {\n const location = browserLocation()\n if (location === undefined) return undefined\n for (const [name, definition] of Object.entries(registry().table)) {\n if (definition.methods.includes('GET') && uriPattern(definition.uri).test(location.pathname)) return name\n }\n return undefined\n}\n\n/** 'posts.*' style wildcard match. */\nfunction matches(pattern: string, name: string): boolean {\n return new RegExp(`^${pattern.split('*').map(escape).join('.*')}$`).test(name)\n}\n\n/** Does the current route match one of the names or wildcard patterns ('posts.*')? */\nexport function isCurrentRoute(...patterns: string[]): boolean {\n const current = currentRoute()\n return current !== undefined && patterns.some((pattern) => matches(pattern, current))\n}\n","import { config, router, type Errors, type Method, type Page, type Progress, type RequestPayload, type VisitOptions } from '@inertiajs/core'\n\ntype Data = Record<string, unknown>\ntype Listener = () => void\n\n/** Form options passed through to the visit; the helper wraps the callbacks. */\nexport type FormSubmitOptions = Omit<VisitOptions, 'data'>\n\n/** The state a form helper exposes (what React's useForm returns, minus the framework plumbing). */\nexport interface FormState<T extends Data> {\n readonly data: T\n readonly defaults: T\n readonly errors: Partial<Record<keyof T | string, string>>\n readonly hasErrors: boolean\n readonly isDirty: boolean\n readonly processing: boolean\n readonly progress: Progress | null\n readonly wasSuccessful: boolean\n readonly recentlySuccessful: boolean\n}\n\n/**\n * A framework-agnostic form helper on the real Inertia router: the core that Solid and Angular adapters wrap in\n * signals (React, Vue and Svelte use the official useForm). Every change notifies subscribers.\n */\nexport interface FormHelper<T extends Data> extends FormState<T> {\n subscribe(listener: Listener): () => void\n setData(key: keyof T & string, value: unknown): void\n setData(data: Partial<T> | ((data: T) => T)): void\n setDefaults(): void\n setDefaults(key: keyof T & string, value: unknown): void\n setDefaults(fields: Partial<T>): void\n reset(...fields: Array<keyof T & string>): void\n clearErrors(...fields: Array<keyof T & string>): void\n resetAndClearErrors(...fields: Array<keyof T & string>): void\n setError(field: keyof T & string, message: string): void\n setError(errors: Record<string, string>): void\n transform(callback: (data: T) => Data): void\n submit(method: Method, url: string, options?: FormSubmitOptions): void\n get(url: string, options?: FormSubmitOptions): void\n post(url: string, options?: FormSubmitOptions): void\n put(url: string, options?: FormSubmitOptions): void\n patch(url: string, options?: FormSubmitOptions): void\n delete(url: string, options?: FormSubmitOptions): void\n cancel(): void\n}\n\nconst isPlain = (value: object) => Array.isArray(value) || Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null\n\n/** Deep-copies plain objects, arrays and dates; files, blobs and other instances are kept by reference so identity comparison holds. */\nfunction clone<V>(value: V): V {\n if (typeof value !== 'object' || value === null) return value\n if (value instanceof Date) return new Date(value.getTime()) as V\n if (!isPlain(value)) return value\n if (Array.isArray(value)) return value.map(clone) as V\n return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, clone(entry)])) as V\n}\n\nfunction equal(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false\n if (a instanceof Date || b instanceof Date) return a instanceof Date && b instanceof Date && a.getTime() === b.getTime()\n if (Array.isArray(a) !== Array.isArray(b)) return false\n if (!isPlain(a) || !isPlain(b)) return false\n const keys = Object.keys(a)\n if (keys.length !== Object.keys(b).length) return false\n return keys.every((key) => Object.hasOwn(b, key) && equal((a as Data)[key], (b as Data)[key]))\n}\n\nfunction getPath(target: Data, path: string): unknown {\n return path.split('.').reduce<unknown>((current, segment) => (typeof current === 'object' && current !== null ? (current as Data)[segment] : undefined), target)\n}\n\nfunction hasPath(target: Data, path: string): boolean {\n const segments = path.split('.')\n const last = segments.pop()!\n const parent = segments.length === 0 ? target : getPath(target, segments.join('.'))\n return typeof parent === 'object' && parent !== null && Object.hasOwn(parent, last)\n}\n\n/**\n * A copy of `target` with `path` set to `value`: the plain objects and arrays along the path are copied, so whoever\n * holds the old ones (a computed, an OnPush child) sees the change; everything off the path stays shared. Other\n * instances along the path (a File, a class) are written in place, as before.\n */\nfunction withPath<V>(target: V, path: string, value: unknown): V {\n const [segment, ...rest] = path.split('.') as [string, ...string[]]\n const node = typeof target === 'object' && target !== null ? (target as Data) : {}\n const next = rest.length === 0 ? value : withPath(node[segment], rest.join('.'), value)\n if (!isPlain(node)) {\n node[segment] = next\n return node as V\n }\n const copy = (Array.isArray(node) ? [...node] : { ...node }) as Data\n copy[segment] = next\n return copy as V\n}\n\nfunction setPath<V extends Data>(target: V, path: string, value: unknown): V {\n const segments = path.split('.')\n const last = segments.pop()!\n let current: Data = target\n for (const segment of segments) {\n if (typeof current[segment] !== 'object' || current[segment] === null) current[segment] = {}\n current = current[segment] as Data\n }\n current[last] = value\n return target\n}\n\n/** createForm({ title: '' }): a headless form helper (Inertia's useForm without remember or Precognition). */\nexport function createForm<T extends Data>(initial: T | (() => T)): FormHelper<T> {\n const resolve = (): T => clone(typeof initial === 'function' ? (initial as () => T)() : initial)\n const listeners = new Set<Listener>()\n let data = resolve()\n let defaults = clone(data)\n let errors: Record<string, string> = {}\n let processing = false\n let progress: Progress | null = null\n let wasSuccessful = false\n let recentlySuccessful = false\n let recentlyTimer: ReturnType<typeof setTimeout> | undefined\n let transformer: (data: T) => Data = (value) => value\n let cancelToken: { cancel(): void } | undefined\n let defaultsSetInOnSuccess = false\n\n const notify = () => {\n for (const listener of [...listeners]) listener()\n }\n\n const clearErrors = (...fields: string[]) => {\n errors = fields.length === 0 ? {} : Object.fromEntries(Object.entries(errors).filter(([field]) => !fields.includes(field)))\n notify()\n }\n\n const setError = (fieldOrErrors: string | Record<string, string>, message?: string) => {\n errors = { ...errors, ...(typeof fieldOrErrors === 'string' ? { [fieldOrErrors]: message ?? '' } : fieldOrErrors) }\n notify()\n }\n\n const reset = (...fields: string[]) => {\n const source = typeof initial === 'function' ? resolve() : clone(defaults)\n if (fields.length === 0) {\n if (typeof initial === 'function') defaults = clone(source)\n data = source\n } else {\n let next = data\n for (const field of fields) if (hasPath(source, field)) next = withPath(next, field, getPath(source, field))\n data = next\n }\n notify()\n }\n\n const submit = (method: Method, url: string, options: FormSubmitOptions = {}) => {\n defaultsSetInOnSuccess = false\n const payload = transformer(data) as RequestPayload\n const visit: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken = token\n return options.onCancelToken?.(token)\n },\n onBefore: (pending) => {\n wasSuccessful = false\n recentlySuccessful = false\n clearTimeout(recentlyTimer)\n notify()\n return options.onBefore?.(pending)\n },\n onStart: (pending) => {\n processing = true\n notify()\n return options.onStart?.(pending)\n },\n onProgress: (event) => {\n progress = event ?? null\n notify()\n return options.onProgress?.(event)\n },\n onSuccess: async (page: Page) => {\n errors = {}\n wasSuccessful = true\n recentlySuccessful = true\n recentlyTimer = setTimeout(() => {\n recentlySuccessful = false\n notify()\n }, config.get('form.recentlySuccessfulDuration') as number)\n notify()\n const result = await options.onSuccess?.(page)\n if (!defaultsSetInOnSuccess) defaults = clone(data)\n notify()\n return result\n },\n onError: (received: Errors) => {\n errors = Object.fromEntries(Object.entries(received).map(([field, value]) => [field, Array.isArray(value) ? String(value[0] ?? '') : String(value)]))\n notify()\n return options.onError?.(received)\n },\n onCancel: () => options.onCancel?.(),\n onFinish: (visitInfo) => {\n processing = false\n progress = null\n cancelToken = undefined\n notify()\n return options.onFinish?.(visitInfo)\n },\n }\n if (method === 'delete') router.delete(url, { ...visit, data: payload })\n else router[method](url, payload, visit)\n }\n\n const helper = {\n get data() {\n return data\n },\n get defaults() {\n return defaults\n },\n get errors() {\n return errors\n },\n get hasErrors() {\n return Object.keys(errors).length > 0\n },\n get isDirty() {\n return !equal(data, defaults)\n },\n get processing() {\n return processing\n },\n get progress() {\n return progress\n },\n get wasSuccessful() {\n return wasSuccessful\n },\n get recentlySuccessful() {\n return recentlySuccessful\n },\n subscribe(listener: Listener) {\n listeners.add(listener)\n return () => void listeners.delete(listener)\n },\n setData(keyOrData: string | Partial<T> | ((data: T) => T), value?: unknown) {\n if (typeof keyOrData === 'string') data = withPath(data, keyOrData, value)\n else if (typeof keyOrData === 'function') data = keyOrData(data)\n else data = { ...data, ...keyOrData }\n notify()\n },\n setDefaults(keyOrFields?: string | Partial<T>, value?: unknown) {\n defaultsSetInOnSuccess = true\n if (keyOrFields === undefined) defaults = clone(data)\n else if (typeof keyOrFields === 'string') defaults = setPath(clone(defaults), keyOrFields, value)\n else defaults = { ...clone(defaults), ...keyOrFields }\n notify()\n },\n reset,\n clearErrors,\n resetAndClearErrors(...fields: string[]) {\n reset(...fields)\n clearErrors(...fields)\n },\n setError,\n transform(callback: (data: T) => Data) {\n transformer = callback\n },\n submit,\n get: (url: string, options?: FormSubmitOptions) => submit('get', url, options),\n post: (url: string, options?: FormSubmitOptions) => submit('post', url, options),\n put: (url: string, options?: FormSubmitOptions) => submit('put', url, options),\n patch: (url: string, options?: FormSubmitOptions) => submit('patch', url, options),\n delete: (url: string, options?: FormSubmitOptions) => submit('delete', url, options),\n cancel() {\n cancelToken?.cancel()\n },\n }\n return helper as unknown as FormHelper<T>\n}\n"],"mappings":"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","names":["router"]}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orieljs/inertia-client",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.3",
|
|
4
4
|
"description": "The Oriel Inertia client: typed page props, route(), the form helper and the adapter contract.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
|
+
"homepage": "https://orieljs.vercel.app",
|
|
7
8
|
"sideEffects": false,
|
|
8
9
|
"repository": {
|
|
9
10
|
"type": "git",
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
"NOTICE"
|
|
30
31
|
],
|
|
31
32
|
"peerDependencies": {
|
|
32
|
-
"@inertiajs/core": "
|
|
33
|
+
"@inertiajs/core": "3.7.1"
|
|
33
34
|
},
|
|
34
35
|
"devDependencies": {
|
|
35
36
|
"@inertiajs/core": "3.7.1"
|