vorzelajs 0.0.1

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 (96) hide show
  1. package/README.md +188 -0
  2. package/bin/vorzelajs.mjs +2 -0
  3. package/dist/analytics.d.ts +132 -0
  4. package/dist/analytics.d.ts.map +1 -0
  5. package/dist/analytics.js +690 -0
  6. package/dist/cli/build.d.ts +2 -0
  7. package/dist/cli/build.d.ts.map +1 -0
  8. package/dist/cli/build.js +22 -0
  9. package/dist/cli/dev.d.ts +2 -0
  10. package/dist/cli/dev.d.ts.map +1 -0
  11. package/dist/cli/dev.js +93 -0
  12. package/dist/cli/index.d.ts +3 -0
  13. package/dist/cli/index.d.ts.map +1 -0
  14. package/dist/cli/index.js +29 -0
  15. package/dist/cli/serve.d.ts +2 -0
  16. package/dist/cli/serve.d.ts.map +1 -0
  17. package/dist/cli/serve.js +43 -0
  18. package/dist/cookie.d.ts +33 -0
  19. package/dist/cookie.d.ts.map +1 -0
  20. package/dist/cookie.js +198 -0
  21. package/dist/debug/error-stack.d.ts +14 -0
  22. package/dist/debug/error-stack.d.ts.map +1 -0
  23. package/dist/debug/error-stack.js +52 -0
  24. package/dist/internal/document.d.ts +12 -0
  25. package/dist/internal/document.d.ts.map +1 -0
  26. package/dist/internal/document.jsx +56 -0
  27. package/dist/internal/entry-client.d.ts +2 -0
  28. package/dist/internal/entry-client.d.ts.map +1 -0
  29. package/dist/internal/entry-client.jsx +8 -0
  30. package/dist/internal/entry-server.d.ts +14 -0
  31. package/dist/internal/entry-server.d.ts.map +1 -0
  32. package/dist/internal/entry-server.jsx +71 -0
  33. package/dist/runtime/create-route.d.ts +8 -0
  34. package/dist/runtime/create-route.d.ts.map +1 -0
  35. package/dist/runtime/create-route.js +18 -0
  36. package/dist/runtime/head.d.ts +10 -0
  37. package/dist/runtime/head.d.ts.map +1 -0
  38. package/dist/runtime/head.js +111 -0
  39. package/dist/runtime/index.d.ts +6 -0
  40. package/dist/runtime/index.d.ts.map +1 -0
  41. package/dist/runtime/index.jsx +4 -0
  42. package/dist/runtime/navigation.d.ts +36 -0
  43. package/dist/runtime/navigation.d.ts.map +1 -0
  44. package/dist/runtime/navigation.js +70 -0
  45. package/dist/runtime/path.d.ts +11 -0
  46. package/dist/runtime/path.d.ts.map +1 -0
  47. package/dist/runtime/path.js +80 -0
  48. package/dist/runtime/resolve.d.ts +11 -0
  49. package/dist/runtime/resolve.d.ts.map +1 -0
  50. package/dist/runtime/resolve.js +449 -0
  51. package/dist/runtime/runtime.d.ts +40 -0
  52. package/dist/runtime/runtime.d.ts.map +1 -0
  53. package/dist/runtime/runtime.jsx +779 -0
  54. package/dist/runtime/search.d.ts +23 -0
  55. package/dist/runtime/search.d.ts.map +1 -0
  56. package/dist/runtime/search.js +178 -0
  57. package/dist/runtime/server.d.ts +10 -0
  58. package/dist/runtime/server.d.ts.map +1 -0
  59. package/dist/runtime/server.js +5 -0
  60. package/dist/runtime/types.d.ts +248 -0
  61. package/dist/runtime/types.d.ts.map +1 -0
  62. package/dist/runtime/types.js +1 -0
  63. package/dist/seo.d.ts +16 -0
  64. package/dist/seo.d.ts.map +1 -0
  65. package/dist/seo.js +69 -0
  66. package/dist/server/index.d.ts +53 -0
  67. package/dist/server/index.d.ts.map +1 -0
  68. package/dist/server/index.js +268 -0
  69. package/dist/session.d.ts +23 -0
  70. package/dist/session.d.ts.map +1 -0
  71. package/dist/session.js +58 -0
  72. package/dist/vite/index.d.ts +13 -0
  73. package/dist/vite/index.d.ts.map +1 -0
  74. package/dist/vite/index.js +174 -0
  75. package/dist/vite/routes-plugin.d.ts +4 -0
  76. package/dist/vite/routes-plugin.d.ts.map +1 -0
  77. package/dist/vite/routes-plugin.js +345 -0
  78. package/dist/vite/server-only.d.ts +3 -0
  79. package/dist/vite/server-only.d.ts.map +1 -0
  80. package/dist/vite/server-only.js +342 -0
  81. package/package.json +76 -0
  82. package/templates/bare/README.md +22 -0
  83. package/templates/bare/src/components/counter-card.tsx +19 -0
  84. package/templates/bare/src/routes/__root.tsx +24 -0
  85. package/templates/bare/src/routes/index.tsx +36 -0
  86. package/templates/base/gitignore +4 -0
  87. package/templates/base/public/favicon.svg +5 -0
  88. package/templates/base/tsconfig.json +18 -0
  89. package/templates/modern/README.md +28 -0
  90. package/templates/modern/src/components/counter-card.tsx +19 -0
  91. package/templates/modern/src/routes/__root.tsx +42 -0
  92. package/templates/modern/src/routes/about.tsx +55 -0
  93. package/templates/modern/src/routes/index.tsx +51 -0
  94. package/templates/styling/css/styles.css +269 -0
  95. package/templates/styling/css-modules/styles.css +269 -0
  96. package/templates/styling/tailwind/styles.css +271 -0
