@echojs-ecosystem/framework 0.1.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.
Files changed (92) hide show
  1. package/README.md +88 -0
  2. package/dist/app.d.ts +102 -0
  3. package/dist/app.js +176 -0
  4. package/dist/app.js.map +1 -0
  5. package/dist/core.d.ts +1 -0
  6. package/dist/core.js +3 -0
  7. package/dist/core.js.map +1 -0
  8. package/dist/devtools.d.ts +1 -0
  9. package/dist/devtools.js +3 -0
  10. package/dist/devtools.js.map +1 -0
  11. package/dist/form.d.ts +1 -0
  12. package/dist/form.js +3 -0
  13. package/dist/form.js.map +1 -0
  14. package/dist/hyperdom-lifecycle-mount.d.ts +1 -0
  15. package/dist/hyperdom-lifecycle-mount.js +3 -0
  16. package/dist/hyperdom-lifecycle-mount.js.map +1 -0
  17. package/dist/hyperdom.d.ts +1 -0
  18. package/dist/hyperdom.js +3 -0
  19. package/dist/hyperdom.js.map +1 -0
  20. package/dist/i18n.d.ts +1 -0
  21. package/dist/i18n.js +3 -0
  22. package/dist/i18n.js.map +1 -0
  23. package/dist/index.d.ts +28 -0
  24. package/dist/index.js +3 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/persist.d.ts +1 -0
  27. package/dist/persist.js +3 -0
  28. package/dist/persist.js.map +1 -0
  29. package/dist/query.d.ts +1 -0
  30. package/dist/query.js +3 -0
  31. package/dist/query.js.map +1 -0
  32. package/dist/reactivity.d.ts +1 -0
  33. package/dist/reactivity.js +3 -0
  34. package/dist/reactivity.js.map +1 -0
  35. package/dist/router.d.ts +1 -0
  36. package/dist/router.js +3 -0
  37. package/dist/router.js.map +1 -0
  38. package/dist/store.d.ts +1 -0
  39. package/dist/store.js +3 -0
  40. package/dist/store.js.map +1 -0
  41. package/dist/ui/button.d.ts +1 -0
  42. package/dist/ui/button.js +3 -0
  43. package/dist/ui/button.js.map +1 -0
  44. package/dist/ui/checkbox.d.ts +1 -0
  45. package/dist/ui/checkbox.js +3 -0
  46. package/dist/ui/checkbox.js.map +1 -0
  47. package/dist/ui/core.d.ts +1 -0
  48. package/dist/ui/core.js +3 -0
  49. package/dist/ui/core.js.map +1 -0
  50. package/dist/ui/field.d.ts +1 -0
  51. package/dist/ui/field.js +3 -0
  52. package/dist/ui/field.js.map +1 -0
  53. package/dist/ui/icon-button.d.ts +1 -0
  54. package/dist/ui/icon-button.js +3 -0
  55. package/dist/ui/icon-button.js.map +1 -0
  56. package/dist/ui/input-mask.d.ts +1 -0
  57. package/dist/ui/input-mask.js +3 -0
  58. package/dist/ui/input-mask.js.map +1 -0
  59. package/dist/ui/input-otp.d.ts +1 -0
  60. package/dist/ui/input-otp.js +3 -0
  61. package/dist/ui/input-otp.js.map +1 -0
  62. package/dist/ui/input-tags.d.ts +1 -0
  63. package/dist/ui/input-tags.js +3 -0
  64. package/dist/ui/input-tags.js.map +1 -0
  65. package/dist/ui/input.d.ts +1 -0
  66. package/dist/ui/input.js +3 -0
  67. package/dist/ui/input.js.map +1 -0
  68. package/dist/ui/label.d.ts +1 -0
  69. package/dist/ui/label.js +3 -0
  70. package/dist/ui/label.js.map +1 -0
  71. package/dist/ui/primitives.d.ts +1 -0
  72. package/dist/ui/primitives.js +3 -0
  73. package/dist/ui/primitives.js.map +1 -0
  74. package/dist/ui/provider.d.ts +1 -0
  75. package/dist/ui/provider.js +3 -0
  76. package/dist/ui/provider.js.map +1 -0
  77. package/dist/ui/textarea.d.ts +1 -0
  78. package/dist/ui/textarea.js +3 -0
  79. package/dist/ui/textarea.js.map +1 -0
  80. package/dist/ui/theme.d.ts +1 -0
  81. package/dist/ui/theme.js +3 -0
  82. package/dist/ui/theme.js.map +1 -0
  83. package/dist/ui/utils.d.ts +1 -0
  84. package/dist/ui/utils.js +3 -0
  85. package/dist/ui/utils.js.map +1 -0
  86. package/dist/ui.d.ts +1 -0
  87. package/dist/ui.js +3 -0
  88. package/dist/ui.js.map +1 -0
  89. package/dist/url-state.d.ts +1 -0
  90. package/dist/url-state.js +3 -0
  91. package/dist/url-state.js.map +1 -0
  92. package/package.json +173 -0
