@marvalt/wadapter 2.0.0 → 2.2.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/README.md +27 -6
- package/dist/client/wordpress-client.d.ts.map +1 -1
- 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/gravity-forms/gravity-forms-client.d.ts.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.esm.js +214 -27
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +214 -27
- 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
|
@@ -34,20 +34,20 @@ Required environment variables:
|
|
|
34
34
|
# Mode
|
|
35
35
|
VITE_AUTH_MODE=cloudflare_proxy|direct
|
|
36
36
|
|
|
37
|
-
# WordPress
|
|
37
|
+
# WordPress (non-secret)
|
|
38
38
|
VITE_WORDPRESS_API_URL=https://your-wordpress-site.com
|
|
39
39
|
VITE_CLOUDFLARE_WORKER_URL=https://your-worker.your-subdomain.workers.dev # when cloudflare_proxy
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
|
|
41
|
+
# Direct mode credentials (server-side build/generator only; do not ship to browser)
|
|
42
|
+
VITE_WP_API_USERNAME=your-username
|
|
43
|
+
VITE_WP_API_APP_PASSWORD=your-app-password
|
|
42
44
|
|
|
43
45
|
# Gravity Forms
|
|
44
46
|
VITE_GRAVITY_FORMS_API_URL=https://your-wordpress-site.com # base site URL
|
|
45
47
|
VITE_GRAVITY_FORMS_USERNAME=your-username # when direct
|
|
46
48
|
VITE_GRAVITY_FORMS_PASSWORD=your-app-password # when direct
|
|
47
49
|
|
|
48
|
-
#
|
|
49
|
-
VITE_APP_ID=your-app-id
|
|
50
|
-
VITE_WORKER_SECRET=your-shared-secret
|
|
50
|
+
# No client app headers are required; the Worker handles authentication
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
## Build-time generation
|
|
@@ -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_API_USERNAME` and `WP_API_APP_PASSWORD` are set in the worker env.
|
|
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:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wordpress-client.d.ts","sourceRoot":"","sources":["../../src/client/wordpress-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE1J,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,eAAe;YAIrB,WAAW;
|
|
1
|
+
{"version":3,"file":"wordpress-client.d.ts","sourceRoot":"","sources":["../../src/client/wordpress-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE1J,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,eAAe;YAIrB,WAAW;IAyFzB,OAAO,CAAC,UAAU;IASZ,QAAQ,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI3C,QAAQ,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI3C,QAAQ,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAItE,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIjD,aAAa,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI9E,OAAO,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAKnE,eAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAIjC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI5C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ3E,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC;IAIlC,UAAU,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC;QAC3D,KAAK,EAAE,aAAa,EAAE,CAAC;QACvB,KAAK,EAAE,aAAa,EAAE,CAAC;QACvB,KAAK,EAAE,cAAc,EAAE,CAAC;QACxB,UAAU,EAAE,iBAAiB,EAAE,CAAC;QAChC,IAAI,EAAE,YAAY,EAAE,CAAC;KACtB,CAAC;CAWH"}
|
|
@@ -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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gravity-forms-client.d.ts","sourceRoot":"","sources":["../../src/gravity-forms/gravity-forms-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE7H,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;YAIxB,WAAW;
|
|
1
|
+
{"version":3,"file":"gravity-forms-client.d.ts","sourceRoot":"","sources":["../../src/gravity-forms/gravity-forms-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE7H,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;YAIxB,WAAW;IAuDzB,OAAO,CAAC,UAAU;IASZ,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQzC,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAOlC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAO/C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAUnG,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CAM1F"}
|
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
|
@@ -50,19 +50,7 @@ class WordPressClient {
|
|
|
50
50
|
'Content-Type': 'application/json',
|
|
51
51
|
};
|
|
52
52
|
// Add authentication based on mode
|
|
53
|
-
if (this.config.authMode === 'cloudflare_proxy')
|
|
54
|
-
// Add Cloudflare proxy authentication headers
|
|
55
|
-
if (this.config.appId) {
|
|
56
|
-
headers['x-app-id'] = this.config.appId;
|
|
57
|
-
}
|
|
58
|
-
if (this.config.workerSecret) {
|
|
59
|
-
headers['x-app-secret'] = this.config.workerSecret;
|
|
60
|
-
}
|
|
61
|
-
if (this.config.cfAccessClientId && this.config.cfAccessClientSecret) {
|
|
62
|
-
headers['CF-Access-Client-Id'] = this.config.cfAccessClientId;
|
|
63
|
-
headers['CF-Access-Client-Secret'] = this.config.cfAccessClientSecret;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
53
|
+
if (this.config.authMode === 'cloudflare_proxy') ;
|
|
66
54
|
else {
|
|
67
55
|
// Direct mode - use basic auth
|
|
68
56
|
if (this.config.username && this.config.password) {
|
|
@@ -296,19 +284,7 @@ class GravityFormsClient {
|
|
|
296
284
|
...options.headers,
|
|
297
285
|
};
|
|
298
286
|
// Add authentication based on mode
|
|
299
|
-
if (this.config.authMode === 'cloudflare_proxy')
|
|
300
|
-
// Add Cloudflare proxy authentication headers
|
|
301
|
-
if (this.config.appId) {
|
|
302
|
-
headers['x-app-id'] = this.config.appId;
|
|
303
|
-
}
|
|
304
|
-
if (this.config.workerSecret) {
|
|
305
|
-
headers['x-app-secret'] = this.config.workerSecret;
|
|
306
|
-
}
|
|
307
|
-
if (this.config.cfAccessClientId && this.config.cfAccessClientSecret) {
|
|
308
|
-
headers['CF-Access-Client-Id'] = this.config.cfAccessClientId;
|
|
309
|
-
headers['CF-Access-Client-Secret'] = this.config.cfAccessClientSecret;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
287
|
+
if (this.config.authMode === 'cloudflare_proxy') ;
|
|
312
288
|
else {
|
|
313
289
|
// Direct mode - use basic auth
|
|
314
290
|
if (this.config.username && this.config.password) {
|
|
@@ -2105,6 +2081,205 @@ function getFormById(id) {
|
|
|
2105
2081
|
return (gravityFormsStaticData?.forms ?? []).find(f => String(f.id) === key);
|
|
2106
2082
|
}
|
|
2107
2083
|
|
|
2084
|
+
let document;
|
|
2085
|
+
let offset;
|
|
2086
|
+
let output;
|
|
2087
|
+
let stack;
|
|
2088
|
+
const tokenizer = /<!--\s+(\/)?wp:([a-z][a-z0-9_-]*\/)?([a-z][a-z0-9_-]*)\s+({(?:(?=([^}]+|}+(?=})|(?!}\s+\/?-->)[^])*)\5|[^]*?)}\s+)?(\/)?-->/g;
|
|
2089
|
+
function Block(blockName, attrs, innerBlocks, innerHTML, innerContent) {
|
|
2090
|
+
return {
|
|
2091
|
+
blockName,
|
|
2092
|
+
attrs,
|
|
2093
|
+
innerBlocks,
|
|
2094
|
+
innerHTML,
|
|
2095
|
+
innerContent
|
|
2096
|
+
};
|
|
2097
|
+
}
|
|
2098
|
+
function Freeform(innerHTML) {
|
|
2099
|
+
return Block(null, {}, [], innerHTML, [innerHTML]);
|
|
2100
|
+
}
|
|
2101
|
+
function Frame(block, tokenStart, tokenLength, prevOffset, leadingHtmlStart) {
|
|
2102
|
+
return {
|
|
2103
|
+
block,
|
|
2104
|
+
tokenStart,
|
|
2105
|
+
tokenLength,
|
|
2106
|
+
prevOffset: prevOffset || tokenStart + tokenLength,
|
|
2107
|
+
leadingHtmlStart
|
|
2108
|
+
};
|
|
2109
|
+
}
|
|
2110
|
+
const parse = (doc) => {
|
|
2111
|
+
document = doc;
|
|
2112
|
+
offset = 0;
|
|
2113
|
+
output = [];
|
|
2114
|
+
stack = [];
|
|
2115
|
+
tokenizer.lastIndex = 0;
|
|
2116
|
+
do {
|
|
2117
|
+
} while (proceed());
|
|
2118
|
+
return output;
|
|
2119
|
+
};
|
|
2120
|
+
function proceed() {
|
|
2121
|
+
const stackDepth = stack.length;
|
|
2122
|
+
const next = nextToken();
|
|
2123
|
+
const [tokenType, blockName, attrs, startOffset, tokenLength] = next;
|
|
2124
|
+
const leadingHtmlStart = startOffset > offset ? offset : null;
|
|
2125
|
+
switch (tokenType) {
|
|
2126
|
+
case "no-more-tokens":
|
|
2127
|
+
if (0 === stackDepth) {
|
|
2128
|
+
addFreeform();
|
|
2129
|
+
return false;
|
|
2130
|
+
}
|
|
2131
|
+
if (1 === stackDepth) {
|
|
2132
|
+
addBlockFromStack();
|
|
2133
|
+
return false;
|
|
2134
|
+
}
|
|
2135
|
+
while (0 < stack.length) {
|
|
2136
|
+
addBlockFromStack();
|
|
2137
|
+
}
|
|
2138
|
+
return false;
|
|
2139
|
+
case "void-block":
|
|
2140
|
+
if (0 === stackDepth) {
|
|
2141
|
+
if (null !== leadingHtmlStart) {
|
|
2142
|
+
output.push(
|
|
2143
|
+
Freeform(
|
|
2144
|
+
document.substr(
|
|
2145
|
+
leadingHtmlStart,
|
|
2146
|
+
startOffset - leadingHtmlStart
|
|
2147
|
+
)
|
|
2148
|
+
)
|
|
2149
|
+
);
|
|
2150
|
+
}
|
|
2151
|
+
output.push(Block(blockName, attrs, [], "", []));
|
|
2152
|
+
offset = startOffset + tokenLength;
|
|
2153
|
+
return true;
|
|
2154
|
+
}
|
|
2155
|
+
addInnerBlock(
|
|
2156
|
+
Block(blockName, attrs, [], "", []),
|
|
2157
|
+
startOffset,
|
|
2158
|
+
tokenLength
|
|
2159
|
+
);
|
|
2160
|
+
offset = startOffset + tokenLength;
|
|
2161
|
+
return true;
|
|
2162
|
+
case "block-opener":
|
|
2163
|
+
stack.push(
|
|
2164
|
+
Frame(
|
|
2165
|
+
Block(blockName, attrs, [], "", []),
|
|
2166
|
+
startOffset,
|
|
2167
|
+
tokenLength,
|
|
2168
|
+
startOffset + tokenLength,
|
|
2169
|
+
leadingHtmlStart
|
|
2170
|
+
)
|
|
2171
|
+
);
|
|
2172
|
+
offset = startOffset + tokenLength;
|
|
2173
|
+
return true;
|
|
2174
|
+
case "block-closer":
|
|
2175
|
+
if (0 === stackDepth) {
|
|
2176
|
+
addFreeform();
|
|
2177
|
+
return false;
|
|
2178
|
+
}
|
|
2179
|
+
if (1 === stackDepth) {
|
|
2180
|
+
addBlockFromStack(startOffset);
|
|
2181
|
+
offset = startOffset + tokenLength;
|
|
2182
|
+
return true;
|
|
2183
|
+
}
|
|
2184
|
+
const stackTop = stack.pop();
|
|
2185
|
+
const html = document.substr(
|
|
2186
|
+
stackTop.prevOffset,
|
|
2187
|
+
startOffset - stackTop.prevOffset
|
|
2188
|
+
);
|
|
2189
|
+
stackTop.block.innerHTML += html;
|
|
2190
|
+
stackTop.block.innerContent.push(html);
|
|
2191
|
+
stackTop.prevOffset = startOffset + tokenLength;
|
|
2192
|
+
addInnerBlock(
|
|
2193
|
+
stackTop.block,
|
|
2194
|
+
stackTop.tokenStart,
|
|
2195
|
+
stackTop.tokenLength,
|
|
2196
|
+
startOffset + tokenLength
|
|
2197
|
+
);
|
|
2198
|
+
offset = startOffset + tokenLength;
|
|
2199
|
+
return true;
|
|
2200
|
+
default:
|
|
2201
|
+
addFreeform();
|
|
2202
|
+
return false;
|
|
2203
|
+
}
|
|
2204
|
+
}
|
|
2205
|
+
function parseJSON(input) {
|
|
2206
|
+
try {
|
|
2207
|
+
return JSON.parse(input);
|
|
2208
|
+
} catch (e) {
|
|
2209
|
+
return null;
|
|
2210
|
+
}
|
|
2211
|
+
}
|
|
2212
|
+
function nextToken() {
|
|
2213
|
+
const matches = tokenizer.exec(document);
|
|
2214
|
+
if (null === matches) {
|
|
2215
|
+
return ["no-more-tokens", "", null, 0, 0];
|
|
2216
|
+
}
|
|
2217
|
+
const startedAt = matches.index;
|
|
2218
|
+
const [
|
|
2219
|
+
match,
|
|
2220
|
+
closerMatch,
|
|
2221
|
+
namespaceMatch,
|
|
2222
|
+
nameMatch,
|
|
2223
|
+
attrsMatch,
|
|
2224
|
+
,
|
|
2225
|
+
voidMatch
|
|
2226
|
+
] = matches;
|
|
2227
|
+
const length = match.length;
|
|
2228
|
+
const isCloser = !!closerMatch;
|
|
2229
|
+
const isVoid = !!voidMatch;
|
|
2230
|
+
const namespace = namespaceMatch || "core/";
|
|
2231
|
+
const name = namespace + nameMatch;
|
|
2232
|
+
const hasAttrs = !!attrsMatch;
|
|
2233
|
+
const attrs = hasAttrs ? parseJSON(attrsMatch) : {};
|
|
2234
|
+
if (isVoid) {
|
|
2235
|
+
return ["void-block", name, attrs, startedAt, length];
|
|
2236
|
+
}
|
|
2237
|
+
if (isCloser) {
|
|
2238
|
+
return ["block-closer", name, null, startedAt, length];
|
|
2239
|
+
}
|
|
2240
|
+
return ["block-opener", name, attrs, startedAt, length];
|
|
2241
|
+
}
|
|
2242
|
+
function addFreeform(rawLength) {
|
|
2243
|
+
const length = document.length - offset;
|
|
2244
|
+
if (0 === length) {
|
|
2245
|
+
return;
|
|
2246
|
+
}
|
|
2247
|
+
output.push(Freeform(document.substr(offset, length)));
|
|
2248
|
+
}
|
|
2249
|
+
function addInnerBlock(block, tokenStart, tokenLength, lastOffset) {
|
|
2250
|
+
const parent = stack[stack.length - 1];
|
|
2251
|
+
parent.block.innerBlocks.push(block);
|
|
2252
|
+
const html = document.substr(
|
|
2253
|
+
parent.prevOffset,
|
|
2254
|
+
tokenStart - parent.prevOffset
|
|
2255
|
+
);
|
|
2256
|
+
if (html) {
|
|
2257
|
+
parent.block.innerHTML += html;
|
|
2258
|
+
parent.block.innerContent.push(html);
|
|
2259
|
+
}
|
|
2260
|
+
parent.block.innerContent.push(null);
|
|
2261
|
+
parent.prevOffset = lastOffset ? lastOffset : tokenStart + tokenLength;
|
|
2262
|
+
}
|
|
2263
|
+
function addBlockFromStack(endOffset) {
|
|
2264
|
+
const { block, leadingHtmlStart, prevOffset, tokenStart } = stack.pop();
|
|
2265
|
+
const html = endOffset ? document.substr(prevOffset, endOffset - prevOffset) : document.substr(prevOffset);
|
|
2266
|
+
if (html) {
|
|
2267
|
+
block.innerHTML += html;
|
|
2268
|
+
block.innerContent.push(html);
|
|
2269
|
+
}
|
|
2270
|
+
if (null !== leadingHtmlStart) {
|
|
2271
|
+
output.push(
|
|
2272
|
+
Freeform(
|
|
2273
|
+
document.substr(
|
|
2274
|
+
leadingHtmlStart,
|
|
2275
|
+
tokenStart - leadingHtmlStart
|
|
2276
|
+
)
|
|
2277
|
+
)
|
|
2278
|
+
);
|
|
2279
|
+
}
|
|
2280
|
+
output.push(block);
|
|
2281
|
+
}
|
|
2282
|
+
|
|
2108
2283
|
/**
|
|
2109
2284
|
* @license GPL-3.0-or-later
|
|
2110
2285
|
*
|
|
@@ -2135,6 +2310,8 @@ class WordPressGenerator {
|
|
|
2135
2310
|
const data = await client.getAllData({
|
|
2136
2311
|
per_page: this.config.maxItems || 100,
|
|
2137
2312
|
_embed: this.config.includeEmbedded || false,
|
|
2313
|
+
// required for content.raw with Gutenberg comments
|
|
2314
|
+
context: 'edit',
|
|
2138
2315
|
});
|
|
2139
2316
|
// Create the static data structure matching the existing format
|
|
2140
2317
|
const staticData = {
|
|
@@ -2156,7 +2333,17 @@ class WordPressGenerator {
|
|
|
2156
2333
|
},
|
|
2157
2334
|
// Map the data to the expected structure
|
|
2158
2335
|
posts: data.posts,
|
|
2159
|
-
pages: data.pages
|
|
2336
|
+
pages: (data.pages || []).map((p) => {
|
|
2337
|
+
let blocks = [];
|
|
2338
|
+
try {
|
|
2339
|
+
const raw = p?.content?.raw || '';
|
|
2340
|
+
blocks = raw ? parse(raw) : [];
|
|
2341
|
+
}
|
|
2342
|
+
catch (e) {
|
|
2343
|
+
console.warn('⚠️ Failed to parse Gutenberg blocks for page', p?.id, e);
|
|
2344
|
+
}
|
|
2345
|
+
return { ...p, blocks };
|
|
2346
|
+
}),
|
|
2160
2347
|
media: data.media,
|
|
2161
2348
|
categories: data.categories,
|
|
2162
2349
|
tags: data.tags,
|