@@ -0,0 +1,23 @@
1
+ import type { NavigateToOptions, RouteSearch, RouteSearchInput, RouteSearchPrimitive, RouteSearchUpdater } from './types';
2
+ export declare function readSearchParams(searchParams: URLSearchParams): RouteSearch;
3
+ export declare function parseSearchString(search: string): RouteSearch;
4
+ export declare function stringifySearchInput(search: RouteSearchInput): string;
5
+ export declare function resolveSearchUpdater<CurrentSearch extends RouteSearch = RouteSearch>(currentSearch: CurrentSearch, updater: RouteSearchUpdater<CurrentSearch>): RouteSearchInput;
6
+ export declare function mergeSearchInput(currentSearch: RouteSearch, patch: RouteSearchInput): RouteSearchInput;
7
+ export declare function resolveMergedSearch<CurrentSearch extends RouteSearch = RouteSearch>(currentSearch: RouteSearch, typedCurrentSearch: CurrentSearch, updater: RouteSearchUpdater<CurrentSearch>): RouteSearchInput;
8
+ export declare function resolveNavigateHref<CurrentSearch extends RouteSearch = RouteSearch>(currentHref: string, target: string | NavigateToOptions<CurrentSearch>, currentSearchForUpdater?: CurrentSearch): string;
9
+ export declare const filterSearch: {
10
+ array(values: readonly RouteSearchPrimitive[] | null | undefined): string[] | undefined;
11
+ boolean(value: boolean | null | undefined, options?: {
12
+ keepFalse?: boolean;
13
+ }): boolean | undefined;
14
+ page(value: number | string | null | undefined, defaultPage?: number): number | undefined;
15
+ readArray(search: RouteSearch, key: string): string[];
16
+ readBoolean(search: RouteSearch, key: string, fallback?: boolean): boolean;
17
+ readPage(search: RouteSearch, key?: string, defaultPage?: number): number;
18
+ readSort<const Sort extends string>(search: RouteSearch, key: string, allowedValues: readonly Sort[], fallback: Sort): Sort;
19
+ readText(search: RouteSearch, key: string, fallback?: string): string;
20
+ sort<Sort extends string>(value: Sort | null | undefined, defaultValue?: Sort): Sort | undefined;
21
+ text(value: string | null | undefined): string | undefined;
22
+ };
23
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/runtime/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAEnB,MAAM,SAAS,CAAA;AA+BhB,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,eAAe,GAAG,WAAW,CAS3E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,eAE/C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,UAyB5D;AAED,wBAAgB,oBAAoB,CAAC,aAAa,SAAS,WAAW,GAAG,WAAW,EAClF,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,kBAAkB,CAAC,aAAa,CAAC,oBAK3C;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,oBAsBnF;AAED,wBAAgB,mBAAmB,CAAC,aAAa,SAAS,WAAW,GAAG,WAAW,EACjF,aAAa,EAAE,WAAW,EAC1B,kBAAkB,EAAE,aAAa,EACjC,OAAO,EAAE,kBAAkB,CAAC,aAAa,CAAC,oBAI3C;AAED,wBAAgB,mBAAmB,CAAC,aAAa,SAAS,WAAW,GAAG,WAAW,EACjF,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAC,aAAa,CAAC,EACjD,uBAAuB,CAAC,EAAE,aAAa,UAmBxC;AAED,eAAO,MAAM,YAAY;kBACT,SAAS,oBAAoB,EAAE,GAAG,IAAI,GAAG,SAAS;mBASjD,OAAO,GAAG,IAAI,GAAG,SAAS,YAAW;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;gBAY/D,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;sBAY5B,WAAW,OAAO,MAAM;wBAItB,WAAW,OAAO,MAAM;qBA4B3B,WAAW;mBAab,IAAI,SAAS,MAAM,UACxB,WAAW,OACd,MAAM,iBACI,SAAS,IAAI,EAAE,YACpB,IAAI;qBAWC,WAAW,OAAO,MAAM;SAWpC,IAAI,SAAS,MAAM,SAAS,IAAI,GAAG,IAAI,GAAG,SAAS,iBAAiB,IAAI;gBAQjE,MAAM,GAAG,IAAI,GAAG,SAAS;CAItC,CAAA"}
@@ -0,0 +1,178 @@
1
+ import { normalizeHref, normalizePath, normalizeSearch } from './path';
2
+ const SEARCH_BASE_URL = 'http://vorzelajs.local';
3
+ function coerceSearchEntry(value) {
4
+ return String(value);
5
+ }
6
+ function getFirstSearchValue(value) {
7
+ if (Array.isArray(value)) {
8
+ return value[0];
9
+ }
10
+ return value;
11
+ }
12
+ function toSearchArray(value) {
13
+ if (Array.isArray(value)) {
14
+ return value
15
+ .map((entry) => typeof entry === 'string' ? entry.trim() : String(entry ?? '').trim())
16
+ .filter(Boolean);
17
+ }
18
+ if (value === null || value === undefined) {
19
+ return [];
20
+ }
21
+ const singleValue = typeof value === 'string' ? value.trim() : String(value).trim();
22
+ return singleValue ? [singleValue] : [];
23
+ }
24
+ export function readSearchParams(searchParams) {
25
+ const rawSearch = {};
26
+ for (const key of new Set(searchParams.keys())) {
27
+ const values = searchParams.getAll(key);
28
+ rawSearch[key] = values.length <= 1 ? values[0] : values;
29
+ }
30
+ return rawSearch;
31
+ }
32
+ export function parseSearchString(search) {
33
+ return readSearchParams(new URLSearchParams(normalizeSearch(search)));
34
+ }
35
+ export function stringifySearchInput(search) {
36
+ const searchParams = new URLSearchParams();
37
+ for (const [key, rawValue] of Object.entries(search)) {
38
+ if (rawValue === undefined || rawValue === null) {
39
+ continue;
40
+ }
41
+ if (Array.isArray(rawValue)) {
42
+ const values = rawValue
43
+ .filter((value) => value !== undefined && value !== null)
44
+ .map(coerceSearchEntry);
45
+ for (const value of values) {
46
+ searchParams.append(key, value);
47
+ }
48
+ continue;
49
+ }
50
+ searchParams.set(key, coerceSearchEntry(rawValue));
51
+ }
52
+ const serialized = searchParams.toString();
53
+ return serialized ? `?${serialized}` : '';
54
+ }
55
+ export function resolveSearchUpdater(currentSearch, updater) {
56
+ return typeof updater === 'function'
57
+ ? updater(currentSearch)
58
+ : updater;
59
+ }
60
+ export function mergeSearchInput(currentSearch, patch) {
61
+ const nextSearch = {};
62
+ for (const [key, value] of Object.entries(currentSearch)) {
63
+ nextSearch[key] = value;
64
+ }
65
+ for (const [key, value] of Object.entries(patch)) {
66
+ if (value === undefined || value === null) {
67
+ delete nextSearch[key];
68
+ continue;
69
+ }
70
+ if (Array.isArray(value) && value.filter((entry) => entry !== undefined && entry !== null).length === 0) {
71
+ delete nextSearch[key];
72
+ continue;
73
+ }
74
+ nextSearch[key] = value;
75
+ }
76
+ return nextSearch;
77
+ }
78
+ export function resolveMergedSearch(currentSearch, typedCurrentSearch, updater) {
79
+ const patch = resolveSearchUpdater(typedCurrentSearch, updater);
80
+ return mergeSearchInput(currentSearch, patch);
81
+ }
82
+ export function resolveNavigateHref(currentHref, target, currentSearchForUpdater) {
83
+ if (typeof target === 'string') {
84
+ return normalizeHref(target);
85
+ }
86
+ const baseHref = normalizeHref(target.to ?? currentHref);
87
+ if (!target.search) {
88
+ return baseHref;
89
+ }
90
+ const url = new URL(baseHref, SEARCH_BASE_URL);
91
+ const nextSearch = resolveSearchUpdater(currentSearchForUpdater ?? readSearchParams(url.searchParams), target.search);
92
+ return `${normalizePath(url.pathname)}${stringifySearchInput(nextSearch)}`;
93
+ }
94
+ export const filterSearch = {
95
+ array(values) {
96
+ const normalized = (values ?? [])
97
+ .filter((value) => value !== undefined && value !== null)
98
+ .map((value) => String(value).trim())
99
+ .filter(Boolean);
100
+ return normalized.length > 0 ? normalized : undefined;
101
+ },
102
+ boolean(value, options = {}) {
103
+ if (value === undefined || value === null) {
104
+ return undefined;
105
+ }
106
+ if (value === false && !options.keepFalse) {
107
+ return undefined;
108
+ }
109
+ return value;
110
+ },
111
+ page(value, defaultPage = 1) {
112
+ const parsed = typeof value === 'number'
113
+ ? Math.trunc(value)
114
+ : Number.parseInt(String(value ?? ''), 10);
115
+ if (!Number.isFinite(parsed) || parsed < 1 || parsed === defaultPage) {
116
+ return undefined;
117
+ }
118
+ return parsed;
119
+ },
120
+ readArray(search, key) {
121
+ return toSearchArray(search[key]);
122
+ },
123
+ readBoolean(search, key, fallback = false) {
124
+ const value = getFirstSearchValue(search[key]);
125
+ if (typeof value === 'boolean') {
126
+ return value;
127
+ }
128
+ if (typeof value === 'number') {
129
+ return value !== 0;
130
+ }
131
+ if (typeof value !== 'string') {
132
+ return fallback;
133
+ }
134
+ const normalized = value.trim().toLowerCase();
135
+ if (['1', 'true', 'yes', 'on'].includes(normalized)) {
136
+ return true;
137
+ }
138
+ if (['0', 'false', 'no', 'off'].includes(normalized)) {
139
+ return false;
140
+ }
141
+ return fallback;
142
+ },
143
+ readPage(search, key = 'page', defaultPage = 1) {
144
+ const value = getFirstSearchValue(search[key]);
145
+ const parsed = typeof value === 'number'
146
+ ? Math.trunc(value)
147
+ : Number.parseInt(String(value ?? ''), 10);
148
+ if (!Number.isFinite(parsed) || parsed < 1) {
149
+ return defaultPage;
150
+ }
151
+ return parsed;
152
+ },
153
+ readSort(search, key, allowedValues, fallback) {
154
+ const value = getFirstSearchValue(search[key]);
155
+ if (typeof value !== 'string') {
156
+ return fallback;
157
+ }
158
+ return allowedValues.includes(value) ? value : fallback;
159
+ },
160
+ readText(search, key, fallback = '') {
161
+ const value = getFirstSearchValue(search[key]);
162
+ if (value === undefined || value === null) {
163
+ return fallback;
164
+ }
165
+ const normalized = String(value).trim();
166
+ return normalized === '' ? fallback : normalized;
167
+ },
168
+ sort(value, defaultValue) {
169
+ if (!value || (defaultValue !== undefined && value === defaultValue)) {
170
+ return undefined;
171
+ }
172
+ return value;
173
+ },
174
+ text(value) {
175
+ const normalized = value?.trim() ?? '';
176
+ return normalized === '' ? undefined : normalized;
177
+ },
178
+ };
@@ -0,0 +1,10 @@
1
+ export type { AnalyticsClient, AnalyticsClientContext, AnalyticsClientOptions, AnalyticsClientPayload, AnalyticsDefinition, AnalyticsEvent, AnalyticsEventType, AnalyticsGeoSummary, AnalyticsTouchPoint, AnalyticsTrafficChannel, AnalyticsUserAgentSummary, } from '../analytics';
2
+ export { classifyAnalyticsTraffic, createAnalyticsClient, DEFAULT_ANALYTICS_ENDPOINT, defineAnalytics, extractAnalyticsTouchPoint, handleAnalyticsRequest, } from '../analytics';
3
+ export type { CookieHeaderTarget, CookieOptions, CookiePolicy, VorzelaCookie } from '../cookie';
4
+ export { createCookie } from '../cookie';
5
+ export { cookiePolicies, deleteCookie, setCookie } from '../cookie';
6
+ export type { RobotsConfig, RobotsRule } from '../seo';
7
+ export { defaultRobotsConfig, defineRobotsConfig, renderRobotsTxt } from '../seo';
8
+ export type { SessionData, SessionStorage, VorzelaSession } from '../session';
9
+ export { createCookieSessionStorage } from '../session';
10
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/runtime/server.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,cAAc,CAAA;AACrB,OAAO,EACN,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,eAAe,EACf,0BAA0B,EAC1B,sBAAsB,GACtB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACnE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACjF,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { classifyAnalyticsTraffic, createAnalyticsClient, DEFAULT_ANALYTICS_ENDPOINT, defineAnalytics, extractAnalyticsTouchPoint, handleAnalyticsRequest, } from '../analytics';
2
+ export { createCookie } from '../cookie';
3
+ export { cookiePolicies, deleteCookie, setCookie } from '../cookie';
4
+ export { defaultRobotsConfig, defineRobotsConfig, renderRobotsTxt } from '../seo';
5
+ export { createCookieSessionStorage } from '../session';
@@ -0,0 +1,248 @@
1
+ import type { Accessor, Component, JSX } from 'solid-js';
2
+ export type MaybePromise<T> = T | Promise<T>;
3
+ export type RouterContextValue = Record<string, unknown>;
4
+ export type RouteSearch = Record<string, unknown>;
5
+ export type RouteSearchPrimitive = boolean | number | string | null | undefined;
6
+ export type RouteSearchValue = RouteSearchPrimitive | RouteSearchPrimitive[];
7
+ export type RouteSearchInput = Record<string, RouteSearchValue>;
8
+ export type RouteSearchUpdater<CurrentSearch extends RouteSearch = RouteSearch> = RouteSearchInput | ((currentSearch: CurrentSearch) => RouteSearchInput);
9
+ export type RouteHydrationMode = 'auto' | 'client' | 'static';
10
+ export interface SitemapEntry {
11
+ changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
12
+ lastmod?: string;
13
+ loc: string;
14
+ priority?: number;
15
+ }
16
+ export type ResolvedRouteHydration = 'client' | 'static';
17
+ export type RouteErrorPhase = 'beforeLoad' | 'loader' | 'render' | 'validateSearch';
18
+ export interface NavigateToOptions<CurrentSearch extends RouteSearch = RouteSearch> {
19
+ replace?: boolean;
20
+ scroll?: boolean;
21
+ search?: RouteSearchUpdater<CurrentSearch>;
22
+ to?: string;
23
+ }
24
+ export interface SetSearchOptions {
25
+ replace?: boolean;
26
+ scroll?: boolean;
27
+ }
28
+ export type SetSearchFunction<CurrentSearch extends RouteSearch = RouteSearch> = (search: RouteSearchUpdater<CurrentSearch>, options?: SetSearchOptions) => Promise<void>;
29
+ export interface MetaDescriptor {
30
+ charset?: string;
31
+ content?: string;
32
+ httpEquiv?: string;
33
+ name?: string;
34
+ property?: string;
35
+ }
36
+ export interface LinkDescriptor {
37
+ as?: JSX.HTMLLinkAs;
38
+ crossorigin?: JSX.HTMLCrossorigin;
39
+ href: string;
40
+ hreflang?: string;
41
+ media?: string;
42
+ rel: string;
43
+ sizes?: string;
44
+ type?: string;
45
+ }
46
+ export interface HeadObject {
47
+ canonical?: string;
48
+ jsonLd?: Record<string, unknown> | Record<string, unknown>[];
49
+ links?: LinkDescriptor[];
50
+ meta?: MetaDescriptor[];
51
+ title?: string;
52
+ }
53
+ export interface RouteErrorDebugFrame {
54
+ columnNumber?: number;
55
+ fileName?: string;
56
+ functionName?: string;
57
+ lineNumber?: number;
58
+ source: string;
59
+ }
60
+ export interface RouteErrorDebugInfo {
61
+ frames: RouteErrorDebugFrame[];
62
+ stack?: string;
63
+ }
64
+ export interface RouteErrorData {
65
+ debug?: RouteErrorDebugInfo;
66
+ message: string;
67
+ name: string;
68
+ phase: RouteErrorPhase;
69
+ status: number;
70
+ }
71
+ export interface RouteRedirectData {
72
+ replace: boolean;
73
+ status: 301 | 302 | 303 | 307 | 308;
74
+ to: string;
75
+ }
76
+ export interface RouteErrorContext {
77
+ error: RouteErrorData;
78
+ reset: () => void;
79
+ }
80
+ type ExtractPathParamNames<Path extends string> = Path extends `${string}$${infer Param}/${infer Rest}` ? Param extends '' ? ExtractPathParamNames<Rest> : Param | ExtractPathParamNames<Rest> : Path extends `${string}$${infer Param}` ? Param extends '' ? never : Param : never;
81
+ export type RouteParams<Path extends string> = [
82
+ ExtractPathParamNames<Path>
83
+ ] extends [never] ? Record<never, never> : {
84
+ [Key in ExtractPathParamNames<Path>]: string;
85
+ };
86
+ export interface RouteLocation {
87
+ href: string;
88
+ pathname: string;
89
+ search: string;
90
+ searchParams: URLSearchParams;
91
+ }
92
+ export interface RouteComponentProps<Path extends string = string, LoaderData = unknown, Search extends RouteSearch = RouteSearch> {
93
+ children?: JSX.Element;
94
+ loaderData: LoaderData;
95
+ params: RouteParams<Path>;
96
+ search: Search;
97
+ }
98
+ export interface RouteResponseStub {
99
+ headers: Headers;
100
+ status: number;
101
+ }
102
+ export interface RouteLoaderContext<Path extends string, Search extends RouteSearch = RouteSearch> {
103
+ context: RouterContextValue;
104
+ location: RouteLocation;
105
+ params: RouteParams<Path>;
106
+ pathname: string;
107
+ request: Request;
108
+ response: RouteResponseStub;
109
+ search: Search;
110
+ }
111
+ export interface RouteHeadContext<Path extends string, LoaderData, Search extends RouteSearch = RouteSearch> {
112
+ context: RouterContextValue;
113
+ location: RouteLocation;
114
+ loaderData: LoaderData;
115
+ params: RouteParams<Path>;
116
+ pathname: string;
117
+ search: Search;
118
+ }
119
+ export interface RouteBeforeLoadContext<Path extends string, Search extends RouteSearch = RouteSearch> {
120
+ context: RouterContextValue;
121
+ location: RouteLocation;
122
+ params: RouteParams<Path>;
123
+ pathname: string;
124
+ request: Request;
125
+ response: RouteResponseStub;
126
+ search: Search;
127
+ }
128
+ export interface RouteAfterLoadContext<Path extends string, LoaderData, Search extends RouteSearch = RouteSearch> {
129
+ context: RouterContextValue;
130
+ loaderData: LoaderData;
131
+ location: RouteLocation;
132
+ params: RouteParams<Path>;
133
+ pathname: string;
134
+ search: Search;
135
+ }
136
+ export interface NotFoundState {
137
+ handlerId: string | null;
138
+ targetId: string;
139
+ }
140
+ export interface RouteErrorState {
141
+ handlerId: string | null;
142
+ targetId: string;
143
+ error: RouteErrorData;
144
+ }
145
+ export interface RouterCreateOptions {
146
+ context?: RouterContextValue;
147
+ }
148
+ export interface FileRouteOptions<Path extends string, LoaderData, Search extends RouteSearch> {
149
+ afterLoad?: (context: RouteAfterLoadContext<Path, LoaderData, Search>) => MaybePromise<void>;
150
+ beforeLoad?: (context: RouteBeforeLoadContext<Path, Search>) => MaybePromise<unknown>;
151
+ component: Component<RouteComponentProps<Path, LoaderData, Search>>;
152
+ errorComponent?: Component<RouteErrorContext>;
153
+ head?: (context: RouteHeadContext<Path, LoaderData, Search>) => HeadObject;
154
+ hydration?: RouteHydrationMode;
155
+ loader?: (context: RouteLoaderContext<Path, Search>) => MaybePromise<LoaderData>;
156
+ notFoundComponent?: Component;
157
+ validateSearch?: (search: RouteSearch) => Search;
158
+ }
159
+ export interface RootRouteOptions<LoaderData, Search extends RouteSearch> {
160
+ afterLoad?: (context: RouteAfterLoadContext<'/', LoaderData, Search>) => MaybePromise<void>;
161
+ beforeLoad?: (context: RouteBeforeLoadContext<'/', Search>) => MaybePromise<unknown>;
162
+ component: Component<RouteComponentProps<'/', LoaderData, Search>>;
163
+ errorComponent?: Component<RouteErrorContext>;
164
+ head?: (context: RouteHeadContext<'/', LoaderData, Search>) => HeadObject;
165
+ hydration?: RouteHydrationMode;
166
+ loader?: (context: RouteLoaderContext<'/', Search>) => MaybePromise<LoaderData>;
167
+ notFoundComponent?: Component;
168
+ validateSearch?: (search: RouteSearch) => Search;
169
+ }
170
+ export interface RootRouteDefinition<LoaderData = unknown, Search extends RouteSearch = RouteSearch> {
171
+ kind: 'root';
172
+ options: RootRouteOptions<LoaderData, Search>;
173
+ useSearch: () => Accessor<Search>;
174
+ useSetSearch: () => SetSearchFunction<Search>;
175
+ }
176
+ export interface FileRouteDefinition<Path extends string = string, LoaderData = unknown, Search extends RouteSearch = RouteSearch> {
177
+ kind: 'file';
178
+ options: FileRouteOptions<Path, LoaderData, Search>;
179
+ path: Path;
180
+ useSearch: () => Accessor<Search>;
181
+ useSetSearch: () => SetSearchFunction<Search>;
182
+ }
183
+ export type AnyRouteDefinition = RootRouteDefinition<any, any> | FileRouteDefinition<any, any, any>;
184
+ export interface RouteModuleImport {
185
+ Route: unknown;
186
+ }
187
+ export interface GeneratedRouteRecord {
188
+ fullPath: string;
189
+ id: string;
190
+ importPath: string;
191
+ loadRoute: () => Promise<RouteModuleImport>;
192
+ matchPath: string | null;
193
+ parentId: string | null;
194
+ to: string;
195
+ }
196
+ export interface GeneratedRouteHydrationRecord {
197
+ detected: ResolvedRouteHydration;
198
+ }
199
+ export interface ResolvedMatch {
200
+ fullPath: string;
201
+ hydration: ResolvedRouteHydration;
202
+ id: string;
203
+ loaderData: unknown;
204
+ params: Record<string, string>;
205
+ route: AnyRouteDefinition;
206
+ search: unknown;
207
+ }
208
+ export interface ResolvedRouteState {
209
+ head: HeadObject;
210
+ matches: ResolvedMatch[];
211
+ notFound?: NotFoundState;
212
+ responseHeaders?: Headers;
213
+ search: string;
214
+ routeError?: RouteErrorState;
215
+ pathname: string;
216
+ payloadHtml?: string;
217
+ renderSource: 'component' | 'payload';
218
+ }
219
+ export interface SerializedMatch {
220
+ fullPath: string;
221
+ hydration: ResolvedRouteHydration;
222
+ id: string;
223
+ loaderData: unknown;
224
+ params: Record<string, string>;
225
+ search: unknown;
226
+ }
227
+ export interface BootstrapPayload {
228
+ head: HeadObject;
229
+ matches: SerializedMatch[];
230
+ notFound?: NotFoundState;
231
+ search: string;
232
+ routeError?: RouteErrorState;
233
+ pathname: string;
234
+ }
235
+ export interface RoutePayloadEnvelope extends BootstrapPayload {
236
+ html: string;
237
+ status: number;
238
+ }
239
+ export interface RouteRedirectEnvelope {
240
+ redirect: RouteRedirectData;
241
+ }
242
+ export type RouteNavigationEnvelope = RoutePayloadEnvelope | RouteRedirectEnvelope;
243
+ export interface RenderAssets {
244
+ css: string[];
245
+ js: string[];
246
+ }
247
+ export {};
248
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/seo.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ export interface RobotsConfig {
2
+ rules: RobotsRule[];
3
+ sitemapUrl?: string;
4
+ }
5
+ export interface RobotsRule {
6
+ allow?: string[];
7
+ crawlDelay?: number;
8
+ disallow?: string[];
9
+ userAgent: string | string[];
10
+ }
11
+ export declare function defineRobotsConfig(config: RobotsConfig): RobotsConfig;
12
+ export declare function defaultRobotsConfig(options?: {
13
+ siteUrl?: string;
14
+ }): RobotsConfig;
15
+ export declare function renderRobotsTxt(config: RobotsConfig): string;
16
+ //# sourceMappingURL=seo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../src/seo.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC7B;AAsBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAErE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,YAAY,CAmBpF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAmC5D"}
package/dist/seo.js ADDED
@@ -0,0 +1,69 @@
1
+ const AI_TRAINING_CRAWLERS = [
2
+ 'CCBot',
3
+ 'ChatGPT-User',
4
+ 'GPTBot',
5
+ 'Google-Extended',
6
+ 'anthropic-ai',
7
+ 'Bytespider',
8
+ 'ClaudeBot',
9
+ 'Diffbot',
10
+ 'FacebookBot',
11
+ 'Omgilibot',
12
+ 'cohere-ai',
13
+ ];
14
+ const AI_SEARCH_CRAWLERS = [
15
+ 'ChatGPT-User',
16
+ 'PerplexityBot',
17
+ 'YouBot',
18
+ ];
19
+ export function defineRobotsConfig(config) {
20
+ return config;
21
+ }
22
+ export function defaultRobotsConfig(options = {}) {
23
+ return {
24
+ rules: [
25
+ {
26
+ userAgent: '*',
27
+ allow: ['/'],
28
+ },
29
+ {
30
+ userAgent: AI_TRAINING_CRAWLERS,
31
+ disallow: ['/'],
32
+ },
33
+ {
34
+ userAgent: AI_SEARCH_CRAWLERS,
35
+ allow: ['/'],
36
+ crawlDelay: 2,
37
+ },
38
+ ],
39
+ sitemapUrl: options.siteUrl ? `${options.siteUrl.replace(/\/$/u, '')}/sitemap.xml` : undefined,
40
+ };
41
+ }
42
+ export function renderRobotsTxt(config) {
43
+ const lines = [];
44
+ for (const rule of config.rules) {
45
+ const agents = Array.isArray(rule.userAgent) ? rule.userAgent : [rule.userAgent];
46
+ for (const agent of agents) {
47
+ lines.push(`User-agent: ${agent}`);
48
+ }
49
+ if (rule.allow) {
50
+ for (const path of rule.allow) {
51
+ lines.push(`Allow: ${path}`);
52
+ }
53
+ }
54
+ if (rule.disallow) {
55
+ for (const path of rule.disallow) {
56
+ lines.push(`Disallow: ${path}`);
57
+ }
58
+ }
59
+ if (rule.crawlDelay !== undefined) {
60
+ lines.push(`Crawl-delay: ${rule.crawlDelay}`);
61
+ }
62
+ lines.push('');
63
+ }
64
+ if (config.sitemapUrl) {
65
+ lines.push(`Sitemap: ${config.sitemapUrl}`);
66
+ lines.push('');
67
+ }
68
+ return lines.join('\n');
69
+ }
@@ -0,0 +1,53 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import { Hono } from 'hono';
3
+ import type { ViteDevServer } from 'vite';
4
+ import type { AnalyticsDefinition } from '../analytics';
5
+ import type { RobotsConfig } from '../seo';
6
+ import type { RenderAssets } from '../runtime';
7
+ type Bindings = {
8
+ incoming: IncomingMessage;
9
+ outgoing: ServerResponse;
10
+ };
11
+ interface ServerEntryModule {
12
+ analytics?: AnalyticsDefinition;
13
+ getSitemapEntries?: () => Promise<Array<{
14
+ loc: string;
15
+ lastmod?: string;
16
+ changefreq?: string;
17
+ priority?: number;
18
+ }>>;
19
+ renderDocument(input: {
20
+ assets: RenderAssets;
21
+ nonce?: string;
22
+ request: Request;
23
+ }): Promise<Response>;
24
+ renderPayload(input: {
25
+ path: string;
26
+ request: Request;
27
+ }): Promise<{
28
+ head: Record<string, unknown>;
29
+ html: string;
30
+ matches: Array<Record<string, unknown>>;
31
+ pathname: string;
32
+ responseHeaders?: Headers;
33
+ search: string;
34
+ routeError?: Record<string, unknown>;
35
+ status: 200 | 404 | 500;
36
+ }>;
37
+ robotsConfig?: RobotsConfig;
38
+ }
39
+ export interface CreateAppOptions {
40
+ assets: RenderAssets;
41
+ isProd: boolean;
42
+ loadEntry: () => Promise<ServerEntryModule>;
43
+ staticRoot?: string;
44
+ vite?: ViteDevServer;
45
+ }
46
+ export declare function createVorzelaApp(options: CreateAppOptions): Hono<{
47
+ Bindings: Bindings;
48
+ Variables: {
49
+ cspNonce: string;
50
+ };
51
+ }, import("hono/types").BlankSchema, "/">;
52
+ export {};
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAGhE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAEzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAIvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,KAAK,QAAQ,GAAG;IACd,QAAQ,EAAE,eAAe,CAAA;IACzB,QAAQ,EAAE,cAAc,CAAA;CACzB,CAAA;AAED,UAAU,iBAAiB;IACzB,SAAS,CAAC,EAAE,mBAAmB,CAAA;IAC/B,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IACnH,cAAc,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACpG,aAAa,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAChE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC7B,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QACvC,QAAQ,EAAE,MAAM,CAAA;QAChB,eAAe,CAAC,EAAE,OAAO,CAAA;QACzB,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACpC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;KACxB,CAAC,CAAA;IACF,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,aAAa,CAAA;CACrB;AAqDD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB;cAEvB,QAAQ;eAAa;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE;0CA6P3E"}