@praxisjs/router 0.1.0 → 0.2.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @praxisjs/router
2
2
 
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - bb0d4f8: **Refactor decorator system and component architecture across PraxisJS packages**
8
+
9
+ - Replaced legacy decorator signatures (`constructor`, `target`, `propertyKey`, method descriptor) with the standard TC39 decorator context API (`ClassDecoratorContext`, `ClassFieldDecoratorContext`, `ClassMethodDecoratorContext`) across `@praxisjs/decorators`, `@praxisjs/store`, `@praxisjs/concurrent`, `@praxisjs/router`, `@praxisjs/motion`, `@praxisjs/di`, and `@praxisjs/fsm`.
10
+ - Introduced `StatefulComponent` and `StatelessComponent` as the new base classes, replacing the deprecated `BaseComponent`/`Function Component` pattern, across `@praxisjs/core`, `@praxisjs/runtime`, `@praxisjs/devtools`, and templates.
11
+ - Implemented core rendering functionality in `@praxisjs/runtime` (`mountChildren`, `mountComponent`, reactive scope management) and removed the deprecated `renderer.ts`.
12
+ - Refactored `@praxisjs/jsx` to delegate rendering to `@praxisjs/runtime` and improved type safety with `flattenChildren` and `isComponent` utilities.
13
+ - Updated internal module structure with new `internal` exports in `package.json` files for shared utilities and types.
14
+ - Removed `experimentalDecorators`/`emitDecoratorMetadata` from `tsconfig.json` in favor of native decorator support.
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies [bb0d4f8]
19
+ - @praxisjs/decorators@0.3.0
20
+ - @praxisjs/core@0.3.0
21
+ - @praxisjs/jsx@0.2.0
22
+ - @praxisjs/shared@0.2.0
23
+
24
+ ## 0.1.1
25
+
26
+ ### Patch Changes
27
+
28
+ - Updated dependencies [f48dbc4]
29
+ - @praxisjs/core@0.2.0
30
+
3
31
  ## 0.1.0
4
32
 
5
33
  ### Minor Changes
