@marvalt/wadapter 2.3.36 → 2.3.38

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/index.esm.js CHANGED
@@ -60,6 +60,13 @@ class WordPressClient {
60
60
  headers['CF-Access-Client-Id'] = this.config.cfAccessClientId;
61
61
  headers['CF-Access-Client-Secret'] = this.config.cfAccessClientSecret;
62
62
  console.log('🔐 Added CF Access Service Token headers to WordPress request');
63
+ console.log('🔐 CF-Access-Client-Id:', this.config.cfAccessClientId.substring(0, 8) + '...');
64
+ console.log('🔐 CF-Access-Client-Secret:', this.config.cfAccessClientSecret.substring(0, 8) + '... (hidden)');
65
+ }
66
+ else {
67
+ console.log('⚠️ CF Access Service Token NOT provided - requests may be blocked by Zero Trust');
68
+ console.log(' cfAccessClientId present:', !!this.config.cfAccessClientId);
69
+ console.log(' cfAccessClientSecret present:', !!this.config.cfAccessClientSecret);
63
70
  }
64
71
  }
65
72
  console.log('🔍 WordPress API Request Debug:', {
@@ -67,6 +74,8 @@ class WordPressClient {
67
74
  method: options.method || 'GET',
68
75
  authMode: this.config.authMode,
69
76
  headers: Object.keys(headers),
77
+ hasBasicAuth: !!headers.Authorization,
78
+ hasCfAccess: !!(headers['CF-Access-Client-Id'] && headers['CF-Access-Client-Secret']),
70
79
  });
71
80
  const response = await fetch(url, {
72
81
  method: options.method || 'GET',
@@ -259,6 +268,30 @@ class WordPressClient {
259
268
  * Fetch WordPress Settings from custom endpoint
260
269
  * @returns Settings including front page information and site branding
261
270
  */
271
+ /**
272
+ * Fetch header template part blocks from custom endpoint
273
+ * @param slug Template part slug (default: 'header')
274
+ * @param area Template part area (default: 'header')
275
+ * @returns Header blocks data
276
+ */
277
+ async getHeader(slug = 'header', area = 'header') {
278
+ return this.makeRequest(`/wp-custom/v1/header`, { slug, area });
279
+ }
280
+ /**
281
+ * Fetch all navigation menus
282
+ * @returns Array of menu objects
283
+ */
284
+ async getMenus() {
285
+ return this.makeRequest('/wp-custom/v1/menus');
286
+ }
287
+ /**
288
+ * Fetch a specific navigation menu with its items
289
+ * @param menuId Menu ID
290
+ * @returns Menu data with hierarchical items
291
+ */
292
+ async getMenu(menuId) {
293
+ return this.makeRequest(`/wp-custom/v1/menus/${menuId}`);
294
+ }
262
295
  async getFooter(slug = 'footer', area = 'footer') {
263
296
  return this.makeRequest(`/wp-custom/v1/footer`, { slug, area });
264
297
  }
@@ -404,6 +437,13 @@ class GravityFormsClient {
404
437
  headers['CF-Access-Client-Id'] = this.config.cfAccessClientId;
405
438
  headers['CF-Access-Client-Secret'] = this.config.cfAccessClientSecret;
406
439
  console.log('🔐 Added CF Access Service Token headers to Gravity Forms request');
440
+ console.log('🔐 CF-Access-Client-Id:', this.config.cfAccessClientId.substring(0, 8) + '...');
441
+ console.log('🔐 CF-Access-Client-Secret:', this.config.cfAccessClientSecret.substring(0, 8) + '... (hidden)');
442
+ }
443
+ else {
444
+ console.log('⚠️ CF Access Service Token NOT provided - requests may be blocked by Zero Trust');
445
+ console.log(' cfAccessClientId present:', !!this.config.cfAccessClientId);
446
+ console.log(' cfAccessClientSecret present:', !!this.config.cfAccessClientSecret);
407
447
  }
408
448
  }
409
449
  else {
@@ -888,6 +928,46 @@ function buildMenuStructure(pages, baseUrl = '/', filterPublished = true) {
888
928
  };
889
929
  return hierarchicalPages.map(convertToMenuItem);
890
930
  }
931
+ /**
932
+ * Convert WordPress menu items to MenuItem format
933
+ *
934
+ * @param menuItems WordPress menu items (hierarchical structure from API)
935
+ * @param baseUrl Base URL for building relative URLs (default: '/')
936
+ * @returns Array of MenuItem objects
937
+ */
938
+ function convertMenuItemsToMenuStructure(menuItems, baseUrl = '/') {
939
+ return menuItems.map(item => {
940
+ // Convert URL to relative path if it's absolute
941
+ let url = item.url;
942
+ if (url.startsWith('http://') || url.startsWith('https://')) {
943
+ try {
944
+ const urlObj = new URL(url);
945
+ url = urlObj.pathname + urlObj.search + urlObj.hash;
946
+ }
947
+ catch (e) {
948
+ // Invalid URL, keep as is
949
+ }
950
+ }
951
+ // Ensure URL starts with /
952
+ if (!url.startsWith('/')) {
953
+ url = `/${url}`;
954
+ }
955
+ // Extract slug from URL (remove leading/trailing slashes)
956
+ const slug = url.replace(/^\/+|\/+$/g, '') || 'home';
957
+ const menuItem = {
958
+ id: item.id,
959
+ title: item.title,
960
+ slug,
961
+ url,
962
+ menuOrder: item.menu_order,
963
+ };
964
+ // Add children if they exist
965
+ if (item.children && item.children.length > 0) {
966
+ menuItem.children = convertMenuItemsToMenuStructure(item.children, baseUrl);
967
+ }
968
+ return menuItem;
969
+ });
970
+ }
891
971
  /**
892
972
  * Find a page by slug
893
973
  */
@@ -2757,5 +2837,5 @@ function validateFormData(formData, rules) {
2757
2837
  return { isValid, errors };
2758
2838
  }
2759
2839
 
2760
- export { GravityForm, GravityFormsClient, GravityFormsProvider, WordPressClient, WordPressContent, WordPressProvider, buildMenuStructure, buildPageHierarchy, createFormProtectionConfig, createGravityFormsConfig, createWordPressConfig, findPageById, findPageBySlug, getActiveForms, getChildPages, getFormById, getFrontpage, getFrontpageMetadata, getFrontpageSlug, getPublishedForms, getRootPages, getSiteSettings, getWordPressCategories, getWordPressMedia, getWordPressPages, getWordPressPosts, getWordPressTags, hasGravityFormsStatic, hasWordPressStatic, loadGravityFormsData, loadWordPressData, sanitizeHtml, transformWordPressMedia, transformWordPressMediaItems, transformWordPressPage, transformWordPressPages, transformWordPressPost, transformWordPressPosts, useFrontpageSlug, useGravityForms, useGravityFormsConfig, useGravityFormsContext, useWordPress, useWordPressCategories, useWordPressContext, useWordPressMedia, useWordPressPage, useWordPressPages, useWordPressPost, useWordPressPosts, useWordPressTags, validateEmail, validateFormData, validateFormProtectionConfig, validateGravityFormsConfig, validateMaxLength, validateMinLength, validatePhoneNumber, validateRequired, validateUrl, validateWordPressConfig };
2840
+ export { GravityForm, GravityFormsClient, GravityFormsProvider, WordPressClient, WordPressContent, WordPressProvider, buildMenuStructure, buildPageHierarchy, convertMenuItemsToMenuStructure, createFormProtectionConfig, createGravityFormsConfig, createWordPressConfig, findPageById, findPageBySlug, getActiveForms, getChildPages, getFormById, getFrontpage, getFrontpageMetadata, getFrontpageSlug, getPublishedForms, getRootPages, getSiteSettings, getWordPressCategories, getWordPressMedia, getWordPressPages, getWordPressPosts, getWordPressTags, hasGravityFormsStatic, hasWordPressStatic, loadGravityFormsData, loadWordPressData, sanitizeHtml, transformWordPressMedia, transformWordPressMediaItems, transformWordPressPage, transformWordPressPages, transformWordPressPost, transformWordPressPosts, useFrontpageSlug, useGravityForms, useGravityFormsConfig, useGravityFormsContext, useWordPress, useWordPressCategories, useWordPressContext, useWordPressMedia, useWordPressPage, useWordPressPages, useWordPressPost, useWordPressPosts, useWordPressTags, validateEmail, validateFormData, validateFormProtectionConfig, validateGravityFormsConfig, validateMaxLength, validateMinLength, validatePhoneNumber, validateRequired, validateUrl, validateWordPressConfig };
2761
2841
  //# sourceMappingURL=index.esm.js.map