@analogjs/router 3.0.0-alpha.6 → 3.0.0-alpha.61

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.
Files changed (78) hide show
  1. package/content/package.json +4 -0
  2. package/fesm2022/analogjs-router-content.mjs +63 -0
  3. package/fesm2022/analogjs-router-content.mjs.map +1 -0
  4. package/fesm2022/analogjs-router-i18n.mjs +156 -0
  5. package/fesm2022/analogjs-router-i18n.mjs.map +1 -0
  6. package/fesm2022/analogjs-router-server-actions.mjs +2 -27
  7. package/fesm2022/analogjs-router-server.mjs +60 -3
  8. package/fesm2022/analogjs-router-server.mjs.map +1 -0
  9. package/fesm2022/analogjs-router-tanstack-query-server.mjs +71 -0
  10. package/fesm2022/analogjs-router-tanstack-query-server.mjs.map +1 -0
  11. package/fesm2022/analogjs-router-tanstack-query.mjs +39 -0
  12. package/fesm2022/analogjs-router-tanstack-query.mjs.map +1 -0
  13. package/fesm2022/analogjs-router-tokens.mjs +7 -2
  14. package/fesm2022/analogjs-router-tokens.mjs.map +1 -0
  15. package/fesm2022/analogjs-router.mjs +559 -61
  16. package/fesm2022/analogjs-router.mjs.map +1 -0
  17. package/fesm2022/debug.page.mjs +53 -31
  18. package/fesm2022/debug.page.mjs.map +1 -0
  19. package/fesm2022/provide-analog-query.mjs +72 -0
  20. package/fesm2022/provide-analog-query.mjs.map +1 -0
  21. package/fesm2022/route-files.mjs +361 -0
  22. package/fesm2022/route-files.mjs.map +1 -0
  23. package/fesm2022/routes.mjs +5 -278
  24. package/fesm2022/routes.mjs.map +1 -0
  25. package/fesm2022/src.mjs +335 -0
  26. package/fesm2022/src.mjs.map +1 -0
  27. package/i18n/package.json +4 -0
  28. package/package.json +77 -26
  29. package/tanstack-query/package.json +4 -0
  30. package/tanstack-query/server/package.json +4 -0
  31. package/types/content/src/index.d.ts +4 -0
  32. package/types/content/src/lib/debug/routes.d.ts +10 -0
  33. package/types/{src → content/src}/lib/markdown-helpers.d.ts +1 -1
  34. package/types/content/src/lib/routes.d.ts +8 -0
  35. package/types/content/src/lib/with-content-routes.d.ts +2 -0
  36. package/types/i18n/src/index.d.ts +1 -0
  37. package/types/i18n/src/provide-i18n.d.ts +92 -0
  38. package/types/server/actions/src/define-action.d.ts +54 -0
  39. package/types/server/actions/src/define-api-route.d.ts +57 -0
  40. package/types/server/actions/src/define-page-load.d.ts +55 -0
  41. package/types/server/actions/src/define-server-route.d.ts +68 -0
  42. package/types/server/actions/src/index.d.ts +9 -1
  43. package/types/server/actions/src/parse-request-data.d.ts +9 -0
  44. package/types/server/actions/src/validate.d.ts +8 -0
  45. package/types/server/src/provide-server-context.d.ts +15 -1
  46. package/types/server/src/render.d.ts +1 -1
  47. package/types/server/src/server-component-render.d.ts +1 -1
  48. package/types/src/index.d.ts +16 -5
  49. package/types/src/lib/cache-key.d.ts +1 -1
  50. package/types/src/lib/cookie-interceptor.d.ts +1 -1
  51. package/types/src/lib/debug/debug.page.d.ts +4 -2
  52. package/types/src/lib/define-route.d.ts +6 -1
  53. package/types/src/lib/endpoints.d.ts +1 -1
  54. package/types/src/lib/experimental.d.ts +140 -0
  55. package/types/src/lib/form-action.directive.d.ts +12 -5
  56. package/types/src/lib/inject-load.d.ts +5 -2
  57. package/types/src/lib/inject-navigate.d.ts +23 -0
  58. package/types/src/lib/inject-route-context.d.ts +32 -0
  59. package/types/src/lib/inject-typed-params.d.ts +63 -0
  60. package/types/src/lib/json-ld.d.ts +32 -0
  61. package/types/src/lib/meta-tags.d.ts +3 -1
  62. package/types/src/lib/models.d.ts +3 -0
  63. package/types/src/lib/provide-file-router-base.d.ts +4 -0
  64. package/types/src/lib/provide-file-router.d.ts +2 -8
  65. package/types/src/lib/route-builder.d.ts +5 -0
  66. package/types/src/lib/route-files.d.ts +18 -0
  67. package/types/src/lib/route-path.d.ts +124 -0
  68. package/types/src/lib/route-types.d.ts +2 -1
  69. package/types/src/lib/routes.d.ts +2 -10
  70. package/types/src/lib/validation-errors.d.ts +7 -0
  71. package/types/tanstack-query/server/src/define-page-load-queries.d.ts +66 -0
  72. package/types/tanstack-query/server/src/index.d.ts +3 -0
  73. package/types/tanstack-query/src/constants.d.ts +9 -0
  74. package/types/tanstack-query/src/index.d.ts +2 -0
  75. package/types/tanstack-query/src/provide-analog-query.d.ts +4 -0
  76. package/types/tanstack-query/src/provide-server-analog-query.d.ts +2 -0
  77. package/types/tanstack-query/src/server-query.d.ts +16 -0
  78. package/types/tokens/src/index.d.ts +2 -0
