@alepha/react 0.13.8 → 0.14.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/core/components/ClientOnly.tsx","../../src/core/errors/Redirection.ts","../../src/core/providers/ReactPageProvider.ts","../../src/core/services/ReactPageService.ts","../../src/core/primitives/$page.ts","../../src/core/providers/ReactBrowserRouterProvider.ts","../../src/core/providers/ReactBrowserProvider.ts","../../src/core/contexts/AlephaProvider.tsx","../../src/core/contexts/AlephaContext.ts","../../src/core/hooks/useAction.ts","../../src/core/hooks/useAlepha.ts","../../src/core/hooks/useClient.ts","../../src/core/hooks/useEvents.ts","../../src/core/hooks/useInject.ts","../../src/core/hooks/useSchema.ts","../../src/core/hooks/useStore.ts","../../src/core/components/ErrorBoundary.tsx","../../src/core/components/ErrorViewer.tsx","../../src/core/components/Link.tsx","../../src/core/components/NestedView.tsx","../../src/core/components/NotFound.tsx","../../src/core/contexts/RouterLayerContext.ts","../../src/core/hooks/useActive.ts","../../src/core/hooks/useQueryParams.ts","../../src/core/services/ReactRouter.ts","../../src/core/hooks/useRouter.ts","../../src/core/hooks/useRouterState.ts","../../src/core/providers/ReactServerProvider.ts","../../src/core/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,209 +1,10 @@
1
- import * as alepha8 from "alepha";
2
- import { Alepha, LogLevel, LoggerInterface, Static, TArray, TObject, TSchema, TypeBoxError } from "alepha";
1
+ import * as alepha0 from "alepha";
2
+ import { Alepha, Static, TArray, TObject, TSchema, TypeBoxError } from "alepha";
3
3
  import { InputHTMLAttributes, ReactNode } from "react";
4
- import dayjsDuration from "dayjs/plugin/duration.js";
5
- import DayjsApi, { Dayjs, ManipulateType, PluginFunc } from "dayjs";
4
+ import * as alepha_logger0 from "alepha/logger";
6
5
 
