@loozo/angular-router 0.0.2 → 0.0.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.
Files changed (37) hide show
  1. package/README.md +442 -79
  2. package/builders.json +2 -2
  3. package/fesm2022/loozo-angular-router-_core.mjs +348 -589
  4. package/fesm2022/loozo-angular-router-_core.mjs.map +1 -1
  5. package/fesm2022/loozo-angular-router-_generated.mjs +492 -617
  6. package/fesm2022/loozo-angular-router-_generated.mjs.map +1 -1
  7. package/fesm2022/loozo-angular-router.mjs +2 -19
  8. package/node/_core/src/path.d.ts +17 -0
  9. package/node/src/builders/application.js +9 -6
  10. package/node/src/builders/options.js +38 -58
  11. package/node/src/builders/serve.js +51 -8
  12. package/node/src/generation/anchor.d.ts +13 -0
  13. package/node/src/generation/anchor.js +92 -0
  14. package/node/src/generation/compiler.d.ts +6 -0
  15. package/node/src/generation/compiler.js +68 -0
  16. package/node/src/generation/emit.d.ts +3 -0
  17. package/node/src/generation/files.d.ts +26 -0
  18. package/node/src/generation/files.js +14 -3
  19. package/node/src/generation/filesystem.d.ts +7 -0
  20. package/node/src/generation/generate.d.ts +16 -0
  21. package/node/src/generation/generate.js +5 -4
  22. package/node/src/generation/index.d.ts +16 -0
  23. package/node/src/generation/index.js +15 -0
  24. package/node/src/generation/overlay.d.ts +3 -0
  25. package/node/src/generation/selectors.d.ts +2 -0
  26. package/node/src/generation/sources.d.ts +50 -0
  27. package/node/src/generation/sources.js +50 -10
  28. package/node/src/generation/validate.d.ts +12 -0
  29. package/node/src/generation/validate.js +38 -33
  30. package/package.json +7 -2
  31. package/schemas/application.json +743 -8
  32. package/schemas/serve.json +11 -32
  33. package/types/loozo-angular-router-_core.d.ts +159 -181
  34. package/types/loozo-angular-router-_generated.d.ts +131 -109
  35. package/types/loozo-angular-router.d.ts +2 -1
  36. package/.npmignore +0 -3
  37. package/fesm2022/loozo-angular-router.mjs.map +0 -1
@@ -1,27 +1,51 @@
1
- import { ActivatedRouteSnapshot, Route, RedirectFunction, UrlTree } from '@angular/router';
2
- import { AnyRoute, ParamsOf, SearchOf, UrlValues } from '@loozo/angular-router/_core';
3
- import { Resource } from '@angular/core';
4
-
1
+ import { ActivatedRouteSnapshot, PartialMatchRouteSnapshot, RedirectFunction, Route, UrlTree } from "@angular/router";
2
+ import { AnyRoute, ParamsOf, SearchOf, UrlValues } from "@loozo/angular-router/_core";
3
+ import { Resource } from "@angular/core";
5
4
  interface RecordBinding {
6
- readonly definition: () => AnyRoute;
7
- readonly owners: readonly string[];
5
+ readonly definition: () => AnyRoute;
6
+ readonly owners: readonly string[];
8
7
  }
9
8
  interface RouteSet {
10
- readonly records: Readonly<Record<string, RecordBinding>>;
11
- readonly destinations: Readonly<Record<string, () => AnyRoute>>;
12
- readonly absolute: Readonly<Record<string, string>>;
13
- readonly relative: Readonly<Record<string, Readonly<Record<string, string>>>>;
9
+ readonly records: Readonly<Record<string, RecordBinding>>;
10
+ readonly destinations: Readonly<Record<string, () => AnyRoute>>;
11
+ readonly absolute: Readonly<Record<string, string>>;
12
+ readonly relative: Readonly<Record<string, Readonly<Record<string, string>>>>;
14
13
  }
15
14
  interface Parsed {
16
- readonly params: Readonly<Record<string, unknown>>;
17
- readonly search: Readonly<Record<string, unknown>>;
15
+ readonly params: Readonly<Record<string, unknown>>;
16
+ readonly search: Readonly<Record<string, unknown>>;
18
17
  }
