vonosan 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 (32) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/client/composables/useVonosanFetch.d.ts +24 -0
  4. package/dist/client/composables/useVonosanFetch.d.ts.map +1 -0
  5. package/dist/client/composables/useVonosanFetch.js +49 -0
  6. package/dist/client/composables/useVonosanFetch.js.map +1 -0
  7. package/dist/client/index.d.ts.map +1 -0
  8. package/dist/client/index.js +20 -0
  9. package/dist/client/index.js.map +1 -0
  10. package/dist/config/use-config.d.ts +31 -0
  11. package/dist/config/use-config.d.ts.map +1 -0
  12. package/dist/config/use-config.js +49 -0
  13. package/dist/config/use-config.js.map +1 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +15 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/module-system/define-module.d.ts +82 -0
  18. package/dist/module-system/define-module.d.ts.map +1 -0
  19. package/dist/module-system/define-module.js +37 -0
  20. package/dist/module-system/define-module.js.map +1 -0
  21. package/dist/module-system/index.d.ts +14 -0
  22. package/dist/module-system/index.d.ts.map +1 -0
  23. package/dist/module-system/index.js +13 -0
  24. package/dist/module-system/index.js.map +1 -0
  25. package/dist/module-system/module-registry.d.ts +37 -0
  26. package/dist/module-system/module-registry.d.ts.map +1 -0
  27. package/dist/module-system/module-registry.js +68 -0
  28. package/dist/module-system/module-registry.js.map +1 -0
  29. package/dist/module-system/vite-integration.d.ts.map +1 -0
  30. package/dist/module-system/vite-integration.js +67 -0
  31. package/dist/module-system/vite-integration.js.map +1 -0
  32. package/package.json +77 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Bowofade Oyerinde
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # vonosan
2
+
3
+ Vonosan core runtime — config, composables, SSR helpers, and Vite plugin for building fullstack Vue applications.
4
+
5
+ ## Features
6
+
7
+ - 🔧 **Vite Plugin** — First-class Vite integration for dev and production builds
8
+ - 🖥️ **SSR Helpers** — Server-side rendering utilities with streaming support
9
+ - 🧩 **Composables** — Vue composables for state, head, routing, and more
10
+ - 🌐 **Server Runtime** — Hono-based server with middleware, sessions, and DB integration
11
+ - 📦 **Module System** — Extensible module architecture
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install vonosan
17
+ ```
18
+
19
+ ## Exports
20
+
21
+ | Entry | Description |
22
+ | ------------- | ---------------------------------- |
23
+ | `vonosan` | Core config and shared utilities |
24
+ | `vonosan/vite` | Vite plugin |
25
+ | `vonosan/server` | Server runtime (Hono, middleware) |
26
+ | `vonosan/client` | Client-side composables |
27
+ | `vonosan/types` | TypeScript type definitions |
28
+
29
+ ## Quick Start
30
+
31
+ ```ts
32
+ // vite.config.ts
33
+ import { vonosanPlugin } from "vonosan/vite";
34
+
35
+ export default {
36
+ plugins: [vonosanPlugin()],
37
+ };
38
+ ```
39
+
40
+ ## Peer Dependencies
41
+
42
+ - **Required**: `vue`, `vue-router`
43
+ - **Optional**: `hono`, `@unhead/vue`, `pinia`, `drizzle-orm`, `zod`
44
+
45
+ ## License
46
+
47
+ MIT © Bowofade Oyerinde
@@ -0,0 +1,24 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ /**
11
+ * Typed fetch wrapper that handles SSR/client URL differences.
12
+ *
13
+ * - On server: uses relative URLs (same process)
14
+ * - On client: uses absolute URLs (cross-origin safe)
15
+ *
16
+ * Usage:
17
+ * ```ts
18
+ * const users = await useVonosanFetch<User[]>('/api/v1/users')
19
+ * ```
20
+ */
21
+ export declare function useVonosanFetch<T = unknown>(url: string, options?: RequestInit & {
22
+ baseUrl?: string;
23
+ }): Promise<T>;
24
+ //# sourceMappingURL=useVonosanFetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVonosanFetch.d.ts","sourceRoot":"","sources":["../../../src/client/composables/useVonosanFetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,CAAC,GAAG,OAAO,EAC/C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,OAAO,CAAC,CAAC,CAAC,CA6BZ"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ /**
11
+ * Typed fetch wrapper that handles SSR/client URL differences.
12
+ *
13
+ * - On server: uses relative URLs (same process)
14
+ * - On client: uses absolute URLs (cross-origin safe)
15
+ *
16
+ * Usage:
17
+ * ```ts
18
+ * const users = await useVonosanFetch<User[]>('/api/v1/users')
19
+ * ```
20
+ */
21
+ export async function useVonosanFetch(url, options = {}) {
22
+ const { baseUrl, ...fetchOptions } = options;
23
+ // Resolve the full URL
24
+ let fullUrl;
25
+ if (url.startsWith('http://') || url.startsWith('https://')) {
26
+ fullUrl = url;
27
+ }
28
+ else if (import.meta.env.SSR) {
29
+ // On server: use the configured base URL or localhost
30
+ const base = baseUrl ?? process.env.APP_URL ?? 'http://localhost:4000';
31
+ fullUrl = `${base}${url}`;
32
+ }
33
+ else {
34
+ // On client: relative URL works fine
35
+ fullUrl = url;
36
+ }
37
+ const response = await fetch(fullUrl, {
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ ...fetchOptions.headers,
41
+ },
42
+ ...fetchOptions,
43
+ });
44
+ if (!response.ok) {
45
+ throw new Error(`[vonosan] useVonosanFetch: ${response.status} ${response.statusText} — ${url}`);
46
+ }
47
+ return response.json();
48
+ }
49
+ //# sourceMappingURL=useVonosanFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVonosanFetch.js","sourceRoot":"","sources":["../../../src/client/composables/useVonosanFetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,UAA8C,EAAE;IAEhD,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAA;IAE5C,uBAAuB;IACvB,IAAI,OAAe,CAAA;IACnB,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,OAAO,GAAG,GAAG,CAAA;IACf,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC/B,sDAAsD;QACtD,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,uBAAuB,CAAA;QACtE,OAAO,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,CAAA;IAC3B,CAAC;SAAM,CAAC;QACN,qCAAqC;QACrC,OAAO,GAAG,GAAG,CAAA;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;QACpC,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,YAAY,CAAC,OAAO;SACxB;QACD,GAAG,YAAY;KAChB,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,GAAG,EAAE,CAAC,CAAA;IAClG,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAA;AACtC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AACxF,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ // vonosan/client — client-side composables and utilities
11
+ export { useAsyncData } from './composables/useAsyncData.js';
12
+ export { useVonosanFetch } from './composables/useVonosanFetch.js';
13
+ export { useCookie } from './composables/useCookie.js';
14
+ export { useState, serializeVonoState, clearVonoState } from './composables/useState.js';
15
+ export { navigateTo, setSSRRedirectHandler } from './composables/navigateTo.js';
16
+ export { useSeo } from './composables/useSeo.js';
17
+ export { useRouteRules } from './composables/useRouteRules.js';
18
+ export { useFormErrors } from './composables/useFormErrors.js';
19
+ export { hydratePinia, serializePiniaState } from './pinia-hydration.js';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,yDAAyD;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AACxF,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import type { VonosanConfig } from '../types/index.js';
11
+ /**
12
+ * Keys that are safe to expose to the client (no secrets).
13
+ * Server-only keys (JWT_SECRET, DB credentials, etc.) are stripped.
14
+ */
15
+ declare const PUBLIC_CONFIG_KEYS: Array<keyof VonosanConfig>;
16
+ export type PublicVonosanConfig = Pick<VonosanConfig, typeof PUBLIC_CONFIG_KEYS[number]>;
17
+ /**
18
+ * Access the Vono config.
19
+ *
20
+ * On the server: returns the full config.
21
+ * On the client: returns only public-safe keys (no secrets).
22
+ *
23
+ * Usage in Vue components / composables:
24
+ * ```ts
25
+ * const config = useVonosanConfig()
26
+ * console.log(config.app.name)
27
+ * ```
28
+ */
29
+ export declare function useVonosanConfig(): PublicVonosanConfig;
30
+ export {};
31
+ //# sourceMappingURL=use-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-config.d.ts","sourceRoot":"","sources":["../../src/config/use-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD;;;GAGG;AACH,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,MAAM,aAAa,CAMlD,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAA;AAExF;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,IAAI,mBAAmB,CAgBtD"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { getResolvedConfig } from './define-config.js';
11
+ /**
12
+ * Keys that are safe to expose to the client (no secrets).
13
+ * Server-only keys (JWT_SECRET, DB credentials, etc.) are stripped.
14
+ */
15
+ const PUBLIC_CONFIG_KEYS = [
16
+ 'app',
17
+ 'mode',
18
+ 'runtime',
19
+ 'ui',
20
+ 'docs',
21
+ ];
22
+ /**
23
+ * Access the Vono config.
24
+ *
25
+ * On the server: returns the full config.
26
+ * On the client: returns only public-safe keys (no secrets).
27
+ *
28
+ * Usage in Vue components / composables:
29
+ * ```ts
30
+ * const config = useVonosanConfig()
31
+ * console.log(config.app.name)
32
+ * ```
33
+ */
34
+ export function useVonosanConfig() {
35
+ const full = getResolvedConfig();
36
+ // On the client, only expose public keys
37
+ if (typeof window !== 'undefined') {
38
+ const publicConfig = {};
39
+ for (const key of PUBLIC_CONFIG_KEYS) {
40
+ if (key in full) {
41
+ publicConfig[key] = full[key];
42
+ }
43
+ }
44
+ return publicConfig;
45
+ }
46
+ // On the server, return the full config
47
+ return full;
48
+ }
49
+ //# sourceMappingURL=use-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-config.js","sourceRoot":"","sources":["../../src/config/use-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;;GAGG;AACH,MAAM,kBAAkB,GAA+B;IACrD,KAAK;IACL,MAAM;IACN,SAAS;IACT,IAAI;IACJ,MAAM;CACP,CAAA;AAID;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAA;IAEhC,yCAAyC;IACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,YAAY,GAA2B,EAAE,CAAA;QAC/C,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBACf,YAAwC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;QACD,OAAO,YAAmC,CAAA;IAC5C,CAAC;IAED,wCAAwC;IACxC,OAAO,IAA2B,CAAA;AACpC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC9E,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,cAAc,kBAAkB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ // Main vonosan entry — config and composables
11
+ export { defineVonosanConfig, getResolvedConfig } from './config/define-config.js';
12
+ export { useVonosanConfig } from './config/use-config.js';
13
+ export { env, envNumber, envBool, envRequired } from './config/env-helpers.js';
14
+ export * from './types/index.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,8CAA8C;AAC9C,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAG9E,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import type { ZodSchema } from 'zod';
11
+ export type VonosanLifecycleHook = 'app:created' | 'app:ready' | 'build:before' | 'build:after' | 'routes:resolved';
12
+ export interface VonosanModuleHooks {
13
+ 'app:created'?: (...args: unknown[]) => void | Promise<void>;
14
+ 'app:ready'?: (...args: unknown[]) => void | Promise<void>;
15
+ 'build:before'?: (...args: unknown[]) => void | Promise<void>;
16
+ 'build:after'?: (...args: unknown[]) => void | Promise<void>;
17
+ 'routes:resolved'?: (...args: unknown[]) => void | Promise<void>;
18
+ }
19
+ export interface VonosanModuleDefinition {
20
+ /** Unique module identifier, e.g. '@vonosan/auth' */
21
+ name: string;
22
+ /** Semver version string */
23
+ version: string;
24
+ /** Other module names this module depends on */
25
+ requires?: string[];
26
+ /** Hono middleware to register globally */
27
+ middleware?: Array<(...args: unknown[]) => unknown>;
28
+ /** Zod schemas exported by this module */
29
+ schemas?: Record<string, ZodSchema>;
30
+ /** Server-side auto-imports to inject */
31
+ serverImports?: Array<{
32
+ from: string;
33
+ imports: string[];
34
+ }>;
35
+ /** Client-side auto-imports to inject */
36
+ clientImports?: Array<{
37
+ from: string;
38
+ imports: string[];
39
+ }>;
40
+ /** Page components to register */
41
+ pages?: Array<{
42
+ path: string;
43
+ component: string;
44
+ }>;
45
+ /** Vue components to register */
46
+ components?: Array<{
47
+ name: string;
48
+ path: string;
49
+ }>;
50
+ /** API routes to register */
51
+ routes?: Array<{
52
+ path: string;
53
+ handler: string;
54
+ }>;
55
+ /** Drizzle migration files */
56
+ migrations?: string[];
57
+ /** Zod schema for module config validation */
58
+ configSchema?: ZodSchema;
59
+ /** Setup function called when the module is initialized */
60
+ setup?: (options?: Record<string, unknown>) => void | Promise<void>;
61
+ /** Lifecycle hooks */
62
+ hooks?: VonosanModuleHooks;
63
+ }
64
+ /**
65
+ * defineVonosanModule — validates and returns the module definition.
66
+ *
67
+ * Throws if required fields (name, version) are missing.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * export default defineVonosanModule({
72
+ * name: '@vonosan/auth',
73
+ * version: '0.1.0',
74
+ * setup: async () => { ... },
75
+ * hooks: {
76
+ * 'app:ready': (app) => { ... },
77
+ * },
78
+ * })
79
+ * ```
80
+ */
81
+ export declare function defineVonosanModule(definition: VonosanModuleDefinition): VonosanModuleDefinition;
82
+ //# sourceMappingURL=define-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-module.d.ts","sourceRoot":"","sources":["../../src/module-system/define-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAIpC,MAAM,MAAM,oBAAoB,GAC5B,aAAa,GACb,WAAW,GACX,cAAc,GACd,aAAa,GACb,iBAAiB,CAAA;AAErB,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,iBAAiB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAA;IAEZ,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;IAEf,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IAEnB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAA;IAEnD,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAEnC,yCAAyC;IACzC,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;IAE1D,yCAAyC;IACzC,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;IAE1D,kCAAkC;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAElD,iCAAiC;IACjC,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAElD,6BAA6B;IAC7B,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEjD,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IAErB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,SAAS,CAAA;IAExB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEnE,sBAAsB;IACtB,KAAK,CAAC,EAAE,kBAAkB,CAAA;CAC3B;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,uBAAuB,GAAG,uBAAuB,CAUhG"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ // ─── defineVonosanModule ────────────────────────────────────────────────
11
+ /**
12
+ * defineVonosanModule — validates and returns the module definition.
13
+ *
14
+ * Throws if required fields (name, version) are missing.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * export default defineVonosanModule({
19
+ * name: '@vonosan/auth',
20
+ * version: '0.1.0',
21
+ * setup: async () => { ... },
22
+ * hooks: {
23
+ * 'app:ready': (app) => { ... },
24
+ * },
25
+ * })
26
+ * ```
27
+ */
28
+ export function defineVonosanModule(definition) {
29
+ if (!definition.name) {
30
+ throw new Error('[vonosan] defineVonosanModule: "name" is required');
31
+ }
32
+ if (!definition.version) {
33
+ throw new Error(`[vonosan] defineVonosanModule: "version" is required for module "${definition.name}"`);
34
+ }
35
+ return definition;
36
+ }
37
+ //# sourceMappingURL=define-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-module.js","sourceRoot":"","sources":["../../src/module-system/define-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiEH,2EAA2E;AAE3E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAmC;IACrE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,oEAAoE,UAAU,CAAC,IAAI,GAAG,CAAC,CAAA;IACzG,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ export { defineVonosanModule } from './define-module.js';
11
+ export { registerModule, getModules, runHook, clearRegistry } from './module-registry.js';
12
+ export { applyModulesToViteConfig } from './vite-integration.js';
13
+ export type { VonosanModuleDefinition, VonosanModuleHooks, VonosanLifecycleHook } from './define-module.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/module-system/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,YAAY,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ export { defineVonosanModule } from './define-module.js';
11
+ export { registerModule, getModules, runHook, clearRegistry } from './module-registry.js';
12
+ export { applyModulesToViteConfig } from './vite-integration.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/module-system/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import type { VonosanModuleDefinition, VonosanLifecycleHook } from './define-module.js';
11
+ /**
12
+ * registerModule — adds a module to the global registry.
13
+ *
14
+ * Throws if a module with the same name is already registered.
15
+ */
16
+ export declare function registerModule(module: VonosanModuleDefinition): void;
17
+ /**
18
+ * getModules — returns all registered modules.
19
+ */
20
+ export declare function getModules(): VonosanModuleDefinition[];
21
+ /**
22
+ * runHook — runs all registered hooks for a lifecycle event.
23
+ *
24
+ * Hooks are called in registration order.
25
+ * Errors in individual hooks are caught and logged — they do not
26
+ * prevent other hooks from running.
27
+ *
28
+ * @param hookName — lifecycle event name
29
+ * @param args — arguments passed to each hook handler
30
+ */
31
+ export declare function runHook(hookName: VonosanLifecycleHook, ...args: unknown[]): Promise<void>;
32
+ /**
33
+ * clearRegistry — resets the module registry.
34
+ * Intended for use in tests only.
35
+ */
36
+ export declare function clearRegistry(): void;
37
+ //# sourceMappingURL=module-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/module-system/module-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AASvF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAYpE;AAID;;GAEG;AACH,wBAAgB,UAAU,IAAI,uBAAuB,EAAE,CAEtD;AAID;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/F;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { Logger } from '../shared/utils/logger.js';
11
+ // ─── Registry state ──────────────────────────────────────────────────
12
+ const registry = [];
13
+ // ─── registerModule ──────────────────────────────────────────────────
14
+ /**
15
+ * registerModule — adds a module to the global registry.
16
+ *
17
+ * Throws if a module with the same name is already registered.
18
+ */
19
+ export function registerModule(module) {
20
+ const existing = registry.find((m) => m.name === module.name);
21
+ if (existing) {
22
+ throw new Error(`[vonosan] Module "${module.name}" is already registered. ` +
23
+ `Each module can only be registered once.`);
24
+ }
25
+ registry.push(module);
26
+ Logger.info(`[vonosan] Module registered: ${module.name}@${module.version}`);
27
+ }
28
+ // ─── getModules ──────────────────────────────────────────────────────
29
+ /**
30
+ * getModules — returns all registered modules.
31
+ */
32
+ export function getModules() {
33
+ return [...registry];
34
+ }
35
+ // ─── runHook ─────────────────────────────────────────────────────────
36
+ /**
37
+ * runHook — runs all registered hooks for a lifecycle event.
38
+ *
39
+ * Hooks are called in registration order.
40
+ * Errors in individual hooks are caught and logged — they do not
41
+ * prevent other hooks from running.
42
+ *
43
+ * @param hookName — lifecycle event name
44
+ * @param args — arguments passed to each hook handler
45
+ */
46
+ export async function runHook(hookName, ...args) {
47
+ for (const module of registry) {
48
+ const hook = module.hooks?.[hookName];
49
+ if (!hook)
50
+ continue;
51
+ try {
52
+ await hook(...args);
53
+ }
54
+ catch (err) {
55
+ Logger.error(`[vonosan] Hook "${hookName}" failed in module "${module.name}"`, {
56
+ error: String(err),
57
+ });
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * clearRegistry — resets the module registry.
63
+ * Intended for use in tests only.
64
+ */
65
+ export function clearRegistry() {
66
+ registry.length = 0;
67
+ }
68
+ //# sourceMappingURL=module-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-registry.js","sourceRoot":"","sources":["../../src/module-system/module-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD,wEAAwE;AAExE,MAAM,QAAQ,GAA8B,EAAE,CAAA;AAE9C,wEAAwE;AAExE;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAA+B;IAC5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAA;IAE7D,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,qBAAqB,MAAM,CAAC,IAAI,2BAA2B;YACzD,0CAA0C,CAC7C,CAAA;IACH,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrB,MAAM,CAAC,IAAI,CAAC,gCAAgC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;AAC9E,CAAC;AAED,wEAAwE;AAExE;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAA;AACtB,CAAC;AAED,wEAAwE;AAExE;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,QAA8B,EAAE,GAAG,IAAe;IAC9E,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAA;QAErC,IAAI,CAAC,IAAI;YAAE,SAAQ;QAEnB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,mBAAmB,QAAQ,uBAAuB,MAAM,CAAC,IAAI,GAAG,EAAE;gBAC7E,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;aACnB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;AACrB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-integration.d.ts","sourceRoot":"","sources":["../../src/module-system/vite-integration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACtC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAKjE;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,uBAAuB,EAAE,EAClC,MAAM,EAAE,UAAU,GACjB,UAAU,CAmDZ"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { Logger } from '../shared/utils/logger.js';
11
+ // ─── applyModulesToViteConfig ────────────────────────────────────────
12
+ /**
13
+ * applyModulesToViteConfig — merges module schemas, routes,
14
+ * auto-imports, and pages into the Vite config at build time.
15
+ *
16
+ * Called by the Vonosan Vite plugin when building the project.
17
+ *
18
+ * @param modules — registered VonosanModuleDefinition array
19
+ * @param config — existing Vite UserConfig to merge into
20
+ * @returns merged Vite config
21
+ */
22
+ export function applyModulesToViteConfig(modules, config) {
23
+ const merged = { ...config };
24
+ // Collect all server-side auto-imports from modules
25
+ const serverImports = [];
26
+ const clientImports = [];
27
+ for (const module of modules) {
28
+ if (module.serverImports?.length) {
29
+ serverImports.push(...module.serverImports);
30
+ Logger.info(`[vonosan] Merging server imports from module: ${module.name}`);
31
+ }
32
+ if (module.clientImports?.length) {
33
+ clientImports.push(...module.clientImports);
34
+ Logger.info(`[vonosan] Merging client imports from module: ${module.name}`);
35
+ }
36
+ }
37
+ // Merge into Vite config via the resolve.alias or plugin options
38
+ // The actual unplugin-auto-import config is handled by the Vonosan Vite plugin;
39
+ // here we attach the collected imports as metadata for the plugin to consume.
40
+ if (serverImports.length > 0 || clientImports.length > 0) {
41
+ merged.define = {
42
+ ...merged.define,
43
+ '__VONO_MODULE_SERVER_IMPORTS__': JSON.stringify(serverImports),
44
+ '__VONO_MODULE_CLIENT_IMPORTS__': JSON.stringify(clientImports),
45
+ };
46
+ }
47
+ // Collect page routes from modules
48
+ const modulePages = modules.flatMap((m) => m.pages ?? []);
49
+ if (modulePages.length > 0) {
50
+ merged.define = {
51
+ ...merged.define,
52
+ '__VONO_MODULE_PAGES__': JSON.stringify(modulePages),
53
+ };
54
+ Logger.info(`[vonosan] Registered ${modulePages.length} page(s) from modules`);
55
+ }
56
+ // Collect API routes from modules
57
+ const moduleRoutes = modules.flatMap((m) => m.routes ?? []);
58
+ if (moduleRoutes.length > 0) {
59
+ merged.define = {
60
+ ...merged.define,
61
+ '__VONO_MODULE_ROUTES__': JSON.stringify(moduleRoutes),
62
+ };
63
+ Logger.info(`[vonosan] Registered ${moduleRoutes.length} route(s) from modules`);
64
+ }
65
+ return merged;
66
+ }
67
+ //# sourceMappingURL=vite-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-integration.js","sourceRoot":"","sources":["../../src/module-system/vite-integration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD,wEAAwE;AAExE;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAkC,EAClC,MAAkB;IAElB,MAAM,MAAM,GAAe,EAAE,GAAG,MAAM,EAAE,CAAA;IAExC,oDAAoD;IACpD,MAAM,aAAa,GAA+C,EAAE,CAAA;IACpE,MAAM,aAAa,GAA+C,EAAE,CAAA;IAEpE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YACjC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;YAC3C,MAAM,CAAC,IAAI,CAAC,iDAAiD,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7E,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YACjC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;YAC3C,MAAM,CAAC,IAAI,CAAC,iDAAiD,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,gFAAgF;IAChF,8EAA8E;IAC9E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,MAAM,GAAG;YACd,GAAG,MAAM,CAAC,MAAM;YAChB,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;YAC/D,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;SAChE,CAAA;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IACzD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,GAAG;YACd,GAAG,MAAM,CAAC,MAAM;YAChB,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SACrD,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,wBAAwB,WAAW,CAAC,MAAM,uBAAuB,CAAC,CAAA;IAChF,CAAC;IAED,kCAAkC;IAClC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAC3D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,GAAG;YACd,GAAG,MAAM,CAAC,MAAM;YAChB,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;SACvD,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,wBAAwB,YAAY,CAAC,MAAM,wBAAwB,CAAC,CAAA;IAClF,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "vonosan",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Vonosan core runtime — config, composables, SSR helpers, Vite plugin",
6
+ "license": "MIT",
7
+ "author": "Bowofade Oyerinde",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/oyenet1/vonosan.git",
11
+ "directory": "packages/vonosan"
12
+ },
13
+ "homepage": "https://github.com/oyenet1/vonosan#readme",
14
+ "keywords": ["vonosan", "vue", "vite", "ssr", "framework", "hono", "fullstack"],
15
+ "exports": {
16
+ ".": {
17
+ "import": "./dist/index.js",
18
+ "types": "./dist/index.d.ts"
19
+ },
20
+ "./vite": {
21
+ "import": "./dist/vite/index.js",
22
+ "types": "./dist/vite/index.d.ts"
23
+ },
24
+ "./server": {
25
+ "import": "./dist/server/index.js",
26
+ "types": "./dist/server/index.d.ts"
27
+ },
28
+ "./client": {
29
+ "import": "./dist/client/index.js",
30
+ "types": "./dist/client/index.d.ts"
31
+ },
32
+ "./types": {
33
+ "import": "./dist/types/index.js",
34
+ "types": "./dist/types/index.d.ts"
35
+ }
36
+ },
37
+ "main": "./dist/index.js",
38
+ "types": "./dist/index.d.ts",
39
+ "files": [
40
+ "dist",
41
+ "!dist/__tests__",
42
+ "!dist/**/__tests__"
43
+ ],
44
+ "scripts": {
45
+ "build": "tsc -p tsconfig.json",
46
+ "dev": "tsc -p tsconfig.json --watch"
47
+ },
48
+ "peerDependencies": {
49
+ "@unhead/vue": ">=2.0.0",
50
+ "drizzle-orm": ">=0.44.0",
51
+ "hono": ">=4.8.0",
52
+ "pinia": ">=3.0.0",
53
+ "vue": ">=3.5.0",
54
+ "vue-router": ">=5.0.0",
55
+ "zod": ">=4.0.0"
56
+ },
57
+ "peerDependenciesMeta": {
58
+ "@unhead/vue": { "optional": true },
59
+ "drizzle-orm": { "optional": true },
60
+ "hono": { "optional": true },
61
+ "pinia": { "optional": true },
62
+ "zod": { "optional": true }
63
+ },
64
+ "devDependencies": {
65
+ "@types/bun": "1.2.14",
66
+ "@types/node": "25.5.2",
67
+ "@unhead/ssr": "2.0.10",
68
+ "@unhead/vue": "2.0.10",
69
+ "drizzle-orm": "0.44.5",
70
+ "hono": "4.8.10",
71
+ "pinia": "3.0.2",
72
+ "typescript": "5.8.3",
73
+ "vue": "3.5.13",
74
+ "vue-router": "5.0.0",
75
+ "zod": "4.1.8"
76
+ }
77
+ }