7
- //#region ../../../alepha/src/logger/schemas/logEntrySchema.d.ts
8
- declare const logEntrySchema: alepha8.TObject<{
9
- level: alepha8.TUnsafe<"SILENT" | "TRACE" | "DEBUG" | "INFO" | "WARN" | "ERROR">;
10
- message: alepha8.TString;
11
- service: alepha8.TString;
12
- module: alepha8.TString;
13
- context: alepha8.TOptional<alepha8.TString>;
14
- app: alepha8.TOptional<alepha8.TString>;
15
- data: alepha8.TOptional<alepha8.TAny>;
16
- timestamp: alepha8.TNumber;
17
- }>;
18
- type LogEntry = Static<typeof logEntrySchema>;
19
- //#endregion
20
- //#region ../../../alepha/src/datetime/providers/DateTimeProvider.d.ts
21
- type DateTime = DayjsApi.Dayjs;
22
- type Duration = dayjsDuration.Duration;
23
- type DurationLike = number | dayjsDuration.Duration | [number, ManipulateType];
24
- declare class DateTimeProvider {
25
- static PLUGINS: Array<PluginFunc<any>>;
26
- protected alepha: Alepha;
27
- protected ref: DateTime | null;
28
- protected readonly timeouts: Timeout[];
29
- protected readonly intervals: Interval[];
30
- constructor();
31
- protected readonly onStart: alepha8.HookPrimitive<"start">;
32
- protected readonly onStop: alepha8.HookPrimitive<"stop">;
33
- setLocale(locale: string): void;
34
- isDateTime(value: unknown): value is DateTime;
35
- /**
36
- * Create a new UTC DateTime instance.
37
- */
38
- utc(date: string | number | Date | Dayjs | null | undefined): DateTime;
39
- /**
40
- * Create a new DateTime instance.
41
- */
42
- of(date: string | number | Date | Dayjs | null | undefined): DateTime;
43
- /**
44
- * Get the current date as a string.
45
- */
46
- toISOString(date?: Date | string | DateTime): string;
47
- /**
48
- * Get the current date.
49
- */
50
- now(): DateTime;
51
- /**
52
- * Get the current date as a string.
53
- *
54
- * This is much faster than `DateTimeProvider.now().toISOString()` as it avoids creating a DateTime instance.
55
- */
56
- nowISOString(): string;
57
- /**
58
- * Get the current date as milliseconds since epoch.
59
- *
60
- * This is much faster than `DateTimeProvider.now().valueOf()` as it avoids creating a DateTime instance.
61
- */
62
- nowMillis(): number;
63
- /**
64
- * Get the current date as a string.
65
- *
66
- * @protected
67
- */
68
- protected getCurrentDate(): DateTime;
69
- /**
70
- * Create a new Duration instance.
71
- */
72
- duration: (duration: DurationLike, unit?: ManipulateType) => Duration;
73
- isDurationLike(value: unknown): value is DurationLike;
74
- /**
75
- * Return a promise that resolves after the next tick.
76
- * It uses `setTimeout` with 0 ms delay.
77
- */
78
- tick(): Promise<void>;
79
- /**
80
- * Wait for a certain duration.
81
- *
82
- * You can clear the timeout by using the `AbortSignal` API.
83
- * Aborted signal will resolve the promise immediately, it does not reject it.
84
- */
85
- wait(duration: DurationLike, options?: {
86
- signal?: AbortSignal;
87
- now?: number;
88
- }): Promise<void>;
89
- createInterval(run: () => unknown, duration: DurationLike, start?: boolean): Interval;
90
- /**
91
- * Run a callback after a certain duration.
92
- */
93
- createTimeout(callback: () => void, duration: DurationLike, now?: number): Timeout;
94
- clearTimeout(timeout: Timeout): void;
95
- clearInterval(interval: Interval): void;
96
- /**
97
- * Run a function with a deadline.
98
- */
99
- deadline<T>(fn: (signal: AbortSignal) => Promise<T>, duration: DurationLike): Promise<T>;
100
- /**
101
- * Add time to the current date.
102
- */
103
- travel(duration: DurationLike, unit?: ManipulateType): Promise<void>;
104
- /**
105
- * Stop the time.
106
- */
107
- pause(): DateTime;
108
- /**
109
- * Reset the reference date.
110
- */
111
- reset(): void;
112
- }
113
- interface Interval {
114
- timer?: any;
115
- duration: number;
116
- run: () => unknown;
117
- }
118
- interface Timeout {
119
- now: number;
120
- timer?: any;
121
- duration: number;
122
- callback: () => void;
123
- clear: () => void;
124
- }
125
- //#endregion
126
- //#region ../../../alepha/src/logger/providers/LogDestinationProvider.d.ts
127
- declare abstract class LogDestinationProvider {
128
- abstract write(message: string, entry: LogEntry): void;
129
- }
130
- //#endregion
131
- //#region ../../../alepha/src/logger/providers/LogFormatterProvider.d.ts
132
- declare abstract class LogFormatterProvider {
133
- abstract format(entry: LogEntry): string;
134
- }
135
- //#endregion
136
- //#region ../../../alepha/src/logger/services/Logger.d.ts
137
- declare class Logger implements LoggerInterface {
138
- protected readonly alepha: Alepha;
139
- protected readonly formatter: LogFormatterProvider;
140
- protected readonly destination: LogDestinationProvider;
141
- protected readonly dateTimeProvider: DateTimeProvider;
142
- protected readonly levels: Record<string, number>;
143
- protected readonly service: string;
144
- protected readonly module: string;
145
- protected readonly app?: string;
146
- protected appLogLevel: string;
147
- protected logLevel: LogLevel;
148
- constructor(service: string, module: string);
149
- get context(): string | undefined;
150
- get level(): string;
151
- parseLevel(level: string, app: string): LogLevel;
152
- private matchesPattern;
153
- asLogLevel(something: string): LogLevel;
154
- error(message: string, data?: unknown): void;
155
- warn(message: string, data?: unknown): void;
156
- info(message: string, data?: unknown): void;
157
- debug(message: string, data?: unknown): void;
158
- trace(message: string, data?: unknown): void;
159
- protected log(level: LogLevel, message: string, data?: unknown): void;
160
- protected emit(entry: LogEntry, message?: string): void;
161
- }
162
- //#endregion
163
- //#region ../../../alepha/src/logger/index.d.ts
164
- declare const envSchema: alepha8.TObject<{
165
- /**
166
- * Default log level for the application.
167
- *
168
- * Default by environment:
169
- * - dev = info
170
- * - prod = info
171
- * - test = error
172
- *
173
- * Levels are: "trace" | "debug" | "info" | "warn" | "error" | "silent"
174
- *
175
- * Level can be set for a specific module:
176
- *
177
- * @example
178
- * LOG_LEVEL=my.module.name:debug,info # Set debug level for my.module.name and info for all other modules
179
- * LOG_LEVEL=alepha:trace, info # Set trace level for all alepha modules and info for all other modules
180
- */
181
- LOG_LEVEL: alepha8.TOptional<alepha8.TString>;
182
- /**
183
- * Built-in log formats.
184
- * - "json" - JSON format, useful for structured logging and log aggregation. {@link JsonFormatterProvider}
185
- * - "pretty" - Simple text format, human-readable, with colors. {@link PrettyFormatterProvider}
186
- * - "raw" - Raw format, no formatting, just the message. {@link RawFormatterProvider}
187
- */
188
- LOG_FORMAT: alepha8.TOptional<alepha8.TUnsafe<"json" | "pretty" | "raw">>;
189
- }>;
190
- declare module "alepha" {
191
- interface Env extends Partial<Static<typeof envSchema>> {}
192
- interface State {
193
- /**
194
- * Current log level for the application or specific modules.
195
- */
196
- "alepha.logger.level"?: string;
197
- }
198
- interface Hooks {
199
- log: {
200
- message?: string;
201
- entry: LogEntry;
202
- };
203
- }
204
- }
205
- //#endregion
206
6
  //#region ../../src/form/services/FormModel.d.ts
7
+
207
8
  /**
208
9
  * FormModel is a dynamic form handler that generates form inputs based on a provided TypeBox schema.
209
10
  * It manages form state, handles input changes, and processes form submissions with validation.
@@ -215,7 +16,7 @@ declare module "alepha" {
215
16
  declare class FormModel<T extends TObject> {
216
17
  readonly id: string;
217
18
  readonly options: FormCtrlOptions<T>;
218
- protected readonly log: Logger;
19
+ protected readonly log: alepha_logger0.Logger;
219
20
  protected readonly alepha: Alepha;
220
21
  protected readonly values: Record<string, any>;
221
22
  protected submitInProgress: boolean;
@@ -421,7 +222,7 @@ declare module "alepha" {
421
222
  * @see {@link useForm}
422
223
  * @module alepha.react.form
423
224
  */
424
- declare const AlephaReactForm: alepha8.Service<alepha8.Module>;
225
+ declare const AlephaReactForm: alepha0.Service<alepha0.Module>;
425
226
  //#endregion
