@plumile/router 0.1.52 → 0.1.54

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 (116) hide show
  1. package/lib/ResourcePage.d.ts +12 -0
  2. package/lib/ResourcePage.d.ts.map +1 -0
  3. package/lib/ResourcePage.js +38 -0
  4. package/lib/asyncResource.d.ts +8 -0
  5. package/lib/asyncResource.d.ts.map +1 -0
  6. package/lib/asyncResource.js +101 -0
  7. package/lib/builder.d.ts +13 -0
  8. package/lib/builder.d.ts.map +1 -0
  9. package/lib/builder.js +72 -0
  10. package/lib/errors/HttpRedirect.d.ts +6 -0
  11. package/lib/errors/HttpRedirect.d.ts.map +1 -0
  12. package/lib/errors/HttpRedirect.js +11 -0
  13. package/lib/errors/index.d.ts +2 -0
  14. package/lib/errors/index.d.ts.map +1 -0
  15. package/lib/errors/index.js +2 -0
  16. package/lib/eslint-rules/index.d.ts +2 -0
  17. package/lib/eslint-rules/index.d.ts.map +1 -0
  18. package/lib/eslint-rules/index.js +2 -0
  19. package/lib/eslint-rules/no-direct-window-location-search.d.ts +4 -0
  20. package/lib/eslint-rules/no-direct-window-location-search.d.ts.map +1 -0
  21. package/lib/eslint-rules/no-direct-window-location-search.js +48 -0
  22. package/lib/history/BrowserHistory.d.ts +21 -0
  23. package/lib/history/BrowserHistory.d.ts.map +1 -0
  24. package/lib/history/BrowserHistory.js +139 -0
  25. package/lib/history/index.d.ts +3 -0
  26. package/lib/history/index.d.ts.map +1 -0
  27. package/lib/history/index.js +2 -0
  28. package/lib/history/types.d.ts +19 -0
  29. package/lib/history/types.d.ts.map +1 -0
  30. package/lib/history/types.js +2 -0
  31. package/lib/index.d.ts +10 -0
  32. package/lib/index.d.ts.map +1 -0
  33. package/lib/index.js +9 -0
  34. package/lib/instrumentation/Instrumentation.d.ts +90 -0
  35. package/lib/instrumentation/Instrumentation.d.ts.map +1 -0
  36. package/lib/instrumentation/Instrumentation.js +59 -0
  37. package/lib/instrumentation/adapters/devtoolsBridge.d.ts +14 -0
  38. package/lib/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -0
  39. package/lib/instrumentation/adapters/devtoolsBridge.js +133 -0
  40. package/lib/instrumentation/adapters/logger.d.ts +10 -0
  41. package/lib/instrumentation/adapters/logger.d.ts.map +1 -0
  42. package/lib/instrumentation/adapters/logger.js +19 -0
  43. package/lib/instrumentation/index.d.ts +4 -0
  44. package/lib/instrumentation/index.d.ts.map +1 -0
  45. package/lib/instrumentation/index.js +4 -0
  46. package/lib/prepareResource.d.ts +4 -0
  47. package/lib/prepareResource.d.ts.map +1 -0
  48. package/lib/prepareResource.js +11 -0
  49. package/lib/routing/Link.d.ts +23 -0
  50. package/lib/routing/Link.d.ts.map +1 -0
  51. package/lib/routing/Link.js +158 -0
  52. package/lib/routing/RouteComponent.d.ts +8 -0
  53. package/lib/routing/RouteComponent.d.ts.map +1 -0
  54. package/lib/routing/RouteComponent.js +20 -0
  55. package/lib/routing/RouteComponentWrapper.d.ts +11 -0
  56. package/lib/routing/RouteComponentWrapper.d.ts.map +1 -0
  57. package/lib/routing/RouteComponentWrapper.js +101 -0
  58. package/lib/routing/RouterRenderer.d.ts +10 -0
  59. package/lib/routing/RouterRenderer.d.ts.map +1 -0
  60. package/lib/routing/RouterRenderer.js +67 -0
  61. package/lib/routing/RoutingContext.d.ts +5 -0
  62. package/lib/routing/RoutingContext.d.ts.map +1 -0
  63. package/lib/routing/RoutingContext.js +4 -0
  64. package/lib/routing/createRouter.d.ts +19 -0
  65. package/lib/routing/createRouter.d.ts.map +1 -0
  66. package/lib/routing/createRouter.js +604 -0
  67. package/lib/routing/index.d.ts +16 -0
  68. package/lib/routing/index.d.ts.map +1 -0
  69. package/lib/routing/index.js +16 -0
  70. package/lib/routing/useAllQuery.d.ts +7 -0
  71. package/lib/routing/useAllQuery.d.ts.map +1 -0
  72. package/lib/routing/useAllQuery.js +31 -0
  73. package/lib/routing/useFilterDiagnostics.d.ts +2 -0
  74. package/lib/routing/useFilterDiagnostics.d.ts.map +1 -0
  75. package/lib/routing/useFilterDiagnostics.js +11 -0
  76. package/lib/routing/useFilters.d.ts +8 -0
  77. package/lib/routing/useFilters.d.ts.map +1 -0
  78. package/lib/routing/useFilters.js +65 -0
  79. package/lib/routing/useLocation.d.ts +2 -0
  80. package/lib/routing/useLocation.d.ts.map +1 -0
  81. package/lib/routing/useLocation.js +24 -0
  82. package/lib/routing/useNavigate.d.ts +7 -0
  83. package/lib/routing/useNavigate.d.ts.map +1 -0
  84. package/lib/routing/useNavigate.js +11 -0
  85. package/lib/routing/usePathname.d.ts +2 -0
  86. package/lib/routing/usePathname.d.ts.map +1 -0
  87. package/lib/routing/usePathname.js +9 -0
  88. package/lib/routing/useQuery.d.ts +2 -0
  89. package/lib/routing/useQuery.d.ts.map +1 -0
  90. package/lib/routing/useQuery.js +9 -0
  91. package/lib/routing/useQueryState.d.ts +13 -0
  92. package/lib/routing/useQueryState.d.ts.map +1 -0
  93. package/lib/routing/useQueryState.js +45 -0
  94. package/lib/routing/useSearchParams.d.ts +11 -0
  95. package/lib/routing/useSearchParams.d.ts.map +1 -0
  96. package/lib/routing/useSearchParams.js +67 -0
  97. package/lib/tools/buildCombinedSearch.d.ts +8 -0
  98. package/lib/tools/buildCombinedSearch.d.ts.map +1 -0
  99. package/lib/tools/buildCombinedSearch.js +76 -0
  100. package/lib/tools/index.d.ts +3 -0
  101. package/lib/tools/index.d.ts.map +1 -0
  102. package/lib/tools/index.js +13 -0
  103. package/lib/tools/query.d.ts +2 -0
  104. package/lib/tools/query.d.ts.map +1 -0
  105. package/lib/tools/query.js +43 -0
  106. package/lib/tools.d.ts +15 -0
  107. package/lib/tools.d.ts.map +1 -0
  108. package/lib/tools.js +179 -0
  109. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  110. package/lib/types.d.ts +245 -0
  111. package/lib/types.d.ts.map +1 -0
  112. package/lib/types.js +2 -0
  113. package/lib/values.d.ts +19 -0
  114. package/lib/values.d.ts.map +1 -0
  115. package/lib/values.js +53 -0
  116. package/package.json +2 -2