19
- declare function assertIdentity(snapshot: Pick<ActivatedRouteSnapshot, "routeConfig">, id: string): void;
20
- declare function parseInputs(set: RouteSet, id: string, snapshot: ActivatedRouteSnapshot): Promise<Parsed>;
21
-
22
- declare function callbacks(set: RouteSet, id: string): Pick<Route, "canActivate" | "canActivateChild" | "canMatch" | "resolve">;
23
- declare function redirect(definition: () => AnyRoute): RedirectFunction;
24
-
18
+ interface Job {
19
+ readonly source: "path" | "search";
20
+ readonly key: string;
21
+ readonly raws: readonly string[];
22
+ readonly array: boolean;
23
+ readonly codec: {
24
+ parse(raw: string): unknown;
25
+ };
26
+ }
27
+ interface Operation {
28
+ readonly promise: Promise<Parsed>;
29
+ outcome: {
30
+ value: Parsed;
31
+ } | {
32
+ error: Error;
33
+ } | undefined;
34
+ }
35
+ declare function hasIdentity(snapshot: Pick<ActivatedRouteSnapshot, "routeConfig">, id: string): boolean;
36
+ export declare function assertIdentity(snapshot: Pick<ActivatedRouteSnapshot, "routeConfig">, id: string): void;
37
+ declare function inputError(source: "path" | "search", key: string, reason: "missing" | "repeated" | "invalid", cause?: unknown): Error;
38
+ declare function validateRaw(source: "path" | "search", key: string, raws: readonly unknown[], array: boolean): asserts raws is readonly string[];
39
+ declare function pathJobs(definition: AnyRoute, url: readonly {
40
+ path: string;
41
+ }[]): Job[];
42
+ declare function searchJobs(definition: AnyRoute, snapshot: Pick<ActivatedRouteSnapshot, "queryParamMap">): Job[];
43
+ declare function runJobs(jobs: readonly Job[]): Promise<Parsed>;
44
+ declare function fullOperation(set: RouteSet, id: string, snapshot: ActivatedRouteSnapshot): Operation;
45
+ export declare function parseInputs(set: RouteSet, id: string, snapshot: ActivatedRouteSnapshot): Promise<Parsed>;
46
+ declare function matchingInputs(set: RouteSet, id: string, snapshot: PartialMatchRouteSnapshot): Promise<Parsed>;
47
+ export declare function callbacks(set: RouteSet, id: string): Pick<Route, "canActivate" | "canActivateChild" | "canMatch" | "resolve">;
48
+ export declare function redirect(definition: () => AnyRoute): RedirectFunction;
25
49
  declare const destinationBrand: unique symbol;
26
50
  /**
27
51
  * An inert nominal reference exported as `destination` by a route-local facade.
@@ -37,17 +61,17 @@ declare const destinationBrand: unique symbol;
37
61
  * @typeParam Set - The generator's nominal route-set identity.
38
62
  * @typeParam Id - The exact generated declaration identity.
39
63
  */