426
227
  export { AlephaReactForm, ArrayInputField, BaseInputField, FormCtrlOptions, FormEventLike, FormModel, FormState, FormValidationError, InputField, InputHTMLAttributesLike, ObjectInputField, SchemaToInput, UseFormStateReturn, useForm, useFormState };
427
228
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/form/services/FormModel.ts","../../src/form/components/FormState.tsx","../../src/form/hooks/useForm.ts","../../src/form/hooks/useFormState.ts","../../src/form/errors/FormValidationError.ts","../../src/form/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -2,25 +2,174 @@ import { AlephaReact, useInject } from "@alepha/react";
2
2
  import { $hook, $inject, $module, Alepha, KIND, Primitive, createPrimitive } from "alepha";
3
3
  import { useCallback, useEffect, useMemo } from "react";
4
4
 
5
+ //#region ../../src/head/helpers/SeoExpander.ts
6
+ /**
7
+ * Expands Head configuration into SEO meta tags.
8
+ *
9
+ * Generates:
10
+ * - `<meta name="description">` from head.description
11
+ * - `<meta property="og:*">` OpenGraph tags
12
+ * - `<meta name="twitter:*">` Twitter Card tags
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const helper = new SeoExpander();
17
+ * const { meta, link } = helper.expand({
18
+ * title: "My App",
19
+ * description: "Build amazing apps",
20
+ * image: "https://example.com/og.png",
21
+ * url: "https://example.com/",
22
+ * });
23
+ * ```
24
+ */
25
+ var SeoExpander = class {
26
+ expand(head) {
27
+ const meta = [];
28
+ const link = [];
29
+ if (!(head.description || head.image || head.url || head.siteName || head.locale || head.type || head.og || head.twitter)) return {
30
+ meta,
31
+ link
32
+ };
33
+ if (head.description) meta.push({
34
+ name: "description",
35
+ content: head.description
36
+ });
37
+ if (head.url) link.push({
38
+ rel: "canonical",
39
+ href: head.url
40
+ });
41
+ this.expandOpenGraph(head, meta);
42
+ this.expandTwitter(head, meta);
43
+ return {
44
+ meta,
45
+ link
46
+ };
47
+ }
48
+ expandOpenGraph(head, meta) {
49
+ const ogTitle = head.og?.title ?? head.title;
50
+ const ogDescription = head.og?.description ?? head.description;
51
+ const ogImage = head.og?.image ?? head.image;
52
+ if (head.type || ogTitle) meta.push({
53
+ property: "og:type",
54
+ content: head.type ?? "website"
55
+ });
56
+ if (head.url) meta.push({
57
+ property: "og:url",
58
+ content: head.url
59
+ });
60
+ if (ogTitle) meta.push({
61
+ property: "og:title",
62
+ content: ogTitle
63
+ });
64
+ if (ogDescription) meta.push({
65
+ property: "og:description",
66
+ content: ogDescription
67
+ });
68
+ if (ogImage) {
69
+ meta.push({
70
+ property: "og:image",
71
+ content: ogImage
72
+ });
73
+ if (head.imageWidth) meta.push({
74
+ property: "og:image:width",
75
+ content: String(head.imageWidth)
76
+ });
77
+ if (head.imageHeight) meta.push({
78
+ property: "og:image:height",
79
+ content: String(head.imageHeight)
80
+ });
81
+ if (head.imageAlt) meta.push({
82
+ property: "og:image:alt",
83
+ content: head.imageAlt
84
+ });
85
+ }
86
+ if (head.siteName) meta.push({
87
+ property: "og:site_name",
88
+ content: head.siteName
89
+ });
90
+ if (head.locale) meta.push({
91
+ property: "og:locale",
92
+ content: head.locale
93
+ });
94
+ }
95
+ expandTwitter(head, meta) {
96
+ const twitterTitle = head.twitter?.title ?? head.title;
97
+ const twitterDescription = head.twitter?.description ?? head.description;
98
+ const twitterImage = head.twitter?.image ?? head.image;
99
+ if (head.twitter?.card || twitterTitle || twitterImage) meta.push({
100
+ name: "twitter:card",
101
+ content: head.twitter?.card ?? (twitterImage ? "summary_large_image" : "summary")
102
+ });
103
+ if (head.url) meta.push({
104
+ name: "twitter:url",
105
+ content: head.url
106
+ });
107
+ if (twitterTitle) meta.push({
108
+ name: "twitter:title",
109
+ content: twitterTitle
110
+ });
111
+ if (twitterDescription) meta.push({
112
+ name: "twitter:description",
113
+ content: twitterDescription
114
+ });
115
+ if (twitterImage) {
116
+ meta.push({
117
+ name: "twitter:image",
118
+ content: twitterImage
119
+ });
120
+ if (head.imageAlt) meta.push({
121
+ name: "twitter:image:alt",
122
+ content: head.imageAlt
123
+ });
124
+ }
125
+ if (head.twitter?.site) meta.push({
126
+ name: "twitter:site",
127
+ content: head.twitter.site
128
+ });
129
+ if (head.twitter?.creator) meta.push({
130
+ name: "twitter:creator",
131
+ content: head.twitter.creator
132
+ });
133
+ }
134
+ };
135
+
136
+ //#endregion
5
137
  //#region ../../src/head/providers/HeadProvider.ts
