@styleflow.app/flowpress-astro-core 0.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.js ADDED
@@ -0,0 +1,233 @@
1
+ export class FlowpressGraphqlError extends Error {
2
+ status;
3
+ errors;
4
+ operationName;
5
+ endpoint;
6
+ constructor(message, status, errors, operationName, endpoint, cause) {
7
+ super(message, cause === undefined ? undefined : { cause });
8
+ this.status = status;
9
+ this.errors = errors;
10
+ this.operationName = operationName;
11
+ this.endpoint = endpoint;
12
+ this.name = "FlowpressGraphqlError";
13
+ }
14
+ }
15
+ export class FlowpressClient {
16
+ endpoint;
17
+ timeoutMs;
18
+ headers;
19
+ debug;
20
+ constructor(options) {
21
+ const endpoint = options.endpoint.trim();
22
+ if (!endpoint) {
23
+ throw new Error("FlowPress GraphQL endpoint is required.");
24
+ }
25
+ new URL(endpoint);
26
+ this.endpoint = endpoint;
27
+ this.timeoutMs = options.timeoutMs ?? 15_000;
28
+ this.headers = { ...options.headers };
29
+ this.debug = options.debug ?? false;
30
+ }
31
+ async request(query, variables = {}) {
32
+ const controller = new AbortController();
33
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
34
+ const operationName = getOperationName(query);
35
+ const safeEndpoint = sanitizeEndpoint(this.endpoint);
36
+ try {
37
+ let response;
38
+ try {
39
+ response = await fetch(this.endpoint, {
40
+ method: "POST",
41
+ headers: {
42
+ "content-type": "application/json",
43
+ ...this.headers
44
+ },
45
+ body: JSON.stringify({ query, variables }),
46
+ signal: controller.signal
47
+ });
48
+ }
49
+ catch (error) {
50
+ const timedOut = controller.signal.aborted;
51
+ const detail = error instanceof Error && error.message
52
+ ? ` ${error.message}`
53
+ : "";
54
+ throw new FlowpressGraphqlError(timedOut
55
+ ? `FlowPress GraphQL ${operationName} timed out after ${this.timeoutMs}ms at ${safeEndpoint}.`
56
+ : `FlowPress GraphQL ${operationName} could not reach ${safeEndpoint}.${detail}`, undefined, undefined, operationName, safeEndpoint, error);
57
+ }
58
+ const body = await response.text();
59
+ let payload;
60
+ try {
61
+ payload = JSON.parse(body);
62
+ }
63
+ catch (error) {
64
+ const contentType = response.headers.get("content-type") || "unknown content type";
65
+ throw new FlowpressGraphqlError(`FlowPress GraphQL ${operationName} returned ${response.status} `
66
+ + `with ${contentType}, not JSON, from ${safeEndpoint}.`, response.status, undefined, operationName, safeEndpoint, error);
67
+ }
68
+ if (!response.ok || payload.errors?.length || payload.data === undefined) {
69
+ const errors = payload.errors?.map((error) => {
70
+ if (this.debug) {
71
+ return error;
72
+ }
73
+ return error.message ? { message: error.message } : {};
74
+ });
75
+ const messages = errors
76
+ ?.flatMap((error) => [
77
+ error.message,
78
+ this.debug ? error.extensions?.debugMessage : undefined
79
+ ])
80
+ .filter((message) => Boolean(message));
81
+ throw new FlowpressGraphqlError(messages?.join("; ")
82
+ || `FlowPress GraphQL ${operationName} failed with ${response.status} at ${safeEndpoint}.`, response.status, errors, operationName, safeEndpoint);
83
+ }
84
+ return payload.data;
85
+ }
86
+ finally {
87
+ clearTimeout(timer);
88
+ }
89
+ }
90
+ async getCapabilities() {
91
+ const data = await this.request(`query FlowpressCapabilities {
92
+ styleflowCapabilities {
93
+ schemaVersion
94
+ wpGraphql
95
+ acfPro
96
+ wpGraphqlAcf
97
+ rankMath
98
+ wpml
99
+ woocommerce
100
+ contactForm7
101
+ defaultLocale
102
+ locales { code slug homeUrl }
103
+ }
104
+ }`);
105
+ return data.styleflowCapabilities;
106
+ }
107
+ async getRoute(uri, locale) {
108
+ const data = await this.request(`query FlowpressRoute($uri: String!, $locale: String) {
109
+ sfRouteByUri(uri: $uri, locale: $locale) {
110
+ uri status queryType locale isFrontPage isPostsPage frontPageMode
111
+ postType taxonomy slug term databaseId termId authorNicename authorId
112
+ pageTemplate mimeType postFormat templateCandidates
113
+ content { loader databaseId termId }
114
+ seo {
115
+ title description canonicalUrl robots headHtml
116
+ hreflang { locale url }
117
+ jsonLd { raw }
118
+ openGraph { title description image { url altText } }
119
+ twitterMeta { title description image { url altText } }
120
+ }
121
+ }
122
+ }`, { uri, locale: locale ?? null });
123
+ if (!data.sfRouteByUri) {
124
+ return null;
125
+ }
126
+ return {
127
+ ...data.sfRouteByUri,
128
+ seo: normalizeGraphqlSeo(data.sfRouteByUri.seo)
129
+ };
130
+ }
131
+ async getRoutes(locale) {
132
+ const data = await this.request(`query FlowpressRoutes($locale: String) {
133
+ sfRoutes(locale: $locale) {
134
+ uri status queryType locale isFrontPage isPostsPage frontPageMode
135
+ postType taxonomy slug term databaseId termId authorNicename authorId
136
+ pageTemplate mimeType postFormat templateCandidates
137
+ content { loader databaseId termId }
138
+ seo {
139
+ title description canonicalUrl robots headHtml
140
+ hreflang { locale url }
141
+ jsonLd { raw }
142
+ openGraph { title description image { url altText } }
143
+ twitterMeta { title description image { url altText } }
144
+ }
145
+ }
146
+ }`, { locale: locale ?? null });
147
+ return data.sfRoutes.map((route) => ({
148
+ ...route,
149
+ seo: normalizeGraphqlSeo(route.seo)
150
+ }));
151
+ }
152
+ async getContent(loader, variables) {
153
+ const data = await this.request(`query FlowpressContent(
154
+ $loader: String!,
155
+ $databaseId: Int,
156
+ $termId: Int,
157
+ $uri: String,
158
+ $locale: String
159
+ ) {
160
+ sfContentByLoader(
161
+ loader: $loader,
162
+ databaseId: $databaseId,
163
+ termId: $termId,
164
+ uri: $uri,
165
+ locale: $locale
166
+ ) {
167
+ title excerpt content contentBlocksJson projectFieldsJson
168
+ }
169
+ }`, {
170
+ loader,
171
+ databaseId: variables.databaseId ?? null,
172
+ termId: variables.termId ?? null,
173
+ uri: variables.uri ?? null,
174
+ locale: variables.locale ?? null
175
+ });
176
+ const content = data.sfContentByLoader;
177
+ if (!content) {
178
+ return null;
179
+ }
180
+ const { contentBlocksJson, projectFieldsJson, ...rest } = content;
181
+ return {
182
+ ...rest,
183
+ contentBlocks: parseJson(contentBlocksJson, []),
184
+ projectFields: parseJson(projectFieldsJson, {})
185
+ };
186
+ }
187
+ }
188
+ function getOperationName(query) {
189
+ return query.match(/\b(?:query|mutation|subscription)\s+([_A-Za-z][_0-9A-Za-z]*)/)?.[1] || "AnonymousOperation";
190
+ }
191
+ function sanitizeEndpoint(endpoint) {
192
+ const url = new URL(endpoint);
193
+ url.username = "";
194
+ url.password = "";
195
+ url.search = "";
196
+ url.hash = "";
197
+ return url.toString();
198
+ }
199
+ function normalizeGraphqlSeo(seo) {
200
+ if (!seo)
201
+ return null;
202
+ const social = (value) => value
203
+ ? {
204
+ title: value.title ?? null,
205
+ description: value.description ?? null,
206
+ image: value.image
207
+ ? { url: value.image.url, alt: value.image.altText ?? null }
208
+ : null
209
+ }
210
+ : null;
211
+ return {
212
+ title: seo.title ?? null,
213
+ description: seo.description ?? null,
214
+ canonicalUrl: seo.canonicalUrl ?? null,
215
+ robots: seo.robots ?? null,
216
+ headHtml: seo.headHtml ?? null,
217
+ jsonLd: parseJson(seo.jsonLd?.raw, null),
218
+ hreflang: seo.hreflang ?? null,
219
+ openGraph: social(seo.openGraph),
220
+ twitter: social(seo.twitterMeta)
221
+ };
222
+ }
223
+ function parseJson(value, fallback) {
224
+ if (!value)
225
+ return fallback;
226
+ try {
227
+ return JSON.parse(value);
228
+ }
229
+ catch {
230
+ return fallback;
231
+ }
232
+ }
233
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export type AstroOutputMode = "static" | "server";
2
+ export interface FlowpressEnvironment {
3
+ appEnv: string;
4
+ projectName: string;
5
+ projectSlug: string;
6
+ outputMode: AstroOutputMode;
7
+ siteUrl: string;
8
+ backendUrl: string;
9
+ graphqlUrl: string;
10
+ localAstroPort: number;
11
+ }
12
+ export declare function readFlowpressEnvironment(env?: NodeJS.ProcessEnv): FlowpressEnvironment;
13
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AA0BD,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,oBAAoB,CAsBtB"}
package/dist/env.js ADDED
@@ -0,0 +1,39 @@
1
+ function required(env, key) {
2
+ const value = env[key]?.trim();
3
+ if (!value) {
4
+ throw new Error(`Missing required environment variable ${key}.`);
5
+ }
6
+ return value;
7
+ }
8
+ function validUrl(value, key) {
9
+ try {
10
+ return new URL(value).toString().replace(/\/$/, "");
11
+ }
12
+ catch {
13
+ throw new Error(`${key} must be an absolute URL.`);
14
+ }
15
+ }
16
+ function port(value, key) {
17
+ const parsed = Number.parseInt(value, 10);
18
+ if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65_535) {
19
+ throw new Error(`${key} must be a valid TCP port.`);
20
+ }
21
+ return parsed;
22
+ }
23
+ export function readFlowpressEnvironment(env = process.env) {
24
+ const outputMode = required(env, "ASTRO_OUTPUT_MODE");
25
+ if (outputMode !== "static" && outputMode !== "server") {
26
+ throw new Error("ASTRO_OUTPUT_MODE must be static or server.");
27
+ }
28
+ return {
29
+ appEnv: required(env, "APP_ENV"),
30
+ projectName: required(env, "PROJECT_NAME"),
31
+ projectSlug: required(env, "PROJECT_SLUG"),
32
+ outputMode,
33
+ siteUrl: validUrl(required(env, "SITE_URL"), "SITE_URL"),
34
+ backendUrl: validUrl(required(env, "BACKEND_URL"), "BACKEND_URL"),
35
+ graphqlUrl: validUrl(required(env, "BACKEND_GRAPHQL_URL"), "BACKEND_GRAPHQL_URL"),
36
+ localAstroPort: port(required(env, "LOCAL_ASTRO_PORT"), "LOCAL_ASTRO_PORT")
37
+ };
38
+ }
39
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAaA,SAAS,QAAQ,CAAC,GAAsB,EAAE,GAAW;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAW;IAC1C,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,2BAA2B,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,KAAa,EAAE,GAAW;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,4BAA4B,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IACtD,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;QAChC,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;QAC1C,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;QAC1C,UAAU;QACV,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC;QACxD,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC;QACjE,UAAU,EAAE,QAAQ,CAClB,QAAQ,CAAC,GAAG,EAAE,qBAAqB,CAAC,EACpC,qBAAqB,CACtB;QACD,cAAc,EAAE,IAAI,CAClB,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,EACjC,kBAAkB,CACnB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./client.js";
2
+ export * from "./env.js";
3
+ export * from "./styleflow.js";
4
+ export * from "./template-hierarchy.js";
5
+ export * from "./types.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./client.js";
2
+ export * from "./env.js";
3
+ export * from "./styleflow.js";
4
+ export * from "./template-hierarchy.js";
5
+ export * from "./types.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,30 @@
1
+ export interface StyleflowContractAxes {
2
+ color: {
3
+ tones: string[];
4
+ intensities: Array<string | number>;
5
+ surfaces: string[];
6
+ };
7
+ layout: {
8
+ roles: string[];
9
+ densities: string[];
10
+ };
11
+ typography: {
12
+ types: string[];
13
+ variants: Record<string, string[]>;
14
+ weights: string[];
15
+ };
16
+ interaction: {
17
+ priorities: string[];
18
+ states: string[];
19
+ };
20
+ }
21
+ export interface StyleflowContract {
22
+ axes: StyleflowContractAxes;
23
+ }
24
+ export type DynamicStyleflowProps = Record<string, unknown>;
25
+ /**
26
+ * CMS values can outlive a contract revision. Invalid values fail closed to
27
+ * component defaults before reaching Styleflow's Astro runtime.
28
+ */
29
+ export declare function resolveDynamicStyleflowProps(input: DynamicStyleflowProps, defaults: DynamicStyleflowProps, contract: StyleflowContract): DynamicStyleflowProps;
30
+ //# sourceMappingURL=styleflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleflow.d.ts","sourceRoot":"","sources":["../src/styleflow.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,WAAW,EAAE;QACX,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,qBAAqB,CAAC;CAC7B;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAkB5D;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,iBAAiB,GAC1B,qBAAqB,CAmCvB"}
@@ -0,0 +1,47 @@
1
+ const AXIS_BY_PROP = {
2
+ tone: ["color", "tones"],
3
+ intensity: ["color", "intensities"],
4
+ surface: ["color", "surfaces"],
5
+ layoutRole: ["layout", "roles"],
6
+ density: ["layout", "densities"],
7
+ ty: ["typography", "types"],
8
+ w: ["typography", "weights"],
9
+ interactivePriority: ["interaction", "priorities"],
10
+ interactionState: ["interaction", "states"]
11
+ };
12
+ function sameAxisValue(candidate, allowed) {
13
+ return String(candidate) === String(allowed);
14
+ }
15
+ /**
16
+ * CMS values can outlive a contract revision. Invalid values fail closed to
17
+ * component defaults before reaching Styleflow's Astro runtime.
18
+ */
19
+ export function resolveDynamicStyleflowProps(input, defaults, contract) {
20
+ const resolved = { ...defaults };
21
+ for (const [key, value] of Object.entries(input)) {
22
+ if (value === undefined || value === null || value === "") {
23
+ continue;
24
+ }
25
+ if (key === "v") {
26
+ const type = String(input.ty ?? defaults.ty ?? "");
27
+ const variants = contract.axes.typography.variants[type] ?? [];
28
+ resolved.v = variants.some((variant) => sameAxisValue(value, variant))
29
+ ? value
30
+ : defaults.v;
31
+ continue;
32
+ }
33
+ const axisPath = AXIS_BY_PROP[key];
34
+ if (!axisPath) {
35
+ resolved[key] = value;
36
+ continue;
37
+ }
38
+ const [group, axis] = axisPath;
39
+ const groups = contract.axes;
40
+ const allowed = groups[group]?.[axis] ?? [];
41
+ resolved[key] = allowed.some((item) => sameAxisValue(value, item))
42
+ ? value
43
+ : defaults[key];
44
+ }
45
+ return resolved;
46
+ }
47
+ //# sourceMappingURL=styleflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleflow.js","sourceRoot":"","sources":["../src/styleflow.ts"],"names":[],"mappings":"AA2BA,MAAM,YAAY,GAAG;IACnB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;IACnC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;IAC9B,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IAChC,EAAE,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC;IAC3B,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;IAC5B,mBAAmB,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;IAClD,gBAAgB,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;CACnC,CAAC;AAEX,SAAS,aAAa,CAAC,SAAkB,EAAE,OAAgB;IACzD,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAA4B,EAC5B,QAA+B,EAC/B,QAA2B;IAE3B,MAAM,QAAQ,GAA0B,EAAE,GAAG,QAAQ,EAAE,CAAC;IAExD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAC1D,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/D,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACpE,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAgC,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,SAAS;QACX,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC;QAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAGvB,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5C,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAChE,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { TemplateContext } from "./types.js";
2
+ /**
3
+ * Mirrors the WordPress classic template hierarchy, without file extensions.
4
+ * WordPress is still the source of truth at runtime and may filter candidates
5
+ * before returning them to Astro; this pure function powers tests and offline
6
+ * scaffolding.
7
+ */
8
+ export declare function getTemplateCandidates(context: TemplateContext): string[];
9
+ export interface TemplateResolution<T> {
10
+ name: string;
11
+ component: T;
12
+ candidates: string[];
13
+ source: "project" | "core";
14
+ }
15
+ export declare function resolveTemplate<T>(candidates: string[], projectTemplates: Readonly<Record<string, T>>, coreTemplates: Readonly<Record<string, T>>): TemplateResolution<T>;
16
+ //# sourceMappingURL=template-hierarchy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-hierarchy.d.ts","sourceRoot":"","sources":["../src/template-hierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAsDlD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,CA8FxE;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CAAC,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;CAC5B;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,UAAU,EAAE,MAAM,EAAE,EACpB,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAC7C,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GACzC,kBAAkB,CAAC,CAAC,CAAC,CAwBvB"}
@@ -0,0 +1,169 @@
1
+ function slugPart(value) {
2
+ return String(value ?? "")
3
+ .trim()
4
+ .toLowerCase()
5
+ .replace(/\.php$/i, "")
6
+ .replace(/[^a-z0-9_%\-\u0080-\uFFFF]+/gu, "-")
7
+ .replace(/^-+|-+$/g, "");
8
+ }
9
+ function assignedTemplatePart(value) {
10
+ return String(value ?? "")
11
+ .trim()
12
+ .replace(/\.php$/i, "")
13
+ .split("/")
14
+ .map((part) => slugPart(part))
15
+ .filter(Boolean)
16
+ .join("/");
17
+ }
18
+ function unique(values) {
19
+ return [...new Set(values.filter((value) => Boolean(value)))];
20
+ }
21
+ function pageCandidates(context) {
22
+ return unique([
23
+ context.pageTemplate && context.pageTemplate !== "default"
24
+ ? assignedTemplatePart(context.pageTemplate)
25
+ : null,
26
+ context.slug ? `page-${slugPart(context.slug)}` : null,
27
+ context.databaseId ? `page-${context.databaseId}` : null,
28
+ "page",
29
+ "singular",
30
+ "index"
31
+ ]);
32
+ }
33
+ function attachmentMimeCandidates(mimeType) {
34
+ const [type = "", subtype = ""] = String(mimeType ?? "")
35
+ .toLowerCase()
36
+ .split("/", 2);
37
+ const normalizedType = slugPart(type);
38
+ const normalizedSubtype = slugPart(subtype);
39
+ return unique([
40
+ normalizedType && normalizedSubtype
41
+ ? `${normalizedType}-${normalizedSubtype}`
42
+ : null,
43
+ normalizedSubtype || null,
44
+ normalizedType || null
45
+ ]);
46
+ }
47
+ /**
48
+ * Mirrors the WordPress classic template hierarchy, without file extensions.
49
+ * WordPress is still the source of truth at runtime and may filter candidates
50
+ * before returning them to Astro; this pure function powers tests and offline
51
+ * scaffolding.
52
+ */
53
+ export function getTemplateCandidates(context) {
54
+ switch (context.queryType) {
55
+ case "front-page":
56
+ return unique([
57
+ "front-page",
58
+ ...(context.frontPageMode === "posts"
59
+ ? ["home", "index"]
60
+ : pageCandidates(context))
61
+ ]);
62
+ case "home":
63
+ return ["home", "index"];
64
+ case "privacy-policy":
65
+ return unique(["privacy-policy", ...pageCandidates(context)]);
66
+ case "page":
67
+ return pageCandidates(context);
68
+ case "single":
69
+ return unique([
70
+ context.postType && context.slug
71
+ ? `single-${slugPart(context.postType)}-${slugPart(context.slug)}`
72
+ : null,
73
+ context.postType ? `single-${slugPart(context.postType)}` : null,
74
+ "single",
75
+ "singular",
76
+ "index"
77
+ ]);
78
+ case "attachment":
79
+ return unique([
80
+ ...attachmentMimeCandidates(context.mimeType),
81
+ "attachment",
82
+ context.slug ? `single-attachment-${slugPart(context.slug)}` : null,
83
+ "single-attachment",
84
+ "single",
85
+ "singular",
86
+ "index"
87
+ ]);
88
+ case "post-type-archive":
89
+ return unique([
90
+ context.postType ? `archive-${slugPart(context.postType)}` : null,
91
+ "archive",
92
+ "index"
93
+ ]);
94
+ case "category":
95
+ return unique([
96
+ context.slug ? `category-${slugPart(context.slug)}` : null,
97
+ context.termId ? `category-${context.termId}` : null,
98
+ "category",
99
+ "archive",
100
+ "index"
101
+ ]);
102
+ case "tag":
103
+ return unique([
104
+ context.slug ? `tag-${slugPart(context.slug)}` : null,
105
+ context.termId ? `tag-${context.termId}` : null,
106
+ "tag",
107
+ "archive",
108
+ "index"
109
+ ]);
110
+ case "taxonomy":
111
+ return unique([
112
+ context.taxonomy && context.term
113
+ ? `taxonomy-${slugPart(context.taxonomy)}-${slugPart(context.term)}`
114
+ : null,
115
+ context.taxonomy ? `taxonomy-${slugPart(context.taxonomy)}` : null,
116
+ "taxonomy",
117
+ "archive",
118
+ "index"
119
+ ]);
120
+ case "author":
121
+ return unique([
122
+ context.authorNicename
123
+ ? `author-${slugPart(context.authorNicename)}`
124
+ : null,
125
+ context.authorId ? `author-${context.authorId}` : null,
126
+ "author",
127
+ "archive",
128
+ "index"
129
+ ]);
130
+ case "date":
131
+ return ["date", "archive", "index"];
132
+ case "search":
133
+ return ["search", "index"];
134
+ case "embed":
135
+ return unique([
136
+ context.postType && context.postFormat
137
+ ? `embed-${slugPart(context.postType)}-${slugPart(context.postFormat)}`
138
+ : null,
139
+ context.postType ? `embed-${slugPart(context.postType)}` : null,
140
+ "embed"
141
+ ]);
142
+ case "archive":
143
+ return ["archive", "index"];
144
+ case "404":
145
+ return ["404", "index"];
146
+ }
147
+ }
148
+ export function resolveTemplate(candidates, projectTemplates, coreTemplates) {
149
+ for (const candidate of candidates) {
150
+ const project = projectTemplates[candidate];
151
+ if (project) {
152
+ return { name: candidate, component: project, candidates, source: "project" };
153
+ }
154
+ const core = coreTemplates[candidate];
155
+ if (core) {
156
+ return { name: candidate, component: core, candidates, source: "core" };
157
+ }
158
+ }
159
+ const projectIndex = projectTemplates.index;
160
+ if (projectIndex) {
161
+ return { name: "index", component: projectIndex, candidates, source: "project" };
162
+ }
163
+ const coreIndex = coreTemplates.index;
164
+ if (!coreIndex) {
165
+ throw new Error("FlowPress requires a core index template.");
166
+ }
167
+ return { name: "index", component: coreIndex, candidates, source: "core" };
168
+ }
169
+ //# sourceMappingURL=template-hierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-hierarchy.js","sourceRoot":"","sources":["../src/template-hierarchy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const coreTemplates: {
2
+ readonly index: unknown;
3
+ readonly singular: unknown;
4
+ readonly single: unknown;
5
+ readonly page: unknown;
6
+ readonly archive: unknown;
7
+ readonly taxonomy: unknown;
8
+ readonly category: unknown;
9
+ readonly tag: unknown;
10
+ readonly author: unknown;
11
+ readonly date: unknown;
12
+ readonly search: unknown;
13
+ readonly home: unknown;
14
+ readonly attachment: unknown;
15
+ readonly embed: unknown;
16
+ readonly "privacy-policy": unknown;
17
+ readonly "404": unknown;
18
+ };
19
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;CAiBhB,CAAC"}