@clay-design-system/email 0.2.3 → 0.3.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/MIGRATION.md +31 -0
- package/README.md +7 -0
- package/dist/build/catalog.d.ts +0 -1
- package/dist/generated/email-tokens.d.ts +0 -1
- package/dist/generated/email-tokens.js +0 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.js +0 -1
- package/package.json +14 -5
- package/dist/build/asset-scoring.d.ts +0 -48
- package/dist/build/asset-scoring.d.ts.map +0 -1
- package/dist/build/asset-scoring.js +0 -58
- package/dist/build/asset-scoring.js.map +0 -1
- package/dist/build/braze-transform.d.ts +0 -20
- package/dist/build/braze-transform.d.ts.map +0 -1
- package/dist/build/braze-transform.js +0 -26
- package/dist/build/braze-transform.js.map +0 -1
- package/dist/build/catalog.d.ts.map +0 -1
- package/dist/build/catalog.js +0 -3
- package/dist/build/catalog.js.map +0 -1
- package/dist/build/cloudinary-env.d.ts +0 -15
- package/dist/build/cloudinary-env.d.ts.map +0 -1
- package/dist/build/cloudinary-env.js +0 -36
- package/dist/build/cloudinary-env.js.map +0 -1
- package/dist/build/cloudinary-manifest.d.ts +0 -33
- package/dist/build/cloudinary-manifest.d.ts.map +0 -1
- package/dist/build/cloudinary-manifest.js +0 -36
- package/dist/build/cloudinary-manifest.js.map +0 -1
- package/dist/build/compile.d.ts +0 -11
- package/dist/build/compile.d.ts.map +0 -1
- package/dist/build/compile.js +0 -234
- package/dist/build/compile.js.map +0 -1
- package/dist/build/email-config.d.ts +0 -26
- package/dist/build/email-config.d.ts.map +0 -1
- package/dist/build/email-config.js +0 -17
- package/dist/build/email-config.js.map +0 -1
- package/dist/build/email-list.d.ts +0 -6
- package/dist/build/email-list.d.ts.map +0 -1
- package/dist/build/email-list.js +0 -17
- package/dist/build/email-list.js.map +0 -1
- package/dist/build/email-tree.d.ts +0 -23
- package/dist/build/email-tree.d.ts.map +0 -1
- package/dist/build/email-tree.js +0 -46
- package/dist/build/email-tree.js.map +0 -1
- package/dist/build/export-braze.d.ts +0 -22
- package/dist/build/export-braze.d.ts.map +0 -1
- package/dist/build/export-braze.js +0 -92
- package/dist/build/export-braze.js.map +0 -1
- package/dist/build/generate-stock-library-map.d.ts +0 -13
- package/dist/build/generate-stock-library-map.d.ts.map +0 -1
- package/dist/build/generate-stock-library-map.js +0 -202
- package/dist/build/generate-stock-library-map.js.map +0 -1
- package/dist/build/icon-registry-map.d.ts +0 -34
- package/dist/build/icon-registry-map.d.ts.map +0 -1
- package/dist/build/icon-registry-map.js +0 -44
- package/dist/build/icon-registry-map.js.map +0 -1
- package/dist/build/import-examples.d.ts +0 -14
- package/dist/build/import-examples.d.ts.map +0 -1
- package/dist/build/import-examples.js +0 -65
- package/dist/build/import-examples.js.map +0 -1
- package/dist/build/persona-character-map.d.ts +0 -32
- package/dist/build/persona-character-map.d.ts.map +0 -1
- package/dist/build/persona-character-map.js +0 -90
- package/dist/build/persona-character-map.js.map +0 -1
- package/dist/build/placeholder.d.ts +0 -79
- package/dist/build/placeholder.d.ts.map +0 -1
- package/dist/build/placeholder.js +0 -148
- package/dist/build/placeholder.js.map +0 -1
- package/dist/build/stock-library-map.d.ts +0 -57
- package/dist/build/stock-library-map.d.ts.map +0 -1
- package/dist/build/stock-library-map.js +0 -1261
- package/dist/build/stock-library-map.js.map +0 -1
- package/dist/build/upload-assets.d.ts +0 -20
- package/dist/build/upload-assets.d.ts.map +0 -1
- package/dist/build/upload-assets.js +0 -153
- package/dist/build/upload-assets.js.map +0 -1
- package/dist/build/upload-library-assets.d.ts +0 -21
- package/dist/build/upload-library-assets.d.ts.map +0 -1
- package/dist/build/upload-library-assets.js +0 -182
- package/dist/build/upload-library-assets.js.map +0 -1
- package/dist/build/visual-resolver.d.ts +0 -87
- package/dist/build/visual-resolver.d.ts.map +0 -1
- package/dist/build/visual-resolver.js +0 -439
- package/dist/build/visual-resolver.js.map +0 -1
- package/dist/examples/manifest.d.ts +0 -21
- package/dist/examples/manifest.d.ts.map +0 -1
- package/dist/examples/manifest.js +0 -84
- package/dist/examples/manifest.js.map +0 -1
- package/dist/exports/contact-sales/Images/Contact_sales_Image_16f4175c-d08c-43f6-9d4c-a0606383271d.png +0 -0
- package/dist/exports/contact-sales/Images/Contact_sales_Image_659b3091-1da9-40c2-86b0-04250982e529.png +0 -0
- package/dist/exports/contact-sales/Images/Contact_sales_Image_79c651f4-5f0f-4a7f-8354-1f6f95ae86d9.png +0 -0
- package/dist/exports/contact-sales/index.braze.html +0 -837
- package/dist/exports/contact-sales/index.html +0 -837
- package/dist/exports/event-confirmation/Images/Confirmation_Image_11938de2-4161-4ae8-8969-90ea0d8b45cb.png +0 -0
- package/dist/exports/event-confirmation/Images/Confirmation_Image_3c52e81f-5d4f-452c-bad1-0471a27598f1.png +0 -0
- package/dist/exports/event-confirmation/Images/Confirmation_Image_3ec1fec8-bf46-4068-8835-633567a715f9.png +0 -0
- package/dist/exports/event-confirmation/Images/Confirmation_Image_c4980c01-c270-4384-a56c-0bae74814cf9.png +0 -0
- package/dist/exports/event-confirmation/Images/Confirmation_Image_cde93e8c-0f96-434d-acaf-1b86503c66f0.png +0 -0
- package/dist/exports/event-confirmation/index.braze.html +0 -1055
- package/dist/exports/event-confirmation/index.html +0 -1055
- package/dist/exports/legal-update/Images/v2_Image_07bbcc13-0ab8-46e4-ab94-98f215f85f69.png +0 -0
- package/dist/exports/legal-update/Images/v2_Image_34394d50-acdf-4375-b254-eef1f84aaacb.png +0 -0
- package/dist/exports/legal-update/Images/v2_Image_4a25f2bd-6270-439b-86c5-4a968a1b104f.png +0 -0
- package/dist/exports/legal-update/Images/v2_Image_7e8e814f-3112-4d8c-af5b-4f4616d84d9c.png +0 -0
- package/dist/exports/legal-update/Images/v2_Image_b24a04c8-4af0-42a1-be0f-cd3f66595e47.png +0 -0
- package/dist/exports/legal-update/Images/v2_Image_b709b9fb-836e-4c20-82e5-a9cb9d702392.png +0 -0
- package/dist/exports/legal-update/Images/v2_Image_ed7b924b-35e6-4536-be0c-92ddc8a34fc2.png +0 -0
- package/dist/exports/legal-update/index.braze.html +0 -1731
- package/dist/exports/legal-update/index.html +0 -1731
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_09be22f6-1f30-4c58-bf33-1df0494b8fc2.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_2dfb595e-6fe2-4e6e-a73a-942a085b38ab.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_544c971b-b4b5-4c89-a25a-8f0d92644009.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_5b6a9576-1c33-40c5-81e3-637514fb6c78.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_680c6193-793a-4a24-8288-4bb4046f4f5e.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_75818ba9-026a-45d7-91e4-f992d4ee7690.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_785f18e6-816d-44d1-8efb-ecc82510b540.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_8bf9141d-9d63-4601-9e81-5c9d726e17f8.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_9097d6e0-65d0-4237-9661-963751812786.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_a4ef2f53-2eaf-438a-bfef-61455ac0915e.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_b7748f87-a7b7-4a91-981a-16567683e4b4.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_bc9830a4-2911-4768-808a-32cbbc39215e.png +0 -0
- package/dist/exports/newsletter/Images/Status_update_-_July_26_Image_ef0e8e92-9075-43a9-991f-09a77ef6d6d4.png +0 -0
- package/dist/exports/newsletter/index.braze.html +0 -125
- package/dist/exports/newsletter/index.html +0 -125
- package/dist/exports/newsletter-ai-june-july/Images/newsletter-ai-blocks.png +0 -0
- package/dist/exports/newsletter-ai-june-july/Images/newsletter-ai-hero-mcp.png +0 -0
- package/dist/exports/newsletter-ai-june-july/Images/newsletter-ai-magic.png +0 -0
- package/dist/exports/newsletter-ai-june-july/Images/newsletter-ai-mcp.png +0 -0
- package/dist/exports/newsletter-ai-june-july/Images/newsletter-ai-portfolio.png +0 -0
- package/dist/exports/newsletter-ai-june-july/index.braze.html +0 -1640
- package/dist/exports/newsletter-ai-june-july/index.html +0 -1640
- package/dist/exports/survey/Images/EmailLove_Image_3b6f4a6f-7f5f-418b-be71-9371b25c20ce.png +0 -0
- package/dist/exports/survey/Images/EmailLove_Image_f659c728-2401-485d-8d90-98c962d28c0c.png +0 -0
- package/dist/exports/survey/index.braze.html +0 -515
- package/dist/exports/survey/index.html +0 -515
- package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Before_115ccc58-a47f-4eca-a1f2-c0d86e1e1cf4.png +0 -0
- package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Before_aec4d0d3-6057-4b8a-8d8f-46fbd024f182.png +0 -0
- package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Before_d139966a-6051-4383-bf8f-1e5138e1b030.png +0 -0
- package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Image_080fa361-a3f2-4593-9ac0-03cf3a7972ff.png +0 -0
- package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Image_5ebade34-8f1d-4c2c-9d27-5f9e843ce502.png +0 -0
- package/dist/exports/trial-01-welcome/Images/tp1_-_welcome_Image_aa5e4144-9ec8-4525-b01e-077d72f0bab6.png +0 -0
- package/dist/exports/trial-01-welcome/index.braze.html +0 -941
- package/dist/exports/trial-01-welcome/index.html +0 -941
- package/dist/exports/trial-02/Images/tp2_Image_5b0d9bc4-2e38-4252-8f20-d9f27d471c21.png +0 -0
- package/dist/exports/trial-02/Images/tp2_Image_b3f77c7c-cc8e-4db8-a5d9-072f4f621e72.png +0 -0
- package/dist/exports/trial-02/Images/tp2_Image_cafd1a17-1915-47cd-80f2-1c2d0b133cfe.png +0 -0
- package/dist/exports/trial-02/index.braze.html +0 -923
- package/dist/exports/trial-02/index.html +0 -923
- package/dist/exports/trial-03/Images/tp3_Image_1b96630c-fc4d-4aec-91fb-3c1d4d8544b3.png +0 -0
- package/dist/exports/trial-03/Images/tp3_Image_58f3a342-2193-4b5c-b30a-96f7f3338dd8.png +0 -0
- package/dist/exports/trial-03/Images/tp3_Image_6c4f307a-bac2-40e7-b4f1-9aa623c9eb8e.png +0 -0
- package/dist/exports/trial-03/Images/tp3_Image_848917ce-3f89-4538-a826-558b21f5fea7.png +0 -0
- package/dist/exports/trial-03/Images/tp3_Image_aae8410f-556f-4fb9-88f9-f276d75bafd2.png +0 -0
- package/dist/exports/trial-03/Images/tp3_Image_b4d5be39-509e-4f22-9601-dd070e4c6561.png +0 -0
- package/dist/exports/trial-03/index.braze.html +0 -1129
- package/dist/exports/trial-03/index.html +0 -1129
- package/dist/exports/trial-04/Images/tp4_Image_03bd5a56-25e3-4dcc-bef5-143bf12312d5.png +0 -0
- package/dist/exports/trial-04/Images/tp4_Image_0facbfca-b735-4199-a0d9-05a59341a1e3.gif +0 -0
- package/dist/exports/trial-04/Images/tp4_Image_171cee5f-cd3d-42f0-a180-995893d3742a.png +0 -0
- package/dist/exports/trial-04/Images/tp4_Image_3509d89d-1825-4817-8c1e-130fa294d0e1.png +0 -0
- package/dist/exports/trial-04/Images/tp4_Image_763a0f40-2985-4140-859b-ddd34f20a520.png +0 -0
- package/dist/exports/trial-04/Images/tp4_Image_cc2db4f5-b41d-45d7-a798-7a79e7b8d4d8.png +0 -0
- package/dist/exports/trial-04/index.braze.html +0 -885
- package/dist/exports/trial-04/index.html +0 -885
- package/dist/exports/trial-05/Images/tp5_Image_0248a517-5c60-4e84-ad1c-449dcf4f6a64.png +0 -0
- package/dist/exports/trial-05/Images/tp5_Image_4c1a2d5a-47d3-4801-bb3a-01c22decc108.png +0 -0
- package/dist/exports/trial-05/Images/tp5_Image_63ae77e7-cec7-4b4a-91e0-603b5a80929f.png +0 -0
- package/dist/exports/trial-05/Images/tp5_Image_7aa43530-6707-4308-ab0e-e4c38fc1b77d.png +0 -0
- package/dist/exports/trial-05/Images/tp5_Image_7efe5b6d-b360-4179-bee1-72908ba569bc.png +0 -0
- package/dist/exports/trial-05/Images/tp5_Image_b142bd84-c40a-4a29-b9d5-715b52fdd937.png +0 -0
- package/dist/exports/trial-05/Images/tp5_Image_c0c896ea-5b68-4f58-9e27-cdb4a1f1b438.png +0 -0
- package/dist/exports/trial-05/index.braze.html +0 -1023
- package/dist/exports/trial-05/index.html +0 -1023
- package/dist/exports/trial-06/Images/tp6_Image_2267a268-8a80-4e0d-8813-d4c75dbab6f2.png +0 -0
- package/dist/exports/trial-06/Images/tp6_Image_637a97b7-837e-478d-8ed1-6e8c2739fdc7.png +0 -0
- package/dist/exports/trial-06/Images/tp6_Image_a78df270-ad6f-41e6-8822-ba8ec38313a3.png +0 -0
- package/dist/exports/trial-06/index.braze.html +0 -773
- package/dist/exports/trial-06/index.html +0 -773
- package/dist/exports/winback/Images/_managers_Image_4587ac22-460c-487a-bc37-9dbc487e95a4.png +0 -0
- package/dist/exports/winback/Images/_managers_Image_8a77ec2c-ed49-480d-a1a1-7a38abad232a.png +0 -0
- package/dist/exports/winback/Images/_managers_Image_bb643775-8a2f-4e28-9dfb-6d1838c3561f.png +0 -0
- package/dist/exports/winback/Images/_managers_Image_f7d1bca5-0fcb-4d4c-abcd-40ce2d453b07.png +0 -0
- package/dist/exports/winback/index.braze.html +0 -605
- package/dist/exports/winback/index.html +0 -605
- package/dist/generated/email-tokens.d.ts.map +0 -1
- package/dist/generated/email-tokens.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/tokens/build-email-assets.d.ts +0 -19
- package/dist/tokens/build-email-assets.d.ts.map +0 -1
- package/dist/tokens/build-email-assets.js +0 -186
- package/dist/tokens/build-email-assets.js.map +0 -1
- package/dist/tokens/build-email-tokens.d.ts +0 -17
- package/dist/tokens/build-email-tokens.d.ts.map +0 -1
- package/dist/tokens/build-email-tokens.js +0 -229
- package/dist/tokens/build-email-tokens.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stock-library-map.js","sourceRoot":"","sources":["../../src/build/stock-library-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cloudinary asset upload.
|
|
3
|
-
*
|
|
4
|
-
* Scans every email's source .mjml for local, non-shared, raster asset references and uploads
|
|
5
|
-
* each to Cloudinary at `lifecycle/<campaign>/<email>/<filename>` (OPEN-QUESTIONS.md D18),
|
|
6
|
-
* skipping anything already uploaded with unchanged content. Writes a manifest that compile.ts
|
|
7
|
-
* reads to swap those assets' `src` for the hosted URL instead of inlining them as base64 — the
|
|
8
|
-
* root cause of Q15 (base64-inlined images blowing past Gmail's 102KB clip limit).
|
|
9
|
-
*
|
|
10
|
-
* Shared DS asset folders (icons/integrations/logos/placeholders/shared) and any SVG are
|
|
11
|
-
* intentionally skipped — D20 accepts raster-only (PNG/GIF/JPG/JPEG/WEBP) for the hosted path;
|
|
12
|
-
* those stay base64-inlined exactly as before.
|
|
13
|
-
*
|
|
14
|
-
* Usage:
|
|
15
|
-
* pnpm --filter @clay-design-system/email email:upload
|
|
16
|
-
* pnpm --filter @clay-design-system/email email:upload -- --campaign=sales-agent-activation
|
|
17
|
-
* pnpm --filter @clay-design-system/email email:upload -- --dry-run
|
|
18
|
-
*/
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=upload-assets.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-assets.d.ts","sourceRoot":"","sources":["../../src/build/upload-assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cloudinary asset upload.
|
|
3
|
-
*
|
|
4
|
-
* Scans every email's source .mjml for local, non-shared, raster asset references and uploads
|
|
5
|
-
* each to Cloudinary at `lifecycle/<campaign>/<email>/<filename>` (OPEN-QUESTIONS.md D18),
|
|
6
|
-
* skipping anything already uploaded with unchanged content. Writes a manifest that compile.ts
|
|
7
|
-
* reads to swap those assets' `src` for the hosted URL instead of inlining them as base64 — the
|
|
8
|
-
* root cause of Q15 (base64-inlined images blowing past Gmail's 102KB clip limit).
|
|
9
|
-
*
|
|
10
|
-
* Shared DS asset folders (icons/integrations/logos/placeholders/shared) and any SVG are
|
|
11
|
-
* intentionally skipped — D20 accepts raster-only (PNG/GIF/JPG/JPEG/WEBP) for the hosted path;
|
|
12
|
-
* those stay base64-inlined exactly as before.
|
|
13
|
-
*
|
|
14
|
-
* Usage:
|
|
15
|
-
* pnpm --filter @clay-design-system/email email:upload
|
|
16
|
-
* pnpm --filter @clay-design-system/email email:upload -- --campaign=sales-agent-activation
|
|
17
|
-
* pnpm --filter @clay-design-system/email email:upload -- --dry-run
|
|
18
|
-
*/
|
|
19
|
-
import { createHash } from 'node:crypto';
|
|
20
|
-
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
|
|
21
|
-
import { dirname, resolve } from 'node:path';
|
|
22
|
-
import { v2 as cloudinary } from 'cloudinary';
|
|
23
|
-
import { loadCloudinaryEnv } from './cloudinary-env';
|
|
24
|
-
import { cloudinaryManifestPath, loadCloudinaryManifest, } from './cloudinary-manifest';
|
|
25
|
-
import { assetsDir, walkEmails } from './email-tree';
|
|
26
|
-
const SHARED_ASSET_DIRS = new Set(['icons', 'integrations', 'logos', 'placeholders', 'shared']);
|
|
27
|
-
const RASTER_EXTS = new Set(['png', 'jpg', 'jpeg', 'gif', 'webp']);
|
|
28
|
-
const ASSET_SRC_RE = /src="[^"]*\/assets\/([^"?#]+)"/g;
|
|
29
|
-
const CONCURRENCY = 5;
|
|
30
|
-
const campaignFilterArg = process.argv.find((a) => a.startsWith('--campaign='));
|
|
31
|
-
const campaignFilter = campaignFilterArg ? campaignFilterArg.slice('--campaign='.length) : null;
|
|
32
|
-
const dryRun = process.argv.includes('--dry-run');
|
|
33
|
-
/** Every local, non-shared, raster asset each email references, deduped by target public_id. */
|
|
34
|
-
function collectUploadTasks() {
|
|
35
|
-
const tasks = new Map();
|
|
36
|
-
for (const { campaign, emailSlug, mjmlPath } of walkEmails()) {
|
|
37
|
-
if (campaignFilter && campaign !== campaignFilter)
|
|
38
|
-
continue;
|
|
39
|
-
if (!existsSync(mjmlPath))
|
|
40
|
-
continue;
|
|
41
|
-
const mjmlSource = readFileSync(mjmlPath, 'utf-8');
|
|
42
|
-
for (const match of mjmlSource.matchAll(ASSET_SRC_RE)) {
|
|
43
|
-
const sourcePath = match[1];
|
|
44
|
-
const firstSegment = sourcePath.split('/')[0];
|
|
45
|
-
const ext = (sourcePath.split('.').pop() ?? '').toLowerCase();
|
|
46
|
-
if (SHARED_ASSET_DIRS.has(firstSegment) || !RASTER_EXTS.has(ext))
|
|
47
|
-
continue;
|
|
48
|
-
const filename = sourcePath.split('/').pop();
|
|
49
|
-
if (!filename)
|
|
50
|
-
continue;
|
|
51
|
-
const stem = filename.slice(0, filename.length - ext.length - 1);
|
|
52
|
-
const publicId = `lifecycle/${campaign}/${emailSlug}/${stem}`;
|
|
53
|
-
if (tasks.has(publicId))
|
|
54
|
-
continue;
|
|
55
|
-
tasks.set(publicId, { publicId, absPath: resolve(assetsDir, sourcePath), sourcePath, campaign, email: emailSlug });
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return [...tasks.values()];
|
|
59
|
-
}
|
|
60
|
-
function sha256(absPath) {
|
|
61
|
-
return createHash('sha256').update(readFileSync(absPath)).digest('hex').slice(0, 16);
|
|
62
|
-
}
|
|
63
|
-
async function runWithConcurrency(items, limit, fn) {
|
|
64
|
-
let cursor = 0;
|
|
65
|
-
async function worker() {
|
|
66
|
-
while (cursor < items.length) {
|
|
67
|
-
const item = items[cursor++];
|
|
68
|
-
await fn(item);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
await Promise.all(Array.from({ length: Math.min(limit, items.length) }, worker));
|
|
72
|
-
}
|
|
73
|
-
async function main() {
|
|
74
|
-
const tasks = collectUploadTasks();
|
|
75
|
-
if (!tasks.length) {
|
|
76
|
-
console.log('email:upload — no local campaign raster assets found to upload.');
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const existingManifest = loadCloudinaryManifest();
|
|
80
|
-
const assets = { ...(existingManifest?.assets ?? {}) };
|
|
81
|
-
let cloudName = existingManifest?.cloudName ?? '';
|
|
82
|
-
if (!dryRun) {
|
|
83
|
-
const env = loadCloudinaryEnv();
|
|
84
|
-
cloudinary.config({ cloud_name: env.cloudName, api_key: env.apiKey, api_secret: env.apiSecret });
|
|
85
|
-
cloudName = env.cloudName;
|
|
86
|
-
}
|
|
87
|
-
let actioned = 0;
|
|
88
|
-
let skipped = 0;
|
|
89
|
-
let failed = 0;
|
|
90
|
-
await runWithConcurrency(tasks, CONCURRENCY, async (task) => {
|
|
91
|
-
if (!existsSync(task.absPath)) {
|
|
92
|
-
console.warn(` ✗ ${task.publicId} — source file missing: ${task.absPath}`);
|
|
93
|
-
failed++;
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
const contentHash = sha256(task.absPath);
|
|
97
|
-
const prior = assets[task.publicId];
|
|
98
|
-
if (prior && prior.contentHash === contentHash) {
|
|
99
|
-
skipped++;
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const bytes = statSync(task.absPath).size;
|
|
103
|
-
if (dryRun) {
|
|
104
|
-
console.log(` would upload: ${task.publicId} (${(bytes / 1024).toFixed(0)} KB)`);
|
|
105
|
-
actioned++;
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
try {
|
|
109
|
-
const result = await cloudinary.uploader.upload(task.absPath, {
|
|
110
|
-
public_id: task.publicId,
|
|
111
|
-
overwrite: true,
|
|
112
|
-
invalidate: true,
|
|
113
|
-
unique_filename: false,
|
|
114
|
-
resource_type: 'image',
|
|
115
|
-
});
|
|
116
|
-
assets[task.publicId] = {
|
|
117
|
-
sourcePath: task.sourcePath,
|
|
118
|
-
campaign: task.campaign,
|
|
119
|
-
email: task.email,
|
|
120
|
-
url: result.secure_url,
|
|
121
|
-
bytes,
|
|
122
|
-
contentHash,
|
|
123
|
-
uploadedAt: new Date().toISOString(),
|
|
124
|
-
};
|
|
125
|
-
actioned++;
|
|
126
|
-
console.log(` ✓ ${task.publicId} → ${result.secure_url}`);
|
|
127
|
-
}
|
|
128
|
-
catch (err) {
|
|
129
|
-
failed++;
|
|
130
|
-
console.error(` ✗ ${task.publicId} — ${err.message}`);
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
if (!dryRun) {
|
|
134
|
-
const manifest = {
|
|
135
|
-
generatedFrom: '@clay-design-system/email src/build/upload-assets.ts',
|
|
136
|
-
cloudName,
|
|
137
|
-
assets,
|
|
138
|
-
};
|
|
139
|
-
mkdirSync(dirname(cloudinaryManifestPath), { recursive: true });
|
|
140
|
-
writeFileSync(cloudinaryManifestPath, JSON.stringify(manifest, null, 2));
|
|
141
|
-
console.log(`\nManifest written → ${cloudinaryManifestPath}`);
|
|
142
|
-
}
|
|
143
|
-
const actionLabel = dryRun ? 'would upload' : 'uploaded';
|
|
144
|
-
console.log(`\nemail:upload — ${actioned} ${actionLabel}, ${skipped} unchanged (skipped), ${failed} failed` +
|
|
145
|
-
(dryRun ? ' [dry run — nothing sent to Cloudinary]' : ''));
|
|
146
|
-
if (failed > 0)
|
|
147
|
-
process.exitCode = 1;
|
|
148
|
-
}
|
|
149
|
-
main().catch((err) => {
|
|
150
|
-
console.error(err.message);
|
|
151
|
-
process.exit(1);
|
|
152
|
-
});
|
|
153
|
-
//# sourceMappingURL=upload-assets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-assets.js","sourceRoot":"","sources":["../../src/build/upload-assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stock-library asset upload (D5.4, board item Clay Lifecycle D5).
|
|
3
|
-
*
|
|
4
|
-
* One-time bulk push of the email asset-catalog bank (packages/email/src/assets/
|
|
5
|
-
* _stock-library-staging/, sourced from CatalogTest.csv's Email-channel rows) to Cloudinary,
|
|
6
|
-
* under a dedicated `lifecycle/library/email-assets/<slug>` folder — a sibling to
|
|
7
|
-
* `lifecycle/<campaign>/...` (upload-assets.ts's per-campaign uploads) and deliberately not
|
|
8
|
-
* `asset-catalog/...` (the separate Asset Catalog system's own Cloudinary convention, see
|
|
9
|
-
* SCHEMA.md), since this is a new copy for our stock-library use case, not the same records.
|
|
10
|
-
*
|
|
11
|
-
* Idempotent (content-hash check, like upload-assets.ts) — safe to re-run after adding more rows
|
|
12
|
-
* to the staging CSV. Writes the resulting secure_url back into `cloudinary_url` on both the
|
|
13
|
-
* staging CSV (packages/email/src/assets/_stock-library-staging/email-assets-catalog.csv) and,
|
|
14
|
-
* as a courtesy, the external copy at EMAILS_ASSETS_EXTERNAL_CSV below.
|
|
15
|
-
*
|
|
16
|
-
* Usage:
|
|
17
|
-
* pnpm --filter @clay-design-system/email library:upload -- --dry-run
|
|
18
|
-
* pnpm --filter @clay-design-system/email library:upload
|
|
19
|
-
*/
|
|
20
|
-
export {};
|
|
21
|
-
//# sourceMappingURL=upload-library-assets.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-library-assets.d.ts","sourceRoot":"","sources":["../../src/build/upload-library-assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stock-library asset upload (D5.4, board item Clay Lifecycle D5).
|
|
3
|
-
*
|
|
4
|
-
* One-time bulk push of the email asset-catalog bank (packages/email/src/assets/
|
|
5
|
-
* _stock-library-staging/, sourced from CatalogTest.csv's Email-channel rows) to Cloudinary,
|
|
6
|
-
* under a dedicated `lifecycle/library/email-assets/<slug>` folder — a sibling to
|
|
7
|
-
* `lifecycle/<campaign>/...` (upload-assets.ts's per-campaign uploads) and deliberately not
|
|
8
|
-
* `asset-catalog/...` (the separate Asset Catalog system's own Cloudinary convention, see
|
|
9
|
-
* SCHEMA.md), since this is a new copy for our stock-library use case, not the same records.
|
|
10
|
-
*
|
|
11
|
-
* Idempotent (content-hash check, like upload-assets.ts) — safe to re-run after adding more rows
|
|
12
|
-
* to the staging CSV. Writes the resulting secure_url back into `cloudinary_url` on both the
|
|
13
|
-
* staging CSV (packages/email/src/assets/_stock-library-staging/email-assets-catalog.csv) and,
|
|
14
|
-
* as a courtesy, the external copy at EMAILS_ASSETS_EXTERNAL_CSV below.
|
|
15
|
-
*
|
|
16
|
-
* Usage:
|
|
17
|
-
* pnpm --filter @clay-design-system/email library:upload -- --dry-run
|
|
18
|
-
* pnpm --filter @clay-design-system/email library:upload
|
|
19
|
-
*/
|
|
20
|
-
import { createHash } from 'node:crypto';
|
|
21
|
-
import { existsSync, readFileSync, statSync, writeFileSync } from 'node:fs';
|
|
22
|
-
import { dirname, resolve } from 'node:path';
|
|
23
|
-
import { fileURLToPath } from 'node:url';
|
|
24
|
-
import { v2 as cloudinary } from 'cloudinary';
|
|
25
|
-
import { loadCloudinaryEnv } from './cloudinary-env';
|
|
26
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
27
|
-
const pkgDir = resolve(__dirname, '..', '..');
|
|
28
|
-
const STAGING_DIR = resolve(pkgDir, 'src/assets/_stock-library-staging');
|
|
29
|
-
const STAGING_CSV = resolve(STAGING_DIR, 'email-assets-catalog.csv');
|
|
30
|
-
// Courtesy mirror only — not one of the protected originals (CatalogTest.csv/chips_seed.sql/
|
|
31
|
-
// SCHEMA.md, or the raw PNGs); we created this file ourselves in the prior step.
|
|
32
|
-
const EXTERNAL_CSV = '/Users/eliorsi/Development/emails assets/email-assets-catalog.csv';
|
|
33
|
-
const FOLDER = 'lifecycle/library/email-assets';
|
|
34
|
-
const CONCURRENCY = 5;
|
|
35
|
-
const dryRun = process.argv.includes('--dry-run');
|
|
36
|
-
const limitArg = process.argv.find((a) => a.startsWith('--limit='));
|
|
37
|
-
const limit = limitArg ? Number(limitArg.slice('--limit='.length)) : undefined;
|
|
38
|
-
const CSV_FIELDS = [
|
|
39
|
-
'id', 'name', 'description', 'tag_form', 'tag_context', 'use_case_domain',
|
|
40
|
-
'width', 'height', 'ratio', 'figma_source', 'local_file', 'cloudinary_url',
|
|
41
|
-
];
|
|
42
|
-
/** Minimal RFC 4180 parser — handles quoted fields with embedded commas/newlines (SCHEMA.md trap #1). */
|
|
43
|
-
function parseCsv(text) {
|
|
44
|
-
const rows = [];
|
|
45
|
-
let field = '';
|
|
46
|
-
let row = [];
|
|
47
|
-
let inQuotes = false;
|
|
48
|
-
for (let i = 0; i < text.length; i++) {
|
|
49
|
-
const c = text[i];
|
|
50
|
-
if (inQuotes) {
|
|
51
|
-
if (c === '"') {
|
|
52
|
-
if (text[i + 1] === '"') {
|
|
53
|
-
field += '"';
|
|
54
|
-
i++;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
inQuotes = false;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
else
|
|
61
|
-
field += c;
|
|
62
|
-
}
|
|
63
|
-
else if (c === '"')
|
|
64
|
-
inQuotes = true;
|
|
65
|
-
else if (c === ',') {
|
|
66
|
-
row.push(field);
|
|
67
|
-
field = '';
|
|
68
|
-
}
|
|
69
|
-
else if (c === '\n') {
|
|
70
|
-
row.push(field);
|
|
71
|
-
rows.push(row);
|
|
72
|
-
row = [];
|
|
73
|
-
field = '';
|
|
74
|
-
}
|
|
75
|
-
else if (c === '\r') { /* skip */ }
|
|
76
|
-
else
|
|
77
|
-
field += c;
|
|
78
|
-
}
|
|
79
|
-
if (field.length || row.length) {
|
|
80
|
-
row.push(field);
|
|
81
|
-
rows.push(row);
|
|
82
|
-
}
|
|
83
|
-
const [header, ...body] = rows.filter((r) => r.length > 1 || r[0] !== '');
|
|
84
|
-
return body.map((r) => Object.fromEntries(header.map((h, idx) => [h, r[idx] ?? ''])));
|
|
85
|
-
}
|
|
86
|
-
function toCsv(rows) {
|
|
87
|
-
const escape = (v) => (/[",\n]/.test(v) ? `"${v.replace(/"/g, '""')}"` : v);
|
|
88
|
-
const lines = [CSV_FIELDS.join(',')];
|
|
89
|
-
for (const r of rows)
|
|
90
|
-
lines.push(CSV_FIELDS.map((f) => escape(r[f] ?? '')).join(','));
|
|
91
|
-
return lines.join('\n') + '\n';
|
|
92
|
-
}
|
|
93
|
-
/** tag_form/tag_context/use_case_domain, lowercased and space-hyphenated, deduped, non-empty. */
|
|
94
|
-
function buildTags(r) {
|
|
95
|
-
const raw = [r.tag_form, r.tag_context, r.use_case_domain];
|
|
96
|
-
const tags = raw.filter(Boolean).map((t) => t.trim().toLowerCase().replace(/\s+/g, '-'));
|
|
97
|
-
return [...new Set(tags)];
|
|
98
|
-
}
|
|
99
|
-
function sha256(absPath) {
|
|
100
|
-
return createHash('sha256').update(readFileSync(absPath)).digest('hex').slice(0, 16);
|
|
101
|
-
}
|
|
102
|
-
async function runWithConcurrency(items, limit, fn) {
|
|
103
|
-
let cursor = 0;
|
|
104
|
-
async function worker() {
|
|
105
|
-
while (cursor < items.length) {
|
|
106
|
-
const item = items[cursor++];
|
|
107
|
-
await fn(item);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
await Promise.all(Array.from({ length: Math.min(limit, items.length) }, worker));
|
|
111
|
-
}
|
|
112
|
-
async function main() {
|
|
113
|
-
if (!existsSync(STAGING_CSV)) {
|
|
114
|
-
console.error(`Staging CSV not found: ${STAGING_CSV}`);
|
|
115
|
-
process.exitCode = 1;
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const rows = parseCsv(readFileSync(STAGING_CSV, 'utf-8'));
|
|
119
|
-
console.log(`Loaded ${rows.length} rows from ${STAGING_CSV}\n`);
|
|
120
|
-
if (!dryRun) {
|
|
121
|
-
const env = loadCloudinaryEnv();
|
|
122
|
-
cloudinary.config({ cloud_name: env.cloudName, api_key: env.apiKey, api_secret: env.apiSecret });
|
|
123
|
-
}
|
|
124
|
-
let uploaded = 0;
|
|
125
|
-
let skipped = 0;
|
|
126
|
-
let failed = 0;
|
|
127
|
-
const uploadSet = limit ? rows.slice(0, limit) : rows;
|
|
128
|
-
if (limit)
|
|
129
|
-
console.log(`--limit=${limit}: uploading only the first ${uploadSet.length} of ${rows.length} rows\n`);
|
|
130
|
-
await runWithConcurrency(uploadSet, CONCURRENCY, async (row) => {
|
|
131
|
-
const slug = row.id.split('/', 2)[1];
|
|
132
|
-
const absPath = resolve(STAGING_DIR, row.local_file);
|
|
133
|
-
if (!existsSync(absPath)) {
|
|
134
|
-
console.warn(` ✗ ${slug} — local file missing: ${absPath}`);
|
|
135
|
-
failed++;
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
const publicId = `${FOLDER}/${slug}`;
|
|
139
|
-
const contentHash = sha256(absPath);
|
|
140
|
-
const bytes = statSync(absPath).size;
|
|
141
|
-
if (dryRun) {
|
|
142
|
-
console.log(` would upload: ${publicId} (${(bytes / 1024).toFixed(0)} KB) tags=[${buildTags(row).join(', ')}]`);
|
|
143
|
-
uploaded++;
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
try {
|
|
147
|
-
const result = await cloudinary.uploader.upload(absPath, {
|
|
148
|
-
public_id: publicId,
|
|
149
|
-
overwrite: true,
|
|
150
|
-
invalidate: true,
|
|
151
|
-
unique_filename: false,
|
|
152
|
-
resource_type: 'image',
|
|
153
|
-
tags: buildTags(row),
|
|
154
|
-
context: { source: 'asset-catalog', figma_source: row.figma_source, content_hash: contentHash },
|
|
155
|
-
});
|
|
156
|
-
row.cloudinary_url = result.secure_url;
|
|
157
|
-
uploaded++;
|
|
158
|
-
console.log(` ✓ ${publicId} → ${result.secure_url}`);
|
|
159
|
-
}
|
|
160
|
-
catch (err) {
|
|
161
|
-
failed++;
|
|
162
|
-
console.error(` ✗ ${publicId} — ${err.message}`);
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
if (!dryRun) {
|
|
166
|
-
writeFileSync(STAGING_CSV, toCsv(rows));
|
|
167
|
-
console.log(`\nUpdated ${STAGING_CSV}`);
|
|
168
|
-
if (existsSync(EXTERNAL_CSV)) {
|
|
169
|
-
writeFileSync(EXTERNAL_CSV, toCsv(rows));
|
|
170
|
-
console.log(`Updated ${EXTERNAL_CSV}`);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
const label = dryRun ? 'would upload' : 'uploaded';
|
|
174
|
-
console.log(`\nlibrary:upload — ${uploaded} ${label}, ${skipped} unchanged, ${failed} failed` + (dryRun ? ' [dry run — nothing sent to Cloudinary]' : ''));
|
|
175
|
-
if (failed > 0)
|
|
176
|
-
process.exitCode = 1;
|
|
177
|
-
}
|
|
178
|
-
main().catch((err) => {
|
|
179
|
-
console.error(err.message);
|
|
180
|
-
process.exit(1);
|
|
181
|
-
});
|
|
182
|
-
//# sourceMappingURL=upload-library-assets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-library-assets.js","sourceRoot":"","sources":["../../src/build/upload-library-assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Visual-brief resolver (OPEN-QUESTIONS.md M3 + D6/D8/D21; BRIEF-HANDOVER.md §3).
|
|
3
|
-
*
|
|
4
|
-
* Takes the 4-field per-slot visual brief (slot / intent / source / assetRef) and resolves each
|
|
5
|
-
* slot to exactly one of three outcomes, per the priority order already documented in
|
|
6
|
-
* skills/email-assets/SKILL.md Process step 2 — this module executes those already-decided rules
|
|
7
|
-
* in code instead of leaving them as prose a human has to walk by hand:
|
|
8
|
-
*
|
|
9
|
-
* - 'resolved' — a real asset: AgentVisual (tier 1, mandatory for a standalone agent
|
|
10
|
-
* portrait), a shared logo or local campaign asset (tier 3), a hosted match
|
|
11
|
-
* from the Cloudinary stock library (tier 5 — D5.6, board item Clay
|
|
12
|
-
* Lifecycle D5; product-ui/abstract only, see that branch below for why not
|
|
13
|
-
* logo), or a match against the ~600-icon Clay registry (tier 6 — D6, board
|
|
14
|
-
* item Clay Lifecycle D6; `icon` source only).
|
|
15
|
-
* - 'placeholder' — a LEGITIMATE gap: a composite agent+UI scene (tier 2 — no dedicated
|
|
16
|
-
* library yet, see knowledge/hero-pipeline.md) or anything else tier 3/5/6
|
|
17
|
-
* didn't find (tier 4).
|
|
18
|
-
* - 'gap' — NOT legitimate: a standalone agent portrait naming an agent the repo's
|
|
19
|
-
* AgentVisual library doesn't have, or a must-use:<file> the brief names
|
|
20
|
-
* that doesn't actually exist anywhere. email-assets/SKILL.md is explicit
|
|
21
|
-
* that a placeholder is never an acceptable substitute for either of these —
|
|
22
|
-
* they need a human decision, not a silent swap.
|
|
23
|
-
*
|
|
24
|
-
* Every slot gets exactly one of the three statuses above — never nothing. That's the literal
|
|
25
|
-
* "no silent gaps" contract from OPEN-QUESTIONS.md M3's "Done when".
|
|
26
|
-
*
|
|
27
|
-
* Usage: tsx src/build/visual-resolver.ts --brief=<path-to-visual-brief.json>
|
|
28
|
-
*/
|
|
29
|
-
import { type SlotShape } from './asset-scoring';
|
|
30
|
-
import { type StockLibraryEntry } from './stock-library-map';
|
|
31
|
-
export type VisualSource = 'agent-portrait' | 'product-ui' | 'logo' | 'abstract' | 'icon' | string;
|
|
32
|
-
export interface VisualSlotSpec {
|
|
33
|
-
/** e.g. "product-ui-hero → Image" — ties the slot to a real section field (BRIEF-HANDOVER §3). */
|
|
34
|
-
slot: string;
|
|
35
|
-
/** Free text: what the image shows. */
|
|
36
|
-
intent: string;
|
|
37
|
-
source: VisualSource;
|
|
38
|
-
/** Exact library key when the brief knows it, e.g. "agentImageMap: outbound-prospector". */
|
|
39
|
-
assetRef?: string;
|
|
40
|
-
}
|
|
41
|
-
export type VisualResolutionStatus = 'resolved' | 'placeholder' | 'gap';
|
|
42
|
-
export interface VisualResolution {
|
|
43
|
-
slot: string;
|
|
44
|
-
status: VisualResolutionStatus;
|
|
45
|
-
tier: 1 | 2 | 3 | 4 | 5 | 6;
|
|
46
|
-
/** Always present — why this outcome, so a reviewer never has to guess. */
|
|
47
|
-
detail: string;
|
|
48
|
-
/**
|
|
49
|
-
* status === 'resolved'. A local disk path for tiers 1/3 (still needs upload-assets.ts before
|
|
50
|
-
* it's usable in a sent email), or an already-hosted https:// Cloudinary URL for tier 5 (the
|
|
51
|
-
* stock library — no further upload step needed, use it in the HTML as-is).
|
|
52
|
-
*/
|
|
53
|
-
assetPath?: string;
|
|
54
|
-
/** status === 'placeholder' */
|
|
55
|
-
placeholderSvg?: string;
|
|
56
|
-
placeholderComment?: string;
|
|
57
|
-
/** status === 'placeholder': the `email:placeholder` command that renders it labelled, on an approved tint. */
|
|
58
|
-
placeholderCommand?: string;
|
|
59
|
-
/** status === 'gap' */
|
|
60
|
-
gapReason?: string;
|
|
61
|
-
}
|
|
62
|
-
export type { SlotShape };
|
|
63
|
-
/**
|
|
64
|
-
* A slot's rough layout shape — derived automatically from the slot spec, never hand-authored in
|
|
65
|
-
* a brief. `slot` is formatted "<section/touchpoint> → <field label>" (e.g. "product-ui-hero →
|
|
66
|
-
* Image", "tp1a-library → hero image"), so a keyword search over it catches both a literal
|
|
67
|
-
* section-component name and a free-text touchpoint field label. Passed to findStockLibraryEntry
|
|
68
|
-
* as a stage-2 tie-breaker only (see stock-library-map.ts) — it never gates a match on its own.
|
|
69
|
-
*/
|
|
70
|
-
export declare function deriveSlotShape(spec: VisualSlotSpec): SlotShape;
|
|
71
|
-
/**
|
|
72
|
-
* Tier 5 by name (K10 EM-6): a brief that already knows the stock image names it in `assetRef` —
|
|
73
|
-
* `stock: <slug>`, `asset/<slug>`, the bare slug, the entry name, its file name or its Cloudinary URL.
|
|
74
|
-
* An exact key wins. A partial slug (`ai-work-management-hero` also prefixes `…-hero-alt`) or a
|
|
75
|
-
* name shared by several entries is a tie, broken deterministically — never by catalogue order:
|
|
76
|
-
* 1. more of the entry's tags named in `intent`, 2. aspect fits the slot shape, 3. shorter slug,
|
|
77
|
-
* 4. slug A→Z.
|
|
78
|
-
* No entry matches the ref → null, and the resolver falls back to the intent search.
|
|
79
|
-
*/
|
|
80
|
-
export declare function findStockEntryByRef(assetRef: string, intent: string, shape: SlotShape): {
|
|
81
|
-
entry: StockLibraryEntry;
|
|
82
|
-
via: 'exact' | 'tie-break';
|
|
83
|
-
candidates: string[];
|
|
84
|
-
} | null;
|
|
85
|
-
/** Resolve one visual-brief slot. `campaign` scopes tier-3 local-folder lookups. */
|
|
86
|
-
export declare function resolveVisualSlot(spec: VisualSlotSpec, campaign: string): VisualResolution;
|
|
87
|
-
//# sourceMappingURL=visual-resolver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visual-resolver.d.ts","sourceRoot":"","sources":["../../src/build/visual-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAIzE,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAgClG,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;AAElG,MAAM,WAAW,cAAc;IAC7B,kGAAkG;IAClG,IAAI,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,YAAY,CAAA;IACpB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,aAAa,GAAG,KAAK,CAAA;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,sBAAsB,CAAA;IAC9B,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,+GAA+G;IAC/G,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAiBD,YAAY,EAAE,SAAS,EAAE,CAAA;AAEzB;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAO/D;AAkGD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,GACf;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CA4BvF;AAgBD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA4K1F"}
|