@wcstack/router 1.3.11

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 (118) hide show
  1. package/README.ja.md +488 -0
  2. package/README.md +486 -0
  3. package/dist/GuardCancel.d.ts +6 -0
  4. package/dist/GuardCancel.d.ts.map +1 -0
  5. package/dist/GuardCancel.js +8 -0
  6. package/dist/GuardCancel.js.map +1 -0
  7. package/dist/Navigation.d.ts +7 -0
  8. package/dist/Navigation.d.ts.map +1 -0
  9. package/dist/Navigation.js +11 -0
  10. package/dist/Navigation.js.map +1 -0
  11. package/dist/applyRoute.d.ts +3 -0
  12. package/dist/applyRoute.d.ts.map +1 -0
  13. package/dist/applyRoute.js +40 -0
  14. package/dist/applyRoute.js.map +1 -0
  15. package/dist/assignParams.d.ts +2 -0
  16. package/dist/assignParams.d.ts.map +1 -0
  17. package/dist/assignParams.js +52 -0
  18. package/dist/assignParams.js.map +1 -0
  19. package/dist/auto.js +3 -0
  20. package/dist/auto.min.js +3 -0
  21. package/dist/bootstrapRouter.d.ts +8 -0
  22. package/dist/bootstrapRouter.d.ts.map +1 -0
  23. package/dist/bootstrapRouter.js +14 -0
  24. package/dist/bootstrapRouter.js.map +1 -0
  25. package/dist/builtinParamTypes.d.ts +38 -0
  26. package/dist/builtinParamTypes.d.ts.map +1 -0
  27. package/dist/builtinParamTypes.js +79 -0
  28. package/dist/builtinParamTypes.js.map +1 -0
  29. package/dist/components/Head.d.ts +29 -0
  30. package/dist/components/Head.d.ts.map +1 -0
  31. package/dist/components/Head.js +173 -0
  32. package/dist/components/Head.js.map +1 -0
  33. package/dist/components/Layout.d.ts +15 -0
  34. package/dist/components/Layout.d.ts.map +1 -0
  35. package/dist/components/Layout.js +86 -0
  36. package/dist/components/Layout.js.map +1 -0
  37. package/dist/components/LayoutOutlet.d.ts +15 -0
  38. package/dist/components/LayoutOutlet.d.ts.map +1 -0
  39. package/dist/components/LayoutOutlet.js +101 -0
  40. package/dist/components/LayoutOutlet.js.map +1 -0
  41. package/dist/components/Link.d.ts +25 -0
  42. package/dist/components/Link.d.ts.map +1 -0
  43. package/dist/components/Link.js +155 -0
  44. package/dist/components/Link.js.map +1 -0
  45. package/dist/components/Outlet.d.ts +16 -0
  46. package/dist/components/Outlet.d.ts.map +1 -0
  47. package/dist/components/Outlet.js +46 -0
  48. package/dist/components/Outlet.js.map +1 -0
  49. package/dist/components/Route.d.ts +61 -0
  50. package/dist/components/Route.d.ts.map +1 -0
  51. package/dist/components/Route.js +348 -0
  52. package/dist/components/Route.js.map +1 -0
  53. package/dist/components/Router.d.ts +62 -0
  54. package/dist/components/Router.d.ts.map +1 -0
  55. package/dist/components/Router.js +237 -0
  56. package/dist/components/Router.js.map +1 -0
  57. package/dist/components/types.d.ts +86 -0
  58. package/dist/components/types.d.ts.map +1 -0
  59. package/dist/components/types.js +2 -0
  60. package/dist/components/types.js.map +1 -0
  61. package/dist/config.d.ts +5 -0
  62. package/dist/config.d.ts.map +1 -0
  63. package/dist/config.js +53 -0
  64. package/dist/config.js.map +1 -0
  65. package/dist/exports.d.ts +3 -0
  66. package/dist/exports.d.ts.map +1 -0
  67. package/dist/exports.js +2 -0
  68. package/dist/exports.js.map +1 -0
  69. package/dist/getCustomTagName.d.ts +2 -0
  70. package/dist/getCustomTagName.d.ts.map +1 -0
  71. package/dist/getCustomTagName.js +12 -0
  72. package/dist/getCustomTagName.js.map +1 -0
  73. package/dist/getUUID.d.ts +2 -0
  74. package/dist/getUUID.d.ts.map +1 -0
  75. package/dist/getUUID.js +11 -0
  76. package/dist/getUUID.js.map +1 -0
  77. package/dist/hideRoute.d.ts +3 -0
  78. package/dist/hideRoute.d.ts.map +1 -0
  79. package/dist/hideRoute.js +7 -0
  80. package/dist/hideRoute.js.map +1 -0
  81. package/dist/index.d.ts +24 -0
  82. package/dist/index.esm.js +1682 -0
  83. package/dist/index.esm.js.map +1 -0
  84. package/dist/index.esm.min.js +2 -0
  85. package/dist/index.esm.min.js.map +1 -0
  86. package/dist/matchRoutes.d.ts +3 -0
  87. package/dist/matchRoutes.d.ts.map +1 -0
  88. package/dist/matchRoutes.js +52 -0
  89. package/dist/matchRoutes.js.map +1 -0
  90. package/dist/parse.d.ts +3 -0
  91. package/dist/parse.d.ts.map +1 -0
  92. package/dist/parse.js +77 -0
  93. package/dist/parse.js.map +1 -0
  94. package/dist/raiseError.d.ts +2 -0
  95. package/dist/raiseError.d.ts.map +1 -0
  96. package/dist/raiseError.js +4 -0
  97. package/dist/raiseError.js.map +1 -0
  98. package/dist/registerComponents.d.ts +2 -0
  99. package/dist/registerComponents.d.ts.map +1 -0
  100. package/dist/registerComponents.js +33 -0
  101. package/dist/registerComponents.js.map +1 -0
  102. package/dist/showRoute.d.ts +3 -0
  103. package/dist/showRoute.d.ts.map +1 -0
  104. package/dist/showRoute.js +38 -0
  105. package/dist/showRoute.js.map +1 -0
  106. package/dist/showRouteContent.d.ts +3 -0
  107. package/dist/showRouteContent.d.ts.map +1 -0
  108. package/dist/showRouteContent.js +38 -0
  109. package/dist/showRouteContent.js.map +1 -0
  110. package/dist/testPath.d.ts +3 -0
  111. package/dist/testPath.d.ts.map +1 -0
  112. package/dist/testPath.js +85 -0
  113. package/dist/testPath.js.map +1 -0
  114. package/dist/types.d.ts +38 -0
  115. package/dist/types.d.ts.map +1 -0
  116. package/dist/types.js +2 -0
  117. package/dist/types.js.map +1 -0
  118. package/package.json +74 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testPath.d.ts","sourceRoot":"","sources":["../src/testPath.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,iBAAiB,GAAG,IAAI,CA+ElG"}