@@ -1,14 +1,5 @@
1
1
  import type { Route } from '@angular/router';
2
- import type { RouteExport } from './models';
3
- /**
4
- * This variable reference is replaced with a glob of all page routes.
5
- */
6
- export declare const ANALOG_ROUTE_FILES: {};
7
- /**
8
- * This variable reference is replaced with a glob of all content routes.
9
- */
10
- export declare const ANALOG_CONTENT_ROUTE_FILES: {};
11
- export type Files = Record<string, () => Promise<RouteExport | string>>;
2
+ import { type Files } from './route-files';
12
3
  /**
13
4
  * A function used to parse list of files and create configuration of routes.
14
5
  *
@@ -16,4 +7,5 @@ export type Files = Record<string, () => Promise<RouteExport | string>>;
16
7
  * @returns Array of routes
17
8
  */
18
9
  export declare function createRoutes(files: Files, debug?: boolean): Route[];
10
+ export { ANALOG_ROUTE_FILES } from './route-files';
19
11
  export declare const routes: Route[];
@@ -0,0 +1,7 @@
1
+ import type { StandardSchemaV1 } from '@standard-schema/spec';
2
+ export type ValidationFieldErrors = Record<string, string[]>;
3
+ export declare function issuePathToFieldName(path: ReadonlyArray<string | number | symbol | {
4
+ key: string | number | symbol;
5
+ }>): string;
6
+ export declare function issuesToFieldErrors(issues: ReadonlyArray<StandardSchemaV1.Issue>): ValidationFieldErrors;
7
+ export declare function issuesToFormErrors(issues: ReadonlyArray<StandardSchemaV1.Issue>): string[];
@@ -0,0 +1,66 @@
1
+ import type { StandardSchemaV1 } from '@standard-schema/spec';
2
+ import { QueryClient } from '@tanstack/angular-query-experimental';
3
+ import type { DehydratedState } from '@tanstack/angular-query-experimental';
4
+ import type { H3Event, H3EventContext } from 'nitro/h3';
5
+ import type { $Fetch } from 'nitro/types';
6
+ import { type PageLoadContext } from '../../../server/actions/src/index.js';
7
+ export { ANALOG_QUERIES_KEY } from '../../src/constants.js';
8
+ type NodeContext = NonNullable<H3Event['node']>;
9
+ type OptionalSchema = StandardSchemaV1 | undefined;
10
+ export interface PageLoadQueriesResult<TData> {
11
+ __analogQueries: DehydratedState;
12
+ data: TData;
13
+ }
14
+ export interface DefinePageLoadQueriesOptions<TParamsSchema extends OptionalSchema, TQuerySchema extends OptionalSchema, TData> {
15
+ params?: TParamsSchema;
16
+ query?: TQuerySchema;
17
+ /**
18
+ * Optional QueryClient factory. Defaults to `new QueryClient()`.
19
+ * Override to set `defaultOptions` (e.g. `queries: { staleTime: Infinity }`).
20
+ */
21
+ client?: () => QueryClient;
22
+ /**
23
+ * Handler receives the standard PageLoadContext plus a per-request
24
+ * QueryClient. Use `client.prefetchQuery` / `ensureQueryData` /
25
+ * `prefetchInfiniteQuery` to warm the cache; the dehydrated client
26
+ * is returned as `__analogQueries` on the load result. Anything you
27
+ * return from the handler becomes `data` on the same result.
28
+ */
29
+ handler: (ctx: PageLoadContext<TParamsSchema, TQuerySchema> & {
30
+ client: QueryClient;
31
+ }) => Promise<TData> | TData;
32
+ }
33
+ /**
34
+ * Page load helper that prefetches TanStack Query queries inside the
35
+ * `.server.ts` handler and ships the dehydrated cache alongside any
36
+ * additional data. The router-side hydrator in `provideAnalogQuery()`
37
+ * merges the dehydrated payload into the active `QueryClient` on
38
+ * `ResolveEnd`, so components reading the same query options see a
39
+ * warm cache on first render.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * // src/app/pages/posts.server.ts
44
+ * import { definePageLoadQueries } from '@analogjs/router/tanstack-query/server';
45
+ * import { queryOptions } from '@tanstack/angular-query-experimental';
46
+ *
47
+ * export const postsQuery = queryOptions({
48
+ * queryKey: ['posts'],
49
+ * queryFn: async ({ signal }) =>
50
+ * fetch('https://api.example.com/posts', { signal }).then((r) => r.json()),
51
+ * });
52
+ *
53
+ * export const load = definePageLoadQueries({
54
+ * handler: async ({ client }) => {
55
+ * await client.prefetchQuery(postsQuery);
56
+ * },
57
+ * });
58
+ * ```
59
+ */
60
+ export declare function definePageLoadQueries<TParamsSchema extends OptionalSchema = undefined, TQuerySchema extends OptionalSchema = undefined, TData = void>(options: DefinePageLoadQueriesOptions<TParamsSchema, TQuerySchema, TData>): (ctx: {
61
+ params: H3EventContext['params'];
62
+ req: NodeContext['req'];
63
+ res: NonNullable<NodeContext['res']>;
64
+ fetch: $Fetch;
65
+ event: H3Event;
66
+ }) => Promise<PageLoadQueriesResult<TData> | Response>;
@@ -0,0 +1,3 @@
1
+ export { provideServerAnalogQuery } from '../../src/provide-server-analog-query';
2
+ export { definePageLoadQueries, ANALOG_QUERIES_KEY, } from './define-page-load-queries';
3
+ export type { PageLoadQueriesResult, DefinePageLoadQueriesOptions, } from './define-page-load-queries';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Route-data key under `ActivatedRoute.data['load']` that holds the
3
+ * `DehydratedState` produced by `definePageLoadQueries`. The Router-
4
+ * events hydrator in `provideAnalogQuery()` looks for this key on
5
+ * `ResolveEnd` and merges the dehydrated payload into the active
6
+ * `QueryClient`, so component-issued queries hit a warm cache on
7
+ * first render.
8
+ */
9
+ export declare const ANALOG_QUERIES_KEY: '__analogQueries';
@@ -0,0 +1,2 @@
1
+ export { ANALOG_QUERY_STATE_KEY, provideAnalogQuery, } from './provide-analog-query.js';
2
+ export { serverQueryOptions, serverMutationOptions, serverInfiniteQueryOptions, } from './server-query.js';
@@ -0,0 +1,4 @@
1
+ import type { EnvironmentProviders, StateKey } from '@angular/core';
2
+ import type { DehydratedState } from '@tanstack/angular-query-experimental';
3
+ export declare const ANALOG_QUERY_STATE_KEY: StateKey<DehydratedState>;
4
+ export declare function provideAnalogQuery(): EnvironmentProviders;
@@ -0,0 +1,2 @@
1
+ import type { EnvironmentProviders } from '@angular/core';
2
+ export declare function provideServerAnalogQuery(): EnvironmentProviders;
@@ -0,0 +1,16 @@
1
+ import type { HttpClient } from '@angular/common/http';
2
+ import type { CreateQueryOptions, CreateMutationOptions, CreateInfiniteQueryOptions, DefaultError, InfiniteData, QueryKey } from '@tanstack/angular-query-experimental';
3
+ import type { ServerRouteHandler, InferRouteQuery, InferRouteBody, InferRouteResult } from '../../server/actions/src/index.js';
4
+ export declare function serverQueryOptions<TRoute extends ServerRouteHandler<any, any, any>, TError = DefaultError, TData = InferRouteResult<TRoute>, TQueryKey extends QueryKey = QueryKey>(http: HttpClient, url: string, options: {
5
+ queryKey: TQueryKey;
6
+ query?: InferRouteQuery<TRoute>;
7
+ } & Omit<CreateQueryOptions<InferRouteResult<TRoute>, TError, TData, TQueryKey>, 'queryKey' | 'queryFn'>): CreateQueryOptions<InferRouteResult<TRoute>, TError, TData, TQueryKey>;
8
+ export declare function serverMutationOptions<TRoute extends ServerRouteHandler<any, any, any>, TError = DefaultError, TOnMutateResult = unknown>(http: HttpClient, url: string, options?: Omit<CreateMutationOptions<InferRouteResult<TRoute>, TError, InferRouteBody<TRoute>, TOnMutateResult>, 'mutationFn'>): CreateMutationOptions<InferRouteResult<TRoute>, TError, InferRouteBody<TRoute>, TOnMutateResult>;
9
+ export declare function serverInfiniteQueryOptions<TRoute extends ServerRouteHandler<any, any, any>, TError = DefaultError, TData = InfiniteData<InferRouteResult<TRoute>>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(http: HttpClient, url: string, options: {
10
+ queryKey: TQueryKey;
11
+ query: (context: {
12
+ pageParam: TPageParam;
13
+ }) => InferRouteQuery<TRoute>;
14
+ initialPageParam: TPageParam;
15
+ getNextPageParam: (lastPage: InferRouteResult<TRoute>, allPages: InferRouteResult<TRoute>[]) => TPageParam | undefined | null;
16
+ } & Omit<CreateInfiniteQueryOptions<InferRouteResult<TRoute>, TError, TData, TQueryKey, TPageParam>, 'queryKey' | 'queryFn' | 'initialPageParam' | 'getNextPageParam'>): CreateInfiniteQueryOptions<InferRouteResult<TRoute>, TError, TData, TQueryKey, TPageParam>;
@@ -21,3 +21,5 @@ export declare function injectResponse(): ServerResponse | null;
21
21
  export declare function injectBaseURL(): string | null;
22
22
  export declare function injectInternalServerFetch(): ServerInternalFetch | null;
23
23
  export declare function injectAPIPrefix(): string;
24
+ export declare const LOCALE: InjectionToken<string>;
25
+ export declare function injectLocale(): string | null;