40
- declare class Destination<Target extends AnyRoute, Set = unknown, Id extends string = string> {
41
- #private;
42
- readonly [destinationBrand]: {
43
- readonly target: Target;
44
- readonly set: Set;
45
- readonly id: Id;
46
- };
64
+ export declare class Destination<Target extends AnyRoute, Set = unknown, Id extends string = string> {
65
+ #private;
66
+ readonly [destinationBrand]: {
67
+ readonly target: Target;
68
+ readonly set: Set;
69
+ readonly id: Id;
70
+ };
47
71
  }
48
- declare function createDestination<Target extends AnyRoute, Set, Id extends string>(getSet: () => RouteSet, id: Id): Destination<Target, Set, Id>;
72
+ export declare function createDestination<Target extends AnyRoute, Set, Id extends string>(getSet: () => RouteSet, id: Id): Destination<Target, Set, Id>;
49
73
  type DataOf<Target> = Target extends {
50
- readonly __data?: infer Data;
74
+ readonly __data?: infer Data;
51
75
  } ? Readonly<Data> : never;
52
76
  type IsUnion<Value, Whole = Value> = Value extends unknown ? [Whole] extends [Value] ? false : true : never;
53
77
  /**
@@ -86,86 +110,84 @@ type IsUnion<Value, Whole = Value> = Value extends unknown ? [Whole] extends [Va
86
110
  * // Bind link to Angular RouterLink, or call route.navigate with the same values.
87
111
  * ```
88
112
  */
89
- interface Handle<Target extends AnyRoute, Selected extends Record<string, AnyRoute> = {}, Set = unknown, References extends Record<string, AnyRoute> = {}> {
90
- /** Effective positional params; undefined while pending or without a value. */
91
- readonly params: Resource<Readonly<ParamsOf<Target>> | undefined>;
92
- /** Effective declared search; paired with params from the same parse operation. */
93
- readonly search: Resource<Readonly<SearchOf<Target>> | undefined>;
94
- /** Own native resolver results only; settles independently of paired inputs. */
95
- readonly data: Resource<DataOf<Target> | undefined>;
96
- /**
97
- * Creates a native UrlTree for this exact declaration without navigating.
98
- *
99
- * @param values - Explicit effective params/search and optional own fragment.
100
- * @returns Router.parseUrl's result, suitable for Angular RouterLink.
101
- * @throws Synchronous URL validation, encoding or stringifier failures before Angular.
102
- */
103
- link<Keys extends keyof SearchOf<Target> = never>(values: UrlValues<Target, Keys>): UrlTree;
104
- /**
105
- * Creates a UrlTree for the exact bound declaration, not its pathless winner.
106
- *
107
- * @param selector - The exact-current literal `.`.
108
- * @param values - Explicit values for this declaration, with no current-input reuse.
109
- * @returns Router.parseUrl's result without navigating.
110
- * @throws Synchronous URL validation, encoding or stringifier failures before Angular.
111
- */
112
- link<Keys extends keyof SearchOf<Target> = never>(selector: ".", values: UrlValues<Target, Keys>): UrlTree;
113
- /**
114
- * Creates a UrlTree for a statically admitted absolute/relative authored selector.
115
- *
116
- * @param selector - A single known template literal, never a concrete URL.
117
- * @param values - The selected target's complete explicit values.
118
- * @returns Router.parseUrl's result without navigating.
119
- * @throws Synchronously for unknown selectors or invalid URL values.
120
- */
121
- link<const Selector extends keyof Selected & string, Keys extends keyof SearchOf<NoInfer<Selected[Selector]>> = never>(selector: Selector & (IsUnion<Selector> extends true ? never : unknown), values: UrlValues<NoInfer<Selected[Selector]>, Keys>): UrlTree;
122
- /**
123
- * Creates a UrlTree for a generated reference's own exact declaration.
124
- *
125
- * @param selector - A genuine destination exported by a facade in this route set.
126
- * @param values - The referenced declaration's complete explicit values.
127
- * @returns Router.parseUrl's result without navigating.
128
- * @throws Synchronously for foreign/fake references or invalid URL values.
129
- */
130
- link<const Id extends keyof References & string, Keys extends keyof SearchOf<NoInfer<References[Id]>> = never>(selector: Destination<NoInfer<References[Id]>, Set, Id> & (IsUnion<Id> extends true ? never : unknown), values: UrlValues<NoInfer<References[Id]>, Keys>): UrlTree;
131
- /**
132
- * Navigates to this exact declaration via Router.navigateByUrl.
133
- *
134
- * @param values - Explicit effective params/search and optional own fragment.
135
- * @returns Angular's identical Promise; Angular owns skips, redirects and failures.
136
- * @throws Synchronous URL validation, encoding or stringifier failures before Angular.
137
- */
138
- navigate<Keys extends keyof SearchOf<Target> = never>(values: UrlValues<Target, Keys>): Promise<boolean>;
139
- /**
140
- * Navigates to the exact bound declaration, not its pathless winner.
141
- *
142
- * @param selector - The exact-current literal `.`.
143
- * @param values - Explicit values for this declaration, with no current-input reuse.
144
- * @returns Angular's identical Router.navigateByUrl Promise.
145
- * @throws Synchronous URL validation, encoding or stringifier failures before Angular.
146
- */
147
- navigate<Keys extends keyof SearchOf<Target> = never>(selector: ".", values: UrlValues<Target, Keys>): Promise<boolean>;
148
- /**
149
- * Navigates to a statically admitted absolute/relative authored selector.
150
- *
151
- * @param selector - A single known template literal, never a concrete URL.
152
- * @param values - The selected target's complete explicit values.
153
- * @returns Angular's identical Router.navigateByUrl Promise.
154
- * @throws Synchronously for unknown selectors or invalid URL values.
155
- */
156
- navigate<const Selector extends keyof Selected & string, Keys extends keyof SearchOf<NoInfer<Selected[Selector]>> = never>(selector: Selector & (IsUnion<Selector> extends true ? never : unknown), values: UrlValues<NoInfer<Selected[Selector]>, Keys>): Promise<boolean>;
157
- /**
158
- * Navigates to a generated reference's own exact declaration.
159
- *
160
- * @param selector - A genuine destination exported by a facade in this route set.
161
- * @param values - The referenced declaration's complete explicit values.
162
- * @returns Angular's identical Router.navigateByUrl Promise.
163
- * @throws Synchronously for foreign/fake references or invalid URL values.
164
- */
165
- navigate<const Id extends keyof References & string, Keys extends keyof SearchOf<NoInfer<References[Id]>> = never>(selector: Destination<NoInfer<References[Id]>, Set, Id> & (IsUnion<Id> extends true ? never : unknown), values: UrlValues<NoInfer<References[Id]>, Keys>): Promise<boolean>;
113
+ export interface Handle<Target extends AnyRoute, Selected extends Record<string, AnyRoute> = {}, Set = unknown, References extends Record<string, AnyRoute> = {}> {
114
+ /** Effective positional params; undefined while pending or without a value. */
115
+ readonly params: Resource<Readonly<ParamsOf<Target>> | undefined>;
116
+ /** Effective declared search; paired with params from the same parse operation. */
117
+ readonly search: Resource<Readonly<SearchOf<Target>> | undefined>;
118
+ /** Own native resolver results only; settles independently of paired inputs. */
119
+ readonly data: Resource<DataOf<Target> | undefined>;
120
+ /**
121
+ * Creates a native UrlTree for this exact declaration without navigating.
122
+ *
123
+ * @param values - Explicit effective params/search and optional own fragment.
124
+ * @returns Router.parseUrl's result, suitable for Angular RouterLink.
125
+ * @throws Synchronous URL validation, encoding or stringifier failures before Angular.
126
+ */
127
+ link<Keys extends keyof SearchOf<Target> = never>(values: UrlValues<Target, Keys>): UrlTree;
128
+ /**
129
+ * Creates a UrlTree for the exact bound declaration, not its pathless winner.
130
+ *
131
+ * @param selector - The exact-current literal `.`.
132
+ * @param values - Explicit values for this declaration, with no current-input reuse.
133
+ * @returns Router.parseUrl's result without navigating.
134
+ * @throws Synchronous URL validation, encoding or stringifier failures before Angular.
135
+ */
136
+ link<Keys extends keyof SearchOf<Target> = never>(selector: ".", values: UrlValues<Target, Keys>): UrlTree;
137
+ /**
138
+ * Creates a UrlTree for a statically admitted absolute/relative authored selector.
139
+ *
140
+ * @param selector - A single known template literal, never a concrete URL.
141
+ * @param values - The selected target's complete explicit values.
142
+ * @returns Router.parseUrl's result without navigating.
143
+ * @throws Synchronously for unknown selectors or invalid URL values.
144
+ */
145
+ link<const Selector extends keyof Selected & string, Keys extends keyof SearchOf<NoInfer<Selected[Selector]>> = never>(selector: Selector & (IsUnion<Selector> extends true ? never : unknown), values: UrlValues<NoInfer<Selected[Selector]>, Keys>): UrlTree;
146
+ /**
147
+ * Creates a UrlTree for a generated reference's own exact declaration.
148
+ *
149
+ * @param selector - A genuine destination exported by a facade in this route set.
150
+ * @param values - The referenced declaration's complete explicit values.
151
+ * @returns Router.parseUrl's result without navigating.
152
+ * @throws Synchronously for foreign/fake references or invalid URL values.
153
+ */
154
+ link<const Id extends keyof References & string, Keys extends keyof SearchOf<NoInfer<References[Id]>> = never>(selector: Destination<NoInfer<References[Id]>, Set, Id> & (IsUnion<Id> extends true ? never : unknown), values: UrlValues<NoInfer<References[Id]>, Keys>): UrlTree;
155
+ /**
156
+ * Navigates to this exact declaration via Router.navigateByUrl.
157
+ *
158
+ * @param values - Explicit effective params/search and optional own fragment.
159
+ * @returns Angular's identical Promise; Angular owns skips, redirects and failures.
160
+ * @throws Synchronous URL validation, encoding or stringifier failures before Angular.
161
+ */
162
+ navigate<Keys extends keyof SearchOf<Target> = never>(values: UrlValues<Target, Keys>): Promise<boolean>;
163
+ /**
164
+ * Navigates to the exact bound declaration, not its pathless winner.
165
+ *
166
+ * @param selector - The exact-current literal `.`.
167
+ * @param values - Explicit values for this declaration, with no current-input reuse.
168
+ * @returns Angular's identical Router.navigateByUrl Promise.
169
+ * @throws Synchronous URL validation, encoding or stringifier failures before Angular.
170
+ */
171
+ navigate<Keys extends keyof SearchOf<Target> = never>(selector: ".", values: UrlValues<Target, Keys>): Promise<boolean>;
172
+ /**
173
+ * Navigates to a statically admitted absolute/relative authored selector.
174
+ *
175
+ * @param selector - A single known template literal, never a concrete URL.
176
+ * @param values - The selected target's complete explicit values.
177
+ * @returns Angular's identical Router.navigateByUrl Promise.
178
+ * @throws Synchronously for unknown selectors or invalid URL values.
179
+ */
180
+ navigate<const Selector extends keyof Selected & string, Keys extends keyof SearchOf<NoInfer<Selected[Selector]>> = never>(selector: Selector & (IsUnion<Selector> extends true ? never : unknown), values: UrlValues<NoInfer<Selected[Selector]>, Keys>): Promise<boolean>;
181
+ /**
182
+ * Navigates to a generated reference's own exact declaration.
183
+ *
184
+ * @param selector - A genuine destination exported by a facade in this route set.
185
+ * @param values - The referenced declaration's complete explicit values.
186
+ * @returns Angular's identical Router.navigateByUrl Promise.
187
+ * @throws Synchronously for foreign/fake references or invalid URL values.
188
+ */
189
+ navigate<const Id extends keyof References & string, Keys extends keyof SearchOf<NoInfer<References[Id]>> = never>(selector: Destination<NoInfer<References[Id]>, Set, Id> & (IsUnion<Id> extends true ? never : unknown), values: UrlValues<NoInfer<References[Id]>, Keys>): Promise<boolean>;
166
190
  }
167
- declare function nativeOptions(definition: AnyRoute): Record<string, unknown>;
168
- declare function injectGeneratedRoute<Target extends AnyRoute, Selected extends Record<string, AnyRoute>, Set, References extends Record<string, AnyRoute>>(set: RouteSet, id: string): Handle<Target, Selected, Set, References>;
169
-
170
- export { Destination, assertIdentity, callbacks, createDestination, injectGeneratedRoute, nativeOptions, parseInputs, redirect };
171
- export type { Handle, RecordBinding, RouteSet };
191
+ export declare function nativeOptions(definition: AnyRoute): Record<string, unknown>;
192
+ export declare function injectGeneratedRoute<Target extends AnyRoute, Selected extends Record<string, AnyRoute>, Set, References extends Record<string, AnyRoute>>(set: RouteSet, id: string): Handle<Target, Selected, Set, References>;
193
+ export type { RecordBinding, RouteSet };
@@ -1 +1,2 @@
1
- export { ParamCodec, Route, booleanParam, createUrl, defineRoute, enumParam, nullableSearchParam, numberParam, optionalSearchParam, stringParam } from '@loozo/angular-router/_core';
1
+ import { ParamCodec, Route, booleanParam, createUrl, defineRoute, enumParam, nullableSearchParam, numberParam, optionalSearchParam, stringParam } from "@loozo/angular-router/_core";
2
+ export { type ParamCodec, type Route, booleanParam, createUrl, defineRoute, enumParam, nullableSearchParam, numberParam, optionalSearchParam, stringParam };
package/.npmignore DELETED
@@ -1,3 +0,0 @@
1
- # Nested package.json's are only needed for development.
2
- _core/package.json
3
- _generated/package.json
@@ -1 +0,0 @@
1
- {"version":3,"file":"loozo-angular-router.mjs","sources":["../../src/index.ts","../../src/loozo-angular-router.ts"],"sourcesContent":["/**\n * Typed declarations, scalar codecs and synchronous URLs for Angular's native router.\n *\n * @remarks\n * Install generated `routes` with Angular's provideRouter and import the colocated\n * `injectRoute`/`destination` facade for typed resources, links and navigation.\n * Generate through the application/serve Architect companions. The `_core` and\n * `_generated` subpaths are internal package/generator coupling, not supported\n * application metadata or graph APIs.\n *\n * @packageDocumentation\n */\nexport {\n defineRoute,\n createUrl,\n stringParam,\n numberParam,\n booleanParam,\n enumParam,\n optionalSearchParam,\n nullableSearchParam,\n} from \"@loozo/angular-router/_core\";\nexport type { Route, ParamCodec } from \"@loozo/angular-router/_core\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;;;;;;;;;;;AAWG;;ACXH;;AAEG"}