whale-code 6.5.7 → 6.5.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/README.md +14 -2
- package/dist/cli/services/agent-loop.js +26 -2
- package/dist/cli/services/agent-loop.js.map +1 -1
- package/dist/cli/services/hooks.js +2 -1
- package/dist/cli/services/hooks.js.map +1 -1
- package/dist/cli/services/telemetry-spans.js +1 -0
- package/dist/cli/services/telemetry-spans.js.map +1 -1
- package/dist/cli/services/telemetry.d.ts +23 -0
- package/dist/cli/services/telemetry.js +45 -1
- package/dist/cli/services/telemetry.js.map +1 -1
- package/dist/server/handlers/__test-utils__/test-db.d.ts +17 -3
- package/dist/server/handlers/__test-utils__/test-db.js +113 -14
- package/dist/server/handlers/__test-utils__/test-db.js.map +1 -1
- package/dist/server/handlers/affiliates.d.ts +9 -0
- package/dist/server/handlers/affiliates.js +197 -0
- package/dist/server/handlers/affiliates.js.map +1 -0
- package/dist/server/handlers/api-docs.d.ts +4 -2
- package/dist/server/handlers/api-docs.js +204 -1681
- package/dist/server/handlers/api-docs.js.map +1 -1
- package/dist/server/handlers/campaigns.d.ts +9 -0
- package/dist/server/handlers/campaigns.js +237 -0
- package/dist/server/handlers/campaigns.js.map +1 -0
- package/dist/server/handlers/catalog-schemas.js +9 -9
- package/dist/server/handlers/catalog-schemas.js.map +1 -1
- package/dist/server/handlers/catalog.js +1 -1
- package/dist/server/handlers/catalog.js.map +1 -1
- package/dist/server/handlers/comms-documents.js +28 -2
- package/dist/server/handlers/comms-documents.js.map +1 -1
- package/dist/server/handlers/comms-pdf-generation.js +25 -3
- package/dist/server/handlers/comms-pdf-generation.js.map +1 -1
- package/dist/server/handlers/comms-pdf-helpers.js +4 -4
- package/dist/server/handlers/comms-pdf-helpers.js.map +1 -1
- package/dist/server/handlers/comms.d.ts +100 -0
- package/dist/server/handlers/comms.js +146 -12
- package/dist/server/handlers/comms.js.map +1 -1
- package/dist/server/handlers/coupons.d.ts +9 -0
- package/dist/server/handlers/coupons.js +220 -0
- package/dist/server/handlers/coupons.js.map +1 -0
- package/dist/server/handlers/embeddings.js +1 -1
- package/dist/server/handlers/embeddings.js.map +1 -1
- package/dist/server/handlers/enrichment.js +2 -622
- package/dist/server/handlers/enrichment.js.map +1 -1
- package/dist/server/handlers/fulfillment.d.ts +9 -0
- package/dist/server/handlers/fulfillment.js +209 -0
- package/dist/server/handlers/fulfillment.js.map +1 -0
- package/dist/server/handlers/google-ads.d.ts +24 -0
- package/dist/server/handlers/google-ads.js +2199 -0
- package/dist/server/handlers/google-ads.js.map +1 -0
- package/dist/server/handlers/invoices.d.ts +9 -0
- package/dist/server/handlers/invoices.js +252 -0
- package/dist/server/handlers/invoices.js.map +1 -0
- package/dist/server/handlers/loyalty.d.ts +9 -0
- package/dist/server/handlers/loyalty.js +197 -0
- package/dist/server/handlers/loyalty.js.map +1 -0
- package/dist/server/handlers/meta-ads-graph-api.js +18 -3
- package/dist/server/handlers/meta-ads-graph-api.js.map +1 -1
- package/dist/server/handlers/phone.d.ts +9 -0
- package/dist/server/handlers/phone.js +197 -0
- package/dist/server/handlers/phone.js.map +1 -0
- package/dist/server/handlers/pipeline.d.ts +9 -0
- package/dist/server/handlers/pipeline.js +277 -0
- package/dist/server/handlers/pipeline.js.map +1 -0
- package/dist/server/handlers/qr-codes.d.ts +9 -0
- package/dist/server/handlers/qr-codes.js +198 -0
- package/dist/server/handlers/qr-codes.js.map +1 -0
- package/dist/server/handlers/reviews.d.ts +9 -0
- package/dist/server/handlers/reviews.js +171 -0
- package/dist/server/handlers/reviews.js.map +1 -0
- package/dist/server/handlers/segments.d.ts +9 -0
- package/dist/server/handlers/segments.js +229 -0
- package/dist/server/handlers/segments.js.map +1 -0
- package/dist/server/handlers/social.d.ts +9 -0
- package/dist/server/handlers/social.js +81 -0
- package/dist/server/handlers/social.js.map +1 -0
- package/dist/server/handlers/tax.d.ts +9 -0
- package/dist/server/handlers/tax.js +182 -0
- package/dist/server/handlers/tax.js.map +1 -0
- package/dist/server/handlers/wallet.d.ts +9 -0
- package/dist/server/handlers/wallet.js +203 -0
- package/dist/server/handlers/wallet.js.map +1 -0
- package/dist/server/handlers/webhooks-mgmt.d.ts +9 -0
- package/dist/server/handlers/webhooks-mgmt.js +181 -0
- package/dist/server/handlers/webhooks-mgmt.js.map +1 -0
- package/dist/server/handlers/wholesale.d.ts +9 -0
- package/dist/server/handlers/wholesale.js +219 -0
- package/dist/server/handlers/wholesale.js.map +1 -0
- package/dist/server/index.js +20 -9
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/clickhouse-buffer.js +1 -0
- package/dist/server/lib/clickhouse-buffer.js.map +1 -1
- package/dist/server/lib/coa-renderer.d.ts +1 -1
- package/dist/server/lib/coa-renderer.js +32 -10
- package/dist/server/lib/coa-renderer.js.map +1 -1
- package/dist/server/server-worker.d.ts +1 -0
- package/dist/server/server-worker.js +464 -3
- package/dist/server/server-worker.js.map +1 -1
- package/dist/server/tool-router.js +118 -4
- package/dist/server/tool-router.js.map +1 -1
- package/package.json +28 -4
- package/vendor/ink/package.json +0 -2
- package/whale-logo.png +0 -0
|
@@ -10,7 +10,7 @@ export async function handleSchemaActions(sb, args, sid) {
|
|
|
10
10
|
if (args.public_only === true) {
|
|
11
11
|
q = q.eq("is_public", true);
|
|
12
12
|
} else {
|
|
13
|
-
q = q.or(`store_id.eq.${sid},
|
|
13
|
+
q = q.or(`store_id.eq.${sid},store_id.is.null`);
|
|
14
14
|
}
|
|
15
15
|
if (args.catalog_id) q = q.eq("catalog_id", args.catalog_id);
|
|
16
16
|
if (args.limit) q = q.limit(args.limit);
|
|
@@ -37,7 +37,7 @@ export async function handleSchemaActions(sb, args, sid) {
|
|
|
37
37
|
const {
|
|
38
38
|
data,
|
|
39
39
|
error
|
|
40
|
-
} = await sb.from("field_schemas").select("*").eq("id", fsId).or(`store_id.eq.${sid},
|
|
40
|
+
} = await sb.from("field_schemas").select("*").eq("id", fsId).or(`store_id.eq.${sid},store_id.is.null`).single();
|
|
41
41
|
if (error) return {
|
|
42
42
|
success: false,
|
|
43
43
|
error: error.message
|
|
@@ -111,7 +111,7 @@ export async function handleSchemaActions(sb, args, sid) {
|
|
|
111
111
|
const {
|
|
112
112
|
data,
|
|
113
113
|
error
|
|
114
|
-
} = await sb.from("field_schemas").update(updates).eq("id", fsId).
|
|
114
|
+
} = await sb.from("field_schemas").update(updates).eq("id", fsId).or(`store_id.eq.${sid},store_id.is.null`).select("id, name, slug, fields, icon, is_active, catalog_id, updated_at").single();
|
|
115
115
|
return error ? {
|
|
116
116
|
success: false,
|
|
117
117
|
error: error.message
|
|
@@ -133,7 +133,7 @@ export async function handleSchemaActions(sb, args, sid) {
|
|
|
133
133
|
} = await sb.from("field_schemas").update({
|
|
134
134
|
is_active: false,
|
|
135
135
|
deleted_at: new Date().toISOString()
|
|
136
|
-
}).eq("id", fsId).
|
|
136
|
+
}).eq("id", fsId).or(`store_id.eq.${sid},store_id.is.null`).select("id, name, is_active").single();
|
|
137
137
|
return error ? {
|
|
138
138
|
success: false,
|
|
139
139
|
error: error.message
|
|
@@ -151,7 +151,7 @@ export async function handleSchemaActions(sb, args, sid) {
|
|
|
151
151
|
if (args.public_only === true) {
|
|
152
152
|
q = q.eq("is_public", true);
|
|
153
153
|
} else {
|
|
154
|
-
q = q.or(`store_id.eq.${sid},
|
|
154
|
+
q = q.or(`store_id.eq.${sid},store_id.is.null`);
|
|
155
155
|
}
|
|
156
156
|
if (args.catalog_id) q = q.eq("catalog_id", args.catalog_id);
|
|
157
157
|
if (args.limit) q = q.limit(args.limit);
|
|
@@ -178,7 +178,7 @@ export async function handleSchemaActions(sb, args, sid) {
|
|
|
178
178
|
const {
|
|
179
179
|
data,
|
|
180
180
|
error
|
|
181
|
-
} = await sb.from("pricing_schemas").select("*").eq("id", psId).or(`store_id.eq.${sid},
|
|
181
|
+
} = await sb.from("pricing_schemas").select("*").eq("id", psId).or(`store_id.eq.${sid},store_id.is.null`).single();
|
|
182
182
|
if (error) return {
|
|
183
183
|
success: false,
|
|
184
184
|
error: error.message
|
|
@@ -252,7 +252,7 @@ export async function handleSchemaActions(sb, args, sid) {
|
|
|
252
252
|
const {
|
|
253
253
|
data,
|
|
254
254
|
error
|
|
255
|
-
} = await sb.from("pricing_schemas").update(updates).eq("id", psId).
|
|
255
|
+
} = await sb.from("pricing_schemas").update(updates).eq("id", psId).or(`store_id.eq.${sid},store_id.is.null`).select("id, name, slug, tiers, quality_tier, is_active, catalog_id, updated_at").single();
|
|
256
256
|
return error ? {
|
|
257
257
|
success: false,
|
|
258
258
|
error: error.message
|
|
@@ -274,7 +274,7 @@ export async function handleSchemaActions(sb, args, sid) {
|
|
|
274
274
|
} = await sb.from("pricing_schemas").update({
|
|
275
275
|
is_active: false,
|
|
276
276
|
deleted_at: new Date().toISOString()
|
|
277
|
-
}).eq("id", psId).
|
|
277
|
+
}).eq("id", psId).or(`store_id.eq.${sid},store_id.is.null`).select("id, name, is_active").single();
|
|
278
278
|
return error ? {
|
|
279
279
|
success: false,
|
|
280
280
|
error: error.message
|
|
@@ -313,7 +313,7 @@ export async function handleSchemaActions(sb, args, sid) {
|
|
|
313
313
|
const {
|
|
314
314
|
data: schemaCheck,
|
|
315
315
|
error: schemaErr
|
|
316
|
-
} = await sb.from(schemaTable).select("id").eq("id", schemaId).or(`store_id.eq.${sid},
|
|
316
|
+
} = await sb.from(schemaTable).select("id").eq("id", schemaId).or(`store_id.eq.${sid},store_id.is.null`).single();
|
|
317
317
|
if (schemaErr || !schemaCheck) {
|
|
318
318
|
return {
|
|
319
319
|
success: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-schemas.js","names":["handleSchemaActions","sb","args","sid","action","q","from","select","eq","public_only","or","catalog_id","limit","data","error","order","success","message","count","length","fsId","field_schema_id","schema_id","single","assignments","assigned_categories","map","a","category","name","fields","Array","isArray","catalogId","defaultCatalog","id","insert","store_id","slug","toLowerCase","replace","description","icon","is_public","undefined","updates","is_active","update","deleted_at","Date","toISOString","psId","pricing_schema_id","tiers","quality_tier","target","schemaType","schema_type","targetId","target_id","schemaId","targetTable","ownerCheck","ownerErr","schemaTable","schemaCheck","schemaErr","table","fkCol","schemaCol","row","sort_order","upsert","onConflict","productUpdates","schema","pricing_data","product","existing","custom_fields","rebuilt","f","key","default","Object","keys","delete","removed"],"sources":["../../../src/server/handlers/catalog-schemas.ts"],"sourcesContent":["// catalog-schemas.ts — Field schema and Pricing schema CRUD + schema assignments\n\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\n\nexport async function handleSchemaActions(\n sb: SupabaseClient,\n args: Record<string, unknown>,\n sid: string,\n): Promise<{ success: boolean; [key: string]: unknown }> {\n switch (args.action) {\n // ======================== FIELD SCHEMAS ========================\n\n case \"list_field_schemas\": {\n let q = sb.from(\"field_schemas\")\n .select(\"id, name, slug, description, icon, fields, is_public, is_active, catalog_id, store_id, install_count, created_at\")\n .eq(\"is_active\", true);\n if (args.public_only === true) {\n q = q.eq(\"is_public\", true);\n } else {\n q = q.or(`store_id.eq.${sid},is_public.eq.true`);\n }\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.limit) q = q.limit(args.limit as number);\n const { data, error } = await q.order(\"name\");\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"get_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n const { data, error } = await sb.from(\"field_schemas\").select(\"*\").eq(\"id\", fsId)\n .or(`store_id.eq.${sid},is_public.eq.true`).single();\n if (error) return { success: false, error: error.message };\n\n const { data: assignments } = await sb.from(\"category_field_schemas\")\n .select(\"category:categories!category_id(id, name)\").eq(\"field_schema_id\", fsId).eq(\"is_active\", true);\n\n return { success: true, data: { ...data, assigned_categories: assignments?.map(a => a.category) || [] } };\n }\n\n case \"create_field_schema\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n if (!args.fields || !Array.isArray(args.fields)) return { success: false, error: \"fields array is required\" };\n\n let catalogId = args.catalog_id as string | undefined;\n if (!catalogId) {\n const { data: defaultCatalog } = await sb.from(\"catalogs\")\n .select(\"id\").eq(\"store_id\", sid).eq(\"is_default\", true).single();\n if (defaultCatalog) catalogId = defaultCatalog.id;\n }\n\n const insert: Record<string, unknown> = {\n store_id: sid,\n name,\n slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),\n fields: args.fields\n };\n if (args.description) insert.description = args.description;\n if (args.icon) insert.icon = args.icon;\n if (catalogId) insert.catalog_id = catalogId;\n if (args.is_public !== undefined) insert.is_public = args.is_public;\n\n const { data, error } = await sb.from(\"field_schemas\").insert(insert)\n .select(\"id, name, slug, fields, icon, is_active, catalog_id, created_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"update_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.icon !== undefined) updates.icon = args.icon;\n if (args.fields !== undefined) updates.fields = args.fields;\n if (args.is_public !== undefined) updates.is_public = args.is_public;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n\n const { data, error } = await sb.from(\"field_schemas\")\n .update(updates).eq(\"id\", fsId).eq(\"store_id\", sid)\n .select(\"id, name, slug, fields, icon, is_active, catalog_id, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n const { data, error } = await sb.from(\"field_schemas\")\n .update({ is_active: false, deleted_at: new Date().toISOString() }).eq(\"id\", fsId).eq(\"store_id\", sid)\n .select(\"id, name, is_active\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== PRICING SCHEMAS ========================\n\n case \"list_pricing_schemas\": {\n let q = sb.from(\"pricing_schemas\")\n .select(\"id, name, slug, description, tiers, quality_tier, is_public, is_active, catalog_id, store_id, install_count, created_at\")\n .eq(\"is_active\", true);\n if (args.public_only === true) {\n q = q.eq(\"is_public\", true);\n } else {\n q = q.or(`store_id.eq.${sid},is_public.eq.true`);\n }\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.limit) q = q.limit(args.limit as number);\n const { data, error } = await q.order(\"name\");\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"get_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n const { data, error } = await sb.from(\"pricing_schemas\").select(\"*\").eq(\"id\", psId)\n .or(`store_id.eq.${sid},is_public.eq.true`).single();\n if (error) return { success: false, error: error.message };\n\n const { data: assignments } = await sb.from(\"category_pricing_schemas\")\n .select(\"category:categories!category_id(id, name)\").eq(\"pricing_schema_id\", psId).eq(\"is_active\", true);\n\n return { success: true, data: { ...data, assigned_categories: assignments?.map(a => a.category) || [] } };\n }\n\n case \"create_pricing_schema\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n if (!args.tiers || !Array.isArray(args.tiers)) return { success: false, error: \"tiers array is required\" };\n\n let catalogId = args.catalog_id as string | undefined;\n if (!catalogId) {\n const { data: defaultCatalog } = await sb.from(\"catalogs\")\n .select(\"id\").eq(\"store_id\", sid).eq(\"is_default\", true).single();\n if (defaultCatalog) catalogId = defaultCatalog.id;\n }\n\n const insert: Record<string, unknown> = {\n store_id: sid,\n name,\n slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),\n tiers: args.tiers\n };\n if (args.description) insert.description = args.description;\n if (args.quality_tier) insert.quality_tier = args.quality_tier;\n if (catalogId) insert.catalog_id = catalogId;\n if (args.is_public !== undefined) insert.is_public = args.is_public;\n\n const { data, error } = await sb.from(\"pricing_schemas\").insert(insert)\n .select(\"id, name, slug, tiers, quality_tier, is_active, catalog_id, created_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"update_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.tiers !== undefined) updates.tiers = args.tiers;\n if (args.quality_tier !== undefined) updates.quality_tier = args.quality_tier;\n if (args.is_public !== undefined) updates.is_public = args.is_public;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n\n const { data, error } = await sb.from(\"pricing_schemas\")\n .update(updates).eq(\"id\", psId).eq(\"store_id\", sid)\n .select(\"id, name, slug, tiers, quality_tier, is_active, catalog_id, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n const { data, error } = await sb.from(\"pricing_schemas\")\n .update({ is_active: false, deleted_at: new Date().toISOString() }).eq(\"id\", psId).eq(\"store_id\", sid)\n .select(\"id, name, is_active\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== SCHEMA ASSIGNMENTS ========================\n\n case \"assign_schema\": {\n const target = args.target as string;\n const schemaType = args.schema_type as string;\n const targetId = args.target_id as string;\n const schemaId = args.schema_id as string;\n if (!target || !schemaType || !targetId || !schemaId) {\n return { success: false, error: \"target (category|product), schema_type (field|pricing), target_id, and schema_id are required\" };\n }\n\n const targetTable = target === \"product\" ? \"products\" : \"categories\";\n const { data: ownerCheck, error: ownerErr } = await sb.from(targetTable)\n .select(\"id\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n if (ownerErr || !ownerCheck) {\n return { success: false, error: `${target} not found or does not belong to this store` };\n }\n\n const schemaTable = schemaType === \"field\" ? \"field_schemas\" : \"pricing_schemas\";\n const { data: schemaCheck, error: schemaErr } = await sb.from(schemaTable)\n .select(\"id\").eq(\"id\", schemaId).or(`store_id.eq.${sid},is_public.eq.true`).single();\n if (schemaErr || !schemaCheck) {\n return { success: false, error: `${schemaType} schema not found or not accessible` };\n }\n\n const table = target === \"product\"\n ? (schemaType === \"field\" ? \"product_field_schemas\" : \"product_pricing_schemas\")\n : (schemaType === \"field\" ? \"category_field_schemas\" : \"category_pricing_schemas\");\n const fkCol = target === \"product\" ? \"product_id\" : \"category_id\";\n const schemaCol = schemaType === \"field\" ? \"field_schema_id\" : \"pricing_schema_id\";\n\n const row: Record<string, unknown> = { [fkCol]: targetId, [schemaCol]: schemaId };\n if (args.sort_order !== undefined) row.sort_order = args.sort_order;\n\n const { data, error } = await sb.from(table).upsert(row, { onConflict: `${fkCol},${schemaCol}` }).select().single();\n if (error) return { success: false, error: error.message };\n\n if (target === \"product\") {\n const productUpdates: Record<string, unknown> = {};\n if (schemaType === \"pricing\") {\n const { data: schema } = await sb.from(\"pricing_schemas\").select(\"tiers, quality_tier\").eq(\"id\", schemaId).single();\n productUpdates.pricing_schema_id = schemaId;\n if (schema?.tiers) productUpdates.pricing_data = schema.tiers;\n }\n if (schemaType === \"field\") {\n const { data: schema } = await sb.from(\"field_schemas\").select(\"fields\").eq(\"id\", schemaId).single();\n if (schema?.fields && Array.isArray(schema.fields)) {\n const { data: product } = await sb.from(\"products\").select(\"custom_fields\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n const existing = (product?.custom_fields as Record<string, unknown>) || {};\n const rebuilt: Record<string, unknown> = {};\n for (const f of schema.fields) {\n const key = (f as any).key;\n if (key) rebuilt[key] = (key in existing) ? existing[key] : ((f as any).default ?? null);\n }\n productUpdates.custom_fields = rebuilt;\n }\n }\n if (Object.keys(productUpdates).length > 0) {\n await sb.from(\"products\").update(productUpdates).eq(\"id\", targetId).eq(\"store_id\", sid);\n }\n }\n\n return { success: true, data };\n }\n\n case \"unassign_schema\": {\n const target = args.target as string;\n const schemaType = args.schema_type as string;\n const targetId = args.target_id as string;\n const schemaId = args.schema_id as string;\n if (!target || !schemaType || !targetId || !schemaId) {\n return { success: false, error: \"target (category|product), schema_type (field|pricing), target_id, and schema_id are required\" };\n }\n\n const targetTable = target === \"product\" ? \"products\" : \"categories\";\n const { data: ownerCheck, error: ownerErr } = await sb.from(targetTable)\n .select(\"id\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n if (ownerErr || !ownerCheck) {\n return { success: false, error: `${target} not found or does not belong to this store` };\n }\n\n const table = target === \"product\"\n ? (schemaType === \"field\" ? \"product_field_schemas\" : \"product_pricing_schemas\")\n : (schemaType === \"field\" ? \"category_field_schemas\" : \"category_pricing_schemas\");\n const fkCol = target === \"product\" ? \"product_id\" : \"category_id\";\n const schemaCol = schemaType === \"field\" ? \"field_schema_id\" : \"pricing_schema_id\";\n\n const { error } = await sb.from(table).delete().eq(fkCol, targetId).eq(schemaCol, schemaId);\n return error ? { success: false, error: error.message } : { success: true, data: { removed: true, target, schema_type: schemaType, target_id: targetId, schema_id: schemaId } };\n }\n\n default:\n return { success: false, error: `Unknown schema action: ${args.action}` };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"catalog-schemas.js","names":["handleSchemaActions","sb","args","sid","action","q","from","select","eq","public_only","or","catalog_id","limit","data","error","order","success","message","count","length","fsId","field_schema_id","schema_id","single","assignments","assigned_categories","map","a","category","name","fields","Array","isArray","catalogId","defaultCatalog","id","insert","store_id","slug","toLowerCase","replace","description","icon","is_public","undefined","updates","is_active","update","deleted_at","Date","toISOString","psId","pricing_schema_id","tiers","quality_tier","target","schemaType","schema_type","targetId","target_id","schemaId","targetTable","ownerCheck","ownerErr","schemaTable","schemaCheck","schemaErr","table","fkCol","schemaCol","row","sort_order","upsert","onConflict","productUpdates","schema","pricing_data","product","existing","custom_fields","rebuilt","f","key","default","Object","keys","delete","removed"],"sources":["../../../src/server/handlers/catalog-schemas.ts"],"sourcesContent":["// catalog-schemas.ts — Field schema and Pricing schema CRUD + schema assignments\n\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\n\nexport async function handleSchemaActions(\n sb: SupabaseClient,\n args: Record<string, unknown>,\n sid: string,\n): Promise<{ success: boolean; [key: string]: unknown }> {\n switch (args.action) {\n // ======================== FIELD SCHEMAS ========================\n\n case \"list_field_schemas\": {\n let q = sb.from(\"field_schemas\")\n .select(\"id, name, slug, description, icon, fields, is_public, is_active, catalog_id, store_id, install_count, created_at\")\n .eq(\"is_active\", true);\n if (args.public_only === true) {\n q = q.eq(\"is_public\", true);\n } else {\n q = q.or(`store_id.eq.${sid},store_id.is.null`);\n }\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.limit) q = q.limit(args.limit as number);\n const { data, error } = await q.order(\"name\");\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"get_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n const { data, error } = await sb.from(\"field_schemas\").select(\"*\").eq(\"id\", fsId)\n .or(`store_id.eq.${sid},store_id.is.null`).single();\n if (error) return { success: false, error: error.message };\n\n const { data: assignments } = await sb.from(\"category_field_schemas\")\n .select(\"category:categories!category_id(id, name)\").eq(\"field_schema_id\", fsId).eq(\"is_active\", true);\n\n return { success: true, data: { ...data, assigned_categories: assignments?.map(a => a.category) || [] } };\n }\n\n case \"create_field_schema\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n if (!args.fields || !Array.isArray(args.fields)) return { success: false, error: \"fields array is required\" };\n\n let catalogId = args.catalog_id as string | undefined;\n if (!catalogId) {\n const { data: defaultCatalog } = await sb.from(\"catalogs\")\n .select(\"id\").eq(\"store_id\", sid).eq(\"is_default\", true).single();\n if (defaultCatalog) catalogId = defaultCatalog.id;\n }\n\n const insert: Record<string, unknown> = {\n store_id: sid,\n name,\n slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),\n fields: args.fields\n };\n if (args.description) insert.description = args.description;\n if (args.icon) insert.icon = args.icon;\n if (catalogId) insert.catalog_id = catalogId;\n if (args.is_public !== undefined) insert.is_public = args.is_public;\n\n const { data, error } = await sb.from(\"field_schemas\").insert(insert)\n .select(\"id, name, slug, fields, icon, is_active, catalog_id, created_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"update_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.icon !== undefined) updates.icon = args.icon;\n if (args.fields !== undefined) updates.fields = args.fields;\n if (args.is_public !== undefined) updates.is_public = args.is_public;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n\n const { data, error } = await sb.from(\"field_schemas\")\n .update(updates).eq(\"id\", fsId).or(`store_id.eq.${sid},store_id.is.null`)\n .select(\"id, name, slug, fields, icon, is_active, catalog_id, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n const { data, error } = await sb.from(\"field_schemas\")\n .update({ is_active: false, deleted_at: new Date().toISOString() }).eq(\"id\", fsId).or(`store_id.eq.${sid},store_id.is.null`)\n .select(\"id, name, is_active\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== PRICING SCHEMAS ========================\n\n case \"list_pricing_schemas\": {\n let q = sb.from(\"pricing_schemas\")\n .select(\"id, name, slug, description, tiers, quality_tier, is_public, is_active, catalog_id, store_id, install_count, created_at\")\n .eq(\"is_active\", true);\n if (args.public_only === true) {\n q = q.eq(\"is_public\", true);\n } else {\n q = q.or(`store_id.eq.${sid},store_id.is.null`);\n }\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.limit) q = q.limit(args.limit as number);\n const { data, error } = await q.order(\"name\");\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"get_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n const { data, error } = await sb.from(\"pricing_schemas\").select(\"*\").eq(\"id\", psId)\n .or(`store_id.eq.${sid},store_id.is.null`).single();\n if (error) return { success: false, error: error.message };\n\n const { data: assignments } = await sb.from(\"category_pricing_schemas\")\n .select(\"category:categories!category_id(id, name)\").eq(\"pricing_schema_id\", psId).eq(\"is_active\", true);\n\n return { success: true, data: { ...data, assigned_categories: assignments?.map(a => a.category) || [] } };\n }\n\n case \"create_pricing_schema\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n if (!args.tiers || !Array.isArray(args.tiers)) return { success: false, error: \"tiers array is required\" };\n\n let catalogId = args.catalog_id as string | undefined;\n if (!catalogId) {\n const { data: defaultCatalog } = await sb.from(\"catalogs\")\n .select(\"id\").eq(\"store_id\", sid).eq(\"is_default\", true).single();\n if (defaultCatalog) catalogId = defaultCatalog.id;\n }\n\n const insert: Record<string, unknown> = {\n store_id: sid,\n name,\n slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),\n tiers: args.tiers\n };\n if (args.description) insert.description = args.description;\n if (args.quality_tier) insert.quality_tier = args.quality_tier;\n if (catalogId) insert.catalog_id = catalogId;\n if (args.is_public !== undefined) insert.is_public = args.is_public;\n\n const { data, error } = await sb.from(\"pricing_schemas\").insert(insert)\n .select(\"id, name, slug, tiers, quality_tier, is_active, catalog_id, created_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"update_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.tiers !== undefined) updates.tiers = args.tiers;\n if (args.quality_tier !== undefined) updates.quality_tier = args.quality_tier;\n if (args.is_public !== undefined) updates.is_public = args.is_public;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n\n const { data, error } = await sb.from(\"pricing_schemas\")\n .update(updates).eq(\"id\", psId).or(`store_id.eq.${sid},store_id.is.null`)\n .select(\"id, name, slug, tiers, quality_tier, is_active, catalog_id, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n const { data, error } = await sb.from(\"pricing_schemas\")\n .update({ is_active: false, deleted_at: new Date().toISOString() }).eq(\"id\", psId).or(`store_id.eq.${sid},store_id.is.null`)\n .select(\"id, name, is_active\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== SCHEMA ASSIGNMENTS ========================\n\n case \"assign_schema\": {\n const target = args.target as string;\n const schemaType = args.schema_type as string;\n const targetId = args.target_id as string;\n const schemaId = args.schema_id as string;\n if (!target || !schemaType || !targetId || !schemaId) {\n return { success: false, error: \"target (category|product), schema_type (field|pricing), target_id, and schema_id are required\" };\n }\n\n const targetTable = target === \"product\" ? \"products\" : \"categories\";\n const { data: ownerCheck, error: ownerErr } = await sb.from(targetTable)\n .select(\"id\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n if (ownerErr || !ownerCheck) {\n return { success: false, error: `${target} not found or does not belong to this store` };\n }\n\n const schemaTable = schemaType === \"field\" ? \"field_schemas\" : \"pricing_schemas\";\n const { data: schemaCheck, error: schemaErr } = await sb.from(schemaTable)\n .select(\"id\").eq(\"id\", schemaId).or(`store_id.eq.${sid},store_id.is.null`).single();\n if (schemaErr || !schemaCheck) {\n return { success: false, error: `${schemaType} schema not found or not accessible` };\n }\n\n const table = target === \"product\"\n ? (schemaType === \"field\" ? \"product_field_schemas\" : \"product_pricing_schemas\")\n : (schemaType === \"field\" ? \"category_field_schemas\" : \"category_pricing_schemas\");\n const fkCol = target === \"product\" ? \"product_id\" : \"category_id\";\n const schemaCol = schemaType === \"field\" ? \"field_schema_id\" : \"pricing_schema_id\";\n\n const row: Record<string, unknown> = { [fkCol]: targetId, [schemaCol]: schemaId };\n if (args.sort_order !== undefined) row.sort_order = args.sort_order;\n\n const { data, error } = await sb.from(table).upsert(row, { onConflict: `${fkCol},${schemaCol}` }).select().single();\n if (error) return { success: false, error: error.message };\n\n if (target === \"product\") {\n const productUpdates: Record<string, unknown> = {};\n if (schemaType === \"pricing\") {\n const { data: schema } = await sb.from(\"pricing_schemas\").select(\"tiers, quality_tier\").eq(\"id\", schemaId).single();\n productUpdates.pricing_schema_id = schemaId;\n if (schema?.tiers) productUpdates.pricing_data = schema.tiers;\n }\n if (schemaType === \"field\") {\n const { data: schema } = await sb.from(\"field_schemas\").select(\"fields\").eq(\"id\", schemaId).single();\n if (schema?.fields && Array.isArray(schema.fields)) {\n const { data: product } = await sb.from(\"products\").select(\"custom_fields\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n const existing = (product?.custom_fields as Record<string, unknown>) || {};\n const rebuilt: Record<string, unknown> = {};\n for (const f of schema.fields) {\n const key = (f as any).key;\n if (key) rebuilt[key] = (key in existing) ? existing[key] : ((f as any).default ?? null);\n }\n productUpdates.custom_fields = rebuilt;\n }\n }\n if (Object.keys(productUpdates).length > 0) {\n await sb.from(\"products\").update(productUpdates).eq(\"id\", targetId).eq(\"store_id\", sid);\n }\n }\n\n return { success: true, data };\n }\n\n case \"unassign_schema\": {\n const target = args.target as string;\n const schemaType = args.schema_type as string;\n const targetId = args.target_id as string;\n const schemaId = args.schema_id as string;\n if (!target || !schemaType || !targetId || !schemaId) {\n return { success: false, error: \"target (category|product), schema_type (field|pricing), target_id, and schema_id are required\" };\n }\n\n const targetTable = target === \"product\" ? \"products\" : \"categories\";\n const { data: ownerCheck, error: ownerErr } = await sb.from(targetTable)\n .select(\"id\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n if (ownerErr || !ownerCheck) {\n return { success: false, error: `${target} not found or does not belong to this store` };\n }\n\n const table = target === \"product\"\n ? (schemaType === \"field\" ? \"product_field_schemas\" : \"product_pricing_schemas\")\n : (schemaType === \"field\" ? \"category_field_schemas\" : \"category_pricing_schemas\");\n const fkCol = target === \"product\" ? \"product_id\" : \"category_id\";\n const schemaCol = schemaType === \"field\" ? \"field_schema_id\" : \"pricing_schema_id\";\n\n const { error } = await sb.from(table).delete().eq(fkCol, targetId).eq(schemaCol, schemaId);\n return error ? { success: false, error: error.message } : { success: true, data: { removed: true, target, schema_type: schemaType, target_id: targetId, schema_id: schemaId } };\n }\n\n default:\n return { success: false, error: `Unknown schema action: ${args.action}` };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -135,7 +135,7 @@ export async function handleProducts(sb, args, storeId) {
|
|
|
135
135
|
const {
|
|
136
136
|
data: product,
|
|
137
137
|
error: pErr
|
|
138
|
-
} = await sb.from("products").select("*, category:categories!primary_category_id(id, name, slug)").eq("id", pid).eq("store_id", sid).single();
|
|
138
|
+
} = await sb.from("products").select("*, category:categories!primary_category_id(id, name, slug)").eq("id", pid).eq("store_id", sid).neq("status", "archived").single();
|
|
139
139
|
if (pErr) return {
|
|
140
140
|
success: false,
|
|
141
141
|
error: pErr.message
|