@plumile/router 0.1.19 → 0.1.21

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 (62) hide show
  1. package/README.md +110 -180
  2. package/lib/esm/eslint-rules/no-direct-window-location-search.js +3 -3
  3. package/lib/esm/index.d.ts +0 -1
  4. package/lib/esm/index.d.ts.map +1 -1
  5. package/lib/esm/index.js +1 -2
  6. package/lib/esm/routing/Link.d.ts.map +1 -1
  7. package/lib/esm/routing/Link.js +14 -25
  8. package/lib/esm/routing/RouteComponentWrapper.js +2 -2
  9. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  10. package/lib/esm/routing/createRouter.js +82 -108
  11. package/lib/esm/routing/index.d.ts +1 -1
  12. package/lib/esm/routing/index.d.ts.map +1 -1
  13. package/lib/esm/routing/index.js +2 -2
  14. package/lib/esm/routing/useAllQuery.js +1 -1
  15. package/lib/esm/routing/useFilters.js +10 -10
  16. package/lib/esm/routing/useQueryState.d.ts.map +1 -1
  17. package/lib/esm/routing/useQueryState.js +10 -45
  18. package/lib/esm/tools/buildCombinedSearch.d.ts +1 -5
  19. package/lib/esm/tools/buildCombinedSearch.d.ts.map +1 -1
  20. package/lib/esm/tools/buildCombinedSearch.js +6 -15
  21. package/lib/esm/tools.d.ts +2 -6
  22. package/lib/esm/tools.d.ts.map +1 -1
  23. package/lib/esm/tools.js +1 -1
  24. package/lib/esm/type-tests/query-infer.test-d.d.ts.map +1 -1
  25. package/lib/esm/type-tests/query-infer.test-d.js +2 -49
  26. package/lib/esm/type-tests/routes-inference.test-d.d.ts +0 -1
  27. package/lib/esm/type-tests/routes-inference.test-d.js +2 -49
  28. package/lib/esm/types.d.ts +2 -16
  29. package/lib/esm/types.d.ts.map +1 -1
  30. package/lib/esm/types.js +1 -1
  31. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  32. package/lib/types/index.d.ts +0 -1
  33. package/lib/types/index.d.ts.map +1 -1
  34. package/lib/types/routing/Link.d.ts.map +1 -1
  35. package/lib/types/routing/createRouter.d.ts.map +1 -1
  36. package/lib/types/routing/index.d.ts +1 -1
  37. package/lib/types/routing/index.d.ts.map +1 -1
  38. package/lib/types/routing/useQueryState.d.ts.map +1 -1
  39. package/lib/types/tools/buildCombinedSearch.d.ts +1 -5
  40. package/lib/types/tools/buildCombinedSearch.d.ts.map +1 -1
  41. package/lib/types/tools.d.ts +2 -6
  42. package/lib/types/tools.d.ts.map +1 -1
  43. package/lib/types/type-tests/query-infer.test-d.d.ts.map +1 -1
  44. package/lib/types/type-tests/routes-inference.test-d.d.ts +0 -1
  45. package/lib/types/types.d.ts +2 -16
  46. package/lib/types/types.d.ts.map +1 -1
  47. package/package.json +4 -4
  48. package/lib/esm/routing/useTypedQuery.d.ts +0 -2
  49. package/lib/esm/routing/useTypedQuery.d.ts.map +0 -1
  50. package/lib/esm/routing/useTypedQuery.js +0 -36
  51. package/lib/esm/tools/buildSearch.d.ts +0 -6
  52. package/lib/esm/tools/buildSearch.d.ts.map +0 -1
  53. package/lib/esm/tools/buildSearch.js +0 -60
  54. package/lib/esm/tools/query-dsl.d.ts +0 -28
  55. package/lib/esm/tools/query-dsl.d.ts.map +0 -1
  56. package/lib/esm/tools/query-dsl.js +0 -250
  57. package/lib/types/routing/useTypedQuery.d.ts +0 -2
  58. package/lib/types/routing/useTypedQuery.d.ts.map +0 -1
  59. package/lib/types/tools/buildSearch.d.ts +0 -6
  60. package/lib/types/tools/buildSearch.d.ts.map +0 -1
  61. package/lib/types/tools/query-dsl.d.ts +0 -28
  62. package/lib/types/tools/query-dsl.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAI5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAG5E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useQueryState.d.ts","sourceRoot":"","sources":["../../../src/routing/useQueryState.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IAEpC,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAWF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO,EAC/C,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACjC;IACD,CAAC,GAAG,SAAS;IACb,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI;CAC/D,CAsFA"}