package/README.md ADDED
@@ -0,0 +1,88 @@
1
+ <div align="center">
2
+
3
+ # @echojs-ecosystem/framework
4
+
5
+ **One install for the entire EchoJS runtime — bootstrap, providers, and tree-shakeable subpath imports.**
6
+
7
+ [![npm](https://img.shields.io/npm/v/@echojs-ecosystem/framework)](https://www.npmjs.com/package/@echojs-ecosystem/framework)
8
+ [![docs](https://img.shields.io/badge/docs-echojs.dev-blue)](https://echojs.dev/docs/packages/framework)
9
+
10
+ </div>
11
+
12
+ ---
13
+
14
+ Install **`@echojs-ecosystem/framework`** once. Import only the subpaths you need — the bundler pulls a minimal graph from the underlying packages.
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ npm install @echojs-ecosystem/framework
20
+ ```
21
+
22
+ No separate installs for `query`, `i18n`, `router`, etc. — they are bundled as dependencies and re-exported through subpaths.
23
+
24
+ ## App bootstrap
25
+
26
+ ```ts
27
+ import { createEchoApp } from "@echojs-ecosystem/framework/app";
28
+ import { createQueryProvider } from "@echojs-ecosystem/framework/query";
29
+ import { createI18nProvider } from "@echojs-ecosystem/framework/i18n";
30
+ import { routes } from "./routes";
31
+ import en from "./locales/en.json";
32
+
33
+ createEchoApp({ strictContextChecks: true })
34
+ .use(createQueryProvider({ defaultOptions: { queries: { staleTime: 60_000 } } }))
35
+ .use(createI18nProvider({ locales: { en }, fallbackLocale: "en" }))
36
+ .use(routerProvider)
37
+ .mount("#app");
38
+ ```
39
+
40
+ ## Subpath map
41
+
42
+ | Subpath | Underlying package |
43
+ |---------|-------------------|
44
+ | `@echojs-ecosystem/framework/app` | App shell (`createEchoApp`, providers, DI) |
45
+ | `@echojs-ecosystem/framework/reactivity` | Signals, computed, effects |
46
+ | `@echojs-ecosystem/framework/hyperdom` | Views, `h()`, `createModel` |
47
+ | `@echojs-ecosystem/framework/router` | SPA router |
48
+ | `@echojs-ecosystem/framework/router/hyperdom` | `NavLink`, `createRouter` |
49
+ | `@echojs-ecosystem/framework/store` | Client state |
50
+ | `@echojs-ecosystem/framework/query` | Async cache, mutations |
51
+ | `@echojs-ecosystem/framework/form` | Fields & validation |
52
+ | `@echojs-ecosystem/framework/persist` | localStorage, cookies, IDB |
53
+ | `@echojs-ecosystem/framework/url-state` | Typed URL params |
54
+ | `@echojs-ecosystem/framework/i18n` | Translations & Intl |
55
+ | `@echojs-ecosystem/framework/ui` | UI barrel |
56
+ | `@echojs-ecosystem/framework/ui/button` | Button (and other UI subpaths) |
57
+ | `@echojs-ecosystem/framework/devtools` | DevTools registry (optional) |
58
+ | `@echojs-ecosystem/framework/core` | Low-level component runtime |
59
+
60
+ ### UI granular imports
61
+
62
+ ```ts
63
+ import { Button } from "@echojs-ecosystem/framework/ui/button";
64
+ import { Field } from "@echojs-ecosystem/framework/ui/field";
65
+ import { UIProvider } from "@echojs-ecosystem/framework/ui/provider";
66
+ import { createTheme } from "@echojs-ecosystem/framework/ui/theme";
67
+ ```
68
+
69
+ Available UI subpaths: `button`, `icon-button`, `input`, `input-mask`, `input-otp`, `input-tags`, `textarea`, `label`, `field`, `checkbox`, `provider`, `theme`, `core`, `utils`, `primitives`.
70
+
71
+ ## Typical imports
72
+
73
+ ```ts
74
+ import { signal, computed } from "@echojs-ecosystem/framework/reactivity";
75
+ import { div, button, createView } from "@echojs-ecosystem/framework/hyperdom";
76
+ import { createQuery } from "@echojs-ecosystem/framework/query";
77
+ import { createI18nProvider } from "@echojs-ecosystem/framework/i18n";
78
+ import { createStore } from "@echojs-ecosystem/framework/store";
79
+ import { withLocalStorage } from "@echojs-ecosystem/framework/persist";
80
+ ```
81
+
82
+ ## When to skip framework
83
+
84
+ Use individual `@echojs-ecosystem/*` packages if you want explicit `package.json` dependencies per layer (e.g. library that only needs `reactivity`).
85
+
86
+ ## Documentation
87
+
88
+ [echojs.dev/docs/packages/framework](https://echojs.dev/docs/packages/framework)
package/dist/app.d.ts ADDED
@@ -0,0 +1,102 @@
1
+ import { Child } from '@echojs-ecosystem/hyperdom';
2
+
3
+ type EchoRootSource = Child | (() => Child) | (() => Promise<Child>);
4
+ /** Router instance compatible with hyperdom `createRouter`. */
5
+ type EchoRouterSource = {
6
+ View: () => Child;
7
+ start(): void;
8
+ stop?(): void;
9
+ };
10
+ /** `class` / `id` applied to `document.body` on {@link EchoApp.mount}. */
11
+ type EchoBodyAttributes = {
12
+ class?: string | string[];
13
+ id?: string;
14
+ };
15
+ type EchoAppOptions = {
16
+ /** Static or lazy root view. Omit when using a router via `app.use(router)`. */
17
+ view?: EchoRootSource;
18
+ /**
19
+ * Hyperdom: error when `h()` / lifecycle hooks run outside an active view.
20
+ * @default true (hyperdom default)
21
+ */
22
+ strictContextChecks?: boolean;
23
+ /** Global document body attributes (e.g. scoped CSS: `body.echojs-lab`). */
24
+ body?: EchoBodyAttributes;
25
+ /**
26
+ * When `false`, {@link EchoApp.mount} paints before async provider `setup()` finishes.
27
+ * @default true
28
+ */
29
+ awaitProviders?: boolean;
30
+ };
31
+ type EchoProvider = {
32
+ name?: string;
33
+ /** Runs when {@link EchoApp.use} is called (like Vue `install`). */
34
+ setup?: (app: EchoApp) => void | Promise<void>;
35
+ /** Supplies the innermost root (e.g. router outlet). */
36
+ resolveRoot?: () => Child | Promise<Child>;
37
+ /** Wraps the root view outward in registration order. */
38
+ wrapRoot?: (inner: () => Child) => () => Child;
39
+ };
40
+ /** @deprecated Use {@link EchoProvider} */
41
+ type EchoPlugin = EchoProvider;
42
+ type EchoUseInput = EchoProvider | EchoRouterSource;
43
+ type EchoApp = {
44
+ use(plugin: EchoUseInput): EchoApp;
45
+ provide<T>(key: EchoProvideKey, value: T): EchoApp;
46
+ inject<T>(key: EchoProvideKey): T | undefined;
47
+ has(key: EchoProvideKey): boolean;
48
+ mount(target: string | Element): Promise<() => void>;
49
+ };
50
+ type EchoProvideKey = symbol | string;
51
+
52
+ declare function createEchoApp(): EchoApp;
53
+ declare function createEchoApp(root: EchoRootSource): EchoApp;
54
+ declare function createEchoApp(options: EchoAppOptions): EchoApp;
55
+
56
+ /**
57
+ * Declares a custom root view (when not using `app.use(router)`).
58
+ *
59
+ * ```ts
60
+ * export const appRoot = defineAppRoot({ view: () => AppView() });
61
+ * createEchoApp(appRoot).use(query).mount("#app");
62
+ * ```
63
+ */
64
+ declare const defineAppRoot: (options: EchoAppOptions) => EchoAppOptions;
65
+
66
+ type CreateProviderOptions<TInstance = void> = {
67
+ name: string;
68
+ /** Runs when the factory is called (usually at module load). */
69
+ install?: () => TInstance;
70
+ /** Runs on `app.use(provider)`. Receives the value from `install`. */
71
+ setup?: (app: EchoApp, instance: TInstance) => void | Promise<void>;
72
+ /** Registers `install()` result on the app via `provide`. */
73
+ provideKey?: EchoProvideKey;
74
+ wrapRoot?: EchoProvider["wrapRoot"];
75
+ };
76
+ type EchoProviderWithInstance<TInstance> = EchoProvider & {
77
+ readonly instance: TInstance;
78
+ };
79
+ /**
80
+ * Factory for Echo app providers (Vue-style `install` + `setup`).
81
+ *
82
+ * ```ts
83
+ * export const theme = createProvider({
84
+ * name: "theme",
85
+ * setup: async () => { await initTheme(); },
86
+ * });
87
+ * ```
88
+ */
89
+ declare const createProvider: <TInstance = void>(options: CreateProviderOptions<TInstance>) => EchoProviderWithInstance<TInstance>;
90
+
91
+ /** Identity helper for app-level providers (i18n, router, …). */
92
+ declare const defineProvider: <T extends EchoProvider>(provider: T) => T;
93
+ /** @deprecated Use {@link defineProvider} */
94
+ declare const definePlugin: <T extends EchoProvider>(provider: T) => T;
95
+
96
+ declare const ROUTER_KEY: unique symbol;
97
+
98
+ declare const injectRouter: <TRouter extends EchoRouterSource = EchoRouterSource>(app: EchoApp) => TRouter;
99
+
100
+ declare const isEchoRouter: (value: unknown) => value is EchoRouterSource;
101
+
102
+ export { type CreateProviderOptions as CreatePluginOptions, type CreateProviderOptions, type EchoApp, type EchoAppOptions, type EchoBodyAttributes, type EchoPlugin, type EchoProviderWithInstance as EchoPluginWithInstance, type EchoProvideKey, type EchoProvider, type EchoProviderWithInstance, type EchoRootSource, type EchoRouterSource, type EchoUseInput, ROUTER_KEY, createEchoApp, createProvider as createPlugin, createProvider, defineAppRoot, definePlugin, defineProvider, injectRouter, isEchoRouter };
package/dist/app.js ADDED
@@ -0,0 +1,176 @@
1
+ import { setStrictContextChecks, render } from '@echojs-ecosystem/hyperdom';
2
+ import { isRouterLike, createRouterProvider } from '@echojs-ecosystem/router';
3
+
4
+ // src/app/create-echo-app.ts
5
+
6
+ // src/app/apply-body-attributes.ts
7
+ var toClassTokens = (value) => {
8
+ if (Array.isArray(value)) {
9
+ return value.flatMap((item) => item.split(/\s+/).filter(Boolean));
10
+ }
11
+ return value.split(/\s+/).filter(Boolean);
12
+ };
13
+ var applyBodyAttributes = (body) => {
14
+ if (body === void 0 || typeof document === "undefined") {
15
+ return;
16
+ }
17
+ if (body.id !== void 0) {
18
+ document.body.id = body.id;
19
+ }
20
+ if (body.class !== void 0) {
21
+ document.body.classList.add(...toClassTokens(body.class));
22
+ }
23
+ };
24
+ var normalizeEchoProvider = (input) => {
25
+ if (isRouterLike(input)) {
26
+ return createRouterProvider(input);
27
+ }
28
+ return input;
29
+ };
30
+ var isEchoRouter = (value) => isRouterLike(value);
31
+
32
+ // src/app/resolve-app-options.ts
33
+ var ROUTER_KEY = /* @__PURE__ */ Symbol.for("echojs.router");
34
+ var isEchoAppOptions = (input) => {
35
+ if (input === void 0 || typeof input !== "object" || input === null) {
36
+ return false;
37
+ }
38
+ return "view" in input || "strictContextChecks" in input || "body" in input || "awaitProviders" in input;
39
+ };
40
+ var normalizeEchoAppOptions = (input) => {
41
+ if (input === void 0) {
42
+ return {};
43
+ }
44
+ if (!isEchoAppOptions(input)) {
45
+ return { view: input };
46
+ }
47
+ return input;
48
+ };
49
+ var resolveAppRoot = async (options) => {
50
+ const view = options.view;
51
+ if (view === void 0) {
52
+ throw new Error("echojs: app root requires `view` in createEchoApp() or `app.use(router)`");
53
+ }
54
+ if (typeof view === "function") {
55
+ return await view();
56
+ }
57
+ return view;
58
+ };
59
+ var resolveProviderRoot = async (providers) => {
60
+ const rootProvider = providers.find((p) => typeof p.resolveRoot === "function");
61
+ if (!rootProvider?.resolveRoot) {
62
+ throw new Error("echojs: pass `view` to createEchoApp() or register a router via `app.use(router)`");
63
+ }
64
+ return await rootProvider.resolveRoot();
65
+ };
66
+
67
+ // src/app/create-echo-app.ts
68
+ var resolveMountTarget = (target) => {
69
+ if (typeof target !== "string") {
70
+ if (!(target instanceof Element)) {
71
+ throw new Error("echojs: mount target must be an Element");
72
+ }
73
+ return target;
74
+ }
75
+ const el = document.querySelector(target);
76
+ if (!el || !(el instanceof Element)) {
77
+ throw new Error(`echojs: mount target not found: ${target}`);
78
+ }
79
+ return el;
80
+ };
81
+ function createEchoApp(input) {
82
+ const options = normalizeEchoAppOptions(input);
83
+ if (options.strictContextChecks !== void 0) {
84
+ setStrictContextChecks(options.strictContextChecks);
85
+ }
86
+ const providers = [];
87
+ const provided = /* @__PURE__ */ new Map();
88
+ const pendingSetups = [];
89
+ const app = {
90
+ use(providerInput) {
91
+ const provider = normalizeEchoProvider(providerInput);
92
+ providers.push(provider);
93
+ if (provider.setup) {
94
+ const result = provider.setup(app);
95
+ if (result instanceof Promise) {
96
+ pendingSetups.push(result);
97
+ }
98
+ }
99
+ return app;
100
+ },
101
+ provide(key, value) {
102
+ provided.set(key, value);
103
+ return app;
104
+ },
105
+ inject(key) {
106
+ return provided.get(key);
107
+ },
108
+ has(key) {
109
+ return provided.has(key);
110
+ },
111
+ async mount(target) {
112
+ const awaitProviders = options.awaitProviders !== false;
113
+ const setups = Promise.all(pendingSetups);
114
+ if (awaitProviders) {
115
+ await setups;
116
+ }
117
+ applyBodyAttributes(options.body);
118
+ const resolvedRoot = options.view !== void 0 ? await resolveAppRoot(options) : await resolveProviderRoot(providers);
119
+ let renderRoot = () => resolvedRoot;
120
+ for (const provider of providers) {
121
+ if (!provider.wrapRoot) continue;
122
+ const previous = renderRoot;
123
+ renderRoot = provider.wrapRoot(previous);
124
+ }
125
+ const dispose = render(renderRoot(), resolveMountTarget(target));
126
+ return dispose;
127
+ }
128
+ };
129
+ return app;
130
+ }
131
+
132
+ // src/app/define-app-root.ts
133
+ var defineAppRoot = (options) => {
134
+ if (options.view === void 0) {
135
+ throw new Error("echojs: defineAppRoot requires `view` (use `app.use(router)` for routing)");
136
+ }
137
+ return options;
138
+ };
139
+
140
+ // src/app/define-plugin.ts
141
+ var defineProvider = (provider) => provider;
142
+ var definePlugin = defineProvider;
143
+
144
+ // src/app/create-provider.ts
145
+ var createProvider = (options) => {
146
+ const instance = options.install?.();
147
+ const provider = defineProvider({
148
+ name: options.name,
149
+ wrapRoot: options.wrapRoot,
150
+ async setup(app) {
151
+ const value = instance ?? options.install?.();
152
+ if (options.provideKey !== void 0 && value !== void 0) {
153
+ app.provide(options.provideKey, value);
154
+ }
155
+ if (options.setup) {
156
+ await options.setup(app, value);
157
+ }
158
+ }
159
+ });
160
+ return Object.assign(provider, { instance });
161
+ };
162
+
163
+ // src/app/inject-router.ts
164
+ var injectRouter = (app) => {
165
+ const router = app.inject(ROUTER_KEY);
166
+ if (!router) {
167
+ throw new Error(
168
+ "echojs: router is not available. Pass `router` to defineAppRoot() or app.use(createRouterProvider(...))."
169
+ );
170
+ }
171
+ return router;
172
+ };
173
+
174
+ export { ROUTER_KEY, createEchoApp, createProvider as createPlugin, createProvider, defineAppRoot, definePlugin, defineProvider, injectRouter, isEchoRouter };
175
+ //# sourceMappingURL=app.js.map
176
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/apply-body-attributes.ts","../src/app/normalize-plugin.ts","../src/app/resolve-app-options.ts","../src/app/create-echo-app.ts","../src/app/define-app-root.ts","../src/app/define-plugin.ts","../src/app/create-provider.ts","../src/app/inject-router.ts"],"names":[],"mappings":"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","file":"app.js","sourcesContent":["import type { EchoBodyAttributes } from \"./types\";\n\nconst toClassTokens = (value: string | string[]): string[] => {\n if (Array.isArray(value)) {\n return value.flatMap((item) => item.split(/\\s+/).filter(Boolean));\n }\n return value.split(/\\s+/).filter(Boolean);\n};\n\n/** Applies {@link EchoAppOptions.body} to `document.body` before mount (browser only). */\nexport const applyBodyAttributes = (body: EchoBodyAttributes | undefined): void => {\n if (body === undefined || typeof document === \"undefined\") {\n return;\n }\n\n if (body.id !== undefined) {\n document.body.id = body.id;\n }\n\n if (body.class !== undefined) {\n document.body.classList.add(...toClassTokens(body.class));\n }\n};\n","import { createRouterProvider, isRouterLike } from \"@echojs-ecosystem/router\";\n\nimport type { EchoProvider, EchoRouterSource, EchoUseInput } from \"./types\";\n\nexport const normalizeEchoProvider = (input: EchoUseInput): EchoProvider => {\n if (isRouterLike(input)) {\n return createRouterProvider(input) as EchoProvider;\n }\n return input as EchoProvider;\n};\n\n/** @deprecated Use {@link normalizeEchoProvider} */\nexport const normalizeEchoPlugin = normalizeEchoProvider;\n\nexport const isEchoRouter = (value: unknown): value is EchoRouterSource => isRouterLike(value);\n","import type { Child } from \"@echojs-ecosystem/hyperdom\";\n\nimport type { EchoAppOptions, EchoProvider, EchoRootSource } from \"./types\";\n\nexport const ROUTER_KEY = Symbol.for(\"echojs.router\");\n\nexport const isEchoAppOptions = (\n input: EchoRootSource | EchoAppOptions | undefined,\n): input is EchoAppOptions => {\n if (input === undefined || typeof input !== \"object\" || input === null) {\n return false;\n }\n return (\n \"view\" in input ||\n \"strictContextChecks\" in input ||\n \"body\" in input ||\n \"awaitProviders\" in input\n );\n};\n\nexport const normalizeEchoAppOptions = (\n input?: EchoRootSource | EchoAppOptions,\n): EchoAppOptions => {\n if (input === undefined) {\n return {};\n }\n if (!isEchoAppOptions(input)) {\n return { view: input };\n }\n return input;\n};\n\nexport const resolveAppRoot = async (options: EchoAppOptions): Promise<Child> => {\n const view = options.view;\n if (view === undefined) {\n throw new Error(\"echojs: app root requires `view` in createEchoApp() or `app.use(router)`\");\n }\n\n if (typeof view === \"function\") {\n return await view();\n }\n return view;\n};\n\nexport const resolveProviderRoot = async (providers: EchoProvider[]): Promise<Child> => {\n const rootProvider = providers.find((p) => typeof p.resolveRoot === \"function\");\n if (!rootProvider?.resolveRoot) {\n throw new Error(\"echojs: pass `view` to createEchoApp() or register a router via `app.use(router)`\");\n }\n return await rootProvider.resolveRoot();\n};\n\n/** @deprecated Use {@link resolveProviderRoot} */\nexport const resolvePluginRoot = resolveProviderRoot;\n","import { render, setStrictContextChecks } from \"@echojs-ecosystem/hyperdom\";\nimport type { Child } from \"@echojs-ecosystem/hyperdom\";\n\nimport { applyBodyAttributes } from \"./apply-body-attributes\";\nimport { normalizeEchoProvider } from \"./normalize-plugin\";\nimport type { EchoApp, EchoAppOptions, EchoProvider, EchoProvideKey, EchoRootSource, EchoUseInput } from \"./types\";\nimport {\n normalizeEchoAppOptions,\n resolveAppRoot,\n resolveProviderRoot,\n} from \"./resolve-app-options\";\n\nconst resolveMountTarget = (target: string | Element): Element => {\n if (typeof target !== \"string\") {\n if (!(target instanceof Element)) {\n throw new Error(\"echojs: mount target must be an Element\");\n }\n return target;\n }\n\n const el = document.querySelector(target);\n if (!el || !(el instanceof Element)) {\n throw new Error(`echojs: mount target not found: ${target}`);\n }\n return el;\n};\n\nexport function createEchoApp(): EchoApp;\nexport function createEchoApp(root: EchoRootSource): EchoApp;\nexport function createEchoApp(options: EchoAppOptions): EchoApp;\nexport function createEchoApp(input?: EchoRootSource | EchoAppOptions): EchoApp {\n const options = normalizeEchoAppOptions(input);\n\n if (options.strictContextChecks !== undefined) {\n setStrictContextChecks(options.strictContextChecks);\n }\n\n const providers: EchoProvider[] = [];\n const provided = new Map<EchoProvideKey, unknown>();\n const pendingSetups: Promise<void>[] = [];\n\n const app: EchoApp = {\n use(providerInput) {\n const provider = normalizeEchoProvider(providerInput as EchoUseInput);\n providers.push(provider);\n if (provider.setup) {\n const result = provider.setup(app);\n if (result instanceof Promise) {\n pendingSetups.push(result);\n }\n }\n return app;\n },\n\n provide(key, value) {\n provided.set(key, value);\n return app;\n },\n\n inject(key) {\n return provided.get(key) as undefined;\n },\n\n has(key) {\n return provided.has(key);\n },\n\n async mount(target) {\n const awaitProviders = options.awaitProviders !== false;\n const setups = Promise.all(pendingSetups);\n\n if (awaitProviders) {\n await setups;\n }\n\n applyBodyAttributes(options.body);\n\n const resolvedRoot =\n options.view !== undefined\n ? await resolveAppRoot(options)\n : await resolveProviderRoot(providers);\n\n let renderRoot: () => Child = () => resolvedRoot;\n\n for (const provider of providers) {\n if (!provider.wrapRoot) continue;\n const previous = renderRoot;\n renderRoot = provider.wrapRoot(previous);\n }\n\n const dispose = render(renderRoot(), resolveMountTarget(target));\n\n if (!awaitProviders) {\n void setups;\n }\n\n return dispose;\n },\n };\n\n return app;\n}\n","import type { EchoAppOptions } from \"./types\";\n\n/**\n * Declares a custom root view (when not using `app.use(router)`).\n *\n * ```ts\n * export const appRoot = defineAppRoot({ view: () => AppView() });\n * createEchoApp(appRoot).use(query).mount(\"#app\");\n * ```\n */\nexport const defineAppRoot = (options: EchoAppOptions): EchoAppOptions => {\n if (options.view === undefined) {\n throw new Error(\"echojs: defineAppRoot requires `view` (use `app.use(router)` for routing)\");\n }\n return options;\n};\n","import type { EchoProvider } from \"./types\";\n\n/** Identity helper for app-level providers (i18n, router, …). */\nexport const defineProvider = <T extends EchoProvider>(provider: T): T => provider;\n\n/** @deprecated Use {@link defineProvider} */\nexport const definePlugin = defineProvider;\n","import { defineProvider } from \"./define-plugin\";\nimport type { EchoApp, EchoProvider, EchoProvideKey } from \"./types\";\n\nexport type CreateProviderOptions<TInstance = void> = {\n name: string;\n /** Runs when the factory is called (usually at module load). */\n install?: () => TInstance;\n /** Runs on `app.use(provider)`. Receives the value from `install`. */\n setup?: (app: EchoApp, instance: TInstance) => void | Promise<void>;\n /** Registers `install()` result on the app via `provide`. */\n provideKey?: EchoProvideKey;\n wrapRoot?: EchoProvider[\"wrapRoot\"];\n};\n\nexport type EchoProviderWithInstance<TInstance> = EchoProvider & {\n readonly instance: TInstance;\n};\n\n/**\n * Factory for Echo app providers (Vue-style `install` + `setup`).\n *\n * ```ts\n * export const theme = createProvider({\n * name: \"theme\",\n * setup: async () => { await initTheme(); },\n * });\n * ```\n */\nexport const createProvider = <TInstance = void>(\n options: CreateProviderOptions<TInstance>,\n): EchoProviderWithInstance<TInstance> => {\n const instance = options.install?.() as TInstance;\n\n const provider = defineProvider({\n name: options.name,\n wrapRoot: options.wrapRoot,\n async setup(app) {\n const value = (instance ?? options.install?.()) as TInstance;\n\n if (options.provideKey !== undefined && value !== undefined) {\n app.provide(options.provideKey, value);\n }\n\n if (options.setup) {\n await options.setup(app, value);\n }\n },\n });\n\n return Object.assign(provider, { instance }) as EchoProviderWithInstance<TInstance>;\n};\n","import type { EchoApp } from \"./types\";\nimport type { EchoRouterSource } from \"./types\";\nimport { ROUTER_KEY } from \"./resolve-app-options\";\n\nexport const injectRouter = <TRouter extends EchoRouterSource = EchoRouterSource>(\n app: EchoApp,\n): TRouter => {\n const router = app.inject<TRouter>(ROUTER_KEY);\n if (!router) {\n throw new Error(\n \"echojs: router is not available. Pass `router` to defineAppRoot() or app.use(createRouterProvider(...)).\",\n );\n }\n return router;\n};\n"]}
package/dist/core.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/core';
package/dist/core.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/core';
2
+ //# sourceMappingURL=core.js.map
3
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"core.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/devtools';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/devtools';
2
+ //# sourceMappingURL=devtools.js.map
3
+ //# sourceMappingURL=devtools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"devtools.js","sourcesContent":[]}
package/dist/form.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/form';
package/dist/form.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/form';
2
+ //# sourceMappingURL=form.js.map
3
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"form.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/hyperdom/lifecycle/mount';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/hyperdom/lifecycle/mount';
2
+ //# sourceMappingURL=hyperdom-lifecycle-mount.js.map
3
+ //# sourceMappingURL=hyperdom-lifecycle-mount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"hyperdom-lifecycle-mount.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/hyperdom';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/hyperdom';
2
+ //# sourceMappingURL=hyperdom.js.map
3
+ //# sourceMappingURL=hyperdom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"hyperdom.js","sourcesContent":[]}
package/dist/i18n.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/i18n';
package/dist/i18n.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/i18n';
2
+ //# sourceMappingURL=i18n.js.map
3
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"i18n.js","sourcesContent":[]}
@@ -0,0 +1,28 @@
1
+ import '@echojs-ecosystem/core';
2
+ import '@echojs-ecosystem/reactivity';
3
+ import '@echojs-ecosystem/router';
4
+ import '@echojs-ecosystem/form';
5
+ import '@echojs-ecosystem/persist';
6
+ import '@echojs-ecosystem/store';
7
+ import '@echojs-ecosystem/query';
8
+ import '@echojs-ecosystem/i18n';
9
+ import '@echojs-ecosystem/devtools';
10
+ import '@echojs-ecosystem/ui';
11
+ import '@echojs-ecosystem/hyperdom';
12
+ import '@echojs-ecosystem/hyperdom/lifecycle/mount';
13
+ import '@echojs-ecosystem/url-state';
14
+ import '@echojs-ecosystem/ui/button';
15
+ import '@echojs-ecosystem/ui/icon-button';
16
+ import '@echojs-ecosystem/ui/input';
17
+ import '@echojs-ecosystem/ui/input-mask';
18
+ import '@echojs-ecosystem/ui/input-otp';
19
+ import '@echojs-ecosystem/ui/input-tags';
20
+ import '@echojs-ecosystem/ui/textarea';
21
+ import '@echojs-ecosystem/ui/label';
22
+ import '@echojs-ecosystem/ui/field';
23
+ import '@echojs-ecosystem/ui/checkbox';
24
+ import '@echojs-ecosystem/ui/provider';
25
+ import '@echojs-ecosystem/ui/theme';
26
+ import '@echojs-ecosystem/ui/core';
27
+ import '@echojs-ecosystem/ui/utils';
28
+ import '@echojs-ecosystem/ui/primitives';
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/persist';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/persist';
2
+ //# sourceMappingURL=persist.js.map
3
+ //# sourceMappingURL=persist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"persist.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/query';
package/dist/query.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/query';
2
+ //# sourceMappingURL=query.js.map
3
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"query.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/reactivity';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/reactivity';
2
+ //# sourceMappingURL=reactivity.js.map
3
+ //# sourceMappingURL=reactivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"reactivity.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/router';
package/dist/router.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/router';
2
+ //# sourceMappingURL=router.js.map
3
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"router.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/store';
package/dist/store.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/store';
2
+ //# sourceMappingURL=store.js.map
3
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"store.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/button';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/button';
2
+ //# sourceMappingURL=button.js.map
3
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"button.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/checkbox';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/checkbox';
2
+ //# sourceMappingURL=checkbox.js.map
3
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"checkbox.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/core';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/core';
2
+ //# sourceMappingURL=core.js.map
3
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"core.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/field';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/field';
2
+ //# sourceMappingURL=field.js.map
3
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"field.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/icon-button';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/icon-button';
2
+ //# sourceMappingURL=icon-button.js.map
3
+ //# sourceMappingURL=icon-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"icon-button.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/input-mask';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/input-mask';
2
+ //# sourceMappingURL=input-mask.js.map
3
+ //# sourceMappingURL=input-mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"input-mask.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/input-otp';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/input-otp';
2
+ //# sourceMappingURL=input-otp.js.map
3
+ //# sourceMappingURL=input-otp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"input-otp.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/input-tags';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/input-tags';
2
+ //# sourceMappingURL=input-tags.js.map
3
+ //# sourceMappingURL=input-tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"input-tags.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/input';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/input';
2
+ //# sourceMappingURL=input.js.map
3
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"input.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/label';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/label';
2
+ //# sourceMappingURL=label.js.map
3
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"label.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/primitives';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/primitives';
2
+ //# sourceMappingURL=primitives.js.map
3
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"primitives.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/provider';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/provider';
2
+ //# sourceMappingURL=provider.js.map
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"provider.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/textarea';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/textarea';
2
+ //# sourceMappingURL=textarea.js.map
3
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"textarea.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/theme';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/theme';
2
+ //# sourceMappingURL=theme.js.map
3
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"theme.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui/utils';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui/utils';
2
+ //# sourceMappingURL=utils.js.map
3
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"utils.js","sourcesContent":[]}
package/dist/ui.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/ui';
package/dist/ui.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/ui';
2
+ //# sourceMappingURL=ui.js.map
3
+ //# sourceMappingURL=ui.js.map
package/dist/ui.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ui.js","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ export * from '@echojs-ecosystem/url-state';
@@ -0,0 +1,3 @@
1
+ export * from '@echojs-ecosystem/url-state';
2
+ //# sourceMappingURL=url-state.js.map
3
+ //# sourceMappingURL=url-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"url-state.js","sourcesContent":[]}
package/package.json ADDED
@@ -0,0 +1,173 @@
1
+ {
2
+ "name": "@echojs-ecosystem/framework",
3
+ "version": "0.1.0",
4
+ "description": "EchoJS meta-package — app bootstrap, providers, and tree-shakeable subpath re-exports for the full ecosystem",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "type": "module",
9
+ "sideEffects": false,
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "./app": {
16
+ "types": "./dist/app.d.ts",
17
+ "default": "./dist/app.js"
18
+ },
19
+ "./core": {
20
+ "types": "./dist/core.d.ts",
21
+ "default": "./dist/core.js"
22
+ },
23
+ "./reactivity": {
24
+ "types": "./dist/reactivity.d.ts",
25
+ "default": "./dist/reactivity.js"
26
+ },
27
+ "./hyperdom": {
28
+ "types": "./dist/hyperdom.d.ts",
29
+ "default": "./dist/hyperdom.js"
30
+ },
31
+ "./hyperdom/lifecycle/mount": {
32
+ "types": "./dist/hyperdom-lifecycle-mount.d.ts",
33
+ "default": "./dist/hyperdom-lifecycle-mount.js"
34
+ },
35
+ "./router": {
36
+ "types": "./dist/router.d.ts",
37
+ "default": "./dist/router.js"
38
+ },
39
+ "./router/hyperdom": {
40
+ "types": "./dist/router.d.ts",
41
+ "default": "./dist/router.js"
42
+ },
43
+ "./form": {
44
+ "types": "./dist/form.d.ts",
45
+ "default": "./dist/form.js"
46
+ },
47
+ "./store": {
48
+ "types": "./dist/store.d.ts",
49
+ "default": "./dist/store.js"
50
+ },
51
+ "./query": {
52
+ "types": "./dist/query.d.ts",
53
+ "default": "./dist/query.js"
54
+ },
55
+ "./persist": {
56
+ "types": "./dist/persist.d.ts",
57
+ "default": "./dist/persist.js"
58
+ },
59
+ "./url-state": {
60
+ "types": "./dist/url-state.d.ts",
61
+ "default": "./dist/url-state.js"
62
+ },
63
+ "./i18n": {
64
+ "types": "./dist/i18n.d.ts",
65
+ "default": "./dist/i18n.js"
66
+ },
67
+ "./devtools": {
68
+ "types": "./dist/devtools.d.ts",
69
+ "default": "./dist/devtools.js"
70
+ },
71
+ "./ui": {
72
+ "types": "./dist/ui.d.ts",
73
+ "default": "./dist/ui.js"
74
+ },
75
+ "./ui/button": {
76
+ "types": "./dist/ui/button.d.ts",
77
+ "default": "./dist/ui/button.js"
78
+ },
79
+ "./ui/icon-button": {
80
+ "types": "./dist/ui/icon-button.d.ts",
81
+ "default": "./dist/ui/icon-button.js"
82
+ },
83
+ "./ui/input": {
84
+ "types": "./dist/ui/input.d.ts",
85
+ "default": "./dist/ui/input.js"
86
+ },
87
+ "./ui/input-mask": {
88
+ "types": "./dist/ui/input-mask.d.ts",
89
+ "default": "./dist/ui/input-mask.js"
90
+ },
91
+ "./ui/input-otp": {
92
+ "types": "./dist/ui/input-otp.d.ts",
93
+ "default": "./dist/ui/input-otp.js"
94
+ },
95
+ "./ui/input-tags": {
96
+ "types": "./dist/ui/input-tags.d.ts",
97
+ "default": "./dist/ui/input-tags.js"
98
+ },
99
+ "./ui/textarea": {
100
+ "types": "./dist/ui/textarea.d.ts",
101
+ "default": "./dist/ui/textarea.js"
102
+ },
103
+ "./ui/label": {
104
+ "types": "./dist/ui/label.d.ts",
105
+ "default": "./dist/ui/label.js"
106
+ },
107
+ "./ui/field": {
108
+ "types": "./dist/ui/field.d.ts",
109
+ "default": "./dist/ui/field.js"
110
+ },
111
+ "./ui/checkbox": {
112
+ "types": "./dist/ui/checkbox.d.ts",
113
+ "default": "./dist/ui/checkbox.js"
114
+ },
115
+ "./ui/provider": {
116
+ "types": "./dist/ui/provider.d.ts",
117
+ "default": "./dist/ui/provider.js"
118
+ },
119
+ "./ui/theme": {
120
+ "types": "./dist/ui/theme.d.ts",
121
+ "default": "./dist/ui/theme.js"
122
+ },
123
+ "./ui/core": {
124
+ "types": "./dist/ui/core.d.ts",
125
+ "default": "./dist/ui/core.js"
126
+ },
127
+ "./ui/utils": {
128
+ "types": "./dist/ui/utils.d.ts",
129
+ "default": "./dist/ui/utils.js"
130
+ },
131
+ "./ui/primitives": {
132
+ "types": "./dist/ui/primitives.d.ts",
133
+ "default": "./dist/ui/primitives.js"
134
+ },
135
+ "./package.json": "./package.json"
136
+ },
137
+ "scripts": {
138
+ "build": "tsup",
139
+ "check-types": "tsc -p tsconfig.json --noEmit",
140
+ "typecheck": "tsc -p tsconfig.json --noEmit",
141
+ "lint": "oxlint .",
142
+ "lint:fix": "oxlint . --fix",
143
+ "format": "oxfmt --check .",
144
+ "format:fix": "oxfmt ."
145
+ },
146
+ "dependencies": {
147
+ "@echojs-ecosystem/core": "workspace:*",
148
+ "@echojs-ecosystem/devtools": "workspace:*",
149
+ "@echojs-ecosystem/form": "workspace:*",
150
+ "@echojs-ecosystem/hyperdom": "workspace:*",
151
+ "@echojs-ecosystem/i18n": "workspace:*",
152
+ "@echojs-ecosystem/persist": "workspace:*",
153
+ "@echojs-ecosystem/query": "workspace:*",
154
+ "@echojs-ecosystem/reactivity": "workspace:*",
155
+ "@echojs-ecosystem/router": "workspace:*",
156
+ "@echojs-ecosystem/store": "workspace:*",
157
+ "@echojs-ecosystem/ui": "workspace:*",
158
+ "@echojs-ecosystem/url-state": "workspace:*"
159
+ },
160
+ "devDependencies": {
161
+ "@echojs-ecosystem/oxc-config": "workspace:*",
162
+ "oxlint": "^1.60.0",
163
+ "typescript": "5.9.2"
164
+ },
165
+ "publishConfig": {
166
+ "access": "public"
167
+ },
168
+ "repository": {
169
+ "type": "git",
170
+ "url": "https://github.com/echojs-ecosystem/echojs-core.git",
171
+ "directory": "packages/framework"
172
+ }
173
+ }