@@ -0,0 +1,85 @@
1
+ import { builtinParamTypes } from "./builtinParamTypes";
2
+ export function testPath(route, path, segments) {
3
+ const params = {};
4
+ const typedParams = {};
5
+ let testResult = true;
6
+ let catchAllFound = false;
7
+ let i = 0, segIndex = 0;
8
+ while (i < route.absoluteSegmentInfos.length) {
9
+ const segmentInfo = route.absoluteSegmentInfos[i];
10
+ // index属性のルートはセグメントを消費しないのでスキップ
11
+ if (segmentInfo.isIndex) {
12
+ i++;
13
+ continue;
14
+ }
15
+ // 先頭の空セグメント(絶対パスの /)はsegmentsから除外されているのでスキップ
16
+ if (i === 0 && segmentInfo.segmentText === '' && segmentInfo.type === 'static') {
17
+ i++;
18
+ continue;
19
+ }
20
+ const segment = segments[segIndex];
21
+ if (segment === undefined) {
22
+ // セグメントが足りない
23
+ testResult = false;
24
+ break;
25
+ }
26
+ let match = false;
27
+ if (segmentInfo.type === "param") {
28
+ const paramType = segmentInfo.paramType || 'any';
29
+ const builtinParamType = builtinParamTypes[paramType];
30
+ const value = builtinParamType.parse(segment);
31
+ if (typeof value !== 'undefined') {
32
+ if (segmentInfo.paramName) {
33
+ params[segmentInfo.paramName] = segment;
34
+ typedParams[segmentInfo.paramName] = value;
35
+ }
36
+ match = true;
37
+ }
38
+ }
39
+ else {
40
+ match = segmentInfo.pattern.exec(segment) !== null;
41
+ }
42
+ if (match) {
43
+ if (segmentInfo.type === 'catch-all') {
44
+ // Catch-all: match remaining segments
45
+ const remainingSegments = segments.slice(segIndex).join('/');
46
+ params['*'] = remainingSegments;
47
+ typedParams['*'] = remainingSegments;
48
+ catchAllFound = true;
49
+ break; // No more segments to process
50
+ }
51
+ }
52
+ else {
53
+ testResult = false;
54
+ break;
55
+ }
56
+ i++;
57
+ segIndex++;
58
+ }
59
+ let finalResult = false;
60
+ if (testResult) {
61
+ if (catchAllFound) {
62
+ // catch-all は残り全部マッチ済み
63
+ finalResult = true;
64
+ }
65
+ else if (i === route.absoluteSegmentInfos.length && segIndex === segments.length) {
66
+ // 全セグメントが消費された
67
+ finalResult = true;
68
+ }
69
+ else if (i === route.absoluteSegmentInfos.length && segIndex === segments.length - 1 && segments.at(-1) === '') {
70
+ // 末尾スラッシュ対応: /users/ -> ['', 'users', '']
71
+ finalResult = true;
72
+ }
73
+ }
74
+ if (finalResult) {
75
+ return {
76
+ path: path,
77
+ routes: route.routes,
78
+ params: params,
79
+ typedParams: typedParams,
80
+ lastPath: ""
81
+ };
82
+ }
83
+ return null;
84
+ }
85
+ //# sourceMappingURL=testPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testPath.js","sourceRoot":"","sources":["../src/testPath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface ITagNames {
2
+ readonly route: string;
3
+ readonly router: string;
4
+ readonly outlet: string;
5
+ readonly layout: string;
6
+ readonly layoutOutlet: string;
7
+ readonly link: string;
8
+ readonly head: string;
9
+ }
10
+ export interface IWritableTagNames {
11
+ route?: string;
12
+ router?: string;
13
+ outlet?: string;
14
+ layout?: string;
15
+ layoutOutlet?: string;
16
+ link?: string;
17
+ head?: string;
18
+ }
19
+ export interface IConfig {
20
+ readonly tagNames: ITagNames;
21
+ readonly enableShadowRoot: boolean;
22
+ readonly basenameFileExtensions: ReadonlyArray<string>;
23
+ }
24
+ export interface IWritableConfig {
25
+ tagNames?: IWritableTagNames;
26
+ enableShadowRoot?: boolean;
27
+ basenameFileExtensions?: string[];
28
+ }
29
+ export interface IGuardCancel {
30
+ fallbackPath: string;
31
+ }
32
+ export type BuiltinParamTypes = "int" | "float" | "bool" | "uuid" | "slug" | "isoDate" | "any";
33
+ export interface IParamTypeInfo<T> {
34
+ readonly typeName: string;
35
+ readonly pattern: RegExp;
36
+ parse(value: string): T | undefined;
37
+ }
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,sBAAsB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;AAE/F,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;CACrC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "@wcstack/router",
3
+ "version": "1.3.11",
4
+ "description": "Declarative SPA routing for Web Components with Navigation API support. Zero dependencies, buildless.",
5
+ "type": "module",
6
+ "main": "./dist/index.esm.js",
7
+ "module": "./dist/index.esm.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.esm.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "directories": {
19
+ "example": "__e2e__"
20
+ },
21
+ "scripts": {
22
+ "clean": "rimraf dist",
23
+ "build": "rimraf dist && tsc && rollup -c",
24
+ "test": "vitest run",
25
+ "test:watch": "vitest",
26
+ "test:coverage": "vitest run --coverage",
27
+ "lint": "eslint src",
28
+ "version:patch": "npm version patch",
29
+ "version:minor": "npm version minor",
30
+ "version:major": "npm version major",
31
+ "prepublishOnly": "npm run build && npm run test:coverage"
32
+ },
33
+ "keywords": [
34
+ "web-components",
35
+ "router",
36
+ "spa",
37
+ "navigation-api",
38
+ "custom-elements",
39
+ "declarative",
40
+ "buildless",
41
+ "zero-dependencies",
42
+ "route-guard",
43
+ "layout"
44
+ ],
45
+ "author": "mogera551",
46
+ "homepage": "https://github.com/nicari/wcstack/tree/main/packages/router#readme",
47
+ "repository": {
48
+ "type": "git",
49
+ "url": "git+https://github.com/nicari/wcstack.git",
50
+ "directory": "packages/router"
51
+ },
52
+ "bugs": {
53
+ "url": "https://github.com/nicari/wcstack/issues"
54
+ },
55
+ "license": "MIT",
56
+ "devDependencies": {
57
+ "@eslint/js": "^9.39.1",
58
+ "@rollup/plugin-terser": "^0.4.4",
59
+ "@rollup/plugin-typescript": "^11.1.6",
60
+ "@vitest/coverage-v8": "^4.0.15",
61
+ "@vitest/ui": "^4.0.15",
62
+ "eslint": "^9.39.1",
63
+ "globals": "^16.5.0",
64
+ "happy-dom": "^20.0.11",
65
+ "rimraf": "^6.0.1",
66
+ "rollup": "^4.22.4",
67
+ "rollup-plugin-dts": "^6.1.1",
68
+ "rollup-plugin-copy": "^3.5.0",
69
+ "tslib": "^2.8.1",
70
+ "typescript": "^5.9.3",
71
+ "typescript-eslint": "^8.49.0",
72
+ "vitest": "^4.0.15"
73
+ }
74
+ }