1
+ {"version":3,"file":"useQueryState.d.ts","sourceRoot":"","sources":["../../../src/routing/useQueryState.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IAEpC,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAWF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO,EAC/C,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACjC;IACD,CAAC,GAAG,SAAS;IACb,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI;CAC/D,CA8CA"}
@@ -1,11 +1,7 @@
1
1
  import { type Schema as FilterSchema } from '@plumile/filter-query';
2
- import type { QuerySchema } from '../types.js';
3
2
  export declare function buildCombinedSearch(opts: {
4
- query?: Record<string, unknown>;
5
- querySchema?: QuerySchema;
6
3
  filters?: Record<string, unknown>;
7
- filterSchema?: FilterSchema;
8
- omitQueryDefaults?: boolean;
4
+ querySchema?: FilterSchema;
9
5
  }): string;
10
6
  export default buildCombinedSearch;
11
7
  //# sourceMappingURL=buildCombinedSearch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildCombinedSearch.d.ts","sourceRoot":"","sources":["../../../src/tools/buildCombinedSearch.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,MAAM,IAAI,YAAY,EAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAU/C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,MAAM,CA0BT;AAED,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"buildCombinedSearch.d.ts","sourceRoot":"","sources":["../../../src/tools/buildCombinedSearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,IAAI,YAAY,EAC5B,MAAM,uBAAuB,CAAC;AAM/B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B,GAAG,MAAM,CAaT;AAED,eAAe,mBAAmB,CAAC"}
@@ -1,11 +1,7 @@
1
1
  import type { ParamData } from 'path-to-regexp';
2
- import type { PrepareResult, PreparedMatch, Route, RouterMatchedRoute, QuerySchema, InferQuery } from './types.js';
2
+ import type { PrepareResult, PreparedMatch, Route, RouterMatchedRoute } from './types.js';
3
3
  import type { FlatRoute } from './builder.js';
4
4
  export declare function getMatchedRoute<TParams extends ParamData>(routes: FlatRoute<TParams>[], location: Location): RouterMatchedRoute<TParams> | null;
5
5
  export declare function prepareMatch<TParams extends ParamData>(match: RouterMatchedRoute<TParams> | null, query?: Record<string, unknown>): PreparedMatch<TParams>;
6
- export declare function r<TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQuery extends Record<string, unknown> = Record<string, unknown>, TSchema extends QuerySchema | undefined = undefined>(route: (TSchema extends QuerySchema ? Omit<Route<TPrepared, TVariables, InferQuery<TSchema>>, 'query'> & {
7
- query: TSchema;
8
- } : Route<TPrepared, TVariables, TQuery>) & {
9
- query?: TSchema;
10
- }): Route<TPrepared, TVariables, TSchema extends QuerySchema ? InferQuery<TSchema> : TQuery>;
6
+ export declare function r<TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQuery extends Record<string, unknown> = Record<string, unknown>>(route: Route<TPrepared, TVariables, TQuery>): Route<TPrepared, TVariables, TQuery>;
11
7
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAEb,KAAK,EACL,kBAAkB,EAClB,WAAW,EACX,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAW9C,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAUD,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EACpD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,aAAa,CAAC,OAAO,CAAC,CAmDxB;AAwBD,wBAAgB,CAAC,CACf,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,OAAO,SAAS,WAAW,GAAG,SAAS,GAAG,SAAS,EAEnD,KAAK,EAAE,CAAC,OAAO,SAAS,WAAW,GAC/B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;IACjE,KAAK,EAAE,OAAO,CAAC;CAChB,GACD,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D,KAAK,CACN,SAAS,EACT,UAAU,EACV,OAAO,SAAS,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAC3D,CAMA"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAEb,KAAK,EACL,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAW9C,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAUD,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EACpD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,aAAa,CAAC,OAAO,CAAC,CAmDxB;AAwBD,wBAAgB,CAAC,CACf,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEhE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,GAC1C,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAEtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"query-infer.test-d.d.ts","sourceRoot":"","sources":["../../../src/type-tests/query-infer.test-d.ts"],"names":[],"mappings":"AAiEA,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"query-infer.test-d.d.ts","sourceRoot":"","sources":["../../../src/type-tests/query-infer.test-d.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC"}
@@ -1,2 +1 @@
1
- export {};
2
1
  //# sourceMappingURL=routes-inference.test-d.d.ts.map
@@ -45,21 +45,9 @@ export type RouteEntry<TVariables extends ParamData> = {
45
45
  forceRerender: boolean;
46
46
  rawSearch?: string;
47
47
  query: Record<string, string | string[]>;
48
- typedQuery?: Record<string, unknown>;
49
48
  filters?: Record<string, unknown>;
50
49
  filterDiagnostics?: FilterDiagnostic[];
51
- };
52
- export type QueryDescriptor<T> = {
53
- __type: T;
54
- parse: (values: string[]) => T | undefined;
55
- serialize: (value: T) => string[];
56
- optional?: boolean;
57
- hasDefault?: boolean;
58
- defaultValue?: T;
59
- };
60
- export type QuerySchema = Record<string, QueryDescriptor<any>>;
61
- export type InferQuery<S extends QuerySchema> = {
62
- [K in keyof S]: S[K] extends QueryDescriptor<infer O> ? S[K]['optional'] extends true ? S[K]['hasDefault'] extends true ? O : O | undefined : O : never;
50
+ activeQuerySchema?: FilterSchema;
63
51
  };
64
52
  export type RouterRedirectStatus = 301 | 302;
65
53
  export type MatchedRoute<TVariables extends ParamData> = {
@@ -86,8 +74,7 @@ export type Route<TPrepared extends PrepareResult, TVariables extends ParamData
86
74
  path?: string;
87
75
  prepare?: RoutePrepare<TPrepared, TVariables, TQueryShape>;
88
76
  render?: RouteRender<TPrepared, TVariables, TQueryShape>;
89
- query?: QuerySchema;
90
- filterSchema?: FilterSchema;
77
+ querySchema?: FilterSchema;
91
78
  };
92
79
  export type RouteComponentProps<TVariables extends ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
93
80
  children: ReactElement;
@@ -134,7 +121,6 @@ export type QueryShapeMap<Routes extends readonly AnyRoute[]> = {
134
121
  };
135
122
  export interface PreparedAccess<Routes extends readonly AnyRoute[]> {
136
123
  getPrepared: <P extends PathsOf<Routes>>(path: P) => PreparedMap<Routes>[P];
137
- getTypedQuery: <P extends PathsOf<Routes>>(path: P) => QueryShapeMap<Routes>[P] | undefined;
138
124
  }
139
125
  export type NavigateInputForPath<Routes extends readonly AnyRoute[], P extends PathsOf<Routes>> = {
140
126
  pathname: P;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumile/router",
3
- "version": "0.1.19",
3
+ "version": "0.1.21",
4
4
  "description": "A modern, type-safe React router with code splitting, data preloading, and Suspense integration",
5
5
  "type": "module",
6
6
  "main": "lib/esm/index.js",
@@ -31,7 +31,7 @@
31
31
  "npm": ">=8.0.0"
32
32
  },
33
33
  "dependencies": {
34
- "@plumile/filter-query": "^0.1.19",
34
+ "@plumile/filter-query": "^0.1.21",
35
35
  "path-to-regexp": "8.2.0"
36
36
  },
37
37
  "devDependencies": {
@@ -45,13 +45,13 @@
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@types/react": ">=19.1.11",
48
- "@types/react-dom": ">=19.1.7",
48
+ "@types/react-dom": ">=19.1.8",
49
49
  "@types/react-relay": ">=18.2.1",
50
50
  "react-relay": ">=20.1.1",
51
51
  "relay-runtime": ">=20.1.1",
52
52
  "tslib": ">=2.8.1"
53
53
  },
54
- "gitHead": "caf023d4bb55945413c9eb0c7fe622f70014bca2",
54
+ "gitHead": "2ddbcdb764e44f424fbde8a012e4703cc22e421f",
55
55
  "publishConfig": {
56
56
  "access": "public"
57
57
  }
@@ -1,2 +0,0 @@
1
- export default function useTypedQuery<T = unknown>(): T;
2
- //# sourceMappingURL=useTypedQuery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTypedQuery.d.ts","sourceRoot":"","sources":["../../../src/routing/useTypedQuery.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC,CAmCtD"}
@@ -1,36 +0,0 @@
1
- import { useContext } from 'react';
2
- import RoutingContext from './RoutingContext.js';
3
- export default function useTypedQuery() {
4
- const ctx = useContext(RoutingContext);
5
- if (ctx == null)
6
- return {};
7
- const entry = ctx.get();
8
- let schema;
9
- const matched = entry.route;
10
- if (matched != null) {
11
- const collected = [];
12
- for (const r of matched.route.routes) {
13
- const maybe = r.query;
14
- if (maybe !== null &&
15
- typeof maybe === 'object' &&
16
- Object.values(maybe).some((v) => {
17
- if (v == null || typeof v !== 'object')
18
- return false;
19
- if (!('parse' in v))
20
- return false;
21
- const candidate = v;
22
- return typeof candidate.parse === 'function';
23
- })) {
24
- collected.push(maybe);
25
- }
26
- }
27
- if (collected.length > 0)
28
- schema = collected.at(-1);
29
- }
30
- const value = entry.typedQuery ?? entry.query;
31
- if (schema != null) {
32
- return value;
33
- }
34
- return value;
35
- }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHlwZWRRdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0aW5nL3VzZVR5cGVkUXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNuQyxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQW9CakQsTUFBTSxDQUFDLE9BQU8sVUFBVSxhQUFhO0lBQ25DLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2QyxJQUFJLEdBQUcsSUFBSSxJQUFJO1FBQUUsT0FBTyxFQUFPLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBR3hCLElBQUksTUFBK0IsQ0FBQztJQUNwQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzVCLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3BCLE1BQU0sU0FBUyxHQUFrQixFQUFFLENBQUM7UUFDcEMsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLE1BQU0sS0FBSyxHQUFJLENBQW9DLENBQUMsS0FBSyxDQUFDO1lBQzFELElBQ0UsS0FBSyxLQUFLLElBQUk7Z0JBQ2QsT0FBTyxLQUFLLEtBQUssUUFBUTtnQkFFekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFnQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ3pELElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRO3dCQUFFLE9BQU8sS0FBSyxDQUFDO29CQUNyRCxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUssQ0FBNkIsQ0FBQzt3QkFBRSxPQUFPLEtBQUssQ0FBQztvQkFDL0QsTUFBTSxTQUFTLEdBQUcsQ0FBd0IsQ0FBQztvQkFDM0MsT0FBTyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDO2dCQUMvQyxDQUFDLENBQUMsRUFDRixDQUFDO2dCQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBb0IsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFFOUMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkIsT0FBTyxLQUEwRCxDQUFDO0lBQ3BFLENBQUM7SUFDRCxPQUFPLEtBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSb3V0aW5nQ29udGV4dCBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcbmltcG9ydCB0eXBlIHsgUXVlcnlTY2hlbWEsIEluZmVyUXVlcnkgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8qKlxuICogSG9vayByZXR1cm5pbmcgdGhlIHR5cGVkIHF1ZXJ5IG9iamVjdCBjb21wdXRlZCBmcm9tIHRoZSBtYXRjaGVkIHJvdXRlIHNjaGVtYSAoaWYgYW55KS5cbiAqIEZhbGxzIGJhY2sgdG8gdGhlIHJhdyBxdWVyeSB3aGVuIG5vIHNjaGVtYSBpcyBkZWZpbmVkLlxuICpcbiAqIFVzYWdlIHdpdGggZXhwbGljaXQgdHlwaW5nICh1bnRpbCBhdXRvbWF0aWMgaW5mZXJlbmNlIGlzIGFkZGVkKTpcbiAqICAgY29uc3QgcSA9IHVzZVR5cGVkUXVlcnk8eyBwYWdlPzogbnVtYmVyOyB0YWc/OiBzdHJpbmcgfT4oKTtcbiAqL1xuLy8gSW50ZXJuYWwgdXRpbGl0eTogaWYgc2NoZW1hIFMgcHJvdmlkZWQgcmV0dXJuIGl0cyBpbmZlcnJlZCBxdWVyeSwgZWxzZSBmYWxsYmFjay5cbnR5cGUgSW5mZXJPckZhbGxiYWNrPFMsIEZhbGxiYWNrPiA9IFMgZXh0ZW5kcyBRdWVyeVNjaGVtYVxuICA/IEluZmVyUXVlcnk8Uz5cbiAgOiBGYWxsYmFjaztcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0eXBlZCBxdWVyeSBvYmplY3QuIElmIG5vIHNjaGVtYSBpcyBwcmVzZW50IGZhbGxzIGJhY2sgdG8gcmF3IHF1ZXJ5LlxuICogR2VuZXJpYyBUIGNhbiBiZSBwcm92aWRlZCBmb3IgZXhwbGljaXQgdHlwaW5nOyBvdGhlcndpc2UgYSBiZXN04oCRZWZmb3J0IHJ1bnRpbWUgY2FzdFxuICogaXMgYXBwbGllZCB3aGVuIGEgc2NoZW1hIGlzIGRldGVjdGVkLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUeXBlZFF1ZXJ5PFQgPSB1bmtub3duPigpOiBUIHtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG4gIGlmIChjdHggPT0gbnVsbCkgcmV0dXJuIHt9IGFzIFQ7XG4gIGNvbnN0IGVudHJ5ID0gY3R4LmdldCgpO1xuXG4gIC8vIFJ1bnRpbWUgZXh0cmFjdGlvbiBvZiBkZWVwZXN0IHNjaGVtYSAobWlycm9ycyBsb2dpYyBpbiBjcmVhdGVSb3V0ZXIpXG4gIGxldCBzY2hlbWE6IFF1ZXJ5U2NoZW1hIHwgdW5kZWZpbmVkO1xuICBjb25zdCBtYXRjaGVkID0gZW50cnkucm91dGU7XG4gIGlmIChtYXRjaGVkICE9IG51bGwpIHtcbiAgICBjb25zdCBjb2xsZWN0ZWQ6IFF1ZXJ5U2NoZW1hW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHIgb2YgbWF0Y2hlZC5yb3V0ZS5yb3V0ZXMpIHtcbiAgICAgIGNvbnN0IG1heWJlID0gKHIgYXMgdW5rbm93biBhcyB7IHF1ZXJ5PzogdW5rbm93biB9KS5xdWVyeTtcbiAgICAgIGlmIChcbiAgICAgICAgbWF5YmUgIT09IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIG1heWJlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAvLyBIZXVyaXN0aWM6IGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBsb29rcyBsaWtlIGEgZGVzY3JpcHRvciAoaGFzIHBhcnNlIGZuKVxuICAgICAgICBPYmplY3QudmFsdWVzKG1heWJlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5zb21lKCh2KSA9PiB7XG4gICAgICAgICAgaWYgKHYgPT0gbnVsbCB8fCB0eXBlb2YgdiAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBpZiAoISgncGFyc2UnIGluICh2IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSB2IGFzIHsgcGFyc2U/OiB1bmtub3duIH07XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiBjYW5kaWRhdGUucGFyc2UgPT09ICdmdW5jdGlvbic7XG4gICAgICAgIH0pXG4gICAgICApIHtcbiAgICAgICAgY29sbGVjdGVkLnB1c2gobWF5YmUgYXMgUXVlcnlTY2hlbWEpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29sbGVjdGVkLmxlbmd0aCA+IDApIHNjaGVtYSA9IGNvbGxlY3RlZC5hdCgtMSk7XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IGVudHJ5LnR5cGVkUXVlcnkgPz8gZW50cnkucXVlcnk7XG4gIC8vIENhc3QgdG8gaW5mZXJyZWQgc2hhcGUgb25seSBpZiBzY2hlbWEgbm9uLW51bGxcbiAgaWYgKHNjaGVtYSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIEluZmVyT3JGYWxsYmFjazx0eXBlb2Ygc2NoZW1hLCBUPiBhcyB1bmtub3duIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGFzIFQ7XG59XG4iXX0=
@@ -1,6 +0,0 @@
1
- import type { QuerySchema } from '../types.js';
2
- export declare function buildSearch(query: Record<string, any> | undefined, schema: QuerySchema | undefined, opts?: {
3
- omitDefaults?: boolean;
4
- sortKeys?: boolean;
5
- }): string;
6
- //# sourceMappingURL=buildSearch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildSearch.d.ts","sourceRoot":"","sources":["../../../src/tools/buildSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AAWhE,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACtC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,MAAM,CA0DR"}
@@ -1,60 +0,0 @@
1
- function serializeValue(descriptor, value) {
2
- return descriptor.serialize(value);
3
- }
4
- export function buildSearch(query, schema, opts) {
5
- if (query == null)
6
- return '';
7
- const { omitDefaults = false, sortKeys = true } = opts ?? {};
8
- let keys = Object.keys(query);
9
- if (sortKeys) {
10
- if (schema != null) {
11
- const schemaKeys = Object.keys(schema);
12
- const ordered = [];
13
- for (const sk of schemaKeys) {
14
- if (Object.prototype.hasOwnProperty.call(query, sk)) {
15
- ordered.push(sk);
16
- }
17
- }
18
- for (const k of keys) {
19
- if (!schemaKeys.includes(k)) {
20
- ordered.push(k);
21
- }
22
- }
23
- keys = ordered;
24
- }
25
- else {
26
- keys.sort();
27
- }
28
- }
29
- const parts = [];
30
- for (const key of keys) {
31
- const value = query[key];
32
- if (value == null) {
33
- }
34
- else {
35
- const descriptor = schema?.[key];
36
- if (descriptor != null) {
37
- const isDefault = descriptor.hasDefault && value === descriptor.defaultValue;
38
- const skipDefault = omitDefaults && isDefault;
39
- if (!skipDefault) {
40
- const values = serializeValue(descriptor, value);
41
- values.forEach((v) => {
42
- parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`);
43
- });
44
- }
45
- }
46
- else if (Array.isArray(value)) {
47
- value.forEach((v) => {
48
- parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`);
49
- });
50
- }
51
- else {
52
- parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
53
- }
54
- }
55
- }
56
- if (parts.length === 0)
57
- return '';
58
- return `?${parts.join('&')}`;
59
- }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRTZWFyY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvYnVpbGRTZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsU0FBUyxjQUFjLENBQ3JCLFVBQWdDLEVBQ2hDLEtBQWM7SUFFZCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBWSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUdELE1BQU0sVUFBVSxXQUFXLENBQ3pCLEtBQXNDLEVBQ3RDLE1BQStCLEVBQy9CLElBQXFEO0lBRXJELElBQUksS0FBSyxJQUFJLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM3QixNQUFNLEVBQUUsWUFBWSxHQUFHLEtBQUssRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUM3RCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUVuQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztZQUM3QixLQUFLLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUM1QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkIsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksR0FBRyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVwQixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2QixNQUFNLFNBQVMsR0FDYixVQUFVLENBQUMsVUFBVSxJQUFJLEtBQUssS0FBSyxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUM3RCxNQUFNLFdBQVcsR0FBRyxZQUFZLElBQUksU0FBUyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDbkIsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzlELENBQUM7b0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDbEIsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzlELENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQ2xFLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUXVlcnlTY2hlbWEsIFF1ZXJ5RGVzY3JpcHRvciB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqIFNlcmlhbGl6ZSBhIHNpbmdsZSB2YWx1ZSB3aXRoIGl0cyBkZXNjcmlwdG9yICovXG5mdW5jdGlvbiBzZXJpYWxpemVWYWx1ZShcbiAgZGVzY3JpcHRvcjogUXVlcnlEZXNjcmlwdG9yPGFueT4sXG4gIHZhbHVlOiB1bmtub3duLFxuKTogc3RyaW5nW10ge1xuICByZXR1cm4gZGVzY3JpcHRvci5zZXJpYWxpemUodmFsdWUgYXMgYW55KTtcbn1cblxuLyoqIFNlcmlhbGl6ZSBhIHF1ZXJ5IG9iamVjdCB1c2luZyBhbiBvcHRpb25hbCBzY2hlbWEgKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlYXJjaChcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQsXG4gIHNjaGVtYTogUXVlcnlTY2hlbWEgfCB1bmRlZmluZWQsXG4gIG9wdHM/OiB7IG9taXREZWZhdWx0cz86IGJvb2xlYW47IHNvcnRLZXlzPzogYm9vbGVhbiB9LFxuKTogc3RyaW5nIHtcbiAgaWYgKHF1ZXJ5ID09IG51bGwpIHJldHVybiAnJztcbiAgY29uc3QgeyBvbWl0RGVmYXVsdHMgPSBmYWxzZSwgc29ydEtleXMgPSB0cnVlIH0gPSBvcHRzID8/IHt9O1xuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KTtcbiAgaWYgKHNvcnRLZXlzKSB7XG4gICAgaWYgKHNjaGVtYSAhPSBudWxsKSB7XG4gICAgICAvLyBPcmRlciBrZXlzIGJhc2VkIG9uIHNjaGVtYSBkZWNsYXJhdGlvbiBvcmRlciwgdGhlbiBhcHBlbmQgYW55IGV4dHJhIGtleXNcbiAgICAgIGNvbnN0IHNjaGVtYUtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEpO1xuICAgICAgY29uc3Qgb3JkZXJlZDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgc2sgb2Ygc2NoZW1hS2V5cykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHF1ZXJ5LCBzaykpIHtcbiAgICAgICAgICBvcmRlcmVkLnB1c2goc2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICBpZiAoIXNjaGVtYUtleXMuaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICBvcmRlcmVkLnB1c2goayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGtleXMgPSBvcmRlcmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzLnNvcnQoKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHF1ZXJ5W2tleV07XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIC8vIHNraXAgbnVsbGlzaCB2YWx1ZXNcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHNjaGVtYT8uW2tleV07XG4gICAgICBpZiAoZGVzY3JpcHRvciAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGlzRGVmYXVsdCA9XG4gICAgICAgICAgZGVzY3JpcHRvci5oYXNEZWZhdWx0ICYmIHZhbHVlID09PSBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgY29uc3Qgc2tpcERlZmF1bHQgPSBvbWl0RGVmYXVsdHMgJiYgaXNEZWZhdWx0O1xuICAgICAgICBpZiAoIXNraXBEZWZhdWx0KSB7XG4gICAgICAgICAgY29uc3QgdmFsdWVzID0gc2VyaWFsaXplVmFsdWUoZGVzY3JpcHRvciwgdmFsdWUpO1xuICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHYpKX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodikpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHJldHVybiBgPyR7cGFydHMuam9pbignJicpfWA7XG59XG4iXX0=
@@ -1,28 +0,0 @@
1
- import type { QueryDescriptor, QuerySchema, InferQuery } from '../types.js';
2
- declare function stringDesc(): QueryDescriptor<string>;
3
- declare function numberDesc(): QueryDescriptor<number>;
4
- declare function booleanDesc(): QueryDescriptor<boolean>;
5
- declare function enumDesc<T extends string>(...values: T[]): QueryDescriptor<T>;
6
- declare function arrayOf<T>(inner: QueryDescriptor<T>): QueryDescriptor<T[]>;
7
- declare function optional<T>(d: QueryDescriptor<T>): QueryDescriptor<T | undefined>;
8
- declare function withDefault<T>(d: QueryDescriptor<T>, value: T): QueryDescriptor<T>;
9
- declare function emptyAsUndefined(d: QueryDescriptor<string>): QueryDescriptor<string>;
10
- declare function custom<T>(handlers: {
11
- parse: (values: string[]) => T | undefined;
12
- serialize: (value: T) => string[];
13
- }): QueryDescriptor<T>;
14
- export declare const q: {
15
- string: typeof stringDesc;
16
- number: typeof numberDesc;
17
- boolean: typeof booleanDesc;
18
- enum: typeof enumDesc;
19
- array: typeof arrayOf;
20
- optional: typeof optional;
21
- default: typeof withDefault;
22
- emptyAsUndefined: typeof emptyAsUndefined;
23
- custom: typeof custom;
24
- };
25
- export declare function parseTypedQuery<S extends QuerySchema | undefined>(schema: S, raw: Record<string, string | string[]>): S extends QuerySchema ? InferQuery<Exclude<S, undefined>> : typeof raw;
26
- export declare function parseSearch<S extends QuerySchema | undefined>(schema: S, search: string): S extends QuerySchema ? InferQuery<Exclude<S, undefined>> : Record<string, string | string[]>;
27
- export {};
28
- //# sourceMappingURL=query-dsl.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-dsl.d.ts","sourceRoot":"","sources":["../../../src/tools/query-dsl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAuB5E,iBAAS,UAAU,IAAI,eAAe,CAAC,MAAM,CAAC,CAS7C;AAGD,iBAAS,UAAU,IAAI,eAAe,CAAC,MAAM,CAAC,CAa7C;AAGD,iBAAS,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,CAkB/C;AAGD,iBAAS,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAYtE;AAGD,iBAAS,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAgBnE;AAGD,iBAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,GAAG,SAAS,CAAC,CAE1E;AAGD,iBAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAE3E;AAGD,iBAAS,gBAAgB,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAS7E;AAGD,iBAAS,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3C,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;CACnC,GAAG,eAAe,CAAC,CAAC,CAAC,CAKrB;AAED,eAAO,MAAM,CAAC;;;;;;;;;;CAUb,CAAC;AAGF,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,EAC/D,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GACrC,CAAC,SAAS,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,OAAO,GAAG,CAgGxE;AAGD,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,EAC3D,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,GACb,CAAC,SAAS,WAAW,GACpB,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GACjC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAcpC"}
@@ -1,250 +0,0 @@
1
- const __typedCache = new WeakMap();
2
- function makeDescriptor(cfg) {
3
- return {
4
- __type: undefined,
5
- optional: cfg.optional === true,
6
- hasDefault: cfg.defaultValue !== undefined,
7
- defaultValue: cfg.defaultValue,
8
- parse: cfg.parse,
9
- serialize: cfg.serialize,
10
- };
11
- }
12
- function stringDesc() {
13
- return makeDescriptor({
14
- parse(values) {
15
- return values.at(-1);
16
- },
17
- serialize(value) {
18
- return [value];
19
- },
20
- });
21
- }
22
- function numberDesc() {
23
- return makeDescriptor({
24
- parse(values) {
25
- const v = values.at(-1);
26
- if (v == null)
27
- return undefined;
28
- const n = Number(v);
29
- if (Number.isNaN(n))
30
- return undefined;
31
- return n;
32
- },
33
- serialize(value) {
34
- return [String(value)];
35
- },
36
- });
37
- }
38
- function booleanDesc() {
39
- return makeDescriptor({
40
- parse(values) {
41
- if (values.length === 0)
42
- return undefined;
43
- const v = values.at(-1);
44
- if (v === '' || v == null)
45
- return true;
46
- const lower = v.toLowerCase();
47
- if (lower === '1' || lower === 'true')
48
- return true;
49
- if (lower === '0' || lower === 'false')
50
- return false;
51
- return undefined;
52
- },
53
- serialize(value) {
54
- if (value) {
55
- return ['1'];
56
- }
57
- return ['0'];
58
- },
59
- });
60
- }
61
- function enumDesc(...values) {
62
- const set = new Set(values);
63
- return makeDescriptor({
64
- parse(arr) {
65
- const v = arr.at(-1);
66
- if (v != null && set.has(v))
67
- return v;
68
- return undefined;
69
- },
70
- serialize(value) {
71
- return [value];
72
- },
73
- });
74
- }
75
- function arrayOf(inner) {
76
- return makeDescriptor({
77
- parse(values) {
78
- const out = [];
79
- values.forEach((v) => {
80
- const parsed = inner.parse([v]);
81
- if (parsed !== undefined)
82
- out.push(parsed);
83
- });
84
- return out;
85
- },
86
- serialize(value) {
87
- return value.flatMap((v) => {
88
- return inner.serialize(v);
89
- });
90
- },
91
- });
92
- }
93
- function optional(d) {
94
- return { ...d, optional: true };
95
- }
96
- function withDefault(d, value) {
97
- return { ...d, defaultValue: value, hasDefault: true };
98
- }
99
- function emptyAsUndefined(d) {
100
- return {
101
- ...d,
102
- parse(values) {
103
- const v = d.parse(values);
104
- if (v === '')
105
- return undefined;
106
- return v;
107
- },
108
- };
109
- }
110
- function custom(handlers) {
111
- return makeDescriptor({
112
- parse: handlers.parse,
113
- serialize: handlers.serialize,
114
- });
115
- }
116
- export const q = {
117
- string: stringDesc,
118
- number: numberDesc,
119
- boolean: booleanDesc,
120
- enum: enumDesc,
121
- array: arrayOf,
122
- optional,
123
- default: withDefault,
124
- emptyAsUndefined,
125
- custom,
126
- };
127
- export function parseTypedQuery(schema, raw) {
128
- if (schema == null)
129
- return raw;
130
- let cacheForSchema = __typedCache.get(schema);
131
- if (cacheForSchema == null) {
132
- cacheForSchema = new Map();
133
- __typedCache.set(schema, cacheForSchema);
134
- }
135
- const canonicalParts = [];
136
- const sortedKeys = Object.keys(raw).sort();
137
- for (const k of sortedKeys) {
138
- const v = raw[k];
139
- if (Array.isArray(v)) {
140
- v.forEach((vv) => {
141
- canonicalParts.push(`${k}=${vv}`);
142
- });
143
- }
144
- else {
145
- canonicalParts.push(`${k}=${v}`);
146
- }
147
- }
148
- const cacheKey = canonicalParts.join('&');
149
- const cached = cacheForSchema.get(cacheKey);
150
- if (cached !== undefined)
151
- return cached;
152
- const result = {};
153
- const entries = Object.entries(schema);
154
- for (const [key, descriptor] of entries) {
155
- const rawValue = raw[key];
156
- let values = [];
157
- if (rawValue != null) {
158
- if (Array.isArray(rawValue)) {
159
- values = rawValue;
160
- }
161
- else {
162
- values = [rawValue];
163
- }
164
- }
165
- let parsed = descriptor.parse(values);
166
- if (parsed === undefined) {
167
- if (descriptor.hasDefault)
168
- parsed = descriptor.defaultValue;
169
- else if (descriptor.optional)
170
- parsed = undefined;
171
- }
172
- if (parsed !== undefined)
173
- result[key] = parsed;
174
- else if (!descriptor.optional && descriptor.hasDefault) {
175
- result[key] = descriptor.defaultValue;
176
- }
177
- }
178
- let reuse;
179
- cacheForSchema.forEach((value) => {
180
- if (reuse != null) {
181
- return;
182
- }
183
- if (value != null && typeof value === 'object') {
184
- let equal = true;
185
- const rKeys = Object.keys(result);
186
- const vKeys = Object.keys(value);
187
- if (rKeys.length !== vKeys.length) {
188
- equal = false;
189
- }
190
- else {
191
- for (const k of rKeys) {
192
- if (!Object.prototype.hasOwnProperty.call(value, k)) {
193
- equal = false;
194
- break;
195
- }
196
- const resRec = result;
197
- const valRec = value;
198
- const a = resRec[k];
199
- const b = valRec[k];
200
- if (Array.isArray(a) && Array.isArray(b)) {
201
- if (a.length !== b.length) {
202
- equal = false;
203
- break;
204
- }
205
- for (let i = 0; i < a.length; i += 1) {
206
- if (a[i] !== b[i]) {
207
- equal = false;
208
- break;
209
- }
210
- }
211
- if (!equal)
212
- break;
213
- }
214
- else if (a !== b) {
215
- equal = false;
216
- break;
217
- }
218
- }
219
- }
220
- if (equal) {
221
- reuse = value;
222
- }
223
- }
224
- });
225
- if (reuse != null) {
226
- cacheForSchema.set(cacheKey, reuse);
227
- return reuse;
228
- }
229
- cacheForSchema.set(cacheKey, result);
230
- return result;
231
- }
232
- export function parseSearch(schema, search) {
233
- let actual = search;
234
- if (search.startsWith('?')) {
235
- actual = search.slice(1);
236
- }
237
- const params = new URLSearchParams(actual);
238
- const raw = {};
239
- params.forEach((value, key) => {
240
- const existing = raw[key];
241
- if (existing == null)
242
- raw[key] = value;
243
- else if (Array.isArray(existing))
244
- existing.push(value);
245
- else
246
- raw[key] = [existing, value];
247
- });
248
- return parseTypedQuery(schema, raw);
249
- }
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZHNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xzL3F1ZXJ5LWRzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztBQUc3RCxTQUFTLGNBQWMsQ0FBSSxHQUsxQjtJQUNDLE9BQU87UUFDTCxNQUFNLEVBQUUsU0FBcUI7UUFDN0IsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEtBQUssSUFBSTtRQUMvQixVQUFVLEVBQUUsR0FBRyxDQUFDLFlBQVksS0FBSyxTQUFTO1FBQzFDLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtRQUM5QixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDaEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO0tBQ3pCLENBQUM7QUFDSixDQUFDO0FBR0QsU0FBUyxVQUFVO0lBQ2pCLE9BQU8sY0FBYyxDQUFTO1FBQzVCLEtBQUssQ0FBQyxNQUFNO1lBQ1YsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsQ0FBQyxLQUFLO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBR0QsU0FBUyxVQUFVO0lBQ2pCLE9BQU8sY0FBYyxDQUFTO1FBQzVCLEtBQUssQ0FBQyxNQUFNO1lBQ1YsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLElBQUk7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDaEMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDdEMsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsU0FBUyxDQUFDLEtBQUs7WUFDYixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFHRCxTQUFTLFdBQVc7SUFDbEIsT0FBTyxjQUFjLENBQVU7UUFDN0IsS0FBSyxDQUFDLE1BQU07WUFDVixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUMxQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QixJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksS0FBSyxLQUFLLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDbkQsSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssS0FBSyxPQUFPO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ3JELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxTQUFTLENBQUMsS0FBSztZQUNiLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBR0QsU0FBUyxRQUFRLENBQW1CLEdBQUcsTUFBVztJQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixPQUFPLGNBQWMsQ0FBSTtRQUN2QixLQUFLLENBQUMsR0FBRztZQUNQLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQWtCLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxTQUFTLENBQUMsS0FBSztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUdELFNBQVMsT0FBTyxDQUFJLEtBQXlCO0lBQzNDLE9BQU8sY0FBYyxDQUFNO1FBQ3pCLEtBQUssQ0FBQyxNQUFNO1lBQ1YsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDbkIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksTUFBTSxLQUFLLFNBQVM7b0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELFNBQVMsQ0FBQyxLQUFLO1lBQ2IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pCLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBR0QsU0FBUyxRQUFRLENBQUksQ0FBcUI7SUFDeEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQVMsQ0FBQztBQUN6QyxDQUFDO0FBR0QsU0FBUyxXQUFXLENBQUksQ0FBcUIsRUFBRSxLQUFRO0lBQ3JELE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN6RCxDQUFDO0FBR0QsU0FBUyxnQkFBZ0IsQ0FBQyxDQUEwQjtJQUNsRCxPQUFPO1FBQ0wsR0FBRyxDQUFDO1FBQ0osS0FBSyxDQUFDLE1BQU07WUFDVixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDL0IsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO0tBQ3lCLENBQUM7QUFDL0IsQ0FBQztBQUdELFNBQVMsTUFBTSxDQUFJLFFBR2xCO0lBQ0MsT0FBTyxjQUFjLENBQUk7UUFDdkIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO1FBQ3JCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztLQUM5QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHO0lBQ2YsTUFBTSxFQUFFLFVBQVU7SUFDbEIsTUFBTSxFQUFFLFVBQVU7SUFDbEIsT0FBTyxFQUFFLFdBQVc7SUFDcEIsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLFFBQVE7SUFDUixPQUFPLEVBQUUsV0FBVztJQUNwQixnQkFBZ0I7SUFDaEIsTUFBTTtDQUNQLENBQUM7QUFHRixNQUFNLFVBQVUsZUFBZSxDQUM3QixNQUFTLEVBQ1QsR0FBc0M7SUFFdEMsSUFBSSxNQUFNLElBQUksSUFBSTtRQUFFLE9BQU8sR0FBVSxDQUFDO0lBRXRDLElBQUksY0FBYyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBMkIsQ0FBQyxDQUFDO0lBQ25FLElBQUksY0FBYyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzNCLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzNCLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBMkIsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsTUFBTSxjQUFjLEdBQWEsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0MsS0FBSyxNQUFNLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMzQixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUNmLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLElBQUksTUFBTSxLQUFLLFNBQVM7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDMUIsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN6QixJQUFJLFVBQVUsQ0FBQyxVQUFVO2dCQUFFLE1BQU0sR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO2lCQUN2RCxJQUFJLFVBQVUsQ0FBQyxRQUFRO2dCQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksTUFBTSxLQUFLLFNBQVM7WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO2FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2RCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBVSxDQUFDO0lBQ2YsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQy9CLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9DLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztZQUNqQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBZ0MsQ0FBQyxDQUFDO1lBQzVELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDaEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ3BELEtBQUssR0FBRyxLQUFLLENBQUM7d0JBQ2QsTUFBTTtvQkFDUixDQUFDO29CQUNELE1BQU0sTUFBTSxHQUFHLE1BQWlDLENBQUM7b0JBQ2pELE1BQU0sTUFBTSxHQUFHLEtBQWdDLENBQUM7b0JBQ2hELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDcEIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUN6QyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDOzRCQUMxQixLQUFLLEdBQUcsS0FBSyxDQUFDOzRCQUNkLE1BQU07d0JBQ1IsQ0FBQzt3QkFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7NEJBQ3JDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dDQUNsQixLQUFLLEdBQUcsS0FBSyxDQUFDO2dDQUNkLE1BQU07NEJBQ1IsQ0FBQzt3QkFDSCxDQUFDO3dCQUNELElBQUksQ0FBQyxLQUFLOzRCQUFFLE1BQU07b0JBQ3BCLENBQUM7eUJBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ25CLEtBQUssR0FBRyxLQUFLLENBQUM7d0JBQ2QsTUFBTTtvQkFDUixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNsQixjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyQyxPQUFPLE1BQWEsQ0FBQztBQUN2QixDQUFDO0FBR0QsTUFBTSxVQUFVLFdBQVcsQ0FDekIsTUFBUyxFQUNULE1BQWM7SUFJZCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDcEIsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLE1BQU0sR0FBRyxHQUFzQyxFQUFFLENBQUM7SUFDbEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUM1QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxRQUFRLElBQUksSUFBSTtZQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDbEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7O1lBQ2xELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQVEsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBRdWVyeURlc2NyaXB0b3IsIFF1ZXJ5U2NoZW1hLCBJbmZlclF1ZXJ5IH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vLyBXZWFrTWFwIGJhc2VkIGNhY2hlOiBzY2hlbWFSZWYgLT4gKGNhbm9uaWNhbFNlYXJjaCAtPiBwYXJzZWRSZXN1bHQpXG5jb25zdCBfX3R5cGVkQ2FjaGUgPSBuZXcgV2Vha01hcDxvYmplY3QsIE1hcDxzdHJpbmcsIGFueT4+KCk7XG5cbi8qKiBCdWlsZCBhIGRlc2NyaXB0b3Igd2l0aCBkZWZhdWx0cyAqL1xuZnVuY3Rpb24gbWFrZURlc2NyaXB0b3I8VD4oY2ZnOiB7XG4gIHBhcnNlOiBRdWVyeURlc2NyaXB0b3I8VD5bJ3BhcnNlJ107XG4gIHNlcmlhbGl6ZTogUXVlcnlEZXNjcmlwdG9yPFQ+WydzZXJpYWxpemUnXTtcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICBkZWZhdWx0VmFsdWU/OiBUO1xufSk6IFF1ZXJ5RGVzY3JpcHRvcjxUPiB7XG4gIHJldHVybiB7XG4gICAgX190eXBlOiB1bmRlZmluZWQgYXMgYW55IGFzIFQsXG4gICAgb3B0aW9uYWw6IGNmZy5vcHRpb25hbCA9PT0gdHJ1ZSxcbiAgICBoYXNEZWZhdWx0OiBjZmcuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFZhbHVlOiBjZmcuZGVmYXVsdFZhbHVlLFxuICAgIHBhcnNlOiBjZmcucGFyc2UsXG4gICAgc2VyaWFsaXplOiBjZmcuc2VyaWFsaXplLFxuICB9O1xufVxuXG4vKiogU3RyaW5nIGRlc2NyaXB0b3IgKi9cbmZ1bmN0aW9uIHN0cmluZ0Rlc2MoKTogUXVlcnlEZXNjcmlwdG9yPHN0cmluZz4ge1xuICByZXR1cm4gbWFrZURlc2NyaXB0b3I8c3RyaW5nPih7XG4gICAgcGFyc2UodmFsdWVzKSB7XG4gICAgICByZXR1cm4gdmFsdWVzLmF0KC0xKTtcbiAgICB9LFxuICAgIHNlcmlhbGl6ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIFt2YWx1ZV07XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKiBOdW1iZXIgZGVzY3JpcHRvciAqL1xuZnVuY3Rpb24gbnVtYmVyRGVzYygpOiBRdWVyeURlc2NyaXB0b3I8bnVtYmVyPiB7XG4gIHJldHVybiBtYWtlRGVzY3JpcHRvcjxudW1iZXI+KHtcbiAgICBwYXJzZSh2YWx1ZXMpIHtcbiAgICAgIGNvbnN0IHYgPSB2YWx1ZXMuYXQoLTEpO1xuICAgICAgaWYgKHYgPT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IG4gPSBOdW1iZXIodik7XG4gICAgICBpZiAoTnVtYmVyLmlzTmFOKG4pKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIG47XG4gICAgfSxcbiAgICBzZXJpYWxpemUodmFsdWUpIHtcbiAgICAgIHJldHVybiBbU3RyaW5nKHZhbHVlKV07XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKiBCb29sZWFuIGRlc2NyaXB0b3IgKi9cbmZ1bmN0aW9uIGJvb2xlYW5EZXNjKCk6IFF1ZXJ5RGVzY3JpcHRvcjxib29sZWFuPiB7XG4gIHJldHVybiBtYWtlRGVzY3JpcHRvcjxib29sZWFuPih7XG4gICAgcGFyc2UodmFsdWVzKSB7XG4gICAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHYgPSB2YWx1ZXMuYXQoLTEpO1xuICAgICAgaWYgKHYgPT09ICcnIHx8IHYgPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gICAgICBjb25zdCBsb3dlciA9IHYudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlciA9PT0gJzEnIHx8IGxvd2VyID09PSAndHJ1ZScpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKGxvd2VyID09PSAnMCcgfHwgbG93ZXIgPT09ICdmYWxzZScpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBzZXJpYWxpemUodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gWycxJ107XG4gICAgICB9XG4gICAgICByZXR1cm4gWycwJ107XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKiBFbnVtIGRlc2NyaXB0b3IgKi9cbmZ1bmN0aW9uIGVudW1EZXNjPFQgZXh0ZW5kcyBzdHJpbmc+KC4uLnZhbHVlczogVFtdKTogUXVlcnlEZXNjcmlwdG9yPFQ+IHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldCh2YWx1ZXMpO1xuICByZXR1cm4gbWFrZURlc2NyaXB0b3I8VD4oe1xuICAgIHBhcnNlKGFycikge1xuICAgICAgY29uc3QgdiA9IGFyci5hdCgtMSkgYXMgVCB8IHVuZGVmaW5lZDtcbiAgICAgIGlmICh2ICE9IG51bGwgJiYgc2V0Lmhhcyh2KSkgcmV0dXJuIHY7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgc2VyaWFsaXplKHZhbHVlKSB7XG4gICAgICByZXR1cm4gW3ZhbHVlXTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqIEFycmF5IGRlc2NyaXB0b3IgKi9cbmZ1bmN0aW9uIGFycmF5T2Y8VD4oaW5uZXI6IFF1ZXJ5RGVzY3JpcHRvcjxUPik6IFF1ZXJ5RGVzY3JpcHRvcjxUW10+IHtcbiAgcmV0dXJuIG1ha2VEZXNjcmlwdG9yPFRbXT4oe1xuICAgIHBhcnNlKHZhbHVlcykge1xuICAgICAgY29uc3Qgb3V0OiBUW10gPSBbXTtcbiAgICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IGlubmVyLnBhcnNlKFt2XSk7XG4gICAgICAgIGlmIChwYXJzZWQgIT09IHVuZGVmaW5lZCkgb3V0LnB1c2gocGFyc2VkKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG91dDtcbiAgICB9LFxuICAgIHNlcmlhbGl6ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmZsYXRNYXAoKHYpID0+IHtcbiAgICAgICAgcmV0dXJuIGlubmVyLnNlcmlhbGl6ZSh2KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKiogTWFyayBkZXNjcmlwdG9yIG9wdGlvbmFsICovXG5mdW5jdGlvbiBvcHRpb25hbDxUPihkOiBRdWVyeURlc2NyaXB0b3I8VD4pOiBRdWVyeURlc2NyaXB0b3I8VCB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4geyAuLi5kLCBvcHRpb25hbDogdHJ1ZSB9IGFzIGFueTtcbn1cblxuLyoqIEF0dGFjaCBkZWZhdWx0IHZhbHVlICovXG5mdW5jdGlvbiB3aXRoRGVmYXVsdDxUPihkOiBRdWVyeURlc2NyaXB0b3I8VD4sIHZhbHVlOiBUKTogUXVlcnlEZXNjcmlwdG9yPFQ+IHtcbiAgcmV0dXJuIHsgLi4uZCwgZGVmYXVsdFZhbHVlOiB2YWx1ZSwgaGFzRGVmYXVsdDogdHJ1ZSB9O1xufVxuXG4vKiogVHJlYXQgZW1wdHkgc3RyaW5nIHJlc3VsdCBmcm9tIHVuZGVybHlpbmcgZGVzY3JpcHRvciBhcyB1bmRlZmluZWQgKHBhcnNlIHNpZGUgb25seSkgKi9cbmZ1bmN0aW9uIGVtcHR5QXNVbmRlZmluZWQoZDogUXVlcnlEZXNjcmlwdG9yPHN0cmluZz4pOiBRdWVyeURlc2NyaXB0b3I8c3RyaW5nPiB7XG4gIHJldHVybiB7XG4gICAgLi4uZCxcbiAgICBwYXJzZSh2YWx1ZXMpIHtcbiAgICAgIGNvbnN0IHYgPSBkLnBhcnNlKHZhbHVlcyk7XG4gICAgICBpZiAodiA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gdjtcbiAgICB9LFxuICB9IGFzIFF1ZXJ5RGVzY3JpcHRvcjxzdHJpbmc+O1xufVxuXG4vKiogQ3VzdG9tIGRlc2NyaXB0b3IgZmFjdG9yeSAqL1xuZnVuY3Rpb24gY3VzdG9tPFQ+KGhhbmRsZXJzOiB7XG4gIHBhcnNlOiAodmFsdWVzOiBzdHJpbmdbXSkgPT4gVCB8IHVuZGVmaW5lZDtcbiAgc2VyaWFsaXplOiAodmFsdWU6IFQpID0+IHN0cmluZ1tdO1xufSk6IFF1ZXJ5RGVzY3JpcHRvcjxUPiB7XG4gIHJldHVybiBtYWtlRGVzY3JpcHRvcjxUPih7XG4gICAgcGFyc2U6IGhhbmRsZXJzLnBhcnNlLFxuICAgIHNlcmlhbGl6ZTogaGFuZGxlcnMuc2VyaWFsaXplLFxuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IHEgPSB7XG4gIHN0cmluZzogc3RyaW5nRGVzYyxcbiAgbnVtYmVyOiBudW1iZXJEZXNjLFxuICBib29sZWFuOiBib29sZWFuRGVzYyxcbiAgZW51bTogZW51bURlc2MsXG4gIGFycmF5OiBhcnJheU9mLFxuICBvcHRpb25hbCxcbiAgZGVmYXVsdDogd2l0aERlZmF1bHQsXG4gIGVtcHR5QXNVbmRlZmluZWQsXG4gIGN1c3RvbSxcbn07XG5cbi8qKiBQYXJzZSByYXcgcXVlcnkgb2JqZWN0IHVzaW5nIGEgc2NoZW1hIGludG8gYSB0eXBlZCBvYmplY3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVR5cGVkUXVlcnk8UyBleHRlbmRzIFF1ZXJ5U2NoZW1hIHwgdW5kZWZpbmVkPihcbiAgc2NoZW1hOiBTLFxuICByYXc6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPixcbik6IFMgZXh0ZW5kcyBRdWVyeVNjaGVtYSA/IEluZmVyUXVlcnk8RXhjbHVkZTxTLCB1bmRlZmluZWQ+PiA6IHR5cGVvZiByYXcge1xuICBpZiAoc2NoZW1hID09IG51bGwpIHJldHVybiByYXcgYXMgYW55O1xuICAvLyBCdWlsZCBjYW5vbmljYWwga2V5IGZyb20gcmF3IGVudHJpZXMgKHNvcnRlZCBrZXlzICYgdmFsdWVzKVxuICBsZXQgY2FjaGVGb3JTY2hlbWEgPSBfX3R5cGVkQ2FjaGUuZ2V0KHNjaGVtYSBhcyB1bmtub3duIGFzIG9iamVjdCk7XG4gIGlmIChjYWNoZUZvclNjaGVtYSA9PSBudWxsKSB7XG4gICAgY2FjaGVGb3JTY2hlbWEgPSBuZXcgTWFwKCk7XG4gICAgX190eXBlZENhY2hlLnNldChzY2hlbWEgYXMgdW5rbm93biBhcyBvYmplY3QsIGNhY2hlRm9yU2NoZW1hKTtcbiAgfVxuICBjb25zdCBjYW5vbmljYWxQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgc29ydGVkS2V5cyA9IE9iamVjdC5rZXlzKHJhdykuc29ydCgpO1xuICBmb3IgKGNvbnN0IGsgb2Ygc29ydGVkS2V5cykge1xuICAgIGNvbnN0IHYgPSByYXdba107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgIHYuZm9yRWFjaCgodnYpID0+IHtcbiAgICAgICAgY2Fub25pY2FsUGFydHMucHVzaChgJHtrfT0ke3Z2fWApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbm9uaWNhbFBhcnRzLnB1c2goYCR7a309JHt2fWApO1xuICAgIH1cbiAgfVxuICBjb25zdCBjYWNoZUtleSA9IGNhbm9uaWNhbFBhcnRzLmpvaW4oJyYnKTtcbiAgY29uc3QgY2FjaGVkID0gY2FjaGVGb3JTY2hlbWEuZ2V0KGNhY2hlS2V5KTtcbiAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2FjaGVkO1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHNjaGVtYSk7XG4gIGZvciAoY29uc3QgW2tleSwgZGVzY3JpcHRvcl0gb2YgZW50cmllcykge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gcmF3W2tleV07XG4gICAgbGV0IHZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAocmF3VmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpKSB7XG4gICAgICAgIHZhbHVlcyA9IHJhd1ZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWVzID0gW3Jhd1ZhbHVlXTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHBhcnNlZCA9IGRlc2NyaXB0b3IucGFyc2UodmFsdWVzKTtcbiAgICBpZiAocGFyc2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChkZXNjcmlwdG9yLmhhc0RlZmF1bHQpIHBhcnNlZCA9IGRlc2NyaXB0b3IuZGVmYXVsdFZhbHVlO1xuICAgICAgZWxzZSBpZiAoZGVzY3JpcHRvci5vcHRpb25hbCkgcGFyc2VkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAocGFyc2VkICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gcGFyc2VkO1xuICAgIGVsc2UgaWYgKCFkZXNjcmlwdG9yLm9wdGlvbmFsICYmIGRlc2NyaXB0b3IuaGFzRGVmYXVsdCkge1xuICAgICAgcmVzdWx0W2tleV0gPSBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gIH1cbiAgLy8gRGVlcCBlcXVhbGl0eTogaWYgYW5vdGhlciBjYWNoZWQgdmFsdWUgaXMgc3RydWN0dXJhbGx5IGVxdWFsLCByZXVzZSBpdHMgcmVmZXJlbmNlIGZvciBzdGFiaWxpdHlcbiAgbGV0IHJldXNlOiBhbnk7XG4gIGNhY2hlRm9yU2NoZW1hLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgaWYgKHJldXNlICE9IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgbGV0IGVxdWFsID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJLZXlzID0gT2JqZWN0LmtleXMocmVzdWx0KTtcbiAgICAgIGNvbnN0IHZLZXlzID0gT2JqZWN0LmtleXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgICAgaWYgKHJLZXlzLmxlbmd0aCAhPT0gdktleXMubGVuZ3RoKSB7XG4gICAgICAgIGVxdWFsID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2YgcktleXMpIHtcbiAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgaykpIHtcbiAgICAgICAgICAgIGVxdWFsID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmVzUmVjID0gcmVzdWx0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICAgIGNvbnN0IHZhbFJlYyA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICAgIGNvbnN0IGEgPSByZXNSZWNba107XG4gICAgICAgICAgY29uc3QgYiA9IHZhbFJlY1trXTtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGVxdWFsID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICAgICAgICAgICAgZXF1YWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFlcXVhbCkgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICBlcXVhbCA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgcmV1c2UgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBpZiAocmV1c2UgIT0gbnVsbCkge1xuICAgIGNhY2hlRm9yU2NoZW1hLnNldChjYWNoZUtleSwgcmV1c2UpO1xuICAgIHJldHVybiByZXVzZTtcbiAgfVxuICBjYWNoZUZvclNjaGVtYS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQgYXMgYW55O1xufVxuXG4vKiogQ29udmVuaWVuY2UgYWxpYXM6IHBhcnNlIGZ1bGwgc2VhcmNoIHN0cmluZyB3aXRoIG9wdGlvbmFsIHNjaGVtYSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2VhcmNoPFMgZXh0ZW5kcyBRdWVyeVNjaGVtYSB8IHVuZGVmaW5lZD4oXG4gIHNjaGVtYTogUyxcbiAgc2VhcmNoOiBzdHJpbmcsXG4pOiBTIGV4dGVuZHMgUXVlcnlTY2hlbWFcbiAgPyBJbmZlclF1ZXJ5PEV4Y2x1ZGU8UywgdW5kZWZpbmVkPj5cbiAgOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT4ge1xuICBsZXQgYWN0dWFsID0gc2VhcmNoO1xuICBpZiAoc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSkge1xuICAgIGFjdHVhbCA9IHNlYXJjaC5zbGljZSgxKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGFjdHVhbCk7XG4gIGNvbnN0IHJhdzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+ID0ge307XG4gIHBhcmFtcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSByYXdba2V5XTtcbiAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkgcmF3W2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nKSkgZXhpc3RpbmcucHVzaCh2YWx1ZSk7XG4gICAgZWxzZSByYXdba2V5XSA9IFtleGlzdGluZywgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHBhcnNlVHlwZWRRdWVyeShzY2hlbWEsIHJhdykgYXMgYW55O1xufVxuIl19