6
138
  var HeadProvider = class {
139
+ seoExpander = $inject(SeoExpander);
7
140
  global = [];
8
141
  fillHead(state) {
9
142
  state.head = { ...state.head };
10
143
  for (const h of this.global ?? []) {
11
144
  const head = typeof h === "function" ? h() : h;
12
- state.head = {
13
- ...state.head,
14
- ...head,
15
- meta: [...state.head.meta ?? [], ...head.meta ?? []]
16
- };
145
+ this.mergeHead(state, head);
17
146
  }
18
147
  for (const layer of state.layers) if (layer.route?.head && !layer.error) this.fillHeadByPage(layer.route, state, layer.props ?? {});
19
148
  }
149
+ mergeHead(state, head) {
150
+ const { meta, link } = this.seoExpander.expand(head);
151
+ state.head = {
152
+ ...state.head,
153
+ ...head,
154
+ meta: [
155
+ ...state.head.meta ?? [],
156
+ ...meta,
157
+ ...head.meta ?? []
158
+ ],
159
+ link: [
160
+ ...state.head.link ?? [],
161
+ ...link,
162
+ ...head.link ?? []
163
+ ]
164
+ };
165
+ }
20
166
  fillHeadByPage(page, state, props) {
21
167
  if (!page.head) return;
22
168
  state.head ??= {};
23
169
  const head = typeof page.head === "function" ? page.head(props, state.head) : page.head;
170
+ const { meta, link } = this.seoExpander.expand(head);
171
+ state.head.meta = [...state.head.meta ?? [], ...meta];
172
+ state.head.link = [...state.head.link ?? [], ...link];
24
173
  if (head.title) {
25
174
  state.head ??= {};
26
175
  if (state.head.titleSeparator) state.head.title = `${head.title}${state.head.titleSeparator}${state.head.title}`;
@@ -36,6 +185,7 @@ var HeadProvider = class {
36
185
  ...head.bodyAttributes
37
186
  };
38
187
  if (head.meta) state.head.meta = [...state.head.meta ?? [], ...head.meta ?? []];
188
+ if (head.link) state.head.link = [...state.head.link ?? [], ...head.link ?? []];
39
189
  }
40
190
  };
41
191
 
@@ -101,6 +251,14 @@ var BrowserHeadProvider = class {
101
251
  content
102
252
  });
103
253
  }
254
+ for (const meta of document.head.querySelectorAll("meta[property]")) {
255
+ const property = meta.getAttribute("property");
256
+ const content = meta.getAttribute("content");
257
+ if (property && content) metas.push({
258
+ property,
259
+ content
260
+ });
261
+ }
104
262
  return metas;
105
263
  }
106
264
  };
@@ -111,17 +269,7 @@ var BrowserHeadProvider = class {
111
269
  else document.body.removeAttribute(key);
112
270
  if (head.htmlAttributes) for (const [key, value] of Object.entries(head.htmlAttributes)) if (value) document.documentElement.setAttribute(key, value);
113
271
  else document.documentElement.removeAttribute(key);
114
- if (head.meta) for (const it of head.meta) {
115
- const { name, content } = it;
116
- const meta = document.querySelector(`meta[name="${name}"]`);
117
- if (meta) meta.setAttribute("content", content);
118
- else {
119
- const newMeta = document.createElement("meta");
120
- newMeta.setAttribute("name", name);
121
- newMeta.setAttribute("content", content);
122
- document.head.appendChild(newMeta);
123
- }
124
- }
272
+ if (head.meta) for (const it of head.meta) this.renderMetaTag(document, it);
125
273
  if (head.link) for (const it of head.link) {
126
274
  const { rel, href } = it;
127
275
  let link = document.querySelector(`link[rel="${rel}"][href="${href}"]`);
@@ -133,6 +281,30 @@ var BrowserHeadProvider = class {
133
281
  }
134
282
  }
135
283
  }
284
+ renderMetaTag(document, meta) {
285
+ const { content } = meta;
286
+ if (meta.property) {
287
+ const existing = document.querySelector(`meta[property="${meta.property}"]`);
288
+ if (existing) existing.setAttribute("content", content);
289
+ else {
290
+ const newMeta = document.createElement("meta");
291
+ newMeta.setAttribute("property", meta.property);
292
+ newMeta.setAttribute("content", content);
293
+ document.head.appendChild(newMeta);
294
+ }
295
+ return;
296
+ }
297
+ if (meta.name) {
298
+ const existing = document.querySelector(`meta[name="${meta.name}"]`);
299
+ if (existing) existing.setAttribute("content", content);
300
+ else {
301
+ const newMeta = document.createElement("meta");
302
+ newMeta.setAttribute("name", meta.name);
303
+ newMeta.setAttribute("content", content);
304
+ document.head.appendChild(newMeta);
305
+ }
306
+ }
307
+ }
136
308
  };
137
309
 
138
310
  //#endregion
@@ -185,5 +357,5 @@ const AlephaReactHead = $module({
185
357
  });
186
358
 
187
359
  //#endregion