@@ -0,0 +1,12 @@
1
+ import type { ResourcePageLoader, ResourcePageReturn } from './types.js';
2
+ export declare class ResourcePage {
3
+ private __resource;
4
+ private __moduleId;
5
+ constructor(loader: ResourcePageLoader, moduleId: string);
6
+ load(): Promise<ResourcePageReturn>;
7
+ get(): ResourcePageReturn | undefined;
8
+ getModuleId(): string;
9
+ read(): ResourcePageReturn | Promise<ResourcePageReturn> | Error;
10
+ }
11
+ export declare function getResourcePage(moduleId: string, loader: ResourcePageLoader): ResourcePage | null;
12
+ //# sourceMappingURL=ResourcePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourcePage.d.ts","sourceRoot":"","sources":["../src/ResourcePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA4BzE,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAC;IAGnB,OAAO,CAAC,UAAU,CAAS;gBAQR,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM;IAoBlD,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAWzC,GAAG,IAAI,kBAAkB,GAAG,SAAS;IAOrC,WAAW,IAAI,MAAM;IAerB,IAAI,IAAI,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK;CAGxE;AAsBD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,GACzB,YAAY,GAAG,IAAI,CAOrB"}
@@ -0,0 +1,38 @@
1
+ import { createAsyncResource } from './asyncResource.js';
2
+ const resourcePageMap = new Map();
3
+ export class ResourcePage {
4
+ __resource;
5
+ __moduleId;
6
+ constructor(loader, moduleId) {
7
+ this.__moduleId = moduleId;
8
+ this.__resource = createAsyncResource(loader, {
9
+ normalize: (result) => {
10
+ if (result.default != null) {
11
+ return result.default;
12
+ }
13
+ return result;
14
+ },
15
+ });
16
+ }
17
+ async load() {
18
+ return this.__resource.load();
19
+ }
20
+ get() {
21
+ return this.__resource.get();
22
+ }
23
+ getModuleId() {
24
+ return this.__moduleId;
25
+ }
26
+ read() {
27
+ return this.__resource.read();
28
+ }
29
+ }
30
+ export function getResourcePage(moduleId, loader) {
31
+ let resource = resourcePageMap.get(moduleId);
32
+ if (resource == null) {
33
+ resource = new ResourcePage(loader, moduleId);
34
+ resourcePageMap.set(moduleId, resource);
35
+ }
36
+ return resource;
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VQYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1Jlc291cmNlUGFnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFRekQsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7QUFtQnhELE1BQU0sT0FBTyxZQUFZO0lBQ2YsVUFBVSxDQUFDO0lBR1gsVUFBVSxDQUFTO0lBUTNCLFlBQW1CLE1BQTBCLEVBQUUsUUFBZ0I7UUFDN0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUU7WUFDNUMsU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBRXBCLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFFM0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUN4QixDQUFDO2dCQUNELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBUU0sS0FBSyxDQUFDLElBQUk7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQVNNLEdBQUc7UUFDUixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUtNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFhTSxJQUFJO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQXNCRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixRQUFnQixFQUNoQixNQUEwQjtJQUUxQixJQUFJLFFBQVEsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLFFBQVEsR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc291cmNlUGFnZUxvYWRlciwgUmVzb3VyY2VQYWdlUmV0dXJuIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVBc3luY1Jlc291cmNlIH0gZnJvbSAnLi9hc3luY1Jlc291cmNlLmpzJztcblxuLyoqXG4gKiBBIGNhY2hlIG9mIHJlc291cmNlcyB0byBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lIG1vZHVsZSB0d2ljZS4gVGhpcyBpcyBpbXBvcnRhbnRcbiAqIGJlY2F1c2UgV2VicGFjayBkeW5hbWljIGltcG9ydHMgb25seSBleHBvc2UgYW4gYXN5bmNocm9ub3VzIEFQSSBmb3IgbG9hZGluZ1xuICogbW9kdWxlcywgc28gdG8gYmUgYWJsZSB0byBhY2Nlc3MgYWxyZWFkeS1sb2FkZWQgbW9kdWxlcyBzeW5jaHJvbm91c2x5IHdlXG4gKiBtdXN0IGhhdmUgc3RvcmVkIHRoZSBwcmV2aW91cyByZXN1bHQgc29tZXdoZXJlLlxuICovXG5jb25zdCByZXNvdXJjZVBhZ2VNYXAgPSBuZXcgTWFwPHN0cmluZywgUmVzb3VyY2VQYWdlPigpO1xuXG4vKipcbiAqIEEgcmVzb3VyY2UgbWFuYWdlciBmb3IgbGF6eS1sb2FkZWQgUmVhY3QgY29tcG9uZW50cyB3aXRoIFN1c3BlbnNlIGludGVncmF0aW9uLlxuICogVGhpcyBjbGFzcyBoYW5kbGVzIHRoZSBsb2FkaW5nIHN0YXRlLCBjYWNoaW5nLCBhbmQgU3VzcGVuc2UgaW50ZWdyYXRpb24gZm9yXG4gKiBkeW5hbWljYWxseSBpbXBvcnRlZCBjb21wb25lbnRzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXNvdXJjZSA9IG5ldyBSZXNvdXJjZVBhZ2UoXG4gKiAgICgpID0+IGltcG9ydCgnLi9NeUNvbXBvbmVudCcpLFxuICogICAnTXlDb21wb25lbnQnXG4gKiApO1xuICpcbiAqIC8vIEluIGEgUmVhY3QgY29tcG9uZW50IHdpdGggU3VzcGVuc2UgYm91bmRhcnk6XG4gKiBjb25zdCBDb21wb25lbnQgPSByZXNvdXJjZS5yZWFkKCk7XG4gKiByZXR1cm4gPENvbXBvbmVudCAvPjtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VQYWdlIHtcbiAgcHJpdmF0ZSBfX3Jlc291cmNlO1xuXG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyByZXNvdXJjZSAqL1xuICBwcml2YXRlIF9fbW9kdWxlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBSZXNvdXJjZVBhZ2UgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBsb2FkZXIgLSBGdW5jdGlvbiB0aGF0IHJldHVybnMgYSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29tcG9uZW50XG4gICAqIEBwYXJhbSBtb2R1bGVJZCAtIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBjYWNoaW5nIHB1cnBvc2VzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IobG9hZGVyOiBSZXNvdXJjZVBhZ2VMb2FkZXIsIG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9fbW9kdWxlSWQgPSBtb2R1bGVJZDtcbiAgICB0aGlzLl9fcmVzb3VyY2UgPSBjcmVhdGVBc3luY1Jlc291cmNlKGxvYWRlciwge1xuICAgICAgbm9ybWFsaXplOiAocmVzdWx0KSA9PiB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IE9LXG4gICAgICAgIGlmIChyZXN1bHQuZGVmYXVsdCAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogT0tcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHJlc291cmNlIGlmIG5vdCBhbHJlYWR5IGxvYWRlZCBvciBsb2FkaW5nLlxuICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHNhZmVseSAtIGl0IHdpbGwgcmV0dXJuIHRoZSBzYW1lIHByb21pc2UuXG4gICAqXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbG9hZGVkIGNvbXBvbmVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxSZXNvdXJjZVBhZ2VSZXR1cm4+IHtcbiAgICByZXR1cm4gdGhpcy5fX3Jlc291cmNlLmxvYWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsb2FkZWQgY29tcG9uZW50IGlmIGF2YWlsYWJsZSwgdW5kZWZpbmVkIG90aGVyd2lzZS5cbiAgICogVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIGNvbXBvbmVudCBpcyBhbHJlYWR5IGxvYWRlZFxuICAgKiB3aXRob3V0IHRyaWdnZXJpbmcgYSBsb2FkIG9yIHRocm93aW5nIGFuIGVycm9yLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbG9hZGVkIGNvbXBvbmVudCBvciB1bmRlZmluZWQgaWYgbm90IHlldCBsb2FkZWRcbiAgICovXG4gIHB1YmxpYyBnZXQoKTogUmVzb3VyY2VQYWdlUmV0dXJuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fX3Jlc291cmNlLmdldCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1vZHVsZSBpZGVudGlmaWVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlIChkZWJ1ZyBoZWxwZXIpLlxuICAgKi9cbiAgcHVibGljIGdldE1vZHVsZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX19tb2R1bGVJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgcmVzb3VyY2Ugd2l0aCBSZWFjdCBTdXNwZW5zZSBpbnRlZ3JhdGlvbi5cbiAgICogVGhpcyBpcyB0aGUga2V5IG1ldGhvZCBmb3IgaW50ZWdyYXRpbmcgd2l0aCBSZWFjdCBTdXNwZW5zZTpcbiAgICogLSBSZXR1cm5zIHRoZSBjb21wb25lbnQgaWYgbG9hZGVkXG4gICAqIC0gVGhyb3dzIGFuIGVycm9yIGlmIGxvYWRpbmcgZmFpbGVkXG4gICAqIC0gVGhyb3dzIGEgUHJvbWlzZSBpZiBzdGlsbCBsb2FkaW5nIChTdXNwZW5zZSB3aWxsIGNhdGNoIHRoaXMpXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBsb2FkZWQgY29tcG9uZW50XG4gICAqIEB0aHJvd3MgUHJvbWlzZSB3aGVuIGxvYWRpbmcgKGNhdWdodCBieSBTdXNwZW5zZSlcbiAgICogQHRocm93cyBFcnJvciB3aGVuIGxvYWRpbmcgZmFpbGVkXG4gICAqL1xuICBwdWJsaWMgcmVhZCgpOiBSZXNvdXJjZVBhZ2VSZXR1cm4gfCBQcm9taXNlPFJlc291cmNlUGFnZVJldHVybj4gfCBFcnJvciB7XG4gICAgcmV0dXJuIHRoaXMuX19yZXNvdXJjZS5yZWFkKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBvciByZXRyaWV2ZSBhIGNhY2hlZCBSZXNvdXJjZVBhZ2UgaW5zdGFuY2UuXG4gKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgYSBzaW5nbGV0b24gcGF0dGVybiBwZXIgbW9kdWxlSWQgdG8gZW5zdXJlIHRoYXRcbiAqIHRoZSBzYW1lIGNvbXBvbmVudCBpcyBub3QgbG9hZGVkIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIEBwYXJhbSBtb2R1bGVJZCAtIEdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgdXNlZCBmb3IgY2FjaGluZ1xuICogQHBhcmFtIGxvYWRlciAtIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjb21wb25lbnRcbiAqIEByZXR1cm5zIFJlc291cmNlUGFnZSBpbnN0YW5jZSAoY2FjaGVkIGlmIHByZXZpb3VzbHkgY3JlYXRlZClcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgcmVzb3VyY2UgZm9yIGxhenkgbG9hZGluZ1xuICogY29uc3QgcmVzb3VyY2UgPSBnZXRSZXNvdXJjZVBhZ2UoJ1VzZXJQcm9maWxlJywgKCkgPT4gaW1wb3J0KCcuL1VzZXJQcm9maWxlJykpO1xuICogcmVzb3VyY2UubG9hZCgpO1xuICpcbiAqIC8vIEluIGEgUmVhY3QgY29tcG9uZW50IHdpdGggU3VzcGVuc2UgYm91bmRhcnk6XG4gKiBjb25zdCBVc2VyUHJvZmlsZSA9IHJlc291cmNlLnJlYWQoKTtcbiAqIHJldHVybiA8VXNlclByb2ZpbGUgdXNlcklkPXt1c2VySWR9IC8+O1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZVBhZ2UoXG4gIG1vZHVsZUlkOiBzdHJpbmcsXG4gIGxvYWRlcjogUmVzb3VyY2VQYWdlTG9hZGVyLFxuKTogUmVzb3VyY2VQYWdlIHwgbnVsbCB7XG4gIGxldCByZXNvdXJjZSA9IHJlc291cmNlUGFnZU1hcC5nZXQobW9kdWxlSWQpO1xuICBpZiAocmVzb3VyY2UgPT0gbnVsbCkge1xuICAgIHJlc291cmNlID0gbmV3IFJlc291cmNlUGFnZShsb2FkZXIsIG1vZHVsZUlkKTtcbiAgICByZXNvdXJjZVBhZ2VNYXAuc2V0KG1vZHVsZUlkLCByZXNvdXJjZSk7XG4gIH1cbiAgcmV0dXJuIHJlc291cmNlO1xufVxuIl19
@@ -0,0 +1,8 @@
1
+ import type { MaybePromise, ReadableResource } from './types.js';
2
+ type CreateAsyncResourceOptions<TInput, TValue> = {
3
+ normalize?: (input: TInput) => TValue;
4
+ };
5
+ export declare function isPromiseLike<T>(value: unknown): value is PromiseLike<T>;
6
+ export declare function createAsyncResource<TInput, TValue = TInput>(loader: () => MaybePromise<TInput>, options?: CreateAsyncResourceOptions<TInput, TValue>): ReadableResource<TValue>;
7
+ export {};
8
+ //# sourceMappingURL=asyncResource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncResource.d.ts","sourceRoot":"","sources":["../src/asyncResource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AASjE,KAAK,0BAA0B,CAAC,MAAM,EAAE,MAAM,IAAI;IAChD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC,CAAC;AAYF,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAOxE;AASD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EACzD,MAAM,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,EAClC,OAAO,CAAC,EAAE,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,GACnD,gBAAgB,CAAC,MAAM,CAAC,CAyG1B"}
@@ -0,0 +1,101 @@
1
+ function identity(value) {
2
+ return value;
3
+ }
4
+ export function isPromiseLike(value) {
5
+ return (typeof value === 'object' &&
6
+ value != null &&
7
+ 'then' in value &&
8
+ typeof value.then === 'function');
9
+ }
10
+ export function createAsyncResource(loader, options) {
11
+ const normalize = options?.normalize ?? identity;
12
+ const state = {
13
+ error: null,
14
+ promise: null,
15
+ status: 'idle',
16
+ value: undefined,
17
+ };
18
+ function isResolved() {
19
+ return state.status === 'resolved';
20
+ }
21
+ function runLoad() {
22
+ let resolved;
23
+ try {
24
+ resolved = loader();
25
+ }
26
+ catch (error) {
27
+ state.error = error;
28
+ state.promise = null;
29
+ state.status = 'rejected';
30
+ throw error;
31
+ }
32
+ if (!isPromiseLike(resolved)) {
33
+ const normalized = normalize(resolved);
34
+ state.value = normalized;
35
+ state.error = null;
36
+ state.status = 'resolved';
37
+ const settled = Promise.resolve(normalized);
38
+ state.promise = settled;
39
+ return settled;
40
+ }
41
+ state.status = 'pending';
42
+ const pending = Promise.resolve(resolved)
43
+ .then((value) => {
44
+ const normalized = normalize(value);
45
+ state.value = normalized;
46
+ state.error = null;
47
+ state.status = 'resolved';
48
+ const settled = Promise.resolve(normalized);
49
+ state.promise = settled;
50
+ return normalized;
51
+ })
52
+ .catch((error) => {
53
+ state.error = error;
54
+ state.status = 'rejected';
55
+ state.promise = null;
56
+ throw error;
57
+ });
58
+ state.promise = pending;
59
+ return pending;
60
+ }
61
+ return {
62
+ get() {
63
+ return state.value;
64
+ },
65
+ getError() {
66
+ return state.error;
67
+ },
68
+ getStatus() {
69
+ return state.status;
70
+ },
71
+ load() {
72
+ if (state.status === 'resolved') {
73
+ return Promise.resolve(state.value);
74
+ }
75
+ if (state.status === 'rejected') {
76
+ return Promise.reject(state.error);
77
+ }
78
+ if (state.promise != null) {
79
+ return state.promise;
80
+ }
81
+ return runLoad();
82
+ },
83
+ read() {
84
+ if (isResolved()) {
85
+ return state.value;
86
+ }
87
+ if (state.status === 'rejected') {
88
+ throw state.error;
89
+ }
90
+ if (state.promise != null) {
91
+ throw state.promise;
92
+ }
93
+ const pending = runLoad();
94
+ if (isResolved()) {
95
+ return state.value;
96
+ }
97
+ throw pending;
98
+ },
99
+ };
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmNSZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hc3luY1Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxTQUFTLFFBQVEsQ0FBSSxLQUFRO0lBQzNCLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUtELE1BQU0sVUFBVSxhQUFhLENBQUksS0FBYztJQUM3QyxPQUFPLENBQ0wsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixLQUFLLElBQUksSUFBSTtRQUNiLE1BQU0sSUFBSSxLQUFLO1FBQ2YsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FDakMsQ0FBQztBQUNKLENBQUM7QUFTRCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLE1BQWtDLEVBQ2xDLE9BQW9EO0lBRXBELE1BQU0sU0FBUyxHQUNiLE9BQU8sRUFBRSxTQUFTLElBQUssUUFBc0MsQ0FBQztJQUNoRSxNQUFNLEtBQUssR0FBK0I7UUFDeEMsS0FBSyxFQUFFLElBQUk7UUFDWCxPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSxNQUFNO1FBQ2QsS0FBSyxFQUFFLFNBQVM7S0FDakIsQ0FBQztJQUtGLFNBQVMsVUFBVTtRQUNqQixPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFNRCxTQUFTLE9BQU87UUFDZCxJQUFJLFFBQThCLENBQUM7UUFDbkMsSUFBSSxDQUFDO1lBQ0gsUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDcEIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDckIsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7WUFDMUIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBUyxRQUFR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akIsT0FBTyxLQUFLLENBQUMsS0FBZSxDQUFDO1lBQy9CLENBQUM7WUFFRCxNQUFNLE9BQU8sQ0FBQztRQUNoQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1heWJlUHJvbWlzZSwgUmVhZGFibGVSZXNvdXJjZSB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG50eXBlIEFzeW5jUmVzb3VyY2VTdGF0ZTxUPiA9IHtcbiAgZXJyb3I6IHVua25vd247XG4gIHByb21pc2U6IFByb21pc2U8VD4gfCBudWxsO1xuICBzdGF0dXM6ICdpZGxlJyB8ICdwZW5kaW5nJyB8ICdyZXNvbHZlZCcgfCAncmVqZWN0ZWQnO1xuICB2YWx1ZTogVCB8IHVuZGVmaW5lZDtcbn07XG5cbnR5cGUgQ3JlYXRlQXN5bmNSZXNvdXJjZU9wdGlvbnM8VElucHV0LCBUVmFsdWU+ID0ge1xuICBub3JtYWxpemU/OiAoaW5wdXQ6IFRJbnB1dCkgPT4gVFZhbHVlO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnaXZlbiB2YWx1ZSB1bmNoYW5nZWQuXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5PFQ+KHZhbHVlOiBUKTogVCB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHByb21pc2UtbGlrZSBvYmplY3RzIHVzZWQgYnkgcmVzb3VyY2UgbG9hZGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZUxpa2U8VD4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlTGlrZTxUPiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHZhbHVlICE9IG51bGwgJiZcbiAgICAndGhlbicgaW4gdmFsdWUgJiZcbiAgICB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzbWFsbCBTdXNwZW5zZS1mcmllbmRseSByZXNvdXJjZSBhcm91bmQgc3luYyBvciBhc3luYyBsb2FkZXJzLlxuICpcbiAqIEBwYXJhbSBsb2FkZXIgLSBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIHJhdyB2YWx1ZSBvciBhIHByb21pc2UgZm9yIGl0LlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBub3JtYWxpemF0aW9uIHN0ZXAgYXBwbGllZCBiZWZvcmUgc3RvcmluZyB0aGUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZWFkYWJsZSByZXNvdXJjZSBleHBvc2luZyBzeW5jIHJlYWRzIGFuZCBleHBsaWNpdCBsb2FkaW5nIHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXN5bmNSZXNvdXJjZTxUSW5wdXQsIFRWYWx1ZSA9IFRJbnB1dD4oXG4gIGxvYWRlcjogKCkgPT4gTWF5YmVQcm9taXNlPFRJbnB1dD4sXG4gIG9wdGlvbnM/OiBDcmVhdGVBc3luY1Jlc291cmNlT3B0aW9uczxUSW5wdXQsIFRWYWx1ZT4sXG4pOiBSZWFkYWJsZVJlc291cmNlPFRWYWx1ZT4ge1xuICBjb25zdCBub3JtYWxpemUgPVxuICAgIG9wdGlvbnM/Lm5vcm1hbGl6ZSA/PyAoaWRlbnRpdHkgYXMgKHZhbHVlOiBUSW5wdXQpID0+IFRWYWx1ZSk7XG4gIGNvbnN0IHN0YXRlOiBBc3luY1Jlc291cmNlU3RhdGU8VFZhbHVlPiA9IHtcbiAgICBlcnJvcjogbnVsbCxcbiAgICBwcm9taXNlOiBudWxsLFxuICAgIHN0YXR1czogJ2lkbGUnLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSByZXNvdXJjZSBoYXMgYWxyZWFkeSByZXNvbHZlZC5cbiAgICovXG4gIGZ1bmN0aW9uIGlzUmVzb2x2ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnN0YXR1cyA9PT0gJ3Jlc29sdmVkJztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgbG9hZGVyIGFuZCBzdG9yZXMgdGhlIHJlc3VsdGluZyBzdGF0ZSB0cmFuc2l0aW9uLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcm9taXNlLWZ1bmN0aW9uLWFzeW5jXG4gIGZ1bmN0aW9uIHJ1bkxvYWQoKTogUHJvbWlzZTxUVmFsdWU+IHtcbiAgICBsZXQgcmVzb2x2ZWQ6IE1heWJlUHJvbWlzZTxUSW5wdXQ+O1xuICAgIHRyeSB7XG4gICAgICByZXNvbHZlZCA9IGxvYWRlcigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBzdGF0ZS5lcnJvciA9IGVycm9yO1xuICAgICAgc3RhdGUucHJvbWlzZSA9IG51bGw7XG4gICAgICBzdGF0ZS5zdGF0dXMgPSAncmVqZWN0ZWQnO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgaWYgKCFpc1Byb21pc2VMaWtlPFRJbnB1dD4ocmVzb2x2ZWQpKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplKHJlc29sdmVkKTtcbiAgICAgIHN0YXRlLnZhbHVlID0gbm9ybWFsaXplZDtcbiAgICAgIHN0YXRlLmVycm9yID0gbnVsbDtcbiAgICAgIHN0YXRlLnN0YXR1cyA9ICdyZXNvbHZlZCc7XG4gICAgICBjb25zdCBzZXR0bGVkID0gUHJvbWlzZS5yZXNvbHZlKG5vcm1hbGl6ZWQpO1xuICAgICAgc3RhdGUucHJvbWlzZSA9IHNldHRsZWQ7XG4gICAgICByZXR1cm4gc2V0dGxlZDtcbiAgICB9XG5cbiAgICBzdGF0ZS5zdGF0dXMgPSAncGVuZGluZyc7XG4gICAgY29uc3QgcGVuZGluZyA9IFByb21pc2UucmVzb2x2ZShyZXNvbHZlZClcbiAgICAgIC50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplKHZhbHVlKTtcbiAgICAgICAgc3RhdGUudmFsdWUgPSBub3JtYWxpemVkO1xuICAgICAgICBzdGF0ZS5lcnJvciA9IG51bGw7XG4gICAgICAgIHN0YXRlLnN0YXR1cyA9ICdyZXNvbHZlZCc7XG4gICAgICAgIGNvbnN0IHNldHRsZWQgPSBQcm9taXNlLnJlc29sdmUobm9ybWFsaXplZCk7XG4gICAgICAgIHN0YXRlLnByb21pc2UgPSBzZXR0bGVkO1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHN0YXRlLmVycm9yID0gZXJyb3I7XG4gICAgICAgIHN0YXRlLnN0YXR1cyA9ICdyZWplY3RlZCc7XG4gICAgICAgIHN0YXRlLnByb21pc2UgPSBudWxsO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICAgIHN0YXRlLnByb21pc2UgPSBwZW5kaW5nO1xuICAgIHJldHVybiBwZW5kaW5nO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gc3RhdGUudmFsdWU7XG4gICAgfSxcbiAgICBnZXRFcnJvcigpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5lcnJvcjtcbiAgICB9LFxuICAgIGdldFN0YXR1cygpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5zdGF0dXM7XG4gICAgfSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Byb21pc2UtZnVuY3Rpb24tYXN5bmNcbiAgICBsb2FkKCkge1xuICAgICAgaWYgKHN0YXRlLnN0YXR1cyA9PT0gJ3Jlc29sdmVkJykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHN0YXRlLnZhbHVlIGFzIFRWYWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdGF0ZS5lcnJvcik7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUucHJvbWlzZSAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5wcm9taXNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJ1bkxvYWQoKTtcbiAgICB9LFxuICAgIHJlYWQoKSB7XG4gICAgICBpZiAoaXNSZXNvbHZlZCgpKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS52YWx1ZSBhcyBUVmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICAgIHRocm93IHN0YXRlLmVycm9yO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXRlLnByb21pc2UgIT0gbnVsbCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L29ubHktdGhyb3ctZXJyb3JcbiAgICAgICAgdGhyb3cgc3RhdGUucHJvbWlzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBlbmRpbmcgPSBydW5Mb2FkKCk7XG4gICAgICBpZiAoaXNSZXNvbHZlZCgpKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS52YWx1ZSBhcyBUVmFsdWU7XG4gICAgICB9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L29ubHktdGhyb3ctZXJyb3JcbiAgICAgIHRocm93IHBlbmRpbmc7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { type MatchFunction, type ParamData } from 'path-to-regexp';
2
+ import type { FlatRouteInput, Redirect, AnyRoute } from './types.js';
3
+ export declare class FlatRoute<TParams extends ParamData> {
4
+ path: string;
5
+ routes: AnyRoute[];
6
+ matchFunction: MatchFunction<TParams>;
7
+ redirectTo?: string;
8
+ constructor(input: FlatRouteInput<TParams>);
9
+ }
10
+ export declare function isRedirect(route: AnyRoute | Redirect): route is Redirect;
11
+ export declare function buildRoute(routeConfig: readonly (AnyRoute | Redirect)[], parentRoutes?: AnyRoute[], prefix?: string): FlatRoute<ParamData>[];
12
+ export declare function buildRoutes(routeConfig: readonly AnyRoute[]): FlatRoute<ParamData>[];
13
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQrE,qBAAa,SAAS,CAAC,OAAO,SAAS,SAAS;IAEvC,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,QAAQ,EAAE,CAAC;IAGnB,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAGtC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAOR,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC;CAOlD;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAGxE;AASD,wBAAgB,UAAU,CACxB,WAAW,EAAE,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAC7C,YAAY,GAAE,QAAQ,EAAO,EAC7B,MAAM,SAAK,GACV,SAAS,CAAC,SAAS,CAAC,EAAE,CAmExB;AAOD,wBAAgB,WAAW,CACzB,WAAW,EAAE,SAAS,QAAQ,EAAE,GAC/B,SAAS,CAAC,SAAS,CAAC,EAAE,CAExB"}
package/lib/builder.js ADDED
@@ -0,0 +1,72 @@
1
+ import { match } from 'path-to-regexp';
2
+ export class FlatRoute {
3
+ path;
4
+ routes;
5
+ matchFunction;
6
+ redirectTo;
7
+ constructor(input) {
8
+ const { matchFunction, path, redirectTo, routes } = input;
9
+ this.path = path;
10
+ this.redirectTo = redirectTo;
11
+ this.routes = routes;
12
+ this.matchFunction = matchFunction;
13
+ }
14
+ }
15
+ export function isRedirect(route) {
16
+ return route.to != null;
17
+ }
18
+ export function buildRoute(routeConfig, parentRoutes = [], prefix = '') {
19
+ const flatRoutes = [];
20
+ for (const route of routeConfig) {
21
+ const parts = [];
22
+ if (prefix !== '') {
23
+ parts.push(prefix);
24
+ }
25
+ if (route.path != null && route.path !== '' && route.path !== '/') {
26
+ let normalized = route.path;
27
+ if (normalized.startsWith('/')) {
28
+ normalized = normalized.slice(1);
29
+ }
30
+ parts.push(normalized);
31
+ }
32
+ const newPath = parts.join('/');
33
+ const routeDefinition = route;
34
+ const { children } = routeDefinition;
35
+ if (!isRedirect(route) && children != null) {
36
+ const routes = buildRoute(children, [...parentRoutes, routeDefinition], newPath);
37
+ flatRoutes.push(...routes);
38
+ continue;
39
+ }
40
+ const matchFunction = match(`/${newPath}`, {
41
+ trailing: false,
42
+ });
43
+ let path = newPath;
44
+ if (!newPath.startsWith('/')) {
45
+ path = `/${newPath}`;
46
+ }
47
+ if (isRedirect(route)) {
48
+ let redirectTo = route.to;
49
+ if (!redirectTo.startsWith('/')) {
50
+ redirectTo = `${path}/${redirectTo}`;
51
+ }
52
+ flatRoutes.push(new FlatRoute({
53
+ path,
54
+ redirectTo,
55
+ matchFunction,
56
+ routes: [...parentRoutes],
57
+ }));
58
+ }
59
+ else {
60
+ flatRoutes.push(new FlatRoute({
61
+ path,
62
+ matchFunction,
63
+ routes: [...parentRoutes, routeDefinition],
64
+ }));
65
+ }
66
+ }
67
+ return flatRoutes;
68
+ }
69
+ export function buildRoutes(routeConfig) {
70
+ return buildRoute(routeConfig);
71
+ }
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQXNDLE1BQU0sZ0JBQWdCLENBQUM7QUFVM0UsTUFBTSxPQUFPLFNBQVM7SUFFYixJQUFJLENBQVM7SUFHYixNQUFNLENBQWE7SUFHbkIsYUFBYSxDQUF5QjtJQUd0QyxVQUFVLENBQVU7SUFPM0IsWUFBbUIsS0FBOEI7UUFDL0MsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFHRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQTBCO0lBRW5ELE9BQVEsS0FBa0IsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ3hDLENBQUM7QUFTRCxNQUFNLFVBQVUsVUFBVSxDQUN4QixXQUE2QyxFQUM3QyxlQUEyQixFQUFFLEVBQzdCLE1BQU0sR0FBRyxFQUFFO0lBRVgsTUFBTSxVQUFVLEdBQTJCLEVBQUUsQ0FBQztJQUU5QyxLQUFLLE1BQU0sS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbEUsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM1QixJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEMsTUFBTSxlQUFlLEdBQUcsS0FBaUIsQ0FBQztRQUMxQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsZUFBZSxDQUFDO1FBRXJDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzNDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FDdkIsUUFBUSxFQUNSLENBQUMsR0FBRyxZQUFZLEVBQUUsZUFBZSxDQUFDLEVBQ2xDLE9BQU8sQ0FDUixDQUFDO1lBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBRTNCLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLEVBQUU7WUFDekMsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUUxQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxVQUFVLEdBQUcsR0FBRyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7WUFDdkMsQ0FBQztZQUNELFVBQVUsQ0FBQyxJQUFJLENBQ2IsSUFBSSxTQUFTLENBQUM7Z0JBQ1osSUFBSTtnQkFDSixVQUFVO2dCQUNWLGFBQWE7Z0JBQ2IsTUFBTSxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUM7YUFDMUIsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsQ0FBQyxJQUFJLENBQ2IsSUFBSSxTQUFTLENBQUM7Z0JBQ1osSUFBSTtnQkFDSixhQUFhO2dCQUNiLE1BQU0sRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLGVBQWUsQ0FBQzthQUMzQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQU9ELE1BQU0sVUFBVSxXQUFXLENBQ3pCLFdBQWdDO0lBRWhDLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXRjaCwgdHlwZSBNYXRjaEZ1bmN0aW9uLCB0eXBlIFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGVJbnB1dCwgUmVkaXJlY3QsIEFueVJvdXRlIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZsYXR0ZW5lZCByb3V0ZSB3aXRoIGEgY29tcGlsZWQgbWF0Y2ggZnVuY3Rpb24uXG4gKiBUaGlzIGlzIGFuIGludGVybmFsIHJlcHJlc2VudGF0aW9uIHVzZWQgYnkgdGhlIHJvdXRlciB0byBlZmZpY2llbnRseSBtYXRjaCBVUkxzLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUGFyYW1zIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgY2xhc3MgRmxhdFJvdXRlPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGE+IHtcbiAgLyoqIFRoZSBVUkwgcGF0aCBwYXR0ZXJuIGZvciB0aGlzIHJvdXRlICovXG4gIHB1YmxpYyBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqIE5lc3RlZCByb3V0ZXMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgd2l0aGluIHRoaXMgcm91dGUgKi9cbiAgcHVibGljIHJvdXRlczogQW55Um91dGVbXTtcblxuICAvKiogQ29tcGlsZWQgZnVuY3Rpb24gdG8gbWF0Y2ggVVJMIHBhdGhzIGFnYWluc3QgdGhpcyByb3V0ZSBwYXR0ZXJuICovXG4gIHB1YmxpYyBtYXRjaEZ1bmN0aW9uOiBNYXRjaEZ1bmN0aW9uPFRQYXJhbXM+O1xuXG4gIC8qKiBPcHRpb25hbCByZWRpcmVjdCBkZXN0aW5hdGlvbiBpZiB0aGlzIHJvdXRlIHNob3VsZCByZWRpcmVjdCAqL1xuICBwdWJsaWMgcmVkaXJlY3RUbz86IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBGbGF0Um91dGUgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dCAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBmbGF0IHJvdXRlXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoaW5wdXQ6IEZsYXRSb3V0ZUlucHV0PFRQYXJhbXM+KSB7XG4gICAgY29uc3QgeyBtYXRjaEZ1bmN0aW9uLCBwYXRoLCByZWRpcmVjdFRvLCByb3V0ZXMgfSA9IGlucHV0O1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5yZWRpcmVjdFRvID0gcmVkaXJlY3RUbztcbiAgICB0aGlzLnJvdXRlcyA9IHJvdXRlcztcbiAgICB0aGlzLm1hdGNoRnVuY3Rpb24gPSBtYXRjaEZ1bmN0aW9uO1xuICB9XG59XG5cbi8qKiBOYXJyb3cgYSByb3V0ZSBjb25maWd1cmF0aW9uIHRvIGEgcmVkaXJlY3QuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWRpcmVjdChyb3V0ZTogQW55Um91dGUgfCBSZWRpcmVjdCk6IHJvdXRlIGlzIFJlZGlyZWN0IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgcmV0dXJuIChyb3V0ZSBhcyBSZWRpcmVjdCkudG8gIT0gbnVsbDtcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBmbGF0dGVucyBuZXN0ZWQgcm91dGUgZGVmaW5pdGlvbnMgaW50byBgRmxhdFJvdXRlYCBlbnRyaWVzLlxuICpcbiAqIEBwYXJhbSByb3V0ZUNvbmZpZyAtIFJvdXRlIG9yIHJlZGlyZWN0IGRlZmluaXRpb25zIHRvIHByb2Nlc3MuXG4gKiBAcGFyYW0gcGFyZW50Um91dGVzIC0gQWNjdW11bGF0ZWQgcGFyZW50IHJvdXRlcyBmb3IgbmVzdGluZyBjb250ZXh0LlxuICogQHBhcmFtIHByZWZpeCAtIEN1cnJlbnQgcGF0aCBwcmVmaXggcHJvcGFnYXRlZCBmcm9tIHBhcmVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFJvdXRlKFxuICByb3V0ZUNvbmZpZzogcmVhZG9ubHkgKEFueVJvdXRlIHwgUmVkaXJlY3QpW10sXG4gIHBhcmVudFJvdXRlczogQW55Um91dGVbXSA9IFtdLFxuICBwcmVmaXggPSAnJyxcbik6IEZsYXRSb3V0ZTxQYXJhbURhdGE+W10ge1xuICBjb25zdCBmbGF0Um91dGVzOiBGbGF0Um91dGU8UGFyYW1EYXRhPltdID0gW107XG5cbiAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZUNvbmZpZykge1xuICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgaWYgKHByZWZpeCAhPT0gJycpIHtcbiAgICAgIHBhcnRzLnB1c2gocHJlZml4KTtcbiAgICB9XG4gICAgaWYgKHJvdXRlLnBhdGggIT0gbnVsbCAmJiByb3V0ZS5wYXRoICE9PSAnJyAmJiByb3V0ZS5wYXRoICE9PSAnLycpIHtcbiAgICAgIGxldCBub3JtYWxpemVkID0gcm91dGUucGF0aDtcbiAgICAgIGlmIChub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zbGljZSgxKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzLnB1c2gobm9ybWFsaXplZCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UGF0aCA9IHBhcnRzLmpvaW4oJy8nKTtcblxuICAgIGNvbnN0IHJvdXRlRGVmaW5pdGlvbiA9IHJvdXRlIGFzIEFueVJvdXRlO1xuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHJvdXRlRGVmaW5pdGlvbjtcblxuICAgIGlmICghaXNSZWRpcmVjdChyb3V0ZSkgJiYgY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgY29uc3Qgcm91dGVzID0gYnVpbGRSb3V0ZShcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIFsuLi5wYXJlbnRSb3V0ZXMsIHJvdXRlRGVmaW5pdGlvbl0sXG4gICAgICAgIG5ld1BhdGgsXG4gICAgICApO1xuICAgICAgZmxhdFJvdXRlcy5wdXNoKC4uLnJvdXRlcyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udGludWVcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoRnVuY3Rpb24gPSBtYXRjaChgLyR7bmV3UGF0aH1gLCB7XG4gICAgICB0cmFpbGluZzogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBsZXQgcGF0aCA9IG5ld1BhdGg7XG4gICAgaWYgKCFuZXdQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgcGF0aCA9IGAvJHtuZXdQYXRofWA7XG4gICAgfVxuXG4gICAgaWYgKGlzUmVkaXJlY3Qocm91dGUpKSB7XG4gICAgICBsZXQgcmVkaXJlY3RUbyA9IHJvdXRlLnRvO1xuXG4gICAgICBpZiAoIXJlZGlyZWN0VG8uc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIHJlZGlyZWN0VG8gPSBgJHtwYXRofS8ke3JlZGlyZWN0VG99YDtcbiAgICAgIH1cbiAgICAgIGZsYXRSb3V0ZXMucHVzaChcbiAgICAgICAgbmV3IEZsYXRSb3V0ZSh7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWRpcmVjdFRvLFxuICAgICAgICAgIG1hdGNoRnVuY3Rpb24sXG4gICAgICAgICAgcm91dGVzOiBbLi4ucGFyZW50Um91dGVzXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGF0Um91dGVzLnB1c2goXG4gICAgICAgIG5ldyBGbGF0Um91dGUoe1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgbWF0Y2hGdW5jdGlvbixcbiAgICAgICAgICByb3V0ZXM6IFsuLi5wYXJlbnRSb3V0ZXMsIHJvdXRlRGVmaW5pdGlvbl0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmxhdFJvdXRlcztcbn1cblxuLyoqXG4gKiBUb3AtbGV2ZWwgY29udmVuaWVuY2UgdG8gZmxhdHRlbiBhIHJvdXRlIGNvbmZpZ3VyYXRpb24gaW50byBgRmxhdFJvdXRlYHMuXG4gKlxuICogQHBhcmFtIHJvdXRlQ29uZmlnIC0gUm91dGUgZGVmaW5pdGlvbnMgdG8gZmxhdHRlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUm91dGVzKFxuICByb3V0ZUNvbmZpZzogcmVhZG9ubHkgQW55Um91dGVbXSxcbik6IEZsYXRSb3V0ZTxQYXJhbURhdGE+W10ge1xuICByZXR1cm4gYnVpbGRSb3V0ZShyb3V0ZUNvbmZpZyk7XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export default class HttpRedirect extends Error {
2
+ redirectTo: string;
3
+ statusCode: number;
4
+ constructor(redirectTo: string, statusCode?: number);
5
+ }
6
+ //# sourceMappingURL=HttpRedirect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpRedirect.d.ts","sourceRoot":"","sources":["../../src/errors/HttpRedirect.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,KAAK;IAEtC,UAAU,EAAE,MAAM,CAAC;IAGnB,UAAU,EAAE,MAAM,CAAC;gBAQP,UAAU,EAAE,MAAM,EAAE,UAAU,SAAM;CAUxD"}
@@ -0,0 +1,11 @@
1
+ export default class HttpRedirect extends Error {
2
+ redirectTo;
3
+ statusCode;
4
+ constructor(redirectTo, statusCode = 302) {
5
+ super('HttpRedirect');
6
+ this.redirectTo = redirectTo;
7
+ this.statusCode = statusCode;
8
+ Object.setPrototypeOf(this, HttpRedirect.prototype);
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cFJlZGlyZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9IdHRwUmVkaXJlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxDQUFDLE9BQU8sT0FBTyxZQUFhLFNBQVEsS0FBSztJQUV0QyxVQUFVLENBQVM7SUFHbkIsVUFBVSxDQUFTO0lBUTFCLFlBQW1CLFVBQWtCLEVBQUUsVUFBVSxHQUFHLEdBQUc7UUFDckQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBSTdCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogRXJyb3IgdGhhdCBzaWduYWxzIGFuIEhUVFAgcmVkaXJlY3QgZnJvbSByb3V0ZSBsb2dpYy4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0dHBSZWRpcmVjdCBleHRlbmRzIEVycm9yIHtcbiAgLyoqIFRoZSBVUkwgdG8gcmVkaXJlY3QgdG8gKi9cbiAgcHVibGljIHJlZGlyZWN0VG86IHN0cmluZztcblxuICAvKiogSFRUUCBzdGF0dXMgY29kZSBmb3IgdGhlIHJlZGlyZWN0ICgzMDEsIDMwMiwgZXRjLikgKi9cbiAgcHVibGljIHN0YXR1c0NvZGU6IG51bWJlcjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBIdHRwUmVkaXJlY3QgZXJyb3IuXG4gICAqXG4gICAqIEBwYXJhbSByZWRpcmVjdFRvIC0gVGhlIFVSTCB0byByZWRpcmVjdCB0b1xuICAgKiBAcGFyYW0gc3RhdHVzQ29kZSAtIEhUVFAgc3RhdHVzIGNvZGUgKGRlZmF1bHRzIHRvIDMwMiBmb3IgdGVtcG9yYXJ5IHJlZGlyZWN0KVxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHJlZGlyZWN0VG86IHN0cmluZywgc3RhdHVzQ29kZSA9IDMwMikge1xuICAgIHN1cGVyKCdIdHRwUmVkaXJlY3QnKTtcblxuICAgIHRoaXMucmVkaXJlY3RUbyA9IHJlZGlyZWN0VG87XG4gICAgdGhpcy5zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcblxuICAgIC8vIEZpeCBmb3IgaW5zdGFuY2VvZiBidWcgaW4gVHlwZVNjcmlwdDpcbiAgICAvLyBodHRwczovL3d3dy5kYW5ueWd1by5jb20vYmxvZy9ob3ctdG8tZml4LWluc3RhbmNlb2Ytbm90LXdvcmtpbmctZm9yLWN1c3RvbS1lcnJvcnMtaW4tdHlwZXNjcmlwdC9cbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgSHR0cFJlZGlyZWN0LnByb3RvdHlwZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { default as HttpRedirect } from './HttpRedirect.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default as HttpRedirect } from './HttpRedirect.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLElBQUksWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUmUtZXhwb3J0IG9mIHRoZSBIdHRwUmVkaXJlY3QgZXJyb3IgaGVscGVyLiAqL1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBIdHRwUmVkaXJlY3QgfSBmcm9tICcuL0h0dHBSZWRpcmVjdC5qcyc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { default as noDirectWindowLocationSearch } from './no-direct-window-location-search.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint-rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default as noDirectWindowLocationSearch } from './no-direct-window-location-search.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXNsaW50LXJ1bGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLElBQUksNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgbm9EaXJlY3RXaW5kb3dMb2NhdGlvblNlYXJjaCB9IGZyb20gJy4vbm8tZGlyZWN0LXdpbmRvdy1sb2NhdGlvbi1zZWFyY2guanMnO1xuIl19
@@ -0,0 +1,4 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
4
+ //# sourceMappingURL=no-direct-window-location-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-direct-window-location-search.d.ts","sourceRoot":"","sources":["../../src/eslint-rules/no-direct-window-location-search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAMnC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UAmDhB,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,48 @@
1
+ const rule = {
2
+ meta: {
3
+ type: 'suggestion',
4
+ docs: {
5
+ description: 'Discourage direct window.location.search access; use useQuery()/useFilters() instead',
6
+ recommended: false,
7
+ },
8
+ messages: {
9
+ avoid: 'Avoid direct access to window.location.search. Use useQuery() / useFilters() from @plumile/router.',
10
+ },
11
+ schema: [
12
+ {
13
+ type: 'object',
14
+ properties: {
15
+ allowInFiles: { type: 'array', items: { type: 'string' } },
16
+ },
17
+ additionalProperties: false,
18
+ },
19
+ ],
20
+ },
21
+ create(context) {
22
+ const rawOption = context.options[0];
23
+ const allowIn = new Set(rawOption?.allowInFiles ?? []);
24
+ const filename = context.getFilename();
25
+ const isAllowed = [...allowIn].some((pat) => {
26
+ return filename.includes(pat);
27
+ });
28
+ return {
29
+ MemberExpression(node) {
30
+ if (isAllowed)
31
+ return;
32
+ if (node.property.type === 'Identifier' &&
33
+ node.property.name === 'search' &&
34
+ node.object.type === 'MemberExpression') {
35
+ const obj = node.object;
36
+ if (obj.property.type === 'Identifier' &&
37
+ obj.property.name === 'location' &&
38
+ obj.object.type === 'Identifier' &&
39
+ obj.object.name === 'window') {
40
+ context.report({ node, messageId: 'avoid' });
41
+ }
42
+ }
43
+ },
44
+ };
45
+ },
46
+ };
47
+ export default rule;
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tZGlyZWN0LXdpbmRvdy1sb2NhdGlvbi1zZWFyY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXNsaW50LXJ1bGVzL25vLWRpcmVjdC13aW5kb3ctbG9jYXRpb24tc2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sSUFBSSxHQUFvQjtJQUM1QixJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsWUFBWTtRQUNsQixJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1Qsc0ZBQXNGO1lBQ3hGLFdBQVcsRUFBRSxLQUFLO1NBQ25CO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsS0FBSyxFQUNILG9HQUFvRztTQUN2RztRQUNELE1BQU0sRUFBRTtZQUNOO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRTtpQkFDM0Q7Z0JBQ0Qsb0JBQW9CLEVBQUUsS0FBSzthQUM1QjtTQUNGO0tBQ0Y7SUFDRCxNQUFNLENBQUMsT0FBTztRQUNaLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUE2QixDQUFDO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMxQyxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsZ0JBQWdCLENBQUMsSUFBSTtnQkFDbkIsSUFBSSxTQUFTO29CQUFFLE9BQU87Z0JBQ3RCLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWTtvQkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUTtvQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQ3ZDLENBQUM7b0JBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDeEIsSUFDRSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxZQUFZO3dCQUNsQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxVQUFVO3dCQUNoQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO3dCQUNoQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQzVCLENBQUM7d0JBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztvQkFDL0MsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQztBQUVGLGVBQWUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTW92ZWQgZnJvbSBwYWNrYWdlIHJvb3QgZXNsaW50LXJ1bGVzIGRpcmVjdG9yeSBpbnRvIHNyYyB0byBzYXRpc2Z5IFRTIHJvb3REaXJcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5cbmludGVyZmFjZSBPcHRpb25zU2hhcGUge1xuICBhbGxvd0luRmlsZXM/OiBzdHJpbmdbXTtcbn1cblxuY29uc3QgcnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGlzY291cmFnZSBkaXJlY3Qgd2luZG93LmxvY2F0aW9uLnNlYXJjaCBhY2Nlc3M7IHVzZSB1c2VRdWVyeSgpL3VzZUZpbHRlcnMoKSBpbnN0ZWFkJyxcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBhdm9pZDpcbiAgICAgICAgJ0F2b2lkIGRpcmVjdCBhY2Nlc3MgdG8gd2luZG93LmxvY2F0aW9uLnNlYXJjaC4gVXNlIHVzZVF1ZXJ5KCkgLyB1c2VGaWx0ZXJzKCkgZnJvbSBAcGx1bWlsZS9yb3V0ZXIuJyxcbiAgICB9LFxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGFsbG93SW5GaWxlczogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9IH0sXG4gICAgICAgIH0sXG4gICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCByYXdPcHRpb24gPSBjb250ZXh0Lm9wdGlvbnNbMF0gYXMgT3B0aW9uc1NoYXBlIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGFsbG93SW4gPSBuZXcgU2V0KHJhd09wdGlvbj8uYWxsb3dJbkZpbGVzID8/IFtdKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGNvbnRleHQuZ2V0RmlsZW5hbWUoKTtcbiAgICBjb25zdCBpc0FsbG93ZWQgPSBbLi4uYWxsb3dJbl0uc29tZSgocGF0KSA9PiB7XG4gICAgICByZXR1cm4gZmlsZW5hbWUuaW5jbHVkZXMocGF0KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBNZW1iZXJFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgICAgaWYgKGlzQWxsb3dlZCkgcmV0dXJuO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgbm9kZS5wcm9wZXJ0eS50eXBlID09PSAnSWRlbnRpZmllcicgJiZcbiAgICAgICAgICBub2RlLnByb3BlcnR5Lm5hbWUgPT09ICdzZWFyY2gnICYmXG4gICAgICAgICAgbm9kZS5vYmplY3QudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IG9iaiA9IG5vZGUub2JqZWN0O1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iai5wcm9wZXJ0eS50eXBlID09PSAnSWRlbnRpZmllcicgJiZcbiAgICAgICAgICAgIG9iai5wcm9wZXJ0eS5uYW1lID09PSAnbG9jYXRpb24nICYmXG4gICAgICAgICAgICBvYmoub2JqZWN0LnR5cGUgPT09ICdJZGVudGlmaWVyJyAmJlxuICAgICAgICAgICAgb2JqLm9iamVjdC5uYW1lID09PSAnd2luZG93J1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlLCBtZXNzYWdlSWQ6ICdhdm9pZCcgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBydWxlO1xuIl19
@@ -0,0 +1,21 @@
1
+ import type { History, HistoryListener, HistoryLocation } from './types.js';
2
+ export declare function createPath(location: HistoryLocation): string;
3
+ export default class BrowserHistory implements History {
4
+ private __listeners;
5
+ private __pendingDebugContext;
6
+ private __historyIndex;
7
+ private __currentIndex;
8
+ constructor();
9
+ get location(): Location;
10
+ init(): void;
11
+ set(location: HistoryLocation): void;
12
+ push(location: HistoryLocation): void;
13
+ unsubscribe(listener: HistoryListener): void;
14
+ subscribe(listener: HistoryListener): () => void;
15
+ private __notify;
16
+ private __consumePendingDebugContext;
17
+ private __subscribe;
18
+ private __handlePopstate;
19
+ private __ensureStateIndex;
20
+ }
21
+ //# sourceMappingURL=BrowserHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserHistory.d.ts","sourceRoot":"","sources":["../../src/history/BrowserHistory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAQpB,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAI5D;AAOD,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,OAAO;IAEpD,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,qBAAqB,CAAoC;IAEjE,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,cAAc,CAAK;;IAgB3B,IAAW,QAAQ,IAAI,QAAQ,CAU9B;IAKM,IAAI,IAAI,IAAI;IAUZ,GAAG,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA+BpC,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAiCrC,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAY5C,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAYvD,OAAO,CAAC,QAAQ,CAQd;IAEF,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB,CA2BtB;IAEF,OAAO,CAAC,kBAAkB;CA2B3B"}
@@ -0,0 +1,139 @@
1
+ export function createPath(location) {
2
+ const { pathname, search = '', hash = '' } = location;
3
+ return `${pathname}${search}${hash}`;
4
+ }
5
+ export default class BrowserHistory {
6
+ __listeners = [];
7
+ __pendingDebugContext = null;
8
+ __historyIndex = 0;
9
+ __currentIndex = 0;
10
+ constructor() {
11
+ this.init();
12
+ this.__ensureStateIndex();
13
+ }
14
+ get location() {
15
+ return {
16
+ pathname: window.location.pathname,
17
+ search: window.location.search,
18
+ hash: window.location.hash,
19
+ };
20
+ }
21
+ init() {
22
+ this.__subscribe();
23
+ }
24
+ set(location) {
25
+ const { debugContext, ...rest } = location;
26
+ const path = createPath(rest);
27
+ if (debugContext !== undefined) {
28
+ this.__pendingDebugContext = {
29
+ ...debugContext,
30
+ historyIndex: this.__currentIndex,
31
+ };
32
+ }
33
+ else {
34
+ this.__pendingDebugContext = { historyIndex: this.__currentIndex };
35
+ }
36
+ window.history.replaceState({
37
+ __plumileRouterIndex: this.__currentIndex,
38
+ }, '', path);
39
+ this.__notify(true);
40
+ }
41
+ push(location) {
42
+ const { debugContext, ...rest } = location;
43
+ const path = createPath(rest);
44
+ this.__historyIndex += 1;
45
+ this.__currentIndex = this.__historyIndex;
46
+ if (debugContext !== undefined) {
47
+ this.__pendingDebugContext = {
48
+ ...debugContext,
49
+ historyIndex: this.__currentIndex,
50
+ };
51
+ }
52
+ else {
53
+ this.__pendingDebugContext = { historyIndex: this.__currentIndex };
54
+ }
55
+ window.history.pushState({
56
+ __plumileRouterIndex: this.__currentIndex,
57
+ }, '', path);
58
+ this.__notify(false);
59
+ }
60
+ unsubscribe(listener) {
61
+ this.__listeners = this.__listeners.filter((item) => {
62
+ return item !== listener;
63
+ });
64
+ }
65
+ subscribe(listener) {
66
+ this.__listeners.push(listener);
67
+ return () => {
68
+ this.unsubscribe(listener);
69
+ };
70
+ }
71
+ __notify = (forceRerender) => {
72
+ setTimeout(() => {
73
+ const { location } = this;
74
+ const context = this.__consumePendingDebugContext();
75
+ this.__listeners.forEach((listener) => {
76
+ listener(location, forceRerender, context);
77
+ });
78
+ }, 0);
79
+ };
80
+ __consumePendingDebugContext() {
81
+ if (this.__pendingDebugContext == null) {
82
+ return undefined;
83
+ }
84
+ const context = this.__pendingDebugContext;
85
+ this.__pendingDebugContext = null;
86
+ return context;
87
+ }
88
+ __subscribe() {
89
+ window.addEventListener('popstate', this.__handlePopstate);
90
+ }
91
+ __handlePopstate = (event) => {
92
+ let origin;
93
+ let historyIndex;
94
+ const state = event.state;
95
+ if (state != null && typeof state.__plumileRouterIndex === 'number') {
96
+ historyIndex = state.__plumileRouterIndex;
97
+ if (historyIndex < this.__currentIndex) {
98
+ origin = 'popstate-back';
99
+ }
100
+ else if (historyIndex > this.__currentIndex) {
101
+ origin = 'popstate-forward';
102
+ }
103
+ else {
104
+ origin = 'popstate-unknown';
105
+ }
106
+ this.__currentIndex = historyIndex;
107
+ if (historyIndex > this.__historyIndex) {
108
+ this.__historyIndex = historyIndex;
109
+ }
110
+ }
111
+ else {
112
+ origin = 'external';
113
+ }
114
+ this.__pendingDebugContext = {
115
+ origin,
116
+ trigger: 'popstate',
117
+ historyIndex,
118
+ };
119
+ this.__notify(false);
120
+ };
121
+ __ensureStateIndex() {
122
+ const state = window.history.state;
123
+ if (state != null && typeof state.__plumileRouterIndex === 'number') {
124
+ this.__currentIndex = state.__plumileRouterIndex;
125
+ this.__historyIndex = state.__plumileRouterIndex;
126
+ return;
127
+ }
128
+ const { pathname, search, hash } = window.location;
129
+ let targetUrl = `${pathname}${search}${hash}`;
130
+ if (typeof window.location.href === 'string' &&
131
+ window.location.href !== '') {
132
+ targetUrl = window.location.href;
133
+ }
134
+ window.history.replaceState({
135
+ __plumileRouterIndex: this.__currentIndex,
136
+ }, '', targetUrl);
137
+ }
138
+ }
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJvd3Nlckhpc3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGlzdG9yeS9Ccm93c2VySGlzdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxNQUFNLFVBQVUsVUFBVSxDQUFDLFFBQXlCO0lBQ2xELE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBRXRELE9BQU8sR0FBRyxRQUFRLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO0FBQ3ZDLENBQUM7QUFPRCxNQUFNLENBQUMsT0FBTyxPQUFPLGNBQWM7SUFFekIsV0FBVyxHQUFzQixFQUFFLENBQUM7SUFFcEMscUJBQXFCLEdBQStCLElBQUksQ0FBQztJQUV6RCxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFLM0I7UUFDRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBUUQsSUFBVyxRQUFRO1FBSWpCLE9BQU87WUFFTCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRO1lBQ2xDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDOUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTtTQUNKLENBQUM7SUFDM0IsQ0FBQztJQUtNLElBQUk7UUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQVFNLEdBQUcsQ0FBQyxRQUF5QjtRQUNsQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsUUFFakMsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5QixJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZ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LEtBQUssSUFBSSxJQUFJLElBQUksT0FBTyxLQUFLLENBQUMsb0JBQW9CLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUM7WUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUM7WUFDakQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ25ELElBQUksU0FBUyxHQUFHLEdBQUcsUUFBUSxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUNFLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUN4QyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxFQUFFLEVBQzNCLENBQUM7WUFDRCxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUN6QjtZQUNFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxjQUFjO1NBQzFDLEVBQ0QsRUFBRSxFQUNGLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBIaXN0b3J5LFxuICBIaXN0b3J5RGVidWdDb250ZXh0LFxuICBIaXN0b3J5TGlzdGVuZXIsXG4gIEhpc3RvcnlMb2NhdGlvbixcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBsZXRlIFVSTCBwYXRoIGZyb20gYSBIaXN0b3J5TG9jYXRpb24gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBsb2NhdGlvbiAtIExvY2F0aW9uIG9iamVjdCBjb250YWluaW5nIHBhdGhuYW1lLCBzZWFyY2gsIGFuZCBoYXNoXG4gKiBAcmV0dXJucyBDb21wbGV0ZSBwYXRoIHN0cmluZyBjb21iaW5pbmcgYWxsIGNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdGgobG9jYXRpb246IEhpc3RvcnlMb2NhdGlvbik6IHN0cmluZyB7XG4gIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCA9ICcnLCBoYXNoID0gJycgfSA9IGxvY2F0aW9uO1xuXG4gIHJldHVybiBgJHtwYXRobmFtZX0ke3NlYXJjaH0ke2hhc2h9YDtcbn1cblxuLyoqXG4gKiBCcm93c2VyIGhpc3RvcnkgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEhUTUw1IEhpc3RvcnkgQVBJLlxuICogTWFuYWdlcyBicm93c2VyIG5hdmlnYXRpb24gc3RhdGUgYW5kIHByb3ZpZGVzIGEgY29uc2lzdGVudCBpbnRlcmZhY2VcbiAqIGZvciBwcm9ncmFtbWF0aWMgbmF2aWdhdGlvbiBhbmQgbG9jYXRpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJIaXN0b3J5IGltcGxlbWVudHMgSGlzdG9yeSB7XG4gIC8qKiBBcnJheSBvZiBsaXN0ZW5lcnMgZm9yIGxvY2F0aW9uIGNoYW5nZXMgKi9cbiAgcHJpdmF0ZSBfX2xpc3RlbmVyczogSGlzdG9yeUxpc3RlbmVyW10gPSBbXTtcbiAgLyoqIERlYnVnIG1ldGFkYXRhIGNhcHR1cmVkIGZvciB0aGUgbmV4dCBub3RpZmljYXRpb24gKi9cbiAgcHJpdmF0ZSBfX3BlbmRpbmdEZWJ1Z0NvbnRleHQ6IEhpc3RvcnlEZWJ1Z0NvbnRleHQgfCBudWxsID0gbnVsbDtcbiAgLyoqIE1vbm90b25pYyBjb3VudGVyIGF0dGFjaGVkIHRvIHB1c2hTdGF0ZS9yZXBsYWNlU3RhdGUgKi9cbiAgcHJpdmF0ZSBfX2hpc3RvcnlJbmRleCA9IDA7XG4gIC8qKiBDdXJyZW50IGluZGV4IHJlcHJlc2VudGluZyB0aGUgYWN0aXZlIGVudHJ5ICovXG4gIHByaXZhdGUgX19jdXJyZW50SW5kZXggPSAwO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEJyb3dzZXJIaXN0b3J5IGluc3RhbmNlIGFuZCBpbml0aWFsaXplcyBldmVudCBsaXN0ZW5lcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5fX2Vuc3VyZVN0YXRlSW5kZXgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGJyb3dzZXIgbG9jYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgd2luZG93LmxvY2F0aW9uIG9iamVjdFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgcHVibGljIGdldCBsb2NhdGlvbigpOiBMb2NhdGlvbiB7XG4gICAgLy8gU29tZSB0ZXN0IERPTSBlbnZpcm9ubWVudHMgKGUuZy4gaGFwcHktZG9tKSBleHBvc2Ugbm9uLWVudW1lcmFibGVcbiAgICAvLyBMb2NhdGlvbiBwcm9wZXJ0aWVzIHNvIGEgc2ltcGxlIHNwcmVhZCByZXR1cm5zIGFuIGVtcHR5IG9iamVjdC5cbiAgICAvLyBSZXR1cm4gYW4gZXhwbGljaXQgcGxhaW4gb2JqZWN0IHdpdGggdGhlIGZpZWxkcyB3ZSByZWx5IG9uLlxuICAgIHJldHVybiB7XG4gICAgICAvLyBwYXRobmFtZS9zZWFyY2gvaGFzaCBhcmUgc3VmZmljaWVudCBmb3Igb3VyIHJvdXRlciBsb2dpY1xuICAgICAgcGF0aG5hbWU6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgIHNlYXJjaDogd2luZG93LmxvY2F0aW9uLnNlYXJjaCxcbiAgICAgIGhhc2g6IHdpbmRvdy5sb2NhdGlvbi5oYXNoLFxuICAgIH0gYXMgdW5rbm93biBhcyBMb2NhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgaGlzdG9yeSBpbnN0YW5jZSBieSBzZXR0aW5nIHVwIGV2ZW50IGxpc3RlbmVycy5cbiAgICovXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX19zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgY3VycmVudCBoaXN0b3J5IGVudHJ5IHdpdGggYSBuZXcgbG9jYXRpb24uXG4gICAqIFRoaXMgdXBkYXRlcyB0aGUgVVJMIHdpdGhvdXQgY3JlYXRpbmcgYSBuZXcgaGlzdG9yeSBlbnRyeS5cbiAgICpcbiAgICogQHBhcmFtIGxvY2F0aW9uIC0gTmV3IGxvY2F0aW9uIHRvIHNldFxuICAgKi9cbiAgcHVibGljIHNldChsb2NhdGlvbjogSGlzdG9yeUxvY2F0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgeyBkZWJ1Z0NvbnRleHQsIC4uLnJlc3QgfSA9IGxvY2F0aW9uIGFzIEhpc3RvcnlMb2NhdGlvbiAmIHtcbiAgICAgIGRlYnVnQ29udGV4dD86IEhpc3RvcnlEZWJ1Z0NvbnRleHQ7XG4gICAgfTtcbiAgICBjb25zdCBwYXRoID0gY3JlYXRlUGF0aChyZXN0KTtcblxuICAgIGlmIChkZWJ1Z0NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPSB7XG4gICAgICAgIC4uLmRlYnVnQ29udGV4dCxcbiAgICAgICAgaGlzdG9yeUluZGV4OiB0aGlzLl9fY3VycmVudEluZGV4LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPSB7IGhpc3RvcnlJbmRleDogdGhpcy5fX2N1cnJlbnRJbmRleCB9O1xuICAgIH1cblxuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgX19wbHVtaWxlUm91dGVySW5kZXg6IHRoaXMuX19jdXJyZW50SW5kZXgsXG4gICAgICB9LFxuICAgICAgJycsXG4gICAgICBwYXRoLFxuICAgICk7XG4gICAgdGhpcy5fX25vdGlmeSh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gYSBuZXcgbG9jYXRpb24gYnkgcHVzaGluZyBhIG5ldyBoaXN0b3J5IGVudHJ5LlxuICAgKiBUaGlzIGNyZWF0ZXMgYSBuZXcgZW50cnkgaW4gdGhlIGJyb3dzZXIncyBoaXN0b3J5IHN0YWNrLlxuICAgKlxuICAgKiBAcGFyYW0gbG9jYXRpb24gLSBMb2NhdGlvbiB0byBuYXZpZ2F0ZSB0b1xuICAgKi9cbiAgcHVibGljIHB1c2gobG9jYXRpb246IEhpc3RvcnlMb2NhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHsgZGVidWdDb250ZXh0LCAuLi5yZXN0IH0gPSBsb2NhdGlvbiBhcyBIaXN0b3J5TG9jYXRpb24gJiB7XG4gICAgICBkZWJ1Z0NvbnRleHQ/OiBIaXN0b3J5RGVidWdDb250ZXh0O1xuICAgIH07XG4gICAgY29uc3QgcGF0aCA9IGNyZWF0ZVBhdGgocmVzdCk7XG5cbiAgICB0aGlzLl9faGlzdG9yeUluZGV4ICs9IDE7XG4gICAgdGhpcy5fX2N1cnJlbnRJbmRleCA9IHRoaXMuX19oaXN0b3J5SW5kZXg7XG5cbiAgICBpZiAoZGVidWdDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX19wZW5kaW5nRGVidWdDb250ZXh0ID0ge1xuICAgICAgICAuLi5kZWJ1Z0NvbnRleHQsXG4gICAgICAgIGhpc3RvcnlJbmRleDogdGhpcy5fX2N1cnJlbnRJbmRleCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX19wZW5kaW5nRGVidWdDb250ZXh0ID0geyBoaXN0b3J5SW5kZXg6IHRoaXMuX19jdXJyZW50SW5kZXggfTtcbiAgICB9XG5cbiAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoXG4gICAgICB7XG4gICAgICAgIF9fcGx1bWlsZVJvdXRlckluZGV4OiB0aGlzLl9fY3VycmVudEluZGV4LFxuICAgICAgfSxcbiAgICAgICcnLFxuICAgICAgcGF0aCxcbiAgICApO1xuICAgIHRoaXMuX19ub3RpZnkoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBsaXN0ZW5lciBmcm9tIHRoZSBoaXN0b3J5IGNoYW5nZSBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gbGlzdGVuZXIgLSBMaXN0ZW5lciBmdW5jdGlvbiB0byByZW1vdmVcbiAgICovXG4gIHB1YmxpYyB1bnN1YnNjcmliZShsaXN0ZW5lcjogSGlzdG9yeUxpc3RlbmVyKTogdm9pZCB7XG4gICAgdGhpcy5fX2xpc3RlbmVycyA9IHRoaXMuX19saXN0ZW5lcnMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gaXRlbSAhPT0gbGlzdGVuZXI7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBoaXN0b3J5IGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSBsaXN0ZW5lciAtIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBsb2NhdGlvbiBjaGFuZ2VzXG4gICAqIEByZXR1cm5zIFVuc3Vic2NyaWJlIGZ1bmN0aW9uXG4gICAqL1xuICBwdWJsaWMgc3Vic2NyaWJlKGxpc3RlbmVyOiBIaXN0b3J5TGlzdGVuZXIpOiAoKSA9PiB2b2lkIHtcbiAgICB0aGlzLl9fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmaWVzIGFsbCBsaXN0ZW5lcnMgb2YgYSBsb2NhdGlvbiBjaGFuZ2UuXG4gICAqXG4gICAqIFVzZXMgc2V0VGltZW91dCB0byBlbnN1cmUgdGhlIG5vdGlmaWNhdGlvbiBoYXBwZW5zIGFmdGVyIHRoZSBjdXJyZW50IGV4ZWN1dGlvbi5cbiAgICovXG4gIHByaXZhdGUgX19ub3RpZnkgPSAoZm9yY2VSZXJlbmRlcjogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgeyBsb2NhdGlvbiB9ID0gdGhpcztcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9fY29uc3VtZVBlbmRpbmdEZWJ1Z0NvbnRleHQoKTtcbiAgICAgIHRoaXMuX19saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHtcbiAgICAgICAgbGlzdGVuZXIobG9jYXRpb24sIGZvcmNlUmVyZW5kZXIsIGNvbnRleHQpO1xuICAgICAgfSk7XG4gICAgfSwgMCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfX2NvbnN1bWVQZW5kaW5nRGVidWdDb250ZXh0KCk6IEhpc3RvcnlEZWJ1Z0NvbnRleHQgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9fcGVuZGluZ0RlYnVnQ29udGV4dCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQ7XG4gICAgdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPSBudWxsO1xuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIHBvcHN0YXRlIGV2ZW50IGxpc3RlbmVyIGZvciBicm93c2VyIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBfX3N1YnNjcmliZSgpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCB0aGlzLl9faGFuZGxlUG9wc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfX2hhbmRsZVBvcHN0YXRlID0gKGV2ZW50OiBQb3BTdGF0ZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgbGV0IG9yaWdpbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBoaXN0b3J5SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdGF0ZSA9IGV2ZW50LnN0YXRlIGFzIHsgX19wbHVtaWxlUm91dGVySW5kZXg/OiBudW1iZXIgfSB8IG51bGw7XG4gICAgaWYgKHN0YXRlICE9IG51bGwgJiYgdHlwZW9mIHN0YXRlLl9fcGx1bWlsZVJvdXRlckluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgaGlzdG9yeUluZGV4ID0gc3RhdGUuX19wbHVtaWxlUm91dGVySW5kZXg7XG4gICAgICBpZiAoaGlzdG9yeUluZGV4IDwgdGhpcy5fX2N1cnJlbnRJbmRleCkge1xuICAgICAgICBvcmlnaW4gPSAncG9wc3RhdGUtYmFjayc7XG4gICAgICB9IGVsc2UgaWYgKGhpc3RvcnlJbmRleCA+IHRoaXMuX19jdXJyZW50SW5kZXgpIHtcbiAgICAgICAgb3JpZ2luID0gJ3BvcHN0YXRlLWZvcndhcmQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3JpZ2luID0gJ3BvcHN0YXRlLXVua25vd24nO1xuICAgICAgfVxuICAgICAgdGhpcy5fX2N1cnJlbnRJbmRleCA9IGhpc3RvcnlJbmRleDtcbiAgICAgIGlmIChoaXN0b3J5SW5kZXggPiB0aGlzLl9faGlzdG9yeUluZGV4KSB7XG4gICAgICAgIHRoaXMuX19oaXN0b3J5SW5kZXggPSBoaXN0b3J5SW5kZXg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9yaWdpbiA9ICdleHRlcm5hbCc7XG4gICAgfVxuXG4gICAgdGhpcy5fX3BlbmRpbmdEZWJ1Z0NvbnRleHQgPSB7XG4gICAgICBvcmlnaW4sXG4gICAgICB0cmlnZ2VyOiAncG9wc3RhdGUnLFxuICAgICAgaGlzdG9yeUluZGV4LFxuICAgIH07XG4gICAgdGhpcy5fX25vdGlmeShmYWxzZSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfX2Vuc3VyZVN0YXRlSW5kZXgoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSB3aW5kb3cuaGlzdG9yeS5zdGF0ZSBhcyB7XG4gICAgICBfX3BsdW1pbGVSb3V0ZXJJbmRleD86IG51bWJlcjtcbiAgICB9IHwgbnVsbDtcbiAgICBpZiAoc3RhdGUgIT0gbnVsbCAmJiB0eXBlb2Ygc3RhdGUuX19wbHVtaWxlUm91dGVySW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl9fY3VycmVudEluZGV4ID0gc3RhdGUuX19wbHVtaWxlUm91dGVySW5kZXg7XG4gICAgICB0aGlzLl9faGlzdG9yeUluZGV4ID0gc3RhdGUuX19wbHVtaWxlUm91dGVySW5kZXg7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoLCBoYXNoIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHRhcmdldFVybCA9IGAke3BhdGhuYW1lfSR7c2VhcmNofSR7aGFzaH1gO1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiB3aW5kb3cubG9jYXRpb24uaHJlZiA9PT0gJ3N0cmluZycgJiZcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmICE9PSAnJ1xuICAgICkge1xuICAgICAgdGFyZ2V0VXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgfVxuXG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKFxuICAgICAge1xuICAgICAgICBfX3BsdW1pbGVSb3V0ZXJJbmRleDogdGhpcy5fX2N1cnJlbnRJbmRleCxcbiAgICAgIH0sXG4gICAgICAnJyxcbiAgICAgIHRhcmdldFVybCxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export { default as BrowserHistory } from './BrowserHistory.js';
2
+ export type * from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/history/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,mBAAmB,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default as BrowserHistory } from './BrowserHistory.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGlzdG9yeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxJQUFJLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQnJvd3NlciBoaXN0b3J5IGltcGxlbWVudGF0aW9uIHVzaW5nIEhUTUw1IEhpc3RvcnkgQVBJXG5leHBvcnQgeyBkZWZhdWx0IGFzIEJyb3dzZXJIaXN0b3J5IH0gZnJvbSAnLi9Ccm93c2VySGlzdG9yeS5qcyc7XG5cbi8vIFR5cGVTY3JpcHQgdHlwZXMgZm9yIGhpc3RvcnkgbWFuYWdlbWVudFxuZXhwb3J0IHR5cGUgKiBmcm9tICcuL3R5cGVzLmpzJztcbiJdfQ==