@escape-game-over/atlas 0.1.115 → 0.1.117
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/docs/NOT-BUILT.md +2 -2
- package/package.json +2 -2
- package/src/analytics/ids.ts +1 -13
- package/src/analytics/index.ts +18 -18
- package/src/analytics/storage.ts +34 -39
- package/src/analytics/vendor-settings.ts +162 -0
- package/src/astro/axon-event.ts +2 -4
- package/src/astro/axon-pixel.ts +3 -6
- package/src/astro/clarity-event.ts +2 -4
- package/src/astro/clarity.ts +3 -6
- package/src/astro/consent.ts +3 -6
- package/src/astro/drip-event.ts +2 -4
- package/src/astro/drip.ts +2 -7
- package/src/astro/escape-navigator-consent.ts +2 -6
- package/src/astro/escapeall-calendar.ts +2 -5
- package/src/astro/google-event.ts +3 -7
- package/src/astro/google-map.ts +3 -5
- package/src/astro/images.ts +12 -26
- package/src/astro/index.ts +2 -9
- package/src/astro/meta-event.ts +2 -4
- package/src/astro/meta-pixel.ts +4 -8
- package/src/astro/public-files.ts +11 -52
- package/src/astro/site-routes.ts +11 -55
- package/src/astro/snap-event.ts +2 -4
- package/src/astro/snap-pixel.ts +3 -6
- package/src/astro/tiktok-event.ts +2 -4
- package/src/astro/tiktok-pixel.ts +70 -39
- package/src/astro/umami-event.ts +2 -6
- package/src/astro/vendors.ts +64 -0
- package/src/config.ts +8 -17
- package/src/content/rich.ts +15 -18
- package/src/i18n/catalog.ts +20 -1
- package/src/i18n/define.ts +0 -5
- package/src/i18n/translate.ts +9 -48
- package/src/index.ts +24 -166
- package/src/jsonld/article.ts +7 -17
- package/src/jsonld/business.ts +27 -28
- package/src/jsonld/creative-work.ts +8 -20
- package/src/jsonld/node.ts +37 -7
- package/src/jsonld/organization.ts +21 -30
- package/src/jsonld/place.ts +2 -6
- package/src/jsonld/product.ts +16 -22
- package/src/jsonld/service.ts +21 -37
- package/src/jsonld/video.ts +4 -8
- package/src/jsonld/website.ts +3 -5
- package/src/meta/content.ts +14 -66
- package/src/meta/index.ts +10 -32
- package/src/project.ts +4 -18
- package/src/routes/define.ts +0 -13
- package/src/routes/family.ts +135 -3
- package/src/site/api.ts +1 -21
- package/src/site/create.ts +17 -26
- package/src/site/define.ts +13 -9
- package/src/site/page.ts +1 -10
- package/src/warn.ts +6 -6
- package/src/analytics/axon-pixel.ts +0 -24
- package/src/analytics/clarity.ts +0 -29
- package/src/analytics/drip.ts +0 -20
- package/src/analytics/meta-pixel.ts +0 -29
- package/src/analytics/snap-pixel.ts +0 -28
- package/src/analytics/tiktok-pixel.ts +0 -29
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
CONSENT_UPDATE_GLOBAL,
|
|
3
|
+
GOOGLE_EVENT_GLOBAL,
|
|
4
|
+
GoogleEventSink,
|
|
5
|
+
} from "../analytics/google.ts";
|
|
6
|
+
import type { Axon } from "./axon-pixel.ts";
|
|
7
|
+
import type { Clarity } from "./clarity.ts";
|
|
8
|
+
import type { ConsentChoices } from "./consent.ts";
|
|
9
|
+
import type { Fbq } from "./meta-pixel.ts";
|
|
10
|
+
import type { Snaptr } from "./snap-pixel.ts";
|
|
11
|
+
import type { Ttq } from "./tiktok-pixel.ts";
|
|
12
|
+
|
|
13
|
+
/** The callback the Maps API calls once it has loaded: `?callback=` names it. */
|
|
14
|
+
export const GOOGLE_MAPS_CALLBACK = "__atlasGoogleMaps";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Every global Atlas's scripts read or define: the vendors' own, and the ones
|
|
18
|
+
* Atlas's head script leaves for its modules.
|
|
19
|
+
*
|
|
20
|
+
* Each is optional, since a vendor's snippet defines it only once it runs,
|
|
21
|
+
* and a blocker can stop that. A file reads them through `vendors()` rather
|
|
22
|
+
* than casting `window` at each site.
|
|
23
|
+
*
|
|
24
|
+
* Not a `declare global`: that would put `window.fbq` in every app's types,
|
|
25
|
+
* on sites without Meta too. These stay Atlas's.
|
|
26
|
+
*/
|
|
27
|
+
interface Vendors {
|
|
28
|
+
fbq?: Fbq;
|
|
29
|
+
_fbq?: Fbq;
|
|
30
|
+
ttq?: Ttq;
|
|
31
|
+
TiktokAnalyticsObject?: string;
|
|
32
|
+
snaptr?: Snaptr;
|
|
33
|
+
axon?: Axon;
|
|
34
|
+
clarity?: Clarity;
|
|
35
|
+
_dcq?: unknown[][];
|
|
36
|
+
_dcs?: { account?: string };
|
|
37
|
+
umami?: { track(event: string, data?: object): void };
|
|
38
|
+
EscapeNavigator?: {
|
|
39
|
+
__pendingConsent?: { analytics: boolean; ads: boolean };
|
|
40
|
+
setConsent?: (consent: { analytics: boolean; ads: boolean }) => void;
|
|
41
|
+
};
|
|
42
|
+
// Its script builds selectors by appending to the one it is given, so the
|
|
43
|
+
// calendar is named by its id, not handed over as an element.
|
|
44
|
+
GetBookingCalendra?: (
|
|
45
|
+
selector: string,
|
|
46
|
+
settings: Record<string, unknown>
|
|
47
|
+
) => void;
|
|
48
|
+
[GOOGLE_MAPS_CALLBACK]?: () => void;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Atlas's head script's, under the names it is emitted with. */
|
|
52
|
+
type HeadGlobals = {
|
|
53
|
+
[Name in typeof CONSENT_UPDATE_GLOBAL]?: (choices: ConsentChoices) => void;
|
|
54
|
+
} & {
|
|
55
|
+
[Name in typeof GOOGLE_EVENT_GLOBAL]?: GoogleEventSink;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* `window`, typed with the globals above. A function, not a constant, so a
|
|
60
|
+
* module that imports it touches `window` only when it runs in a browser.
|
|
61
|
+
*/
|
|
62
|
+
export function vendors(): Window & Vendors & HeadGlobals {
|
|
63
|
+
return window;
|
|
64
|
+
}
|
package/src/config.ts
CHANGED
|
@@ -173,15 +173,6 @@ export function defineSiteConfig<
|
|
|
173
173
|
return config;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
/**
|
|
177
|
-
* What a project may restate about a locale.
|
|
178
|
-
*
|
|
179
|
-
* Only the label: writing direction is a fact about the script a language is
|
|
180
|
-
* written in, not a choice a deployment makes, so it is derived from the tag.
|
|
181
|
-
* The label is the one part that is a matter of taste.
|
|
182
|
-
*/
|
|
183
|
-
export type LocaleMetaOverride = Pick<LocaleMeta, "label">;
|
|
184
|
-
|
|
185
176
|
/**
|
|
186
177
|
* Editor-facing error for a locale this site does not declare at all.
|
|
187
178
|
*
|
|
@@ -199,27 +190,27 @@ export interface LocaleNotEnabled<L extends string> {
|
|
|
199
190
|
}
|
|
200
191
|
|
|
201
192
|
/**
|
|
202
|
-
*
|
|
193
|
+
* Each published locale's label, the project's where it gives one, with the
|
|
194
|
+
* tag fields derived from its key.
|
|
203
195
|
*
|
|
204
196
|
* The locale key is the language tag, and `ogLocale` is that tag with `-`
|
|
205
197
|
* swapped for `_` — Open Graph writes `en_US` where BCP 47 writes `en-US`.
|
|
206
198
|
* `dir` comes from the tag's script, so `ar-EG` and `az-Arab-IR` are
|
|
207
199
|
* right-to-left and `az-AZ` is not.
|
|
208
200
|
*/
|
|
209
|
-
export function
|
|
201
|
+
export function resolveLocaleMeta<L extends string>(
|
|
210
202
|
base: Readonly<Record<L, LocaleMeta>>,
|
|
211
|
-
|
|
212
|
-
|
|
203
|
+
locales: readonly L[],
|
|
204
|
+
labels: Readonly<Partial<Record<L, string>>>
|
|
213
205
|
): Readonly<Record<L, ResolvedLocaleMeta>> {
|
|
214
206
|
const merged: Record<string, ResolvedLocaleMeta> = {};
|
|
215
207
|
for (const locale of locales) {
|
|
216
|
-
const
|
|
217
|
-
if (
|
|
208
|
+
const meta = base[locale];
|
|
209
|
+
if (meta === undefined) {
|
|
218
210
|
throw new Error(`No locale metadata for "${locale}".`);
|
|
219
211
|
}
|
|
220
|
-
const meta = { ...defaults, ...overrides?.[locale] };
|
|
221
212
|
merged[locale] = {
|
|
222
|
-
label: meta.label,
|
|
213
|
+
label: labels[locale] ?? meta.label,
|
|
223
214
|
dir: writingDirection(locale),
|
|
224
215
|
htmlLang: locale,
|
|
225
216
|
ogLocale: locale.replace(/-/g, "_"),
|
package/src/content/rich.ts
CHANGED
|
@@ -61,8 +61,8 @@ export type Span =
|
|
|
61
61
|
/**
|
|
62
62
|
* A link, in the three shapes a destination actually comes in.
|
|
63
63
|
*
|
|
64
|
-
* **A union rather than an optional `url` and an `external` flag
|
|
65
|
-
*
|
|
64
|
+
* **A union rather than an optional `url` and an `external` flag**: those
|
|
65
|
+
* two fields could disagree, and `external:
|
|
66
66
|
* true` with no absolute URL is a state that means nothing and would still
|
|
67
67
|
* type-check. Here the discriminant *is* the answer — a consumer that needs
|
|
68
68
|
* an absolute URL narrows on `to` and gets one, or is told plainly that this
|
|
@@ -297,16 +297,15 @@ export function createRichText<
|
|
|
297
297
|
): RichTextFor<Catalog, RouteId, Links, Values> {
|
|
298
298
|
const { catalog, locale, link, origin, links, values } = options;
|
|
299
299
|
|
|
300
|
-
return
|
|
301
|
-
|
|
300
|
+
// Untyped inside: the return type is what callers see, keys and params
|
|
301
|
+
// checked. Placeholder values and link targets are both strings once here —
|
|
302
|
+
// the distinction they are worth making is entirely a compile-time one.
|
|
303
|
+
return (
|
|
304
|
+
key: string,
|
|
305
|
+
params?: Readonly<Record<string, string>>
|
|
302
306
|
): RichText => {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
// Placeholder values and link targets are both strings once here — the
|
|
306
|
-
// distinction they are worth making is entirely a compile-time one.
|
|
307
|
-
const [key, params] = args as [K, Readonly<Record<string, string>>?];
|
|
308
|
-
const at = `Message "${String(key)}" (${locale})`;
|
|
309
|
-
const template = lookupTemplate(catalog, locale, String(key));
|
|
307
|
+
const at = `Message "${key}" (${locale})`;
|
|
308
|
+
const template = lookupTemplate(catalog, locale, key);
|
|
310
309
|
|
|
311
310
|
return parseMarks(template, at).map((span) =>
|
|
312
311
|
resolve(span, at, params, { links, values }, link, origin)
|
|
@@ -379,7 +378,7 @@ function fill(
|
|
|
379
378
|
* The destination a slot was filled with.
|
|
380
379
|
*
|
|
381
380
|
* `Object.hasOwn` rather than reading the index straight, for the reason
|
|
382
|
-
* `
|
|
381
|
+
* `createTranslate` uses it: `__proto__` is a legal slot name by `SLOT`, so
|
|
383
382
|
* a plain object would answer with `Object.prototype` — not `undefined`, and so
|
|
384
383
|
* not caught below.
|
|
385
384
|
*
|
|
@@ -620,12 +619,10 @@ export function createPlainText<
|
|
|
620
619
|
): PlainTextFor<Catalog, Values> {
|
|
621
620
|
const { catalog, locale, values } = options;
|
|
622
621
|
|
|
623
|
-
return
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
const
|
|
627
|
-
const at = `Message "${String(key)}" (${locale})`;
|
|
628
|
-
const template = lookupTemplate(catalog, locale, String(key));
|
|
622
|
+
// Untyped inside, as `rich()`: the return type is what callers see.
|
|
623
|
+
return (key: string, params?: Readonly<Record<string, string>>): string => {
|
|
624
|
+
const at = `Message "${key}" (${locale})`;
|
|
625
|
+
const template = lookupTemplate(catalog, locale, key);
|
|
629
626
|
|
|
630
627
|
return collapse(
|
|
631
628
|
parseMarks(template, at).map((span) =>
|
package/src/i18n/catalog.ts
CHANGED
|
@@ -29,6 +29,8 @@ export interface ProjectCatalog<Base, Published extends string, Override, Add> {
|
|
|
29
29
|
readonly override: Override;
|
|
30
30
|
/** Messages only this project has. */
|
|
31
31
|
readonly add: Add;
|
|
32
|
+
/** The project's names for its languages, where the site's do not fit. */
|
|
33
|
+
readonly labels: Readonly<Partial<Record<Published, string>>>;
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
/**
|
|
@@ -99,7 +101,8 @@ export type OverrideChecks<Base, Published extends string, O> = NoExcessKeys<
|
|
|
99
101
|
* - `override` keys exist in the base catalog, keep its `{placeholders}` and
|
|
100
102
|
* `[marks]`, and are written only for published locales;
|
|
101
103
|
* - `add` keys are new to the base catalog, written for exactly the published
|
|
102
|
-
* locales, with the same `{placeholders}` and `[marks]` in each
|
|
104
|
+
* locales, with the same `{placeholders}` and `[marks]` in each;
|
|
105
|
+
* - `labels` are for published locales.
|
|
103
106
|
*/
|
|
104
107
|
export function defineCatalog<
|
|
105
108
|
const C extends SiteConfigShape,
|
|
@@ -119,6 +122,13 @@ export function defineCatalog<
|
|
|
119
122
|
readonly override: Override &
|
|
120
123
|
ValidateOverrideCatalog<Override, Base, LocalesOf<C>>;
|
|
121
124
|
readonly add?: Add & ValidateAdditions<Add, Base, Published>;
|
|
125
|
+
/**
|
|
126
|
+
* A language's name in the language switcher, replacing the site's
|
|
127
|
+
* label for that locale on this project only. `NoInfer`, so a label
|
|
128
|
+
* cannot widen the published locales: a locale written here that
|
|
129
|
+
* `locales` lacks is an error on its own line.
|
|
130
|
+
*/
|
|
131
|
+
readonly labels?: Readonly<Partial<Record<NoInfer<Published>, string>>>;
|
|
122
132
|
}
|
|
123
133
|
): ProjectCatalog<Base, Published, Override, Add> {
|
|
124
134
|
// Checked at runtime as well as in the type: an Astro config is evaluated
|
|
@@ -144,10 +154,19 @@ export function defineCatalog<
|
|
|
144
154
|
);
|
|
145
155
|
}
|
|
146
156
|
}
|
|
157
|
+
const labels = own.labels ?? {};
|
|
158
|
+
for (const locale of Object.keys(labels)) {
|
|
159
|
+
if (!own.locales.some((published) => published === locale)) {
|
|
160
|
+
throw new Error(
|
|
161
|
+
`labels: "${locale}" is not among this catalog's locales, so its label would never be shown.`
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
147
165
|
return {
|
|
148
166
|
base,
|
|
149
167
|
locales: own.locales,
|
|
150
168
|
override: own.override,
|
|
151
169
|
add: add as Add,
|
|
170
|
+
labels,
|
|
152
171
|
};
|
|
153
172
|
}
|
package/src/i18n/define.ts
CHANGED
|
@@ -54,11 +54,6 @@ export type OverrideCatalog<L extends string> = Readonly<
|
|
|
54
54
|
Record<string, OverrideEntry<L>>
|
|
55
55
|
>;
|
|
56
56
|
|
|
57
|
-
/** The locale union a catalog covers, read back off its own entries. */
|
|
58
|
-
export type LocalesOfCatalog<Catalog> = StringKeys<
|
|
59
|
-
Catalog[StringKeys<Catalog>]
|
|
60
|
-
>;
|
|
61
|
-
|
|
62
57
|
type SelfConsistent<E, K> = [MismatchedLocales<E, EntryTokens<E>>] extends [
|
|
63
58
|
never,
|
|
64
59
|
]
|
package/src/i18n/translate.ts
CHANGED
|
@@ -78,13 +78,7 @@ export type MergedCatalog<L extends string> = Readonly<
|
|
|
78
78
|
Record<string, Readonly<Record<L, string>>>
|
|
79
79
|
>;
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
export type RawTranslate = (
|
|
83
|
-
key: string,
|
|
84
|
-
params?: Readonly<Record<string, string>>
|
|
85
|
-
) => string;
|
|
86
|
-
|
|
87
|
-
export interface RawTranslateOptions<L extends string> {
|
|
81
|
+
export interface TranslateOptions<L extends string> {
|
|
88
82
|
readonly catalog: MergedCatalog<L>;
|
|
89
83
|
readonly locale: L;
|
|
90
84
|
/**
|
|
@@ -120,7 +114,11 @@ export function lookupTemplate<L extends string>(
|
|
|
120
114
|
}
|
|
121
115
|
|
|
122
116
|
/**
|
|
123
|
-
* Builds
|
|
117
|
+
* Builds `t()`.
|
|
118
|
+
*
|
|
119
|
+
* Untyped: `site.translate` declares the key-aware `TranslateFor` as what it
|
|
120
|
+
* returns, and this function fits that type with no cast. The key and params
|
|
121
|
+
* checks live in the type; what fails at runtime fails here.
|
|
124
122
|
*
|
|
125
123
|
* Every failure here is a build-time failure by design: a static site should not
|
|
126
124
|
* ship a page with a literal `{name}` in the markup, so a missing message or an
|
|
@@ -132,9 +130,9 @@ export function lookupTemplate<L extends string>(
|
|
|
132
130
|
* failure wearing different brackets. `rich()` reads those, and `plain()` gives
|
|
133
131
|
* back the sentence without them.
|
|
134
132
|
*/
|
|
135
|
-
export function
|
|
136
|
-
options:
|
|
137
|
-
):
|
|
133
|
+
export function createTranslate<L extends string>(
|
|
134
|
+
options: TranslateOptions<L>
|
|
135
|
+
): (key: string, params?: Readonly<Record<string, string>>) => string {
|
|
138
136
|
const { catalog, locale, values } = options;
|
|
139
137
|
|
|
140
138
|
return (key, params) => {
|
|
@@ -211,40 +209,3 @@ export type TranslateFor<Catalog, Bound extends string = never> = <
|
|
|
211
209
|
>(
|
|
212
210
|
...args: TranslateArgsOf<Catalog, K, Bound>
|
|
213
211
|
) => string;
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Builds the typed `t()` factory for one catalog type.
|
|
217
|
-
*
|
|
218
|
-
* Curried for the usual reason — `Catalog` must be supplied explicitly while the
|
|
219
|
-
* locale stays inferred, and TypeScript has no partial type-argument inference.
|
|
220
|
-
* `Catalog` is the *base* catalog's type (it carries the literal strings the
|
|
221
|
-
* placeholders are read from); the value passed in is the merged runtime
|
|
222
|
-
* catalog, which only needs to be indexable by key and locale.
|
|
223
|
-
*/
|
|
224
|
-
export function createTranslateFactory<Catalog, L extends string>() {
|
|
225
|
-
return function createTranslate<Bound extends string = never>(
|
|
226
|
-
catalog: MergedCatalog<L>,
|
|
227
|
-
locale: L,
|
|
228
|
-
values?: Readonly<Record<Bound, string>>
|
|
229
|
-
): TranslateFor<Catalog, Bound> {
|
|
230
|
-
const raw = createRawTranslate({
|
|
231
|
-
catalog,
|
|
232
|
-
locale,
|
|
233
|
-
...(values === undefined ? {} : { values }),
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
function t<K extends StringKeys<Catalog>>(
|
|
237
|
-
...args: TranslateArgsOf<Catalog, K, Bound>
|
|
238
|
-
): string {
|
|
239
|
-
// The conditional tuple cannot be destructured directly; the runtime
|
|
240
|
-
// shape is always `[key]` or `[key, params]`.
|
|
241
|
-
const [key, params] = args as [
|
|
242
|
-
K,
|
|
243
|
-
Readonly<Record<string, string>>?,
|
|
244
|
-
];
|
|
245
|
-
return raw(key, params);
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
return t;
|
|
249
|
-
};
|
|
250
|
-
}
|
package/src/index.ts
CHANGED
|
@@ -18,19 +18,14 @@ export {
|
|
|
18
18
|
CONSENT_CATEGORIES,
|
|
19
19
|
CONSENT_MONTHS,
|
|
20
20
|
type ConsentCategory,
|
|
21
|
-
type ConsentChoice,
|
|
22
|
-
type ConsentChoices,
|
|
23
21
|
} from "./analytics/consent-storage.ts";
|
|
24
22
|
export {
|
|
25
23
|
type AnalyticsSettings,
|
|
26
|
-
type AnalyticsTags,
|
|
27
24
|
type AxonPixelSettings,
|
|
28
25
|
type ClaritySettings,
|
|
29
|
-
CONSENT_UPDATE_GLOBAL,
|
|
30
26
|
type ConsentDefaults,
|
|
31
27
|
type ConsentState,
|
|
32
28
|
consentRequired,
|
|
33
|
-
consentVendors,
|
|
34
29
|
type DripSettings,
|
|
35
30
|
type GoogleSettings,
|
|
36
31
|
type GoogleTagId,
|
|
@@ -45,74 +40,36 @@ export {
|
|
|
45
40
|
type Uuid,
|
|
46
41
|
} from "./analytics/index.ts";
|
|
47
42
|
export {
|
|
48
|
-
type AtlasStoredId,
|
|
49
|
-
compareStoredItems,
|
|
50
|
-
type Lifetime,
|
|
51
43
|
STORAGE_VENDOR_NAMES,
|
|
52
|
-
type StorageVendor,
|
|
53
44
|
type StoredId,
|
|
54
45
|
type StoredItem,
|
|
55
46
|
type StoredItemsOptions,
|
|
56
47
|
storedItems,
|
|
57
|
-
withPurposes,
|
|
58
48
|
} from "./analytics/storage.ts";
|
|
59
|
-
export {
|
|
60
|
-
checkEscapeNavigator,
|
|
61
|
-
ESCAPE_NAVIGATOR_LOADER,
|
|
62
|
-
type EscapeNavigatorVars,
|
|
63
|
-
type EscapeNavigatorWidget,
|
|
64
|
-
escapeNavigatorLanguage,
|
|
65
|
-
} from "./booking/escape-navigator.ts";
|
|
66
|
-
export {
|
|
67
|
-
checkEscapeAll,
|
|
68
|
-
ESCAPEALL_LANGUAGES,
|
|
69
|
-
type EscapeAllLanguage,
|
|
70
|
-
type EscapeAllVars,
|
|
71
|
-
type EscapeAllWidget,
|
|
72
|
-
escapeAllAssets,
|
|
73
|
-
escapeAllLanguage,
|
|
74
|
-
} from "./booking/escapeall.ts";
|
|
75
|
-
export {
|
|
76
|
-
checkFourEscape,
|
|
77
|
-
FOUR_ESCAPE_LANGUAGES,
|
|
78
|
-
FOUR_ESCAPE_SCRIPT,
|
|
79
|
-
FOUR_ESCAPE_STYLESHEET,
|
|
80
|
-
type FourEscapeLanguage,
|
|
81
|
-
type FourEscapeVars,
|
|
82
|
-
type FourEscapeWidget,
|
|
83
|
-
fourEscapeLanguage,
|
|
84
|
-
fourEscapeSettings,
|
|
85
|
-
fourEscapeStyle,
|
|
86
|
-
} from "./booking/four-escape.ts";
|
|
49
|
+
export type { EscapeNavigatorWidget } from "./booking/escape-navigator.ts";
|
|
87
50
|
export type {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
BookingWidgetVars,
|
|
92
|
-
} from "./booking/widget.ts";
|
|
51
|
+
EscapeAllLanguage,
|
|
52
|
+
EscapeAllWidget,
|
|
53
|
+
} from "./booking/escapeall.ts";
|
|
93
54
|
export type {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
} from "./config.ts";
|
|
55
|
+
FourEscapeLanguage,
|
|
56
|
+
FourEscapeVars,
|
|
57
|
+
FourEscapeWidget,
|
|
58
|
+
} from "./booking/four-escape.ts";
|
|
59
|
+
export type { BookingVendor, BookingWidget } from "./booking/widget.ts";
|
|
60
|
+
export type { LanguageTag, LocaleMeta, LocalesOf } from "./config.ts";
|
|
101
61
|
export {
|
|
102
62
|
type AddressFormatOptions,
|
|
103
63
|
type AddressLineOptions,
|
|
104
64
|
addressLine,
|
|
105
65
|
addressLines,
|
|
106
|
-
assertCoordinates,
|
|
107
66
|
type CallingCode,
|
|
108
67
|
type Coordinates,
|
|
109
68
|
type CountryCode,
|
|
110
69
|
type E164,
|
|
111
70
|
type EmailAddress,
|
|
112
71
|
e164,
|
|
113
|
-
e164Of,
|
|
114
72
|
formatPhone,
|
|
115
|
-
isEmailAddress,
|
|
116
73
|
type MailtoUrl,
|
|
117
74
|
mailtoHref,
|
|
118
75
|
type PhoneNumber,
|
|
@@ -132,44 +89,26 @@ export {
|
|
|
132
89
|
// them has a second `rich()` that is not bound to the site's route table — so
|
|
133
90
|
// a slot filled with a route id resolves against nothing there. `site.rich(locale)` is
|
|
134
91
|
// the only way in, and `Span` is what a renderer switches on.
|
|
135
|
-
export {
|
|
136
|
-
|
|
137
|
-
type LinkTarget,
|
|
138
|
-
type MessageBindings,
|
|
139
|
-
type PlainTextFor,
|
|
140
|
-
plain,
|
|
141
|
-
type RichText,
|
|
142
|
-
type RichTextFor,
|
|
143
|
-
type Span,
|
|
144
|
-
} from "./content/index.ts";
|
|
145
|
-
export {
|
|
146
|
-
COUNTRY_CODES,
|
|
147
|
-
countriesFor,
|
|
148
|
-
type NamedCountry,
|
|
149
|
-
} from "./countries.ts";
|
|
92
|
+
export { html, plain, type RichText, type Span } from "./content/index.ts";
|
|
93
|
+
export { countriesFor, type NamedCountry } from "./countries.ts";
|
|
150
94
|
// `quantitiesOf`, `quantityRange` and `isContiguous` are deliberately not here.
|
|
151
95
|
// They are how lib decides between "2–6" and "2, 4, 6", and a consumer holding
|
|
152
96
|
// them writes that decision a second time — which is how `llms.txt` came to
|
|
153
97
|
// advertise a range for a room that skips sizes. `formatQuantities` answers it
|
|
154
98
|
// for prose and `quantitiesFor` for structured data; both read the same tiers.
|
|
155
99
|
export type { CurrencyCode } from "./currency.ts";
|
|
156
|
-
export type { GeneratedFile } from "./file.ts";
|
|
157
100
|
export type { PublicFilePath, PublicFileRegistry } from "./files.ts";
|
|
158
101
|
export type { Font, Fonts } from "./fonts.ts";
|
|
159
102
|
export {
|
|
160
|
-
assertHours,
|
|
161
103
|
type DayHours,
|
|
162
104
|
type FormattedHours,
|
|
163
105
|
formatHours,
|
|
164
|
-
formatTime,
|
|
165
|
-
groupHours,
|
|
166
106
|
type HourCycle,
|
|
167
107
|
type HoursFormat,
|
|
168
108
|
type HoursGroup,
|
|
169
109
|
type HoursSentenceFormat,
|
|
170
110
|
hoursSentence,
|
|
171
111
|
type OpenStatus,
|
|
172
|
-
openStatus,
|
|
173
112
|
type TimeFormat,
|
|
174
113
|
type TimeOfDay,
|
|
175
114
|
type TimeRange,
|
|
@@ -177,42 +116,18 @@ export {
|
|
|
177
116
|
type Weekday,
|
|
178
117
|
type WeeklyHours,
|
|
179
118
|
} from "./hours.ts";
|
|
180
|
-
export type {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
ProjectCatalog,
|
|
184
|
-
PublishedOf,
|
|
185
|
-
} from "./i18n/catalog.ts";
|
|
186
|
-
export type {
|
|
187
|
-
BaseCatalog,
|
|
188
|
-
CatalogCovers,
|
|
189
|
-
MessageOverrides,
|
|
190
|
-
OverrideCatalog,
|
|
191
|
-
} from "./i18n/define.ts";
|
|
192
|
-
export type {
|
|
193
|
-
EntryPlaceholders,
|
|
194
|
-
Placeholders,
|
|
195
|
-
} from "./i18n/placeholders.ts";
|
|
196
|
-
export type {
|
|
197
|
-
MessageParamsOf,
|
|
198
|
-
TranslateArgsOf,
|
|
199
|
-
TranslateFor,
|
|
200
|
-
} from "./i18n/translate.ts";
|
|
119
|
+
export type { CatalogKey } from "./i18n/catalog.ts";
|
|
120
|
+
export type { CatalogCovers, MessageOverrides } from "./i18n/define.ts";
|
|
121
|
+
export type { MessageParamsOf } from "./i18n/translate.ts";
|
|
201
122
|
export type { ImageAsset } from "./image.ts";
|
|
202
123
|
export {
|
|
203
|
-
type ArticleInput,
|
|
204
|
-
article,
|
|
205
|
-
type BreadcrumbStep,
|
|
206
124
|
type BusinessId,
|
|
207
|
-
breadcrumbList,
|
|
208
125
|
businessId,
|
|
209
|
-
type CatalogEntry,
|
|
210
126
|
type CreativeWorkInput,
|
|
211
127
|
type CreativeWorkProperty,
|
|
212
128
|
creativeWork,
|
|
213
129
|
type FaqEntry,
|
|
214
130
|
faqPage,
|
|
215
|
-
geoCoordinates,
|
|
216
131
|
type JsonLdNode,
|
|
217
132
|
type LocalBusinessInput,
|
|
218
133
|
localBusiness,
|
|
@@ -220,45 +135,30 @@ export {
|
|
|
220
135
|
type OrganizationId,
|
|
221
136
|
type OrganizationInput,
|
|
222
137
|
offerCatalog,
|
|
223
|
-
openingHours,
|
|
224
138
|
organization,
|
|
225
139
|
organizationId,
|
|
226
140
|
type ProductInput,
|
|
227
|
-
postalAddress,
|
|
228
141
|
product,
|
|
229
142
|
quantitativeValue,
|
|
230
143
|
quantitiesFor,
|
|
231
144
|
type ServiceArea,
|
|
232
145
|
type ServiceId,
|
|
233
146
|
type ServiceInput,
|
|
234
|
-
serializeJsonLd,
|
|
235
147
|
service,
|
|
236
|
-
serviceId,
|
|
237
148
|
type VideoInput,
|
|
238
149
|
type VideoSource,
|
|
239
150
|
videoObject,
|
|
240
151
|
type WebsiteId,
|
|
241
152
|
type WebsiteInput,
|
|
242
153
|
website,
|
|
243
|
-
websiteId,
|
|
244
154
|
} from "./jsonld/index.ts";
|
|
245
|
-
export {
|
|
246
|
-
buildLlms,
|
|
247
|
-
type LlmsConfig,
|
|
248
|
-
type LlmsItem,
|
|
249
|
-
type LlmsSection,
|
|
250
|
-
} from "./llms.ts";
|
|
155
|
+
export type { LlmsSection } from "./llms.ts";
|
|
251
156
|
export { googleMapsUrl, type MapPlace, type MapsTarget } from "./map.ts";
|
|
252
157
|
export {
|
|
253
158
|
type ArticleContent,
|
|
254
|
-
buildMeta,
|
|
255
|
-
buildNotFoundMeta,
|
|
256
159
|
fitDescription,
|
|
257
160
|
fitTitle,
|
|
258
161
|
type MetaContent,
|
|
259
|
-
type MetaTag,
|
|
260
|
-
type OpenGraphType,
|
|
261
|
-
type PageKind,
|
|
262
162
|
type RobotsPolicy,
|
|
263
163
|
type ShareImage,
|
|
264
164
|
type SiteVerification,
|
|
@@ -267,8 +167,6 @@ export {
|
|
|
267
167
|
type AudiencePrice,
|
|
268
168
|
type AudienceTier,
|
|
269
169
|
amountAt,
|
|
270
|
-
assertAudiences,
|
|
271
|
-
assertPriceTiers,
|
|
272
170
|
formatQuantities,
|
|
273
171
|
type Price,
|
|
274
172
|
type PriceTier,
|
|
@@ -284,70 +182,30 @@ export {
|
|
|
284
182
|
type PriceFormat,
|
|
285
183
|
} from "./price-format.ts";
|
|
286
184
|
export type {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
buildCloudflareRedirects,
|
|
293
|
-
buildRedirects,
|
|
294
|
-
type CloudflareRedirectsOptions,
|
|
295
|
-
type ExternalUrl,
|
|
296
|
-
type ProjectRedirects,
|
|
297
|
-
type RedirectKind,
|
|
298
|
-
type RedirectRule,
|
|
299
|
-
type RedirectStatus,
|
|
300
|
-
type RedirectTarget,
|
|
301
|
-
type ResolvedRedirect,
|
|
302
|
-
type SitePath,
|
|
303
|
-
type ValidateRedirectTargets,
|
|
185
|
+
ProjectRedirects,
|
|
186
|
+
RedirectKind,
|
|
187
|
+
RedirectRule,
|
|
188
|
+
RedirectTarget,
|
|
189
|
+
SitePath,
|
|
304
190
|
} from "./redirects.ts";
|
|
305
|
-
export type {
|
|
306
|
-
export type {
|
|
307
|
-
ChangeFreq,
|
|
308
|
-
EnabledRouteIdFor,
|
|
309
|
-
RouteData,
|
|
310
|
-
RouteOverride,
|
|
311
|
-
RouteOverrides,
|
|
312
|
-
RouteRegistry,
|
|
313
|
-
RouteSitemap,
|
|
314
|
-
} from "./routes/define.ts";
|
|
315
|
-
export {
|
|
316
|
-
enableRoutes,
|
|
317
|
-
type FamilyMember,
|
|
318
|
-
type FamilyMemberInput,
|
|
319
|
-
type FamilyMemberSlugs,
|
|
320
|
-
type FamilyOptions,
|
|
321
|
-
familyGuard,
|
|
322
|
-
familyMemberSlugs,
|
|
323
|
-
type RouteIdsOf,
|
|
324
|
-
} from "./routes/family.ts";
|
|
325
|
-
export type { RouteEntry } from "./routes/resolve.ts";
|
|
191
|
+
export type { RouteFamily, RouteIdsOf } from "./routes/family.ts";
|
|
326
192
|
export { defineSite } from "./site/define.ts";
|
|
327
193
|
export type {
|
|
328
|
-
Alternate,
|
|
329
194
|
Crumb,
|
|
330
195
|
LinkOptions,
|
|
331
196
|
LlmsOptions,
|
|
332
|
-
LocaleLink,
|
|
333
197
|
PageContent,
|
|
334
198
|
PageMeta,
|
|
335
199
|
PageProps,
|
|
336
200
|
PerRoute,
|
|
337
|
-
Site,
|
|
338
|
-
StaticPath,
|
|
339
201
|
} from "./site/index.ts";
|
|
340
|
-
export type {
|
|
341
|
-
export {
|
|
342
|
-
export type { IsoDate, Letter, NonEmpty, StringKeys } from "./types.ts";
|
|
202
|
+
export type { TimeZone } from "./time-zones.ts";
|
|
203
|
+
export type { IsoDate, NonEmpty, StringKeys } from "./types.ts";
|
|
343
204
|
export {
|
|
344
205
|
absoluteUrl,
|
|
345
|
-
type Hash,
|
|
346
206
|
type HttpsUrl,
|
|
347
|
-
isHash,
|
|
348
207
|
isHttpsUrl,
|
|
349
208
|
isUrlPath,
|
|
350
209
|
joinUrl,
|
|
351
|
-
normalizeOrigin,
|
|
352
210
|
type UrlPath,
|
|
353
211
|
} from "./url.ts";
|