@marvalt/digivalt-core 0.2.11 → 0.2.12
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/CHANGELOG.md +13 -0
- package/README.md +6 -0
- package/bin/env-example-fragments.cjs +3 -0
- package/dist/generators/google-reviews.d.ts +5 -0
- package/dist/generators/index.d.ts +1 -0
- package/dist/generators.cjs +90 -1
- package/dist/generators.cjs.map +1 -1
- package/dist/generators.d.ts +6 -1
- package/dist/generators.esm.js +90 -2
- package/dist/generators.esm.js.map +1 -1
- package/dist/index.cjs +91 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.esm.js +91 -2
- package/dist/index.esm.js.map +1 -1
- package/docs/AI-LOCAL-WORDPRESS-BOOTSTRAP.md +116 -0
- package/docs/LOVABLE-MASTER-PROMPT.md +140 -0
- package/package.json +1 -1
- package/template/public/gravity-forms-data.json +7 -0
- package/template/public/sitemap-static-paths.json +3 -3
- package/template/public/wordpress-data.json +44 -0
- package/template/src/data/mautic-data.json +7 -0
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,11 @@ declare function generateSuiteCRMData(options?: {
|
|
|
14
14
|
outputPath?: string;
|
|
15
15
|
}): Promise<boolean>;
|
|
16
16
|
|
|
17
|
+
interface GenerateGoogleReviewsOptions {
|
|
18
|
+
outputPath?: string;
|
|
19
|
+
}
|
|
20
|
+
declare function generateGoogleReviewsData(options?: GenerateGoogleReviewsOptions): Promise<boolean>;
|
|
21
|
+
|
|
17
22
|
type GenerateSitemapPathsOptions = {
|
|
18
23
|
cwd?: string;
|
|
19
24
|
wpDataPath?: string;
|
|
@@ -30,6 +35,7 @@ declare function generateAllData(): Promise<void>;
|
|
|
30
35
|
|
|
31
36
|
type index_GenerateSitemapPathsOptions = GenerateSitemapPathsOptions;
|
|
32
37
|
declare const index_generateAllData: typeof generateAllData;
|
|
38
|
+
declare const index_generateGoogleReviewsData: typeof generateGoogleReviewsData;
|
|
33
39
|
declare const index_generateGravityFormsData: typeof generateGravityFormsData;
|
|
34
40
|
declare const index_generateMauticData: typeof generateMauticData;
|
|
35
41
|
declare const index_generateSitemapPaths: typeof generateSitemapPaths;
|
|
@@ -37,7 +43,7 @@ declare const index_generateSitemapPathsSafe: typeof generateSitemapPathsSafe;
|
|
|
37
43
|
declare const index_generateSuiteCRMData: typeof generateSuiteCRMData;
|
|
38
44
|
declare const index_generateWordPressData: typeof generateWordPressData;
|
|
39
45
|
declare namespace index {
|
|
40
|
-
export { index_generateAllData as generateAllData, index_generateGravityFormsData as generateGravityFormsData, index_generateMauticData as generateMauticData, index_generateSitemapPaths as generateSitemapPaths, index_generateSitemapPathsSafe as generateSitemapPathsSafe, index_generateSuiteCRMData as generateSuiteCRMData, index_generateWordPressData as generateWordPressData };
|
|
46
|
+
export { index_generateAllData as generateAllData, index_generateGoogleReviewsData as generateGoogleReviewsData, index_generateGravityFormsData as generateGravityFormsData, index_generateMauticData as generateMauticData, index_generateSitemapPaths as generateSitemapPaths, index_generateSitemapPathsSafe as generateSitemapPathsSafe, index_generateSuiteCRMData as generateSuiteCRMData, index_generateWordPressData as generateWordPressData };
|
|
41
47
|
export type { index_GenerateSitemapPathsOptions as GenerateSitemapPathsOptions };
|
|
42
48
|
}
|
|
43
49
|
|
|
@@ -180,5 +186,5 @@ interface StaticDataStore {
|
|
|
180
186
|
*/
|
|
181
187
|
declare const getDigiValtVersion: () => string;
|
|
182
188
|
|
|
183
|
-
export { generateAllData, generateGravityFormsData, generateMauticData, generateSitemapPaths, generateSitemapPathsSafe, generateSuiteCRMData, generateWordPressData, index as generators, getDigiValtVersion };
|
|
189
|
+
export { generateAllData, generateGoogleReviewsData, generateGravityFormsData, generateMauticData, generateSitemapPaths, generateSitemapPathsSafe, generateSuiteCRMData, generateWordPressData, index as generators, getDigiValtVersion };
|
|
184
190
|
export type { GenerateSitemapPathsOptions, KudoData, StaticDataConfig, StaticDataStore, Testimonial, WordPressCaseStudy, WordPressMember, WordPressPage, WordPressPost, WordPressProject };
|
package/dist/index.esm.js
CHANGED
|
@@ -2,6 +2,7 @@ import dotenv from 'dotenv';
|
|
|
2
2
|
import path, { join, dirname } from 'path';
|
|
3
3
|
import fs, { writeFileSync } from 'fs';
|
|
4
4
|
import { generateSuiteCRMData as generateSuiteCRMData$1 } from '@marvalt/sadapter';
|
|
5
|
+
import { mkdir, writeFile } from 'fs/promises';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* @license GPL-3.0-or-later
|
|
@@ -2451,6 +2452,92 @@ async function generateSuiteCRMData(options) {
|
|
|
2451
2452
|
}
|
|
2452
2453
|
}
|
|
2453
2454
|
|
|
2455
|
+
function trimTrailingSlash(value) {
|
|
2456
|
+
return value.replace(/\/+$/, '');
|
|
2457
|
+
}
|
|
2458
|
+
function resolveEndpointUrl() {
|
|
2459
|
+
const explicit = process.env.GOOGLE_REVIEWS_API_URL ||
|
|
2460
|
+
process.env.VITE_GOOGLE_REVIEWS_API_URL ||
|
|
2461
|
+
'';
|
|
2462
|
+
if (explicit) {
|
|
2463
|
+
return explicit;
|
|
2464
|
+
}
|
|
2465
|
+
const wpApiBase = process.env.WORDPRESS_API_URL ||
|
|
2466
|
+
process.env.VITE_WORDPRESS_API_URL ||
|
|
2467
|
+
'';
|
|
2468
|
+
if (!wpApiBase) {
|
|
2469
|
+
return '';
|
|
2470
|
+
}
|
|
2471
|
+
const normalizedBase = trimTrailingSlash(wpApiBase);
|
|
2472
|
+
if (normalizedBase.endsWith('/wp-json')) {
|
|
2473
|
+
return `${normalizedBase}/vibune-google-reviews/v1/reviews`;
|
|
2474
|
+
}
|
|
2475
|
+
return `${normalizedBase}/wp-json/vibune-google-reviews/v1/reviews`;
|
|
2476
|
+
}
|
|
2477
|
+
function buildHeaders() {
|
|
2478
|
+
const headers = {
|
|
2479
|
+
Accept: 'application/json',
|
|
2480
|
+
};
|
|
2481
|
+
const username = process.env.WP_API_USERNAME || process.env.VITE_WP_API_USERNAME || '';
|
|
2482
|
+
const password = process.env.WP_APP_PASSWORD || process.env.VITE_WP_APP_PASSWORD || '';
|
|
2483
|
+
if (username && password) {
|
|
2484
|
+
headers.Authorization = `Basic ${Buffer.from(`${username}:${password}`).toString('base64')}`;
|
|
2485
|
+
}
|
|
2486
|
+
const cfAccessClientId = process.env.CF_ACCESS_CLIENT_ID || process.env.VITE_CF_ACCESS_CLIENT_ID || '';
|
|
2487
|
+
const cfAccessClientSecret = process.env.CF_ACCESS_CLIENT_SECRET || process.env.VITE_CF_ACCESS_CLIENT_SECRET || '';
|
|
2488
|
+
if (cfAccessClientId && cfAccessClientSecret) {
|
|
2489
|
+
headers['CF-Access-Client-Id'] = cfAccessClientId;
|
|
2490
|
+
headers['CF-Access-Client-Secret'] = cfAccessClientSecret;
|
|
2491
|
+
}
|
|
2492
|
+
return headers;
|
|
2493
|
+
}
|
|
2494
|
+
function hasExpectedShape(payload) {
|
|
2495
|
+
if (!payload || typeof payload !== 'object') {
|
|
2496
|
+
return false;
|
|
2497
|
+
}
|
|
2498
|
+
const obj = payload;
|
|
2499
|
+
return Array.isArray(obj.reviews) && typeof obj.business === 'object' && obj.business !== null;
|
|
2500
|
+
}
|
|
2501
|
+
function truncateBody(body, max = 1200) {
|
|
2502
|
+
if (body.length <= max) {
|
|
2503
|
+
return body;
|
|
2504
|
+
}
|
|
2505
|
+
return `${body.slice(0, max)}...`;
|
|
2506
|
+
}
|
|
2507
|
+
async function generateGoogleReviewsData(options) {
|
|
2508
|
+
const outputPath = options?.outputPath || './public/google-reviews-data.json';
|
|
2509
|
+
const endpointUrl = resolveEndpointUrl();
|
|
2510
|
+
if (!endpointUrl) {
|
|
2511
|
+
console.error('❌ Missing Google Reviews endpoint. Set GOOGLE_REVIEWS_API_URL or VITE_GOOGLE_REVIEWS_API_URL, or configure WORDPRESS_API_URL/VITE_WORDPRESS_API_URL.');
|
|
2512
|
+
return false;
|
|
2513
|
+
}
|
|
2514
|
+
try {
|
|
2515
|
+
const response = await fetch(endpointUrl, {
|
|
2516
|
+
method: 'GET',
|
|
2517
|
+
headers: buildHeaders(),
|
|
2518
|
+
});
|
|
2519
|
+
if (!response.ok) {
|
|
2520
|
+
const body = truncateBody(await response.text());
|
|
2521
|
+
console.error(`❌ Google Reviews generation failed (HTTP ${response.status}): ${body}`);
|
|
2522
|
+
return false;
|
|
2523
|
+
}
|
|
2524
|
+
const payload = (await response.json());
|
|
2525
|
+
if (!hasExpectedShape(payload)) {
|
|
2526
|
+
console.error('❌ Google Reviews generation failed: endpoint returned unexpected payload shape.');
|
|
2527
|
+
return false;
|
|
2528
|
+
}
|
|
2529
|
+
const outputFilePath = path.join(process.cwd(), outputPath);
|
|
2530
|
+
await mkdir(path.dirname(outputFilePath), { recursive: true });
|
|
2531
|
+
await writeFile(outputFilePath, `${JSON.stringify(payload, null, 2)}\n`, 'utf-8');
|
|
2532
|
+
console.log(`📁 Google Reviews data written to: ${outputFilePath}`);
|
|
2533
|
+
return true;
|
|
2534
|
+
}
|
|
2535
|
+
catch (e) {
|
|
2536
|
+
console.error('❌ Google Reviews generation failed:', e.message);
|
|
2537
|
+
return false;
|
|
2538
|
+
}
|
|
2539
|
+
}
|
|
2540
|
+
|
|
2454
2541
|
const SITEMAP_SKIP_TOP_LEVEL_KEYS = new Set([
|
|
2455
2542
|
'config',
|
|
2456
2543
|
'site_settings',
|
|
@@ -2674,7 +2761,8 @@ async function generateAllData() {
|
|
|
2674
2761
|
const gfSuccess = await generateGravityFormsData();
|
|
2675
2762
|
const mauticSuccess = await generateMauticData();
|
|
2676
2763
|
const suitecrmSuccess = await generateSuiteCRMData();
|
|
2677
|
-
|
|
2764
|
+
const googleReviewsSuccess = await generateGoogleReviewsData();
|
|
2765
|
+
if (!wpSuccess || !gfSuccess || !mauticSuccess || !suitecrmSuccess || !googleReviewsSuccess) {
|
|
2678
2766
|
console.error('❌ Some generation tasks failed. See above for details.');
|
|
2679
2767
|
process.exit(1);
|
|
2680
2768
|
}
|
|
@@ -2685,6 +2773,7 @@ async function generateAllData() {
|
|
|
2685
2773
|
var index = /*#__PURE__*/Object.freeze({
|
|
2686
2774
|
__proto__: null,
|
|
2687
2775
|
generateAllData: generateAllData,
|
|
2776
|
+
generateGoogleReviewsData: generateGoogleReviewsData,
|
|
2688
2777
|
generateGravityFormsData: generateGravityFormsData,
|
|
2689
2778
|
generateMauticData: generateMauticData,
|
|
2690
2779
|
generateSitemapPaths: generateSitemapPaths,
|
|
@@ -2701,5 +2790,5 @@ const getDigiValtVersion = () => {
|
|
|
2701
2790
|
return "0.2.6";
|
|
2702
2791
|
};
|
|
2703
2792
|
|
|
2704
|
-
export { generateAllData, generateGravityFormsData, generateMauticData, generateSitemapPaths, generateSitemapPathsSafe, generateSuiteCRMData, generateWordPressData, index as generators, getDigiValtVersion };
|
|
2793
|
+
export { generateAllData, generateGoogleReviewsData, generateGravityFormsData, generateMauticData, generateSitemapPaths, generateSitemapPathsSafe, generateSuiteCRMData, generateWordPressData, index as generators, getDigiValtVersion };
|
|
2705
2794
|
//# sourceMappingURL=index.esm.js.map
|