@marvalt/wadapter 2.3.6 → 2.3.9

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
@@ -1,6 +1,4 @@
1
1
  import require$$0, { useState, useEffect, useCallback, useRef, useMemo, createContext, useContext } from 'react';
2
- import { writeFileSync } from 'fs';
3
- import { join } from 'path';
4
2
 
5
3
  /**
6
4
  * @license GPL-3.0-or-later
@@ -265,18 +263,47 @@ function transformWordPressMediaItems(media) {
265
263
  class GravityFormsClient {
266
264
  constructor(config) {
267
265
  this.config = config;
266
+ // Determine mode: direct for generators (Node.js), proxy for browser
267
+ const hasCredentials = !!(config.username && config.password && config.username.length > 0 && config.password.length > 0);
268
+ this.useDirectMode = config.authMode === 'direct' && hasCredentials;
269
+ // Debug logging for Node.js environments (generators)
270
+ if (typeof process !== 'undefined' && process.env) {
271
+ console.log('🔍 GravityFormsClient Configuration:', {
272
+ authMode: config.authMode,
273
+ hasUsername: !!config.username,
274
+ hasPassword: !!config.password,
275
+ hasApiUrl: !!config.apiUrl,
276
+ useDirectMode: this.useDirectMode,
277
+ });
278
+ }
268
279
  // Convention-based: Always use /api/gravity-forms-submit unless explicitly overridden
269
- // This matches the Mautic pattern for consistency
270
280
  this.proxyEndpoint = config.proxyEndpoint || '/api/gravity-forms-submit';
271
281
  }
272
282
  async makeRequest(endpoint, options = {}) {
273
- // Always use proxy endpoint (convention-based, like Mautic)
274
- const proxyEndpoint = endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
275
- const url = `${this.proxyEndpoint}?endpoint=${encodeURIComponent(proxyEndpoint)}`;
283
+ let url;
276
284
  const headers = {
277
285
  'Content-Type': 'application/json',
278
286
  ...options.headers,
279
287
  };
288
+ if (this.useDirectMode) {
289
+ // Direct mode: Call WordPress API directly (for generators/Node.js)
290
+ url = `${this.config.apiUrl}${endpoint}`;
291
+ // Add Basic Auth
292
+ if (this.config.username && this.config.password) {
293
+ const credentials = btoa(`${this.config.username}:${this.config.password}`);
294
+ headers['Authorization'] = `Basic ${credentials}`;
295
+ }
296
+ // Add CF Access headers if provided
297
+ if (this.config.cfAccessClientId && this.config.cfAccessClientSecret) {
298
+ headers['CF-Access-Client-Id'] = this.config.cfAccessClientId;
299
+ headers['CF-Access-Client-Secret'] = this.config.cfAccessClientSecret;
300
+ }
301
+ }
302
+ else {
303
+ // Proxy mode: Use Pages Function (for browser)
304
+ const proxyEndpoint = endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
305
+ url = `${this.proxyEndpoint}?endpoint=${encodeURIComponent(proxyEndpoint)}`;
306
+ }
280
307
  const response = await fetch(url, {
281
308
  ...options,
282
309
  headers,
@@ -2161,507 +2188,6 @@ function getFormById(id) {
2161
2188
  return (gravityFormsStaticData?.forms ?? []).find(f => String(f.id) === key);
2162
2189
  }
2163
2190
 
2164
- let document$1;
2165
- let offset;
2166
- let output;
2167
- let stack;
2168
- const tokenizer = /<!--\s+(\/)?wp:([a-z][a-z0-9_-]*\/)?([a-z][a-z0-9_-]*)\s+({(?:(?=([^}]+|}+(?=})|(?!}\s+\/?-->)[^])*)\5|[^]*?)}\s+)?(\/)?-->/g;
2169
- function Block(blockName, attrs, innerBlocks, innerHTML, innerContent) {
2170
- return {
2171
- blockName,
2172
- attrs,
2173
- innerBlocks,
2174
- innerHTML,
2175
- innerContent
2176
- };
2177
- }
2178
- function Freeform(innerHTML) {
2179
- return Block(null, {}, [], innerHTML, [innerHTML]);
2180
- }
2181
- function Frame(block, tokenStart, tokenLength, prevOffset, leadingHtmlStart) {
2182
- return {
2183
- block,
2184
- tokenStart,
2185
- tokenLength,
2186
- prevOffset: prevOffset || tokenStart + tokenLength,
2187
- leadingHtmlStart
2188
- };
2189
- }
2190
- const parse = (doc) => {
2191
- document$1 = doc;
2192
- offset = 0;
2193
- output = [];
2194
- stack = [];
2195
- tokenizer.lastIndex = 0;
2196
- do {
2197
- } while (proceed());
2198
- return output;
2199
- };
2200
- function proceed() {
2201
- const stackDepth = stack.length;
2202
- const next = nextToken();
2203
- const [tokenType, blockName, attrs, startOffset, tokenLength] = next;
2204
- const leadingHtmlStart = startOffset > offset ? offset : null;
2205
- switch (tokenType) {
2206
- case "no-more-tokens":
2207
- if (0 === stackDepth) {
2208
- addFreeform();
2209
- return false;
2210
- }
2211
- if (1 === stackDepth) {
2212
- addBlockFromStack();
2213
- return false;
2214
- }
2215
- while (0 < stack.length) {
2216
- addBlockFromStack();
2217
- }
2218
- return false;
2219
- case "void-block":
2220
- if (0 === stackDepth) {
2221
- if (null !== leadingHtmlStart) {
2222
- output.push(
2223
- Freeform(
2224
- document$1.substr(
2225
- leadingHtmlStart,
2226
- startOffset - leadingHtmlStart
2227
- )
2228
- )
2229
- );
2230
- }
2231
- output.push(Block(blockName, attrs, [], "", []));
2232
- offset = startOffset + tokenLength;
2233
- return true;
2234
- }
2235
- addInnerBlock(
2236
- Block(blockName, attrs, [], "", []),
2237
- startOffset,
2238
- tokenLength
2239
- );
2240
- offset = startOffset + tokenLength;
2241
- return true;
2242
- case "block-opener":
2243
- stack.push(
2244
- Frame(
2245
- Block(blockName, attrs, [], "", []),
2246
- startOffset,
2247
- tokenLength,
2248
- startOffset + tokenLength,
2249
- leadingHtmlStart
2250
- )
2251
- );
2252
- offset = startOffset + tokenLength;
2253
- return true;
2254
- case "block-closer":
2255
- if (0 === stackDepth) {
2256
- addFreeform();
2257
- return false;
2258
- }
2259
- if (1 === stackDepth) {
2260
- addBlockFromStack(startOffset);
2261
- offset = startOffset + tokenLength;
2262
- return true;
2263
- }
2264
- const stackTop = stack.pop();
2265
- const html = document$1.substr(
2266
- stackTop.prevOffset,
2267
- startOffset - stackTop.prevOffset
2268
- );
2269
- stackTop.block.innerHTML += html;
2270
- stackTop.block.innerContent.push(html);
2271
- stackTop.prevOffset = startOffset + tokenLength;
2272
- addInnerBlock(
2273
- stackTop.block,
2274
- stackTop.tokenStart,
2275
- stackTop.tokenLength,
2276
- startOffset + tokenLength
2277
- );
2278
- offset = startOffset + tokenLength;
2279
- return true;
2280
- default:
2281
- addFreeform();
2282
- return false;
2283
- }
2284
- }
2285
- function parseJSON(input) {
2286
- try {
2287
- return JSON.parse(input);
2288
- } catch (e) {
2289
- return null;
2290
- }
2291
- }
2292
- function nextToken() {
2293
- const matches = tokenizer.exec(document$1);
2294
- if (null === matches) {
2295
- return ["no-more-tokens", "", null, 0, 0];
2296
- }
2297
- const startedAt = matches.index;
2298
- const [
2299
- match,
2300
- closerMatch,
2301
- namespaceMatch,
2302
- nameMatch,
2303
- attrsMatch,
2304
- ,
2305
- voidMatch
2306
- ] = matches;
2307
- const length = match.length;
2308
- const isCloser = !!closerMatch;
2309
- const isVoid = !!voidMatch;
2310
- const namespace = namespaceMatch || "core/";
2311
- const name = namespace + nameMatch;
2312
- const hasAttrs = !!attrsMatch;
2313
- const attrs = hasAttrs ? parseJSON(attrsMatch) : {};
2314
- if (isVoid) {
2315
- return ["void-block", name, attrs, startedAt, length];
2316
- }
2317
- if (isCloser) {
2318
- return ["block-closer", name, null, startedAt, length];
2319
- }
2320
- return ["block-opener", name, attrs, startedAt, length];
2321
- }
2322
- function addFreeform(rawLength) {
2323
- const length = document$1.length - offset;
2324
- if (0 === length) {
2325
- return;
2326
- }
2327
- output.push(Freeform(document$1.substr(offset, length)));
2328
- }
2329
- function addInnerBlock(block, tokenStart, tokenLength, lastOffset) {
2330
- const parent = stack[stack.length - 1];
2331
- parent.block.innerBlocks.push(block);
2332
- const html = document$1.substr(
2333
- parent.prevOffset,
2334
- tokenStart - parent.prevOffset
2335
- );
2336
- if (html) {
2337
- parent.block.innerHTML += html;
2338
- parent.block.innerContent.push(html);
2339
- }
2340
- parent.block.innerContent.push(null);
2341
- parent.prevOffset = lastOffset ? lastOffset : tokenStart + tokenLength;
2342
- }
2343
- function addBlockFromStack(endOffset) {
2344
- const { block, leadingHtmlStart, prevOffset, tokenStart } = stack.pop();
2345
- const html = endOffset ? document$1.substr(prevOffset, endOffset - prevOffset) : document$1.substr(prevOffset);
2346
- if (html) {
2347
- block.innerHTML += html;
2348
- block.innerContent.push(html);
2349
- }
2350
- if (null !== leadingHtmlStart) {
2351
- output.push(
2352
- Freeform(
2353
- document$1.substr(
2354
- leadingHtmlStart,
2355
- tokenStart - leadingHtmlStart
2356
- )
2357
- )
2358
- );
2359
- }
2360
- output.push(block);
2361
- }
2362
-
2363
- /**
2364
- * @license GPL-3.0-or-later
2365
- *
2366
- * This file is part of the MarVAlt Open SDK.
2367
- * Copyright (c) 2025 Vibune Pty Ltd.
2368
- *
2369
- * This program is free software: you can redistribute it and/or modify
2370
- * it under the terms of the GNU General Public License as published by
2371
- * the Free Software Foundation, either version 3 of the License, or
2372
- * (at your option) any later version.
2373
- *
2374
- * This program is distributed in the hope that it will be useful,
2375
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2376
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2377
- * See the GNU General Public License for more details.
2378
- */
2379
- // WordPress Static Data Generator
2380
- class WordPressGenerator {
2381
- constructor(config) {
2382
- this.config = config;
2383
- }
2384
- async generateStaticData() {
2385
- const client = new WordPressClient(this.config);
2386
- console.log('🚀 Starting WordPress static data generation...');
2387
- const frontendId = this.config.frontendId || 'default-frontend';
2388
- const frontendName = this.config.frontendName || 'Default Frontend';
2389
- const postTypes = this.config.postTypes || ['posts', 'pages', 'case_studies', 'projects', 'members', 'testimonial', 'faqs', 'products', 'services', 'events'];
2390
- // Use 'edit' context only when credentials are provided; otherwise fall back to 'view'
2391
- const hasBasicAuth = !!(this.config.username && this.config.password);
2392
- const data = await client.getAllData({
2393
- per_page: this.config.maxItems || 100,
2394
- _embed: this.config.includeEmbedded || false,
2395
- context: hasBasicAuth ? 'edit' : 'view',
2396
- });
2397
- // Create the static data structure matching the existing format
2398
- const staticData = {
2399
- generated_at: new Date().toISOString(),
2400
- frontend_id: frontendId,
2401
- frontend_name: frontendName,
2402
- config: {
2403
- frontend_id: frontendId,
2404
- frontend_name: frontendName,
2405
- post_types: postTypes.reduce((acc, postType) => {
2406
- acc[postType] = {
2407
- max_items: this.config.maxItems || 100,
2408
- include_embedded: this.config.includeEmbedded || true,
2409
- orderby: 'date',
2410
- order: 'desc',
2411
- };
2412
- return acc;
2413
- }, {}),
2414
- },
2415
- // Map the data to the expected structure
2416
- posts: data.posts,
2417
- pages: (data.pages || []).map((p) => {
2418
- let blocks = [];
2419
- try {
2420
- const raw = p?.content?.raw || '';
2421
- blocks = raw ? parse(raw) : [];
2422
- }
2423
- catch (e) {
2424
- console.warn('⚠️ Failed to parse Gutenberg blocks for page', p?.id, e);
2425
- }
2426
- return { ...p, blocks };
2427
- }),
2428
- media: data.media,
2429
- categories: data.categories,
2430
- tags: data.tags,
2431
- };
2432
- // Write to file
2433
- this.writeStaticData(staticData);
2434
- console.log('✅ WordPress static data generation completed');
2435
- console.log(`📊 Generated data: ${data.posts.length} posts, ${data.pages.length} pages, ${data.media.length} media items`);
2436
- return staticData;
2437
- }
2438
- writeStaticData(data) {
2439
- try {
2440
- const outputPath = join(process.cwd(), this.config.outputPath);
2441
- writeFileSync(outputPath, JSON.stringify(data, null, 2));
2442
- console.log(`📁 Static data written to: ${outputPath}`);
2443
- }
2444
- catch (error) {
2445
- console.error('❌ Error writing static data:', error);
2446
- throw error;
2447
- }
2448
- }
2449
- async generatePostsOnly() {
2450
- const client = new WordPressClient(this.config);
2451
- return client.getPosts({ per_page: 100 });
2452
- }
2453
- async generatePagesOnly() {
2454
- const client = new WordPressClient(this.config);
2455
- return client.getPages({ per_page: 100 });
2456
- }
2457
- async generateMediaOnly() {
2458
- const client = new WordPressClient(this.config);
2459
- return client.getMedia({ per_page: 100 });
2460
- }
2461
- }
2462
- // Convenience function for easy usage
2463
- async function generateWordPressData(config) {
2464
- const generator = new WordPressGenerator(config);
2465
- return generator.generateStaticData();
2466
- }
2467
-
2468
- /**
2469
- * @license GPL-3.0-or-later
2470
- *
2471
- * This file is part of the MarVAlt Open SDK.
2472
- * Copyright (c) 2025 Vibune Pty Ltd.
2473
- *
2474
- * This program is free software: you can redistribute it and/or modify
2475
- * it under the terms of the GNU General Public License as published by
2476
- * the Free Software Foundation, either version 3 of the License, or
2477
- * (at your option) any later version.
2478
- *
2479
- * This program is distributed in the hope that it will be useful,
2480
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2481
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2482
- * See the GNU General Public License for more details.
2483
- */
2484
- // Gravity Forms Static Data Generator
2485
- class GravityFormsGenerator {
2486
- constructor(config) {
2487
- this.config = config;
2488
- }
2489
- async generateStaticData() {
2490
- const client = new GravityFormsClient(this.config);
2491
- console.log('🚀 Starting Gravity Forms static data generation...');
2492
- let forms = [];
2493
- if (this.config.formIds && this.config.formIds.length > 0) {
2494
- // Generate specific forms
2495
- for (const formId of this.config.formIds) {
2496
- try {
2497
- const form = await client.getFormConfig(formId);
2498
- if (this.config.includeInactive || form.is_active) {
2499
- forms.push(form);
2500
- }
2501
- }
2502
- catch (error) {
2503
- console.warn(`⚠️ Could not fetch form ${formId}:`, error);
2504
- }
2505
- }
2506
- }
2507
- else {
2508
- // Generate all forms
2509
- const formsList = await client.getForms();
2510
- console.log('🔍 Gravity Forms Response:', {
2511
- formsType: typeof formsList,
2512
- isArray: Array.isArray(formsList),
2513
- formsLength: formsList?.length,
2514
- formsPreview: formsList ? JSON.stringify(formsList).substring(0, 200) : 'null',
2515
- });
2516
- let formsMetadata = [];
2517
- if (Array.isArray(formsList)) {
2518
- formsMetadata = formsList;
2519
- }
2520
- else if (formsList && typeof formsList === 'object' && Array.isArray(formsList.forms)) {
2521
- formsMetadata = formsList.forms;
2522
- }
2523
- else if (formsList) {
2524
- formsMetadata = [formsList];
2525
- }
2526
- if (!this.config.includeInactive) {
2527
- formsMetadata = formsMetadata.filter(form => form.is_active === '1' || form.is_active === true);
2528
- }
2529
- // Fetch full form configuration for each form (schema lives under /config)
2530
- console.log(`🔄 Fetching full data for ${formsMetadata.length} forms...`);
2531
- forms = [];
2532
- for (const formMetadata of formsMetadata) {
2533
- try {
2534
- const formId = Number(formMetadata.id);
2535
- const fullForm = await client.getFormConfig(formId);
2536
- forms.push(fullForm);
2537
- console.log(`✅ Fetched form: ${fullForm.title} (${fullForm.fields?.length || 0} fields)`);
2538
- }
2539
- catch (error) {
2540
- console.error(`❌ Failed to fetch form ${formMetadata.id} config:`, error);
2541
- throw error;
2542
- }
2543
- }
2544
- }
2545
- const staticData = {
2546
- generated_at: new Date().toISOString(),
2547
- total_forms: forms.length,
2548
- forms,
2549
- };
2550
- // Write to file
2551
- this.writeStaticData(staticData);
2552
- console.log('✅ Gravity Forms static data generation completed');
2553
- console.log(`📊 Generated data: ${forms.length} forms`);
2554
- return staticData;
2555
- }
2556
- writeStaticData(data) {
2557
- try {
2558
- const outputPath = join(process.cwd(), this.config.outputPath);
2559
- writeFileSync(outputPath, JSON.stringify(data, null, 2));
2560
- console.log(`📁 Static data written to: ${outputPath}`);
2561
- }
2562
- catch (error) {
2563
- console.error('❌ Error writing static data:', error);
2564
- throw error;
2565
- }
2566
- }
2567
- async generateFormConfig(formId) {
2568
- const client = new GravityFormsClient(this.config);
2569
- return client.getFormConfig(formId);
2570
- }
2571
- }
2572
- // Convenience function for easy usage
2573
- async function generateGravityFormsData(config) {
2574
- const generator = new GravityFormsGenerator(config);
2575
- return generator.generateStaticData();
2576
- }
2577
-
2578
- /**
2579
- * @license GPL-3.0-or-later
2580
- *
2581
- * This file is part of the MarVAlt Open SDK.
2582
- * Copyright (c) 2025 Vibune Pty Ltd.
2583
- *
2584
- * This program is free software: you can redistribute it and/or modify
2585
- * it under the terms of the GNU General Public License as published by
2586
- * the Free Software Foundation, either version 3 of the License, or
2587
- * (at your option) any later version.
2588
- *
2589
- * This program is distributed in the hope that it will be useful,
2590
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2591
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2592
- * See the GNU General Public License for more details.
2593
- */
2594
- class FormProtectionGenerator {
2595
- constructor(config) {
2596
- this.config = config;
2597
- }
2598
- async generateStaticData() {
2599
- console.log('🚀 Starting Form Protection static data generation...');
2600
- const forms = this.config.forms.map(form => ({
2601
- id: form.id,
2602
- name: form.name,
2603
- protectionLevel: form.protectionLevel,
2604
- emailVerification: this.config.emailVerification,
2605
- spamProtection: this.config.spamProtection,
2606
- rateLimiting: this.config.rateLimiting,
2607
- }));
2608
- const staticData = {
2609
- config: {
2610
- enabled: this.config.enabled,
2611
- secret: this.config.secret,
2612
- emailVerification: this.config.emailVerification,
2613
- spamProtection: this.config.spamProtection,
2614
- rateLimiting: this.config.rateLimiting,
2615
- maxSubmissionsPerHour: this.config.maxSubmissionsPerHour,
2616
- maxSubmissionsPerDay: this.config.maxSubmissionsPerDay,
2617
- },
2618
- forms,
2619
- generatedAt: new Date().toISOString(),
2620
- };
2621
- // Write to file
2622
- this.writeStaticData(staticData);
2623
- console.log('✅ Form Protection static data generation completed');
2624
- console.log(`📊 Generated data: ${forms.length} protected forms`);
2625
- return staticData;
2626
- }
2627
- writeStaticData(data) {
2628
- try {
2629
- const outputPath = join(process.cwd(), this.config.outputPath);
2630
- writeFileSync(outputPath, JSON.stringify(data, null, 2));
2631
- console.log(`📁 Static data written to: ${outputPath}`);
2632
- }
2633
- catch (error) {
2634
- console.error('❌ Error writing static data:', error);
2635
- throw error;
2636
- }
2637
- }
2638
- validateFormProtection(formData) {
2639
- // Basic validation logic for form protection
2640
- const errors = [];
2641
- if (this.config.emailVerification && !formData.email) {
2642
- errors.push('Email verification is required');
2643
- }
2644
- if (this.config.spamProtection) {
2645
- // Basic spam detection logic
2646
- if (formData.message && formData.message.length < 10) {
2647
- errors.push('Message too short');
2648
- }
2649
- }
2650
- return {
2651
- success: errors.length === 0,
2652
- protected: this.config.enabled,
2653
- message: errors.length > 0 ? errors.join(', ') : 'Form is protected',
2654
- verificationRequired: this.config.emailVerification,
2655
- spamDetected: errors.length > 0,
2656
- };
2657
- }
2658
- }
2659
- // Convenience function for easy usage
2660
- async function generateFormProtectionData(config) {
2661
- const generator = new FormProtectionGenerator(config);
2662
- return generator.generateStaticData();
2663
- }
2664
-
2665
2191
  /**
2666
2192
  * @license GPL-3.0-or-later
2667
2193
  *
@@ -2835,5 +2361,5 @@ function validateFormData(formData, rules) {
2835
2361
  return { isValid, errors };
2836
2362
  }
2837
2363
 
2838
- 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 };
2364
+ export { GravityForm, GravityFormsClient, GravityFormsProvider, WordPressClient, WordPressContent, WordPressProvider, createFormProtectionConfig, createGravityFormsConfig, createWordPressConfig, 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 };
2839
2365
  //# sourceMappingURL=index.esm.js.map