188
- export { $head, AlephaReactHead, BrowserHeadProvider, HeadPrimitive, useHead };
360
+ export { $head, AlephaReactHead, BrowserHeadProvider, HeadPrimitive, SeoExpander, useHead };
189
361
  //# sourceMappingURL=index.browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.browser.js","names":["attrs: Record<string, string>","metas: { name: string; content: string }[]"],"sources":["../../src/head/providers/HeadProvider.ts","../../src/head/primitives/$head.ts","../../src/head/providers/BrowserHeadProvider.ts","../../src/head/hooks/useHead.ts","../../src/head/index.browser.ts"],"sourcesContent":["import type { PageRoute, ReactRouterState } from \"@alepha/react\";\nimport type { Head } from \"../interfaces/Head.ts\";\n\nexport class HeadProvider {\n public global?: Array<Head | (() => Head)> = [];\n\n public fillHead(state: ReactRouterState) {\n state.head = {\n ...state.head,\n };\n\n for (const h of this.global ?? []) {\n const head =\n typeof h === \"function\" ? h() : h;\n state.head = {\n ...state.head,\n ...head,\n meta: [...(state.head.meta ?? []), ...(head.meta ?? [])],\n };\n }\n\n for (const layer of state.layers) {\n if (layer.route?.head && !layer.error) {\n this.fillHeadByPage(layer.route, state, layer.props ?? {});\n }\n }\n }\n\n protected fillHeadByPage(\n page: PageRoute,\n state: ReactRouterState,\n props: Record<string, any>,\n ): void {\n if (!page.head) {\n return;\n }\n\n state.head ??= {};\n\n const head =\n typeof page.head === \"function\"\n ? page.head(props, state.head)\n : page.head;\n\n if (head.title) {\n state.head ??= {};\n\n if (state.head.titleSeparator) {\n state.head.title = `${head.title}${state.head.titleSeparator}${state.head.title}`;\n } else {\n state.head.title = head.title;\n }\n\n state.head.titleSeparator = head.titleSeparator;\n }\n\n if (head.htmlAttributes) {\n state.head.htmlAttributes = {\n ...state.head.htmlAttributes,\n ...head.htmlAttributes,\n };\n }\n\n if (head.bodyAttributes) {\n state.head.bodyAttributes = {\n ...state.head.bodyAttributes,\n ...head.bodyAttributes,\n };\n }\n\n if (head.meta) {\n state.head.meta = [...(state.head.meta ?? []), ...(head.meta ?? [])];\n }\n }\n}\n","import { $inject, createPrimitive, Primitive, KIND } from \"alepha\";\nimport type { Head } from \"../interfaces/Head.ts\";\nimport { HeadProvider } from \"../providers/HeadProvider.ts\";\n\n/**\n * Set global `<head>` options for the application.\n */\nexport const $head = (options: HeadPrimitiveOptions) => {\n return createPrimitive(HeadPrimitive, options);\n};\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport type HeadPrimitiveOptions = Head | (() => Head);\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport class HeadPrimitive extends Primitive<HeadPrimitiveOptions> {\n protected readonly provider = $inject(HeadProvider);\n protected onInit() {\n this.provider.global = [\n ...(this.provider.global ?? []),\n this.options,\n ];\n }\n}\n\n$head[KIND] = HeadPrimitive;\n","import { $hook, $inject } from \"alepha\";\nimport type { Head } from \"../interfaces/Head.ts\";\nimport { HeadProvider } from \"./HeadProvider.ts\";\n\nexport class BrowserHeadProvider {\n protected readonly headProvider = $inject(HeadProvider);\n\n protected get document(): Document {\n return window.document;\n }\n\n protected readonly onBrowserRender = $hook({\n on: \"react:browser:render\",\n handler: async ({ state }) => {\n this.headProvider.fillHead(state);\n if (state.head) {\n this.renderHead(this.document, state.head);\n }\n },\n });\n\n protected readonly onTransitionEnd = $hook({\n on: \"react:transition:end\",\n handler: async ({ state }) => {\n this.headProvider.fillHead(state);\n if (state.head) {\n this.renderHead(this.document, state.head);\n }\n },\n });\n\n public getHead(document: Document): Head {\n return {\n get title() {\n return document.title;\n },\n get htmlAttributes() {\n const attrs: Record<string, string> = {};\n for (const attr of document.documentElement.attributes) {\n attrs[attr.name] = attr.value;\n }\n return attrs;\n },\n get bodyAttributes() {\n const attrs: Record<string, string> = {};\n for (const attr of document.body.attributes) {\n attrs[attr.name] = attr.value;\n }\n return attrs;\n },\n get meta() {\n const metas: { name: string; content: string }[] = [];\n for (const meta of document.head.querySelectorAll(\"meta[name]\")) {\n const name = meta.getAttribute(\"name\");\n const content = meta.getAttribute(\"content\");\n if (name && content) {\n metas.push({ name, content });\n }\n }\n return metas;\n },\n };\n }\n\n public renderHead(document: Document, head: Head): void {\n if (head.title) {\n document.title = head.title;\n }\n\n if (head.bodyAttributes) {\n for (const [key, value] of Object.entries(head.bodyAttributes)) {\n if (value) {\n document.body.setAttribute(key, value);\n } else {\n document.body.removeAttribute(key);\n }\n }\n }\n\n if (head.htmlAttributes) {\n for (const [key, value] of Object.entries(head.htmlAttributes)) {\n if (value) {\n document.documentElement.setAttribute(key, value);\n } else {\n document.documentElement.removeAttribute(key);\n }\n }\n }\n\n if (head.meta) {\n for (const it of head.meta) {\n const { name, content } = it;\n const meta = document.querySelector(`meta[name=\"${name}\"]`);\n if (meta) {\n meta.setAttribute(\"content\", content);\n } else {\n const newMeta = document.createElement(\"meta\");\n newMeta.setAttribute(\"name\", name);\n newMeta.setAttribute(\"content\", content);\n document.head.appendChild(newMeta);\n }\n }\n }\n\n if (head.link) {\n for (const it of head.link) {\n const { rel, href } = it;\n let link = document.querySelector(`link[rel=\"${rel}\"][href=\"${href}\"]`);\n if (!link) {\n link = document.createElement(\"link\");\n link.setAttribute(\"rel\", rel);\n link.setAttribute(\"href\", href);\n document.head.appendChild(link);\n }\n }\n }\n }\n}\n","import { useInject } from \"@alepha/react\";\nimport { Alepha } from \"alepha\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport type { Head } from \"../interfaces/Head.ts\";\nimport { BrowserHeadProvider } from \"../providers/BrowserHeadProvider.ts\";\n\n/**\n * ```tsx\n * const App = () => {\n * const [head, setHead] = useHead({\n * // will set the document title on the first render\n * title: \"My App\",\n * });\n *\n * return (\n * // This will update the document title when the button is clicked\n * <button onClick={() => setHead({ title: \"Change Title\" })}>\n * Change Title {head.title}\n * </button>\n * );\n * }\n * ```\n */\nexport const useHead = (options?: UseHeadOptions): UseHeadReturn => {\n const alepha = useInject(Alepha);\n\n const current = useMemo(() => {\n if (!alepha.isBrowser()) {\n return {};\n }\n\n return alepha.inject(BrowserHeadProvider).getHead(window.document);\n }, []);\n\n const setHead = useCallback((head?: Head | ((previous?: Head) => Head)) => {\n if (!alepha.isBrowser()) {\n return;\n }\n\n alepha\n .inject(BrowserHeadProvider)\n .renderHead(\n window.document,\n typeof head === \"function\" ? head(current) : head || {},\n );\n }, []);\n\n useEffect(() => {\n if (options) {\n setHead(options);\n }\n }, []);\n\n return [current, setHead];\n};\n\nexport type UseHeadOptions = Head | ((previous?: Head) => Head);\n\nexport type UseHeadReturn = [\n Head,\n (head?: Head | ((previous?: Head) => Head)) => void,\n];\n","import { AlephaReact } from \"@alepha/react\";\nimport { $module } from \"alepha\";\nimport { $head } from \"./primitives/$head.ts\";\nimport { BrowserHeadProvider } from \"./providers/BrowserHeadProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./primitives/$head.ts\";\nexport * from \"./hooks/useHead.ts\";\nexport * from \"./interfaces/Head.ts\";\nexport * from \"./providers/BrowserHeadProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Alepha React Head Module\n *\n * @see {@link BrowserHeadProvider}\n * @module alepha.react.head\n */\nexport const AlephaReactHead = $module({\n name: \"alepha.react.head\",\n primitives: [$head],\n services: [AlephaReact, BrowserHeadProvider],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.browser.js","names":["meta: HeadMeta[]","link: Array<{ rel: string; href: string }>","attrs: Record<string, string>","metas: HeadMeta[]"],"sources":["../../src/head/helpers/SeoExpander.ts","../../src/head/providers/HeadProvider.ts","../../src/head/primitives/$head.ts","../../src/head/providers/BrowserHeadProvider.ts","../../src/head/hooks/useHead.ts","../../src/head/index.browser.ts"],"sourcesContent":["import type { Head, HeadMeta } from \"../interfaces/Head.ts\";\n\n/**\n * Expands Head configuration into SEO meta tags.\n *\n * Generates:\n * - `<meta name=\"description\">` from head.description\n * - `<meta property=\"og:*\">` OpenGraph tags\n * - `<meta name=\"twitter:*\">` Twitter Card tags\n *\n * @example\n * ```ts\n * const helper = new SeoExpander();\n * const { meta, link } = helper.expand({\n * title: \"My App\",\n * description: \"Build amazing apps\",\n * image: \"https://example.com/og.png\",\n * url: \"https://example.com/\",\n * });\n * ```\n */\nexport class SeoExpander {\n public expand(head: Head): {\n meta: HeadMeta[];\n link: Array<{ rel: string; href: string }>;\n } {\n const meta: HeadMeta[] = [];\n const link: Array<{ rel: string; href: string }> = [];\n\n // Only expand SEO if there's meaningful content beyond just title\n const hasSeoContent =\n head.description ||\n head.image ||\n head.url ||\n head.siteName ||\n head.locale ||\n head.type ||\n head.og ||\n head.twitter;\n\n if (!hasSeoContent) {\n return { meta, link };\n }\n\n // Base description\n if (head.description) {\n meta.push({ name: \"description\", content: head.description });\n }\n\n // Canonical URL\n if (head.url) {\n link.push({ rel: \"canonical\", href: head.url });\n }\n\n // OpenGraph tags\n this.expandOpenGraph(head, meta);\n\n // Twitter Card tags\n this.expandTwitter(head, meta);\n\n return { meta, link };\n }\n\n protected expandOpenGraph(head: Head, meta: HeadMeta[]): void {\n const ogTitle = head.og?.title ?? head.title;\n const ogDescription = head.og?.description ?? head.description;\n const ogImage = head.og?.image ?? head.image;\n\n if (head.type || ogTitle) {\n meta.push({ property: \"og:type\", content: head.type ?? \"website\" });\n }\n if (head.url) {\n meta.push({ property: \"og:url\", content: head.url });\n }\n if (ogTitle) {\n meta.push({ property: \"og:title\", content: ogTitle });\n }\n if (ogDescription) {\n meta.push({ property: \"og:description\", content: ogDescription });\n }\n if (ogImage) {\n meta.push({ property: \"og:image\", content: ogImage });\n if (head.imageWidth) {\n meta.push({\n property: \"og:image:width\",\n content: String(head.imageWidth),\n });\n }\n if (head.imageHeight) {\n meta.push({\n property: \"og:image:height\",\n content: String(head.imageHeight),\n });\n }\n if (head.imageAlt) {\n meta.push({ property: \"og:image:alt\", content: head.imageAlt });\n }\n }\n if (head.siteName) {\n meta.push({ property: \"og:site_name\", content: head.siteName });\n }\n if (head.locale) {\n meta.push({ property: \"og:locale\", content: head.locale });\n }\n }\n\n protected expandTwitter(head: Head, meta: HeadMeta[]): void {\n const twitterTitle = head.twitter?.title ?? head.title;\n const twitterDescription = head.twitter?.description ?? head.description;\n const twitterImage = head.twitter?.image ?? head.image;\n\n if (head.twitter?.card || twitterTitle || twitterImage) {\n meta.push({\n name: \"twitter:card\",\n content:\n head.twitter?.card ?? (twitterImage ? \"summary_large_image\" : \"summary\"),\n });\n }\n if (head.url) {\n meta.push({ name: \"twitter:url\", content: head.url });\n }\n if (twitterTitle) {\n meta.push({ name: \"twitter:title\", content: twitterTitle });\n }\n if (twitterDescription) {\n meta.push({ name: \"twitter:description\", content: twitterDescription });\n }\n if (twitterImage) {\n meta.push({ name: \"twitter:image\", content: twitterImage });\n if (head.imageAlt) {\n meta.push({ name: \"twitter:image:alt\", content: head.imageAlt });\n }\n }\n if (head.twitter?.site) {\n meta.push({ name: \"twitter:site\", content: head.twitter.site });\n }\n if (head.twitter?.creator) {\n meta.push({ name: \"twitter:creator\", content: head.twitter.creator });\n }\n }\n}\n","import type { PageRoute, ReactRouterState } from \"@alepha/react\";\nimport { $inject } from \"alepha\";\nimport { SeoExpander } from \"../helpers/SeoExpander.ts\";\nimport type { Head } from \"../interfaces/Head.ts\";\n\nexport class HeadProvider {\n protected readonly seoExpander = $inject(SeoExpander);\n\n public global?: Array<Head | (() => Head)> = [];\n\n public fillHead(state: ReactRouterState) {\n state.head = {\n ...state.head,\n };\n\n for (const h of this.global ?? []) {\n const head = typeof h === \"function\" ? h() : h;\n this.mergeHead(state, head);\n }\n\n for (const layer of state.layers) {\n if (layer.route?.head && !layer.error) {\n this.fillHeadByPage(layer.route, state, layer.props ?? {});\n }\n }\n }\n\n protected mergeHead(state: ReactRouterState, head: Head): void {\n // Expand SEO fields into meta tags\n const { meta, link } = this.seoExpander.expand(head);\n state.head = {\n ...state.head,\n ...head,\n meta: [...(state.head.meta ?? []), ...meta, ...(head.meta ?? [])],\n link: [...(state.head.link ?? []), ...link, ...(head.link ?? [])],\n };\n }\n\n protected fillHeadByPage(\n page: PageRoute,\n state: ReactRouterState,\n props: Record<string, any>,\n ): void {\n if (!page.head) {\n return;\n }\n\n state.head ??= {};\n\n const head =\n typeof page.head === \"function\"\n ? page.head(props, state.head)\n : page.head;\n\n // Expand SEO fields into meta tags\n const { meta, link } = this.seoExpander.expand(head);\n state.head.meta = [...(state.head.meta ?? []), ...meta];\n state.head.link = [...(state.head.link ?? []), ...link];\n\n if (head.title) {\n state.head ??= {};\n\n if (state.head.titleSeparator) {\n state.head.title = `${head.title}${state.head.titleSeparator}${state.head.title}`;\n } else {\n state.head.title = head.title;\n }\n\n state.head.titleSeparator = head.titleSeparator;\n }\n\n if (head.htmlAttributes) {\n state.head.htmlAttributes = {\n ...state.head.htmlAttributes,\n ...head.htmlAttributes,\n };\n }\n\n if (head.bodyAttributes) {\n state.head.bodyAttributes = {\n ...state.head.bodyAttributes,\n ...head.bodyAttributes,\n };\n }\n\n if (head.meta) {\n state.head.meta = [...(state.head.meta ?? []), ...(head.meta ?? [])];\n }\n\n if (head.link) {\n state.head.link = [...(state.head.link ?? []), ...(head.link ?? [])];\n }\n }\n}\n","import { $inject, createPrimitive, Primitive, KIND } from \"alepha\";\nimport type { Head } from \"../interfaces/Head.ts\";\nimport { HeadProvider } from \"../providers/HeadProvider.ts\";\n\n/**\n * Set global `<head>` options for the application.\n */\nexport const $head = (options: HeadPrimitiveOptions) => {\n return createPrimitive(HeadPrimitive, options);\n};\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport type HeadPrimitiveOptions = Head | (() => Head);\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport class HeadPrimitive extends Primitive<HeadPrimitiveOptions> {\n protected readonly provider = $inject(HeadProvider);\n protected onInit() {\n this.provider.global = [\n ...(this.provider.global ?? []),\n this.options,\n ];\n }\n}\n\n$head[KIND] = HeadPrimitive;\n","import { $hook, $inject } from \"alepha\";\nimport type { Head, HeadMeta } from \"../interfaces/Head.ts\";\nimport { HeadProvider } from \"./HeadProvider.ts\";\n\nexport class BrowserHeadProvider {\n protected readonly headProvider = $inject(HeadProvider);\n\n protected get document(): Document {\n return window.document;\n }\n\n protected readonly onBrowserRender = $hook({\n on: \"react:browser:render\",\n handler: async ({ state }) => {\n this.headProvider.fillHead(state);\n if (state.head) {\n this.renderHead(this.document, state.head);\n }\n },\n });\n\n protected readonly onTransitionEnd = $hook({\n on: \"react:transition:end\",\n handler: async ({ state }) => {\n this.headProvider.fillHead(state);\n if (state.head) {\n this.renderHead(this.document, state.head);\n }\n },\n });\n\n public getHead(document: Document): Head {\n return {\n get title() {\n return document.title;\n },\n get htmlAttributes() {\n const attrs: Record<string, string> = {};\n for (const attr of document.documentElement.attributes) {\n attrs[attr.name] = attr.value;\n }\n return attrs;\n },\n get bodyAttributes() {\n const attrs: Record<string, string> = {};\n for (const attr of document.body.attributes) {\n attrs[attr.name] = attr.value;\n }\n return attrs;\n },\n get meta() {\n const metas: HeadMeta[] = [];\n // Get meta tags with name attribute\n for (const meta of document.head.querySelectorAll(\"meta[name]\")) {\n const name = meta.getAttribute(\"name\");\n const content = meta.getAttribute(\"content\");\n if (name && content) {\n metas.push({ name, content });\n }\n }\n // Get meta tags with property attribute (OpenGraph)\n for (const meta of document.head.querySelectorAll(\"meta[property]\")) {\n const property = meta.getAttribute(\"property\");\n const content = meta.getAttribute(\"content\");\n if (property && content) {\n metas.push({ property, content });\n }\n }\n return metas;\n },\n };\n }\n\n public renderHead(document: Document, head: Head): void {\n if (head.title) {\n document.title = head.title;\n }\n\n if (head.bodyAttributes) {\n for (const [key, value] of Object.entries(head.bodyAttributes)) {\n if (value) {\n document.body.setAttribute(key, value);\n } else {\n document.body.removeAttribute(key);\n }\n }\n }\n\n if (head.htmlAttributes) {\n for (const [key, value] of Object.entries(head.htmlAttributes)) {\n if (value) {\n document.documentElement.setAttribute(key, value);\n } else {\n document.documentElement.removeAttribute(key);\n }\n }\n }\n\n if (head.meta) {\n for (const it of head.meta) {\n this.renderMetaTag(document, it);\n }\n }\n\n if (head.link) {\n for (const it of head.link) {\n const { rel, href } = it;\n let link = document.querySelector(`link[rel=\"${rel}\"][href=\"${href}\"]`);\n if (!link) {\n link = document.createElement(\"link\");\n link.setAttribute(\"rel\", rel);\n link.setAttribute(\"href\", href);\n document.head.appendChild(link);\n }\n }\n }\n }\n\n protected renderMetaTag(document: Document, meta: HeadMeta): void {\n const { content } = meta;\n\n // Handle OpenGraph tags (property attribute)\n if (meta.property) {\n const existing = document.querySelector(\n `meta[property=\"${meta.property}\"]`,\n );\n if (existing) {\n existing.setAttribute(\"content\", content);\n } else {\n const newMeta = document.createElement(\"meta\");\n newMeta.setAttribute(\"property\", meta.property);\n newMeta.setAttribute(\"content\", content);\n document.head.appendChild(newMeta);\n }\n return;\n }\n\n // Handle standard meta tags (name attribute)\n if (meta.name) {\n const existing = document.querySelector(`meta[name=\"${meta.name}\"]`);\n if (existing) {\n existing.setAttribute(\"content\", content);\n } else {\n const newMeta = document.createElement(\"meta\");\n newMeta.setAttribute(\"name\", meta.name);\n newMeta.setAttribute(\"content\", content);\n document.head.appendChild(newMeta);\n }\n }\n }\n}\n","import { useInject } from \"@alepha/react\";\nimport { Alepha } from \"alepha\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport type { Head } from \"../interfaces/Head.ts\";\nimport { BrowserHeadProvider } from \"../providers/BrowserHeadProvider.ts\";\n\n/**\n * ```tsx\n * const App = () => {\n * const [head, setHead] = useHead({\n * // will set the document title on the first render\n * title: \"My App\",\n * });\n *\n * return (\n * // This will update the document title when the button is clicked\n * <button onClick={() => setHead({ title: \"Change Title\" })}>\n * Change Title {head.title}\n * </button>\n * );\n * }\n * ```\n */\nexport const useHead = (options?: UseHeadOptions): UseHeadReturn => {\n const alepha = useInject(Alepha);\n\n const current = useMemo(() => {\n if (!alepha.isBrowser()) {\n return {};\n }\n\n return alepha.inject(BrowserHeadProvider).getHead(window.document);\n }, []);\n\n const setHead = useCallback((head?: Head | ((previous?: Head) => Head)) => {\n if (!alepha.isBrowser()) {\n return;\n }\n\n alepha\n .inject(BrowserHeadProvider)\n .renderHead(\n window.document,\n typeof head === \"function\" ? head(current) : head || {},\n );\n }, []);\n\n useEffect(() => {\n if (options) {\n setHead(options);\n }\n }, []);\n\n return [current, setHead];\n};\n\nexport type UseHeadOptions = Head | ((previous?: Head) => Head);\n\nexport type UseHeadReturn = [\n Head,\n (head?: Head | ((previous?: Head) => Head)) => void,\n];\n","import { AlephaReact } from \"@alepha/react\";\nimport { $module } from \"alepha\";\nimport { $head } from \"./primitives/$head.ts\";\nimport { BrowserHeadProvider } from \"./providers/BrowserHeadProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./primitives/$head.ts\";\nexport * from \"./hooks/useHead.ts\";\nexport * from \"./interfaces/Head.ts\";\nexport * from \"./helpers/SeoExpander.ts\";\nexport * from \"./providers/BrowserHeadProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Alepha React Head Module\n *\n * @see {@link BrowserHeadProvider}\n * @module alepha.react.head\n */\nexport const AlephaReactHead = $module({\n name: \"alepha.react.head\",\n primitives: [$head],\n services: [AlephaReact, BrowserHeadProvider],\n});\n"],"mappings":"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"}