@@ -1,4 +1,5 @@
1
- import type { Children, VNode } from "@praxisjs/shared";
1
+ import { StatelessComponent } from "@praxisjs/core";
2
+ import type { Children } from "@praxisjs/shared";
2
3
  interface LinkProps {
3
4
  to: string;
4
5
  replace?: boolean;
@@ -6,6 +7,8 @@ interface LinkProps {
6
7
  activeClass?: string;
7
8
  children?: Children | Children[];
8
9
  }
9
- export declare function Link({ to, replace, class: cls, activeClass, children, }: LinkProps): VNode;
10
+ export declare class Link extends StatelessComponent<LinkProps> {
11
+ render(): import("@praxisjs/jsx/jsx-runtime").JSX.Element;
12
+ }
10
13
  export {};
11
14
  //# sourceMappingURL=link.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIxD,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC;CAClC;AAED,wBAAgB,IAAI,CAAC,EACnB,EAAE,EACF,OAAe,EACf,KAAK,EAAE,GAAQ,EACf,WAAsB,EACtB,QAAQ,GACT,EAAE,SAAS,GAAG,KAAK,CAyBnB"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC;CAClC;AAED,qBACa,IAAK,SAAQ,kBAAkB,CAAC,SAAS,CAAC;IACrD,MAAM;CAiCP"}
@@ -1,18 +1,75 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
1
35
  import { jsx as _jsx } from "@praxisjs/jsx/jsx-runtime";
2
- import { computed } from "@praxisjs/core";
36
+ import { StatelessComponent } from "@praxisjs/core";
37
+ import { Component } from "@praxisjs/decorators";
3
38
  import { useRouter } from "../router";
4
- export function Link({ to, replace = false, class: cls = "", activeClass = "active", children, }) {
5
- const router = useRouter();
6
- const isActive = computed(() => router.location().path === to);
7
- const handleClick = (e) => {
8
- e.preventDefault();
9
- if (replace) {
10
- void router.replace(to);
39
+ let Link = (() => {
40
+ let _classDecorators = [Component()];
41
+ let _classDescriptor;
42
+ let _classExtraInitializers = [];
43
+ let _classThis;
44
+ let _classSuper = StatelessComponent;
45
+ var Link = class extends _classSuper {
46
+ static { _classThis = this; }
47
+ static {
48
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
49
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
50
+ Link = _classThis = _classDescriptor.value;
51
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
52
+ __runInitializers(_classThis, _classExtraInitializers);
11
53
  }
12
- else {
13
- void router.push(to);
54
+ render() {
55
+ const { to, replace = false, class: cls = "", activeClass = "active", children, } = this.props;
56
+ const router = useRouter();
57
+ const handleClick = (e) => {
58
+ e.preventDefault();
59
+ if (replace) {
60
+ void router.replace(to);
61
+ }
62
+ else {
63
+ void router.push(to);
64
+ }
65
+ };
66
+ return (_jsx("a", { href: to, class: () => {
67
+ const isActive = router.location().path === to;
68
+ return [cls, isActive ? activeClass : ""].filter(Boolean).join(" ");
69
+ }, onClick: handleClick, children: children }));
14
70
  }
15
71
  };
16
- return (_jsx("a", { href: to, class: () => [cls, isActive() ? activeClass : ""].filter(Boolean).join(" "), onClick: handleClick, children: children }));
17
- }
72
+ return Link = _classThis;
73
+ })();
74
+ export { Link };
18
75
  //# sourceMappingURL=link.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAUtC,MAAM,UAAU,IAAI,CAAC,EACnB,EAAE,EACF,OAAO,GAAG,KAAK,EACf,KAAK,EAAE,GAAG,GAAG,EAAE,EACf,WAAW,GAAG,QAAQ,EACtB,QAAQ,GACE;IACV,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IAE/D,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,YACE,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,GAAG,EAAE,CACV,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAEhE,OAAO,EAAE,WAAW,YAEnB,QAAQ,GACP,CACL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;IAWzB,IAAI;4BADhB,SAAS,EAAE;;;;sBACc,kBAAkB;oBAA1B,SAAQ,WAA6B;;;;YAAvD,6KAkCC;;;YAlCY,uDAAI;;QACf,MAAM;YACJ,MAAM,EACJ,EAAE,EACF,OAAO,GAAG,KAAK,EACf,KAAK,EAAE,GAAG,GAAG,EAAE,EACf,WAAW,GAAG,QAAQ,EACtB,QAAQ,GACT,GAAG,IAAI,CAAC,KAAK,CAAC;YAEf,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAE3B,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;gBACpC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,OAAO,EAAE,CAAC;oBACZ,KAAK,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC;YAEF,OAAO,CACL,YACE,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,GAAG,EAAE;oBACV,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;oBAC/C,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtE,CAAC,EACD,OAAO,EAAE,WAAW,YAEnB,QAAQ,GACP,CACL,CAAC;QACJ,CAAC;;;;SAjCU,IAAI"}
@@ -1,3 +1,5 @@
1
- import type { VNode } from "@praxisjs/shared";
2
- export declare function RouterView(): VNode;
1
+ import { StatelessComponent } from "@praxisjs/core";
2
+ export declare class RouterView extends StatelessComponent {
3
+ render(): import("@praxisjs/jsx/jsx-runtime").JSX.Element;
4
+ }
3
5
  //# sourceMappingURL=router-view.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router-view.d.ts","sourceRoot":"","sources":["../../src/components/router-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAI9C,wBAAgB,UAAU,IAAI,KAAK,CAWlC"}
1
+ {"version":3,"file":"router-view.d.ts","sourceRoot":"","sources":["../../src/components/router-view.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAKpD,qBACa,UAAW,SAAQ,kBAAkB;IAChD,MAAM;CAYP"}
@@ -1,10 +1,65 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
1
35
  import { jsx as _jsx } from "@praxisjs/jsx/jsx-runtime";
36
+ import { StatelessComponent } from "@praxisjs/core";
37
+ import { Component } from "@praxisjs/decorators";
2
38
  import { useRouter } from "../router";
3
- export function RouterView() {
4
- const router = useRouter();
5
- return (_jsx("div", { "data-router-view": "true", children: () => {
6
- const Component = router.currentComponent();
7
- return Component ? _jsx(Component, {}) : null;
8
- } }));
9
- }
39
+ let RouterView = (() => {
40
+ let _classDecorators = [Component()];
41
+ let _classDescriptor;
42
+ let _classExtraInitializers = [];
43
+ let _classThis;
44
+ let _classSuper = StatelessComponent;
45
+ var RouterView = class extends _classSuper {
46
+ static { _classThis = this; }
47
+ static {
48
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
49
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
50
+ RouterView = _classThis = _classDescriptor.value;
51
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
52
+ __runInitializers(_classThis, _classExtraInitializers);
53
+ }
54
+ render() {
55
+ const router = useRouter();
56
+ return (_jsx("div", { "data-router-view": "true", children: () => {
57
+ const RouteComponent = router.currentComponent();
58
+ return RouteComponent ? _jsx(RouteComponent, {}) : null;
59
+ } }));
60
+ }
61
+ };
62
+ return RouterView = _classThis;
63
+ })();
64
+ export { RouterView };
10
65
  //# sourceMappingURL=router-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router-view.js","sourceRoot":"","sources":["../../src/components/router-view.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,OAAO,CACL,kCAAsB,MAAM,YACzB,GAAG,EAAE;YACJ,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAC,CAAC,CAAC,KAAC,SAAS,KAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC,GACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"router-view.js","sourceRoot":"","sources":["../../src/components/router-view.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;IAGzB,UAAU;4BADtB,SAAS,EAAE;;;;sBACoB,kBAAkB;0BAA1B,SAAQ,WAAkB;;;;YAAlD,6KAaC;;;YAbY,uDAAU;;QACrB,MAAM;YACJ,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAE3B,OAAO,CACL,kCAAsB,MAAM,YACzB,GAAG,EAAE;oBACJ,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBACjD,OAAO,cAAc,CAAC,CAAC,CAAC,KAAC,cAAc,KAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpD,CAAC,GACG,CACP,CAAC;QACJ,CAAC;;;;SAZU,UAAU"}
@@ -1,2 +1,2 @@
1
- export declare function Route(path: string): <T extends new (...args: any[]) => any>(constructor: T) => T;
1
+ export declare function Route(path: string): (value: abstract new (...args: unknown[]) => unknown, _context: ClassDecoratorContext) => void;
2
2
  //# sourceMappingURL=decorators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,IAEf,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,aAAa,CAAC,KAAG,CAAC,CAQ3E"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,IACf,OAAO,QAAQ,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,UAAU,qBAAqB,KAAG,IAAI,CAO7G"}
@@ -1,12 +1,10 @@
1
1
  export function Route(path) {
2
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
3
- return function (constructor) {
4
- Object.defineProperty(constructor, "__routePath", {
2
+ return function (value, _context) {
3
+ Object.defineProperty(value, "__routePath", {
5
4
  value: path,
6
5
  writable: false,
7
6
  configurable: false,
8
7
  });
9
- return constructor;
10
8
  };
11
9
  }
12
10
  //# sourceMappingURL=decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,IAAY;IAChC,8DAA8D;IAC9D,OAAO,UAAiD,WAAc;QACpE,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,aAAa,EAAE;YAChD,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,IAAY;IAChC,OAAO,UAAU,KAAmD,EAAE,QAA+B;QACnG,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE;YAC1C,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIzD,OAAO,KAAK,EAEV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,UAAU,EACX,MAAM,eAAe,CAAC;AAEvB,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IAEJ,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAEzB,MAAM,EAAE,eAAe,EAAE;IA4BrC,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,MAAM;YAMA,gBAAgB;YAuBhB,sBAAsB;YAKtB,eAAe;IAUvB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBpE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D,IAAI,IAAI,IAAI;IAGZ,OAAO,IAAI,IAAI;IAIf,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGxB;AAKD,wBAAgB,IAAI,CAElB,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;CAAE,CAAC,GAC9D,kBAAkB,CAEpB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAG9D;AAED,wBAAgB,SAAS,IAAI,MAAM,CAGlC;AAED,wBAAgB,SAAS,IAAI,QAAQ,CAAC,WAAW,CAAC,CAEjD;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,CAE/C;AAED,wBAAgB,WAAW,IAAI,MAAM,CAAC,aAAa,CAAC,CAEnD"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIzD,OAAO,KAAK,EAEV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,UAAU,EACX,MAAM,eAAe,CAAC;AAEvB,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IAEJ,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAEzB,MAAM,EAAE,eAAe,EAAE;IA4BrC,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,MAAM;YAMA,gBAAgB;YAqBhB,sBAAsB;YAKtB,eAAe;IAUvB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBpE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D,IAAI,IAAI,IAAI;IAGZ,OAAO,IAAI,IAAI;IAIf,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGxB;AAID,wBAAgB,IAAI,CAElB,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;CAAE,CAAC,GAC9D,kBAAkB,CAEpB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAG9D;AAED,wBAAgB,SAAS,IAAI,MAAM,CAGlC;AAED,wBAAgB,SAAS,IAAI,QAAQ,CAAC,WAAW,CAAC,CAEjD;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,CAE/C;AAED,wBAAgB,WAAW,IAAI,MAAM,CAAC,aAAa,CAAC,CAEnD"}
package/dist/router.js CHANGED
@@ -1,10 +1,18 @@
1
- import { computed, signal } from "@praxisjs/core";
1
+ import { computed, signal } from "@praxisjs/core/internal";
2
2
  import { compilePath, parseQuery } from "./utils";
3
3
  export class Router {
4
+ compiled = [];
5
+ _location;
6
+ _prevLocation = null;
7
+ _component;
8
+ _loading;
9
+ _resolvedComponents = new Map();
10
+ location;
11
+ currentComponent;
12
+ loading;
13
+ params;
14
+ query;
4
15
  constructor(routes) {
5
- this.compiled = [];
6
- this._prevLocation = null;
7
- this._resolvedComponents = new Map();
8
16
  for (const route of routes) {
9
17
  this.addRoute(route);
10
18
  }
@@ -55,7 +63,7 @@ export class Router {
55
63
  return {};
56
64
  }
57
65
  isLazy(c) {
58
- return "__isLazy" in c && (c).__isLazy;
66
+ return "__isLazy" in c && c.__isLazy;
59
67
  }
60
68
  async resolveComponent(path) {
61
69
  for (const route of this.compiled) {
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisjs/router",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -14,9 +14,10 @@
14
14
  "typescript": "^5.9.3"
15
15
  },
16
16
  "dependencies": {
17
- "@praxisjs/core": "0.1.0",
18
- "@praxisjs/jsx": "0.1.0",
19
- "@praxisjs/shared": "0.1.0"
17
+ "@praxisjs/core": "0.3.0",
18
+ "@praxisjs/decorators": "0.3.0",
19
+ "@praxisjs/jsx": "0.2.0",
20
+ "@praxisjs/shared": "0.2.0"
20
21
  },
21
22
  "scripts": {
22
23
  "build": "tsc",
@@ -1,5 +1,6 @@
1
- import { computed } from "@praxisjs/core";
2
- import type { Children, VNode } from "@praxisjs/shared";
1
+ import { StatelessComponent } from "@praxisjs/core";
2
+ import { Component } from "@praxisjs/decorators";
3
+ import type { Children } from "@praxisjs/shared";
3
4
 
4
5
  import { useRouter } from "../router";
5
6
 
@@ -11,35 +12,39 @@ interface LinkProps {
11
12
  children?: Children | Children[];
12
13
  }
13
14
 
14
- export function Link({
15
- to,
16
- replace = false,
17
- class: cls = "",
18
- activeClass = "active",
19
- children,
20
- }: LinkProps): VNode {
21
- const router = useRouter();
15
+ @Component()
16
+ export class Link extends StatelessComponent<LinkProps> {
17
+ render() {
18
+ const {
19
+ to,
20
+ replace = false,
21
+ class: cls = "",
22
+ activeClass = "active",
23
+ children,
24
+ } = this.props;
22
25
 
23
- const isActive = computed(() => router.location().path === to);
26
+ const router = useRouter();
24
27
 
25
- const handleClick = (e: MouseEvent) => {
26
- e.preventDefault();
27
- if (replace) {
28
- void router.replace(to);
29
- } else {
30
- void router.push(to);
31
- }
32
- };
33
-
34
- return (
35
- <a
36
- href={to}
37
- class={() =>
38
- [cls, isActive() ? activeClass : ""].filter(Boolean).join(" ")
28
+ const handleClick = (e: MouseEvent) => {
29
+ e.preventDefault();
30
+ if (replace) {
31
+ void router.replace(to);
32
+ } else {
33
+ void router.push(to);
39
34
  }
40
- onClick={handleClick}
41
- >
42
- {children}
43
- </a>
44
- );
35
+ };
36
+
37
+ return (
38
+ <a
39
+ href={to}
40
+ class={() => {
41
+ const isActive = router.location().path === to;
42
+ return [cls, isActive ? activeClass : ""].filter(Boolean).join(" ");
43
+ }}
44
+ onClick={handleClick}
45
+ >
46
+ {children}
47
+ </a>
48
+ );
49
+ }
45
50
  }
@@ -1,16 +1,20 @@
1
- import type { VNode } from "@praxisjs/shared";
1
+ import { StatelessComponent } from "@praxisjs/core";
2
+ import { Component } from "@praxisjs/decorators";
2
3
 
3
4
  import { useRouter } from "../router";
4
5
 
5
- export function RouterView(): VNode {
6
- const router = useRouter();
6
+ @Component()
7
+ export class RouterView extends StatelessComponent {
8
+ render() {
9
+ const router = useRouter();
7
10
 
8
- return (
9
- <div data-router-view="true">
10
- {() => {
11
- const Component = router.currentComponent();
12
- return Component ? <Component /> : null;
13
- }}
14
- </div>
15
- );
11
+ return (
12
+ <div data-router-view="true">
13
+ {() => {
14
+ const RouteComponent = router.currentComponent();
15
+ return RouteComponent ? <RouteComponent /> : null;
16
+ }}
17
+ </div>
18
+ );
19
+ }
16
20
  }
package/src/decorators.ts CHANGED
@@ -1,11 +1,9 @@
1
1
  export function Route(path: string) {
2
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
3
- return function <T extends new (...args: any[]) => any>(constructor: T): T {
4
- Object.defineProperty(constructor, "__routePath", {
2
+ return function (value: abstract new (...args: unknown[]) => unknown, _context: ClassDecoratorContext): void {
3
+ Object.defineProperty(value, "__routePath", {
5
4
  value: path,
6
5
  writable: false,
7
6
  configurable: false,
8
7
  });
9
- return constructor;
10
8
  };
11
9
  }
package/src/router.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { computed, signal } from "@praxisjs/core";
1
+ import { computed, signal } from "@praxisjs/core/internal";
2
2
  import type { Signal, Computed } from "@praxisjs/shared";
3
3
 
4
4
  import { compilePath, parseQuery } from "./utils";
@@ -100,12 +100,10 @@ export class Router {
100
100
  private isLazy(
101
101
  c: RouteComponent | LazyRouteComponent,
102
102
  ): c is LazyRouteComponent {
103
- return "__isLazy" in c && (c).__isLazy;
103
+ return "__isLazy" in c && c.__isLazy;
104
104
  }
105
105
 
106
- private async resolveComponent(
107
- path: string,
108
- ): Promise<RouteComponent | null> {
106
+ private async resolveComponent(path: string): Promise<RouteComponent | null> {
109
107
  for (const route of this.compiled) {
110
108
  if (!route.regex.test(path)) continue;
111
109
  const { component } = route.definition;
@@ -190,7 +188,6 @@ export class Router {
190
188
 
191
189
  let _router: Router | null = null;
192
190
 
193
-
194
191
  export function lazy(
195
192
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
196
193
  loader: () => Promise<{ default: new (...args: any[]) => any }>,