@marvalt/wadapter 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/generators/gravity-forms/gravity-forms-generator.d.ts +3 -3
- package/dist/generators/gravity-forms/gravity-forms-generator.d.ts.map +1 -1
- package/dist/generators/wordpress/wordpress-generator.d.ts.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.esm.js +212 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +212 -1
- package/dist/index.js.map +1 -1
- package/dist/types/wordpress.d.ts +2 -0
- package/dist/types/wordpress.d.ts.map +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -59,6 +59,14 @@ The generators fetch WordPress and Gravity Forms data and write static JSON:
|
|
|
59
59
|
|
|
60
60
|
You can wire them into npm scripts using your preferred runner. Example entry points are included in the docs.
|
|
61
61
|
|
|
62
|
+
### Pages now include Gutenberg blocks
|
|
63
|
+
|
|
64
|
+
- Pages are fetched with `context=edit` so `content.raw` is available.
|
|
65
|
+
- We parse `content.raw` using `@wordpress/block-serialization-default-parser` and persist `pages[n].blocks`.
|
|
66
|
+
- Posts remain unchanged (HTML `content.rendered`).
|
|
67
|
+
|
|
68
|
+
Proxy mode note: the Cloudflare worker can inject Basic Auth for `context=edit` if `WP_BASIC_AUTH_USERNAME` and `WP_BASIC_AUTH_PASSWORD` are set.
|
|
69
|
+
|
|
62
70
|
## Runtime access (static-only)
|
|
63
71
|
|
|
64
72
|
- Loaders
|
|
@@ -71,6 +79,19 @@ You can wire them into npm scripts using your preferred runner. Example entry po
|
|
|
71
79
|
|
|
72
80
|
Note: These selectors read only from static JSON. They do not fetch live content at runtime.
|
|
73
81
|
|
|
82
|
+
## Exports and types
|
|
83
|
+
|
|
84
|
+
- Generators
|
|
85
|
+
- `WordPressGenerator`, `generateWordPressData`
|
|
86
|
+
- `GravityFormsGenerator`, `generateGravityFormsData`
|
|
87
|
+
- Generator output type for GF: `GravityFormsStaticBundle`
|
|
88
|
+
|
|
89
|
+
- Static runtime selectors
|
|
90
|
+
- WordPress: `loadWordPressData`, `getWordPressPosts`, `getWordPressPages`, `getWordPressMedia`, `getWordPressCategories`, `getWordPressTags`
|
|
91
|
+
- Gravity Forms: `loadGravityFormsData`, `hasGravityFormsStatic`, `getActiveForms`, `getPublishedForms`, `getFormById`
|
|
92
|
+
|
|
93
|
+
> Note: The generator bundle type was renamed to avoid conflicts with runtime static selectors.
|
|
94
|
+
|
|
74
95
|
## Form submissions
|
|
75
96
|
|
|
76
97
|
Use the package Gravity Forms client. It routes per mode:
|
|
@@ -20,7 +20,7 @@ export interface GravityFormsGeneratorConfig extends GravityFormsConfig {
|
|
|
20
20
|
formIds?: number[];
|
|
21
21
|
includeInactive?: boolean;
|
|
22
22
|
}
|
|
23
|
-
export interface
|
|
23
|
+
export interface GravityFormsStaticBundle {
|
|
24
24
|
generated_at: string;
|
|
25
25
|
total_forms: number;
|
|
26
26
|
forms: GravityForm[];
|
|
@@ -28,9 +28,9 @@ export interface GravityFormsStaticData {
|
|
|
28
28
|
export declare class GravityFormsGenerator {
|
|
29
29
|
private config;
|
|
30
30
|
constructor(config: GravityFormsGeneratorConfig);
|
|
31
|
-
generateStaticData(): Promise<
|
|
31
|
+
generateStaticData(): Promise<GravityFormsStaticBundle>;
|
|
32
32
|
private writeStaticData;
|
|
33
33
|
generateFormConfig(formId: number): Promise<GravityForm>;
|
|
34
34
|
}
|
|
35
|
-
export declare function generateGravityFormsData(config: GravityFormsGeneratorConfig): Promise<
|
|
35
|
+
export declare function generateGravityFormsData(config: GravityFormsGeneratorConfig): Promise<GravityFormsStaticBundle>;
|
|
36
36
|
//# sourceMappingURL=gravity-forms-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gravity-forms-generator.d.ts","sourceRoot":"","sources":["../../../src/generators/gravity-forms/gravity-forms-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI5E,MAAM,WAAW,2BAA4B,SAAQ,kBAAkB;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"gravity-forms-generator.d.ts","sourceRoot":"","sources":["../../../src/generators/gravity-forms/gravity-forms-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI5E,MAAM,WAAW,2BAA4B,SAAQ,kBAAkB;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAA8B;gBAEhC,MAAM,EAAE,2BAA2B;IAIzC,kBAAkB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAyE7D,OAAO,CAAC,eAAe;IAWjB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAI/D;AAGD,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAGrH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wordpress-generator.d.ts","sourceRoot":"","sources":["../../../src/generators/wordpress/wordpress-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAmC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"wordpress-generator.d.ts","sourceRoot":"","sources":["../../../src/generators/wordpress/wordpress-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAmC,MAAM,uBAAuB,CAAC;AAKvI,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YACzB,SAAS,EAAE,MAAM,CAAC;YAClB,gBAAgB,EAAE,OAAO,CAAC;YAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;YACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;SACvB,CAAC,CAAC;KACJ,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAA2B;gBAE7B,MAAM,EAAE,wBAAwB;IAItC,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IA4DpD,OAAO,CAAC,eAAe;IAWjB,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAK7C,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAK7C,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;CAIrD;AAGD,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,eAAe,CAAC,CAGtG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ interface WordPressPost {
|
|
|
35
35
|
content: {
|
|
36
36
|
rendered: string;
|
|
37
37
|
protected: boolean;
|
|
38
|
+
raw?: string;
|
|
38
39
|
};
|
|
39
40
|
excerpt: {
|
|
40
41
|
rendered: string;
|
|
@@ -346,6 +347,7 @@ interface WordPressQueryParams {
|
|
|
346
347
|
include?: number[];
|
|
347
348
|
offset?: number;
|
|
348
349
|
_embed?: boolean;
|
|
350
|
+
context?: 'view' | 'embed' | 'edit';
|
|
349
351
|
}
|
|
350
352
|
|
|
351
353
|
/**
|
|
@@ -823,12 +825,12 @@ declare function getWordPressTags(): WordPressTag[];
|
|
|
823
825
|
* See the GNU General Public License for more details.
|
|
824
826
|
*/
|
|
825
827
|
|
|
826
|
-
interface GravityFormsStaticData
|
|
828
|
+
interface GravityFormsStaticData {
|
|
827
829
|
generated_at?: string;
|
|
828
830
|
total_forms: number;
|
|
829
831
|
forms: GravityForm$1[];
|
|
830
832
|
}
|
|
831
|
-
declare function loadGravityFormsData(path?: string): Promise<GravityFormsStaticData
|
|
833
|
+
declare function loadGravityFormsData(path?: string): Promise<GravityFormsStaticData | null>;
|
|
832
834
|
declare function hasGravityFormsStatic(): boolean;
|
|
833
835
|
declare function getActiveForms(): GravityForm$1[];
|
|
834
836
|
declare function getPublishedForms(): GravityForm$1[];
|
|
@@ -909,7 +911,7 @@ interface GravityFormsGeneratorConfig extends GravityFormsConfig {
|
|
|
909
911
|
formIds?: number[];
|
|
910
912
|
includeInactive?: boolean;
|
|
911
913
|
}
|
|
912
|
-
interface
|
|
914
|
+
interface GravityFormsStaticBundle {
|
|
913
915
|
generated_at: string;
|
|
914
916
|
total_forms: number;
|
|
915
917
|
forms: GravityForm$1[];
|
|
@@ -917,11 +919,11 @@ interface GravityFormsStaticData {
|
|
|
917
919
|
declare class GravityFormsGenerator {
|
|
918
920
|
private config;
|
|
919
921
|
constructor(config: GravityFormsGeneratorConfig);
|
|
920
|
-
generateStaticData(): Promise<
|
|
922
|
+
generateStaticData(): Promise<GravityFormsStaticBundle>;
|
|
921
923
|
private writeStaticData;
|
|
922
924
|
generateFormConfig(formId: number): Promise<GravityForm$1>;
|
|
923
925
|
}
|
|
924
|
-
declare function generateGravityFormsData(config: GravityFormsGeneratorConfig): Promise<
|
|
926
|
+
declare function generateGravityFormsData(config: GravityFormsGeneratorConfig): Promise<GravityFormsStaticBundle>;
|
|
925
927
|
|
|
926
928
|
/**
|
|
927
929
|
* @license GPL-3.0-or-later
|
|
@@ -1069,4 +1071,4 @@ declare function validateFormData(formData: Record<string, any>, rules: Record<s
|
|
|
1069
1071
|
};
|
|
1070
1072
|
|
|
1071
1073
|
export { FormProtectionGenerator, GravityForm, GravityFormsClient, GravityFormsGenerator, GravityFormsProvider, WordPressClient, WordPressContent, WordPressGenerator, WordPressProvider, createFormProtectionConfig, createGravityFormsConfig, createWordPressConfig, generateFormProtectionData, generateGravityFormsData, generateWordPressData, getActiveForms, getFormById, getPublishedForms, getWordPressCategories, getWordPressMedia, getWordPressPages, getWordPressPosts, getWordPressTags, hasGravityFormsStatic, hasWordPressStatic, loadGravityFormsData, loadWordPressData, sanitizeHtml, transformWordPressMedia, transformWordPressMediaItems, transformWordPressPage, transformWordPressPages, transformWordPressPost, transformWordPressPosts, useGravityForms, useGravityFormsConfig, useGravityFormsContext, useWordPress, useWordPressCategories, useWordPressContext, useWordPressMedia, useWordPressPage, useWordPressPages, useWordPressPost, useWordPressPosts, useWordPressTags, validateEmail, validateFormData, validateFormProtectionConfig, validateGravityFormsConfig, validateMaxLength, validateMinLength, validatePhoneNumber, validateRequired, validateUrl, validateWordPressConfig };
|
|
1072
|
-
export type { EmailVerificationData, FormProtectionConfig, FormProtectionGeneratorConfig, FormProtectionResult, FormProtectionStaticData, FormProtectionValidation, GravityFormConfirmation, GravityFormField, GravityFormNotification, GravityFormSubmission, GravityFormSubmissionResult, GravityFormsConfig, GravityFormsGeneratorConfig, StaticDataStore, TransformedWordPressMedia, TransformedWordPressPage, TransformedWordPressPost, UseGravityFormsResult, UseWordPressResult, WordPressAuthor, WordPressCategory, WordPressConfig, WordPressGeneratorConfig, WordPressMedia, WordPressPage, WordPressPost, WordPressQueryParams, WordPressStaticData, WordPressTag };
|
|
1074
|
+
export type { EmailVerificationData, FormProtectionConfig, FormProtectionGeneratorConfig, FormProtectionResult, FormProtectionStaticData, FormProtectionValidation, GravityFormConfirmation, GravityFormField, GravityFormNotification, GravityFormSubmission, GravityFormSubmissionResult, GravityFormsConfig, GravityFormsGeneratorConfig, GravityFormsStaticBundle, GravityFormsStaticData, StaticDataStore, TransformedWordPressMedia, TransformedWordPressPage, TransformedWordPressPost, UseGravityFormsResult, UseWordPressResult, WordPressAuthor, WordPressCategory, WordPressConfig, WordPressGeneratorConfig, WordPressMedia, WordPressPage, WordPressPost, WordPressQueryParams, WordPressStaticData, WordPressTag };
|
package/dist/index.esm.js
CHANGED
|
@@ -2105,6 +2105,205 @@ function getFormById(id) {
|
|
|
2105
2105
|
return (gravityFormsStaticData?.forms ?? []).find(f => String(f.id) === key);
|
|
2106
2106
|
}
|
|
2107
2107
|
|
|
2108
|
+
let document;
|
|
2109
|
+
let offset;
|
|
2110
|
+
let output;
|
|
2111
|
+
let stack;
|
|
2112
|
+
const tokenizer = /<!--\s+(\/)?wp:([a-z][a-z0-9_-]*\/)?([a-z][a-z0-9_-]*)\s+({(?:(?=([^}]+|}+(?=})|(?!}\s+\/?-->)[^])*)\5|[^]*?)}\s+)?(\/)?-->/g;
|
|
2113
|
+
function Block(blockName, attrs, innerBlocks, innerHTML, innerContent) {
|
|
2114
|
+
return {
|
|
2115
|
+
blockName,
|
|
2116
|
+
attrs,
|
|
2117
|
+
innerBlocks,
|
|
2118
|
+
innerHTML,
|
|
2119
|
+
innerContent
|
|
2120
|
+
};
|
|
2121
|
+
}
|
|
2122
|
+
function Freeform(innerHTML) {
|
|
2123
|
+
return Block(null, {}, [], innerHTML, [innerHTML]);
|
|
2124
|
+
}
|
|
2125
|
+
function Frame(block, tokenStart, tokenLength, prevOffset, leadingHtmlStart) {
|
|
2126
|
+
return {
|
|
2127
|
+
block,
|
|
2128
|
+
tokenStart,
|
|
2129
|
+
tokenLength,
|
|
2130
|
+
prevOffset: prevOffset || tokenStart + tokenLength,
|
|
2131
|
+
leadingHtmlStart
|
|
2132
|
+
};
|
|
2133
|
+
}
|
|
2134
|
+
const parse = (doc) => {
|
|
2135
|
+
document = doc;
|
|
2136
|
+
offset = 0;
|
|
2137
|
+
output = [];
|
|
2138
|
+
stack = [];
|
|
2139
|
+
tokenizer.lastIndex = 0;
|
|
2140
|
+
do {
|
|
2141
|
+
} while (proceed());
|
|
2142
|
+
return output;
|
|
2143
|
+
};
|
|
2144
|
+
function proceed() {
|
|
2145
|
+
const stackDepth = stack.length;
|
|
2146
|
+
const next = nextToken();
|
|
2147
|
+
const [tokenType, blockName, attrs, startOffset, tokenLength] = next;
|
|
2148
|
+
const leadingHtmlStart = startOffset > offset ? offset : null;
|
|
2149
|
+
switch (tokenType) {
|
|
2150
|
+
case "no-more-tokens":
|
|
2151
|
+
if (0 === stackDepth) {
|
|
2152
|
+
addFreeform();
|
|
2153
|
+
return false;
|
|
2154
|
+
}
|
|
2155
|
+
if (1 === stackDepth) {
|
|
2156
|
+
addBlockFromStack();
|
|
2157
|
+
return false;
|
|
2158
|
+
}
|
|
2159
|
+
while (0 < stack.length) {
|
|
2160
|
+
addBlockFromStack();
|
|
2161
|
+
}
|
|
2162
|
+
return false;
|
|
2163
|
+
case "void-block":
|
|
2164
|
+
if (0 === stackDepth) {
|
|
2165
|
+
if (null !== leadingHtmlStart) {
|
|
2166
|
+
output.push(
|
|
2167
|
+
Freeform(
|
|
2168
|
+
document.substr(
|
|
2169
|
+
leadingHtmlStart,
|
|
2170
|
+
startOffset - leadingHtmlStart
|
|
2171
|
+
)
|
|
2172
|
+
)
|
|
2173
|
+
);
|
|
2174
|
+
}
|
|
2175
|
+
output.push(Block(blockName, attrs, [], "", []));
|
|
2176
|
+
offset = startOffset + tokenLength;
|
|
2177
|
+
return true;
|
|
2178
|
+
}
|
|
2179
|
+
addInnerBlock(
|
|
2180
|
+
Block(blockName, attrs, [], "", []),
|
|
2181
|
+
startOffset,
|
|
2182
|
+
tokenLength
|
|
2183
|
+
);
|
|
2184
|
+
offset = startOffset + tokenLength;
|
|
2185
|
+
return true;
|
|
2186
|
+
case "block-opener":
|
|
2187
|
+
stack.push(
|
|
2188
|
+
Frame(
|
|
2189
|
+
Block(blockName, attrs, [], "", []),
|
|
2190
|
+
startOffset,
|
|
2191
|
+
tokenLength,
|
|
2192
|
+
startOffset + tokenLength,
|
|
2193
|
+
leadingHtmlStart
|
|
2194
|
+
)
|
|
2195
|
+
);
|
|
2196
|
+
offset = startOffset + tokenLength;
|
|
2197
|
+
return true;
|
|
2198
|
+
case "block-closer":
|
|
2199
|
+
if (0 === stackDepth) {
|
|
2200
|
+
addFreeform();
|
|
2201
|
+
return false;
|
|
2202
|
+
}
|
|
2203
|
+
if (1 === stackDepth) {
|
|
2204
|
+
addBlockFromStack(startOffset);
|
|
2205
|
+
offset = startOffset + tokenLength;
|
|
2206
|
+
return true;
|
|
2207
|
+
}
|
|
2208
|
+
const stackTop = stack.pop();
|
|
2209
|
+
const html = document.substr(
|
|
2210
|
+
stackTop.prevOffset,
|
|
2211
|
+
startOffset - stackTop.prevOffset
|
|
2212
|
+
);
|
|
2213
|
+
stackTop.block.innerHTML += html;
|
|
2214
|
+
stackTop.block.innerContent.push(html);
|
|
2215
|
+
stackTop.prevOffset = startOffset + tokenLength;
|
|
2216
|
+
addInnerBlock(
|
|
2217
|
+
stackTop.block,
|
|
2218
|
+
stackTop.tokenStart,
|
|
2219
|
+
stackTop.tokenLength,
|
|
2220
|
+
startOffset + tokenLength
|
|
2221
|
+
);
|
|
2222
|
+
offset = startOffset + tokenLength;
|
|
2223
|
+
return true;
|
|
2224
|
+
default:
|
|
2225
|
+
addFreeform();
|
|
2226
|
+
return false;
|
|
2227
|
+
}
|
|
2228
|
+
}
|
|
2229
|
+
function parseJSON(input) {
|
|
2230
|
+
try {
|
|
2231
|
+
return JSON.parse(input);
|
|
2232
|
+
} catch (e) {
|
|
2233
|
+
return null;
|
|
2234
|
+
}
|
|
2235
|
+
}
|
|
2236
|
+
function nextToken() {
|
|
2237
|
+
const matches = tokenizer.exec(document);
|
|
2238
|
+
if (null === matches) {
|
|
2239
|
+
return ["no-more-tokens", "", null, 0, 0];
|
|
2240
|
+
}
|
|
2241
|
+
const startedAt = matches.index;
|
|
2242
|
+
const [
|
|
2243
|
+
match,
|
|
2244
|
+
closerMatch,
|
|
2245
|
+
namespaceMatch,
|
|
2246
|
+
nameMatch,
|
|
2247
|
+
attrsMatch,
|
|
2248
|
+
,
|
|
2249
|
+
voidMatch
|
|
2250
|
+
] = matches;
|
|
2251
|
+
const length = match.length;
|
|
2252
|
+
const isCloser = !!closerMatch;
|
|
2253
|
+
const isVoid = !!voidMatch;
|
|
2254
|
+
const namespace = namespaceMatch || "core/";
|
|
2255
|
+
const name = namespace + nameMatch;
|
|
2256
|
+
const hasAttrs = !!attrsMatch;
|
|
2257
|
+
const attrs = hasAttrs ? parseJSON(attrsMatch) : {};
|
|
2258
|
+
if (isVoid) {
|
|
2259
|
+
return ["void-block", name, attrs, startedAt, length];
|
|
2260
|
+
}
|
|
2261
|
+
if (isCloser) {
|
|
2262
|
+
return ["block-closer", name, null, startedAt, length];
|
|
2263
|
+
}
|
|
2264
|
+
return ["block-opener", name, attrs, startedAt, length];
|
|
2265
|
+
}
|
|
2266
|
+
function addFreeform(rawLength) {
|
|
2267
|
+
const length = document.length - offset;
|
|
2268
|
+
if (0 === length) {
|
|
2269
|
+
return;
|
|
2270
|
+
}
|
|
2271
|
+
output.push(Freeform(document.substr(offset, length)));
|
|
2272
|
+
}
|
|
2273
|
+
function addInnerBlock(block, tokenStart, tokenLength, lastOffset) {
|
|
2274
|
+
const parent = stack[stack.length - 1];
|
|
2275
|
+
parent.block.innerBlocks.push(block);
|
|
2276
|
+
const html = document.substr(
|
|
2277
|
+
parent.prevOffset,
|
|
2278
|
+
tokenStart - parent.prevOffset
|
|
2279
|
+
);
|
|
2280
|
+
if (html) {
|
|
2281
|
+
parent.block.innerHTML += html;
|
|
2282
|
+
parent.block.innerContent.push(html);
|
|
2283
|
+
}
|
|
2284
|
+
parent.block.innerContent.push(null);
|
|
2285
|
+
parent.prevOffset = lastOffset ? lastOffset : tokenStart + tokenLength;
|
|
2286
|
+
}
|
|
2287
|
+
function addBlockFromStack(endOffset) {
|
|
2288
|
+
const { block, leadingHtmlStart, prevOffset, tokenStart } = stack.pop();
|
|
2289
|
+
const html = endOffset ? document.substr(prevOffset, endOffset - prevOffset) : document.substr(prevOffset);
|
|
2290
|
+
if (html) {
|
|
2291
|
+
block.innerHTML += html;
|
|
2292
|
+
block.innerContent.push(html);
|
|
2293
|
+
}
|
|
2294
|
+
if (null !== leadingHtmlStart) {
|
|
2295
|
+
output.push(
|
|
2296
|
+
Freeform(
|
|
2297
|
+
document.substr(
|
|
2298
|
+
leadingHtmlStart,
|
|
2299
|
+
tokenStart - leadingHtmlStart
|
|
2300
|
+
)
|
|
2301
|
+
)
|
|
2302
|
+
);
|
|
2303
|
+
}
|
|
2304
|
+
output.push(block);
|
|
2305
|
+
}
|
|
2306
|
+
|
|
2108
2307
|
/**
|
|
2109
2308
|
* @license GPL-3.0-or-later
|
|
2110
2309
|
*
|
|
@@ -2135,6 +2334,8 @@ class WordPressGenerator {
|
|
|
2135
2334
|
const data = await client.getAllData({
|
|
2136
2335
|
per_page: this.config.maxItems || 100,
|
|
2137
2336
|
_embed: this.config.includeEmbedded || false,
|
|
2337
|
+
// required for content.raw with Gutenberg comments
|
|
2338
|
+
context: 'edit',
|
|
2138
2339
|
});
|
|
2139
2340
|
// Create the static data structure matching the existing format
|
|
2140
2341
|
const staticData = {
|
|
@@ -2156,7 +2357,17 @@ class WordPressGenerator {
|
|
|
2156
2357
|
},
|
|
2157
2358
|
// Map the data to the expected structure
|
|
2158
2359
|
posts: data.posts,
|
|
2159
|
-
pages: data.pages
|
|
2360
|
+
pages: (data.pages || []).map((p) => {
|
|
2361
|
+
let blocks = [];
|
|
2362
|
+
try {
|
|
2363
|
+
const raw = p?.content?.raw || '';
|
|
2364
|
+
blocks = raw ? parse(raw) : [];
|
|
2365
|
+
}
|
|
2366
|
+
catch (e) {
|
|
2367
|
+
console.warn('⚠️ Failed to parse Gutenberg blocks for page', p?.id, e);
|
|
2368
|
+
}
|
|
2369
|
+
return { ...p, blocks };
|
|
2370
|
+
}),
|
|
2160
2371
|
media: data.media,
|
|
2161
2372
|
categories: data.categories,
|
|
2162
2373
|
tags: data.tags,
|