@use-stall/core 0.1.2 → 0.1.3

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.js CHANGED
@@ -58,8 +58,8 @@ __export(index_exports, {
58
58
  remove_from_sync_queue: () => remove_from_sync_queue,
59
59
  save_bulk_data: () => save_bulk_data,
60
60
  sync_service: () => sync_service,
61
+ tax_classes: () => tax_classes,
61
62
  tax_rates: () => tax_rates,
62
- tax_regions: () => tax_regions,
63
63
  update_sync_queue_status: () => update_sync_queue_status,
64
64
  variants: () => variants
65
65
  });
@@ -73,20 +73,20 @@ var schemas = {
73
73
  connector_cache: "id",
74
74
  sync_queue: "++id, status, timestamp, priority, table, stall_offline_id, action, retry_count",
75
75
  sync_logs: "++id, sync_batch_id, timestamp, table, action, status, stall_offline_id",
76
- products: "++id, name, sku, created_at, updated_at, active, vendor, product_type, collection_id, category_id, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
77
- variants: "++id, product_id, sku, name, created_at, updated_at, active, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
78
- collections: "++id, name, created_at, updated_at, active, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
79
- categories: "++id, name, created_at, updated_at, active, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
80
- inventory_levels: "++id, product_id, variant_id, location_id, quantity, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
81
- inventory_history: "++id, product_id, variant_id, location_id, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
76
+ products: "++id, sku, barcode, title, handle, description, body_html, created_at, updated_at, deleted_at, status, type, thumbnail, brand, tags, categories, attributes, collections, variants, price, sale_price, price_currency, cost_price, taxable, tax_class, on_sale, track_inventory, unavailable, committed, in_stock, on_hand, low_stock_threshold, locations, weight, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at, metadata.stall_offline_deleted_at",
77
+ variants: "++id, sku, barcode, product_id, date, title, description, price, cost_price, sale_price, on_sale, status, track_inventory, unavailable, committed, in_stock, on_hand, low_stock_threshold, weight, thumbnail, attributes, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at, metadata.stall_offline_deleted_at",
78
+ collections: "++id, name, description, thumbnail, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at, metadata.stall_offline_deleted_at, linked_products, linked_categories, createAt, lastUpdatedAt",
79
+ categories: "++id, name, description, thumbnail, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at, metadata.stall_offline_deleted_at, date, count, parent_id",
80
+ inventory_levels: "++id, location_id, product_id, variant_id, unavailable, committed, in_stock, on_hand, low_stock_threshold, last_updatedAt, created_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at, metadata.stall_offline_deleted_at",
81
+ inventory_history: "++id, location_id, product_id, variant_id, unavailable, committed, in_stock, on_hand, low_stock_threshold, last_updatedAt, created_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at, metadata.stall_offline_deleted_at",
82
82
  promotions: "++id, name, type, active, start_date, end_date, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
83
83
  orders: "++id, order_number, customer_id, location_id, status, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
84
84
  order_notes: "++id, order_id, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
85
85
  refunds: "++id, order_id, payment_id, status, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
86
86
  payment_providers: "++id, name, type, active, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
87
87
  payments: "++id, order_id, status, method, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
88
- tax_regions: "++id, name, country, alpha3, alpha2, tax_inclusive, is_default, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at, metadata.stall_offline_deleted_at",
89
- tax_rates: "++id, name, region_id, state, rate, type, code, compound, priority, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at, metadata.stall_offline_deleted_at",
88
+ tax_rates: "++id, name, rate, type, calculation_base, application, priority, compound, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at, metadata.stall_offline_deleted_at",
89
+ tax_classes: "++id, name, tax_calculation, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at, metadata.stall_offline_deleted_at",
90
90
  customers: "++id, email, phone, name, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
91
91
  locations: "++id, name, city, country, region, active, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at",
92
92
  fulfillments: "++id, order_id, status, created_at, updated_at, metadata.stall_offline_id, metadata.stall_offline_created_at, metadata.stall_offline_updated_at"
@@ -242,7 +242,7 @@ var cleanup_old_sync_logs = async (days = 30) => {
242
242
  // src/services/sync/sync-dependencies.ts
243
243
  var SYNC_DEPENDENCY_LAYERS = {
244
244
  1: [
245
- "tax_regions",
245
+ "tax_classes",
246
246
  "tax_rates",
247
247
  "categories",
248
248
  "collections",
@@ -259,8 +259,8 @@ var SYNC_DEPENDENCY_LAYERS = {
259
259
  var get_entity_dependencies = (table) => {
260
260
  const dependencies = {
261
261
  // Layer 1: Independent
262
- tax_regions: [],
263
- tax_rates: ["tax_regions"],
262
+ tax_classes: [],
263
+ tax_rates: ["tax_classes"],
264
264
  categories: [],
265
265
  collections: [],
266
266
  locations: [],
@@ -268,7 +268,7 @@ var get_entity_dependencies = (table) => {
268
268
  customers: [],
269
269
  promotions: [],
270
270
  // Layer 2: Product
271
- products: ["categories", "collections"],
271
+ products: ["tax_classes", "categories", "collections"],
272
272
  // Layer 3: Variants & Inventory
273
273
  variants: ["products"],
274
274
  inventory_levels: ["products", "variants"],
@@ -342,6 +342,7 @@ var update_dependent_references = async (props) => {
342
342
  try {
343
343
  const reference_map = {
344
344
  products: [
345
+ { table: "tax_classes", field: "class" },
345
346
  { table: "variants", field: "product_id" },
346
347
  { table: "inventory_levels", field: "product_id" }
347
348
  ],
@@ -357,8 +358,8 @@ var update_dependent_references = async (props) => {
357
358
  locations: [{ table: "orders", field: "location_id" }],
358
359
  categories: [{ table: "products", field: "category_id" }],
359
360
  collections: [{ table: "products", field: "collection_id" }],
360
- tax_regions: [{ table: "tax_rates", field: "region_id" }],
361
- tax_rates: [],
361
+ tax_rates: [{ table: "tax_classes", field: "class" }],
362
+ tax_classes: [],
362
363
  tags: [],
363
364
  inventory_levels: [],
364
365
  inventory_history: [],
@@ -385,90 +386,271 @@ var update_dependent_references = async (props) => {
385
386
  console.error(`Error updating dependent references for ${table}:`, error);
386
387
  }
387
388
  };
388
- var sync_queue_item = async (props) => {
389
- const { sdk, item, sync_batch_id } = props;
390
- const start_time = Date.now();
391
- try {
392
- const adapter = await sdk.adapter();
393
- if (!adapter) {
394
- throw new Error("Adapter not found");
395
- }
396
- const connector_config = sdk.options.configuration;
397
- const table_module = adapter[item.table];
398
- if (!table_module) {
399
- throw new Error(`Module ${item.table} not found in adapter`);
389
+ var group_items_by_action = (items) => {
390
+ return {
391
+ creates: items.filter((item) => item.action === "create"),
392
+ updates: items.filter((item) => item.action === "update"),
393
+ deletes: items.filter((item) => item.action === "delete")
394
+ };
395
+ };
396
+ var group_by_table = (items) => {
397
+ const grouped = /* @__PURE__ */ new Map();
398
+ for (const item of items) {
399
+ if (!grouped.has(item.table)) {
400
+ grouped.set(item.table, []);
400
401
  }
401
- let connector_id;
402
- if (item.action === "create") {
403
- const result = await table_module.create({
402
+ grouped.get(item.table).push(item);
403
+ }
404
+ return grouped;
405
+ };
406
+ var process_bulk_creates = async (props) => {
407
+ const { sdk, items, sync_batch_id } = props;
408
+ const connector_ids = /* @__PURE__ */ new Map();
409
+ let synced = 0;
410
+ let failed = 0;
411
+ if (items.length === 0) {
412
+ return { synced, failed, connector_ids };
413
+ }
414
+ const grouped = group_by_table(items);
415
+ for (const [table, table_items] of grouped) {
416
+ let start_time = Date.now();
417
+ try {
418
+ const adapter = await sdk.adapter();
419
+ if (!adapter) {
420
+ throw new Error("Adapter not found");
421
+ }
422
+ const connector_config = sdk.options.configuration;
423
+ const table_module = adapter[table];
424
+ if (!table_module) {
425
+ throw new Error(`Module ${table} not found in adapter`);
426
+ }
427
+ start_time = Date.now();
428
+ const create_data = table_items.map((item) => item.data);
429
+ const results = await table_module.bulk_create({
404
430
  connector_config,
405
- data: item.data
431
+ data: create_data
406
432
  });
407
- connector_id = result?.id;
408
- if (connector_id) {
409
- await replace_temporary_ids({
410
- table: item.table,
433
+ const duration = Date.now() - start_time;
434
+ if (Array.isArray(results)) {
435
+ for (let i = 0; i < table_items.length; i++) {
436
+ const item = table_items[i];
437
+ const result = results[i];
438
+ const connector_id = result?.id;
439
+ if (connector_id) {
440
+ connector_ids.set(item.stall_offline_id, connector_id);
441
+ await replace_temporary_ids({
442
+ table,
443
+ stall_offline_id: item.stall_offline_id,
444
+ connector_id
445
+ });
446
+ await add_sync_log({
447
+ sync_batch_id,
448
+ table,
449
+ action: "create",
450
+ document_id: item.document_id,
451
+ stall_offline_id: item.stall_offline_id,
452
+ connector_id,
453
+ status: "success",
454
+ duration_ms: duration
455
+ });
456
+ await remove_from_sync_queue(item.id);
457
+ synced++;
458
+ } else {
459
+ throw new Error(`No connector ID returned for item ${item.id}`);
460
+ }
461
+ }
462
+ } else {
463
+ throw new Error("Unexpected result format from bulk_create");
464
+ }
465
+ } catch (error) {
466
+ const duration = Date.now() - start_time;
467
+ console.error(`Error bulk creating items for table ${table}:`, error);
468
+ for (const item of table_items) {
469
+ const current_retries = item.retry_count || 0;
470
+ if (current_retries < MAX_RETRIES) {
471
+ await update_sync_queue_status({
472
+ id: item.id,
473
+ status: "pending",
474
+ error: error.message,
475
+ retry_count: current_retries + 1
476
+ });
477
+ } else {
478
+ await update_sync_queue_status({
479
+ id: item.id,
480
+ status: "failed",
481
+ error: `Max retries exceeded: ${error.message}`
482
+ });
483
+ }
484
+ await add_sync_log({
485
+ sync_batch_id,
486
+ table,
487
+ action: "create",
488
+ document_id: item.document_id,
411
489
  stall_offline_id: item.stall_offline_id,
412
- connector_id
490
+ status: "failed",
491
+ error: error.message,
492
+ duration_ms: duration
413
493
  });
494
+ failed++;
414
495
  }
415
- } else if (item.action === "update") {
416
- const result = await table_module.update({
417
- connector_config,
496
+ }
497
+ }
498
+ return { synced, failed, connector_ids };
499
+ };
500
+ var process_bulk_updates = async (props) => {
501
+ const { sdk, items, sync_batch_id } = props;
502
+ let synced = 0;
503
+ let failed = 0;
504
+ if (items.length === 0) {
505
+ return { synced, failed };
506
+ }
507
+ const grouped = group_by_table(items);
508
+ for (const [table, table_items] of grouped) {
509
+ let start_time = Date.now();
510
+ try {
511
+ const adapter = await sdk.adapter();
512
+ if (!adapter) {
513
+ throw new Error("Adapter not found");
514
+ }
515
+ const connector_config = sdk.options.configuration;
516
+ const table_module = adapter[table];
517
+ if (!table_module) {
518
+ throw new Error(`Module ${table} not found in adapter`);
519
+ }
520
+ start_time = Date.now();
521
+ const update_data = table_items.map((item) => ({
418
522
  id: item.document_id,
419
523
  data: item.data
420
- });
421
- connector_id = result?.id || item.document_id;
422
- } else if (item.action === "delete") {
423
- await table_module.delete({
524
+ }));
525
+ await table_module.bulk_update({
424
526
  connector_config,
425
- id: item.document_id
527
+ data: update_data
426
528
  });
427
- connector_id = item.document_id;
529
+ const duration = Date.now() - start_time;
530
+ for (const item of table_items) {
531
+ await add_sync_log({
532
+ sync_batch_id,
533
+ table,
534
+ action: "update",
535
+ document_id: item.document_id,
536
+ stall_offline_id: item.stall_offline_id,
537
+ connector_id: item.document_id,
538
+ status: "success",
539
+ duration_ms: duration
540
+ });
541
+ await remove_from_sync_queue(item.id);
542
+ synced++;
543
+ }
544
+ } catch (error) {
545
+ const duration = Date.now() - start_time;
546
+ console.error(`Error bulk updating items for table ${table}:`, error);
547
+ for (const item of table_items) {
548
+ const current_retries = item.retry_count || 0;
549
+ if (current_retries < MAX_RETRIES) {
550
+ await update_sync_queue_status({
551
+ id: item.id,
552
+ status: "pending",
553
+ error: error.message,
554
+ retry_count: current_retries + 1
555
+ });
556
+ } else {
557
+ await update_sync_queue_status({
558
+ id: item.id,
559
+ status: "failed",
560
+ error: `Max retries exceeded: ${error.message}`
561
+ });
562
+ }
563
+ await add_sync_log({
564
+ sync_batch_id,
565
+ table,
566
+ action: "update",
567
+ document_id: item.document_id,
568
+ stall_offline_id: item.stall_offline_id,
569
+ status: "failed",
570
+ error: error.message,
571
+ duration_ms: duration
572
+ });
573
+ failed++;
574
+ }
428
575
  }
429
- const duration = Date.now() - start_time;
430
- await add_sync_log({
431
- sync_batch_id,
432
- table: item.table,
433
- action: item.action,
434
- document_id: item.document_id,
435
- stall_offline_id: item.stall_offline_id,
436
- connector_id,
437
- status: "success",
438
- duration_ms: duration
439
- });
440
- await remove_from_sync_queue(item.id);
441
- return { success: true, connector_id };
442
- } catch (error) {
443
- const duration = Date.now() - start_time;
444
- console.error(`Error syncing item ${item.id}:`, error);
445
- const current_retries = item.retry_count || 0;
446
- if (current_retries < MAX_RETRIES) {
447
- await update_sync_queue_status({
448
- id: item.id,
449
- status: "pending",
450
- error: error.message,
451
- retry_count: current_retries + 1
452
- });
453
- } else {
454
- await update_sync_queue_status({
455
- id: item.id,
456
- status: "failed",
457
- error: `Max retries exceeded: ${error.message}`
576
+ }
577
+ return { synced, failed };
578
+ };
579
+ var process_bulk_deletes = async (props) => {
580
+ const { sdk, items, sync_batch_id } = props;
581
+ let synced = 0;
582
+ let failed = 0;
583
+ if (items.length === 0) {
584
+ return { synced, failed };
585
+ }
586
+ const grouped = group_by_table(items);
587
+ for (const [table, table_items] of grouped) {
588
+ let start_time = Date.now();
589
+ try {
590
+ const adapter = await sdk.adapter();
591
+ if (!adapter) {
592
+ throw new Error("Adapter not found");
593
+ }
594
+ const connector_config = sdk.options.configuration;
595
+ const table_module = adapter[table];
596
+ if (!table_module) {
597
+ throw new Error(`Module ${table} not found in adapter`);
598
+ }
599
+ start_time = Date.now();
600
+ const ids = table_items.map((item) => item.document_id);
601
+ await table_module.bulk_delete({
602
+ connector_config,
603
+ ids
458
604
  });
605
+ const duration = Date.now() - start_time;
606
+ for (const item of table_items) {
607
+ await add_sync_log({
608
+ sync_batch_id,
609
+ table,
610
+ action: "delete",
611
+ document_id: item.document_id,
612
+ stall_offline_id: item.stall_offline_id,
613
+ connector_id: item.document_id,
614
+ status: "success",
615
+ duration_ms: duration
616
+ });
617
+ await remove_from_sync_queue(item.id);
618
+ synced++;
619
+ }
620
+ } catch (error) {
621
+ const duration = Date.now() - start_time;
622
+ console.error(`Error bulk deleting items for table ${table}:`, error);
623
+ for (const item of table_items) {
624
+ const current_retries = item.retry_count || 0;
625
+ if (current_retries < MAX_RETRIES) {
626
+ await update_sync_queue_status({
627
+ id: item.id,
628
+ status: "pending",
629
+ error: error.message,
630
+ retry_count: current_retries + 1
631
+ });
632
+ } else {
633
+ await update_sync_queue_status({
634
+ id: item.id,
635
+ status: "failed",
636
+ error: `Max retries exceeded: ${error.message}`
637
+ });
638
+ }
639
+ await add_sync_log({
640
+ sync_batch_id,
641
+ table,
642
+ action: "delete",
643
+ document_id: item.document_id,
644
+ stall_offline_id: item.stall_offline_id,
645
+ status: "failed",
646
+ error: error.message,
647
+ duration_ms: duration
648
+ });
649
+ failed++;
650
+ }
459
651
  }
460
- await add_sync_log({
461
- sync_batch_id,
462
- table: item.table,
463
- action: item.action,
464
- document_id: item.document_id,
465
- stall_offline_id: item.stall_offline_id,
466
- status: "failed",
467
- error: error.message,
468
- duration_ms: duration
469
- });
470
- return { success: false, error: error.message };
471
652
  }
653
+ return { synced, failed };
472
654
  };
473
655
  var process_sync_queue = async (props) => {
474
656
  const { sdk } = props;
@@ -506,43 +688,92 @@ var process_sync_queue = async (props) => {
506
688
  );
507
689
  const synced_tables = /* @__PURE__ */ new Set();
508
690
  const items_to_retry = [];
509
- for (const item of sorted_items) {
510
- if (!are_dependencies_satisfied(item.table, synced_tables)) {
511
- items_to_retry.push(item);
512
- continue;
513
- }
514
- await update_sync_queue_status({
515
- id: item.id,
516
- status: "syncing"
517
- });
518
- const result = await sync_queue_item({
691
+ const connector_ids = /* @__PURE__ */ new Map();
692
+ const { creates, updates, deletes } = group_items_by_action(sorted_items);
693
+ if (creates.length > 0) {
694
+ const create_items = creates.filter(
695
+ (item) => are_dependencies_satisfied(item.table, synced_tables)
696
+ );
697
+ const create_retry_items = creates.filter(
698
+ (item) => !are_dependencies_satisfied(item.table, synced_tables)
699
+ );
700
+ const create_result = await process_bulk_creates({
519
701
  sdk,
520
- item,
702
+ items: create_items,
521
703
  sync_batch_id
522
704
  });
523
- if (result.success) {
524
- total_synced++;
525
- if (!synced_tables.has(item.table)) {
526
- synced_tables.add(item.table);
527
- }
528
- } else {
529
- total_failed++;
530
- }
531
- }
532
- for (const item of items_to_retry) {
533
- await update_sync_queue_status({
534
- id: item.id,
535
- status: "syncing"
705
+ total_synced += create_result.synced;
706
+ total_failed += create_result.failed;
707
+ connector_ids.forEach((v, k) => connector_ids.set(k, v));
708
+ create_items.forEach((item) => synced_tables.add(item.table));
709
+ items_to_retry.push(...create_retry_items);
710
+ }
711
+ if (updates.length > 0) {
712
+ const update_items = updates.filter(
713
+ (item) => are_dependencies_satisfied(item.table, synced_tables)
714
+ );
715
+ const update_retry_items = updates.filter(
716
+ (item) => !are_dependencies_satisfied(item.table, synced_tables)
717
+ );
718
+ const update_result = await process_bulk_updates({
719
+ sdk,
720
+ items: update_items,
721
+ sync_batch_id
536
722
  });
537
- const result = await sync_queue_item({
723
+ total_synced += update_result.synced;
724
+ total_failed += update_result.failed;
725
+ update_items.forEach((item) => synced_tables.add(item.table));
726
+ items_to_retry.push(...update_retry_items);
727
+ }
728
+ if (deletes.length > 0) {
729
+ const delete_items = deletes.filter(
730
+ (item) => are_dependencies_satisfied(item.table, synced_tables)
731
+ );
732
+ const delete_retry_items = deletes.filter(
733
+ (item) => !are_dependencies_satisfied(item.table, synced_tables)
734
+ );
735
+ const delete_result = await process_bulk_deletes({
538
736
  sdk,
539
- item,
737
+ items: delete_items,
540
738
  sync_batch_id
541
739
  });
542
- if (result.success) {
543
- total_synced++;
544
- } else {
545
- total_failed++;
740
+ total_synced += delete_result.synced;
741
+ total_failed += delete_result.failed;
742
+ delete_items.forEach((item) => synced_tables.add(item.table));
743
+ items_to_retry.push(...delete_retry_items);
744
+ }
745
+ if (items_to_retry.length > 0) {
746
+ const {
747
+ creates: retry_creates,
748
+ updates: retry_updates,
749
+ deletes: retry_deletes
750
+ } = group_items_by_action(items_to_retry);
751
+ if (retry_creates.length > 0) {
752
+ const create_result = await process_bulk_creates({
753
+ sdk,
754
+ items: retry_creates,
755
+ sync_batch_id
756
+ });
757
+ total_synced += create_result.synced;
758
+ total_failed += create_result.failed;
759
+ }
760
+ if (retry_updates.length > 0) {
761
+ const update_result = await process_bulk_updates({
762
+ sdk,
763
+ items: retry_updates,
764
+ sync_batch_id
765
+ });
766
+ total_synced += update_result.synced;
767
+ total_failed += update_result.failed;
768
+ }
769
+ if (retry_deletes.length > 0) {
770
+ const delete_result = await process_bulk_deletes({
771
+ sdk,
772
+ items: retry_deletes,
773
+ sync_batch_id
774
+ });
775
+ total_synced += delete_result.synced;
776
+ total_failed += delete_result.failed;
546
777
  }
547
778
  }
548
779
  return {
@@ -672,13 +903,16 @@ var clear_core_db = async () => {
672
903
  "refunds",
673
904
  "payment_providers",
674
905
  "payments",
675
- "tax_regions",
906
+ "tax_classes",
676
907
  "tax_rates",
677
908
  "customers",
678
909
  "locations",
679
910
  "fulfillment_types",
680
911
  "fulfillment_providers",
681
- "fulfillments"
912
+ "fulfillments",
913
+ "connector_cache",
914
+ "sync_queue",
915
+ "sync_logs"
682
916
  ];
683
917
  for (const table of tables) {
684
918
  await local_db?.[table]?.clear();
@@ -3593,7 +3827,7 @@ var payments = {
3593
3827
  bulk_delete: bulk_delete12
3594
3828
  };
3595
3829
 
3596
- // src/services/tax-regions.service.ts
3830
+ // src/services/tax-rates.service.ts
3597
3831
  var list13 = async (props) => {
3598
3832
  try {
3599
3833
  const { sdk, query } = props;
@@ -3605,15 +3839,15 @@ var list13 = async (props) => {
3605
3839
  }
3606
3840
  const adapter = await sdk.adapter();
3607
3841
  if (!adapter) throw new Error("Adapter not found");
3608
- const regions = await adapter.tax_regions.list({
3842
+ const rates = await adapter.tax_rates.list({
3609
3843
  connector_config: sdk.options.configuration,
3610
3844
  query
3611
3845
  });
3612
3846
  await save_bulk_data({
3613
- table: "tax_regions",
3614
- data: regions
3847
+ table: "tax_rates",
3848
+ data: rates
3615
3849
  });
3616
- return regions;
3850
+ return rates;
3617
3851
  } catch (error) {
3618
3852
  throw error;
3619
3853
  }
@@ -3629,12 +3863,12 @@ var retrieve13 = async (props) => {
3629
3863
  }
3630
3864
  const adapter = await sdk.adapter();
3631
3865
  if (!adapter) throw new Error("Adapter not found");
3632
- const region = await adapter.tax_regions.retrieve({
3866
+ const rate = await adapter.tax_rates.retrieve({
3633
3867
  connector_config: sdk.options.configuration,
3634
3868
  id
3635
3869
  });
3636
- await local_db.tax_regions.put(region);
3637
- return region;
3870
+ await local_db.tax_rates.put(rate);
3871
+ return rate;
3638
3872
  } catch (error) {
3639
3873
  throw error;
3640
3874
  }
@@ -3642,9 +3876,9 @@ var retrieve13 = async (props) => {
3642
3876
  var create13 = async (props) => {
3643
3877
  try {
3644
3878
  const { sdk, data } = props;
3645
- const offline_id = generate_offline_id("tax_region");
3879
+ const offline_id = generate_offline_id("tax_rate");
3646
3880
  const now = (/* @__PURE__ */ new Date()).toISOString();
3647
- const local_region = {
3881
+ const local_rate = {
3648
3882
  ...data,
3649
3883
  id: offline_id,
3650
3884
  metadata: {
@@ -3655,15 +3889,15 @@ var create13 = async (props) => {
3655
3889
  stall_offline_deleted_at: ""
3656
3890
  }
3657
3891
  };
3658
- await local_db.tax_regions.add(local_region);
3892
+ await local_db.tax_rates.add(local_rate);
3659
3893
  await add_to_sync_queue({
3660
3894
  action: "create",
3661
- table: "tax_regions",
3895
+ table: "tax_rates",
3662
3896
  document_id: offline_id,
3663
3897
  stall_offline_id: offline_id,
3664
- data: local_region
3898
+ data: local_rate
3665
3899
  });
3666
- return local_region;
3900
+ return local_rate;
3667
3901
  } catch (error) {
3668
3902
  throw error;
3669
3903
  }
@@ -3671,12 +3905,12 @@ var create13 = async (props) => {
3671
3905
  var update13 = async (props) => {
3672
3906
  try {
3673
3907
  const { sdk, id, data } = props;
3674
- const existing = await local_db.tax_regions.get(id);
3908
+ const existing = await local_db.tax_rates.get(id);
3675
3909
  if (!existing) {
3676
- throw new Error(`Tax region with id ${id} not found locally`);
3910
+ throw new Error(`Tax rate with id ${id} not found locally`);
3677
3911
  }
3678
3912
  const now = (/* @__PURE__ */ new Date()).toISOString();
3679
- const updated_region = {
3913
+ const updated_rate = {
3680
3914
  ...existing,
3681
3915
  ...data,
3682
3916
  id: existing.id,
@@ -3689,15 +3923,15 @@ var update13 = async (props) => {
3689
3923
  stall_offline_deleted_at: existing.metadata.stall_offline_deleted_at
3690
3924
  }
3691
3925
  };
3692
- await local_db.tax_regions.put(updated_region);
3926
+ await local_db.tax_rates.put(updated_rate);
3693
3927
  await add_to_sync_queue({
3694
3928
  action: "update",
3695
- table: "tax_regions",
3929
+ table: "tax_rates",
3696
3930
  document_id: id,
3697
3931
  stall_offline_id: existing.metadata.stall_offline_id,
3698
- data: updated_region
3932
+ data: updated_rate
3699
3933
  });
3700
- return updated_region;
3934
+ return updated_rate;
3701
3935
  } catch (error) {
3702
3936
  throw error;
3703
3937
  }
@@ -3705,18 +3939,18 @@ var update13 = async (props) => {
3705
3939
  var _delete13 = async (props) => {
3706
3940
  try {
3707
3941
  const { sdk, id } = props;
3708
- const existing = await local_db.tax_regions.get(id);
3942
+ const existing = await local_db.tax_rates.get(id);
3709
3943
  if (!existing) {
3710
- throw new Error(`Tax region with id ${id} not found locally`);
3944
+ throw new Error(`Tax rate with id ${id} not found locally`);
3711
3945
  }
3712
3946
  await add_to_sync_queue({
3713
3947
  action: "delete",
3714
- table: "tax_regions",
3948
+ table: "tax_rates",
3715
3949
  document_id: id,
3716
3950
  stall_offline_id: existing.metadata.stall_offline_id,
3717
3951
  data: { id }
3718
3952
  });
3719
- await local_db.tax_regions.delete(id);
3953
+ await local_db.tax_rates.delete(id);
3720
3954
  return;
3721
3955
  } catch (error) {
3722
3956
  throw error;
@@ -3726,31 +3960,31 @@ var bulk_create13 = async (props) => {
3726
3960
  try {
3727
3961
  const { sdk, data } = props;
3728
3962
  const now = (/* @__PURE__ */ new Date()).toISOString();
3729
- const created_regions = [];
3730
- for (const region of data) {
3731
- const offline_id = generate_offline_id("tax_region");
3732
- const local_region = {
3733
- ...region,
3963
+ const created_rates = [];
3964
+ for (const rate of data) {
3965
+ const offline_id = generate_offline_id("tax_rate");
3966
+ const local_rate = {
3967
+ ...rate,
3734
3968
  id: offline_id,
3735
3969
  metadata: {
3736
- ...region.metadata,
3970
+ ...rate.metadata,
3737
3971
  stall_offline_id: offline_id,
3738
3972
  stall_offline_created_at: now,
3739
3973
  stall_offline_updated_at: now,
3740
3974
  stall_offline_deleted_at: ""
3741
3975
  }
3742
3976
  };
3743
- await local_db.tax_regions.add(local_region);
3977
+ await local_db.tax_rates.add(local_rate);
3744
3978
  await add_to_sync_queue({
3745
3979
  action: "create",
3746
- table: "tax_regions",
3980
+ table: "tax_rates",
3747
3981
  document_id: offline_id,
3748
3982
  stall_offline_id: offline_id,
3749
- data: local_region
3983
+ data: local_rate
3750
3984
  });
3751
- created_regions.push(local_region);
3985
+ created_rates.push(local_rate);
3752
3986
  }
3753
- return created_regions;
3987
+ return created_rates;
3754
3988
  } catch (error) {
3755
3989
  throw error;
3756
3990
  }
@@ -3759,16 +3993,14 @@ var bulk_update13 = async (props) => {
3759
3993
  try {
3760
3994
  const { sdk, data } = props;
3761
3995
  const now = (/* @__PURE__ */ new Date()).toISOString();
3762
- const updated_regions = [];
3996
+ const updated_rates = [];
3763
3997
  for (const item of data) {
3764
- const existing = await local_db.tax_regions.get(item.id);
3998
+ const existing = await local_db.tax_rates.get(item.id);
3765
3999
  if (!existing) {
3766
- console.warn(
3767
- `Tax region with id ${item.id} not found locally, skipping`
3768
- );
4000
+ console.warn(`Tax rate with id ${item.id} not found locally, skipping`);
3769
4001
  continue;
3770
4002
  }
3771
- const updated_region = {
4003
+ const updated_rate = {
3772
4004
  ...existing,
3773
4005
  ...item.data,
3774
4006
  id: existing.id,
@@ -3781,17 +4013,17 @@ var bulk_update13 = async (props) => {
3781
4013
  stall_offline_deleted_at: existing.metadata.stall_offline_deleted_at
3782
4014
  }
3783
4015
  };
3784
- await local_db.tax_regions.put(updated_region);
4016
+ await local_db.tax_rates.put(updated_rate);
3785
4017
  await add_to_sync_queue({
3786
4018
  action: "update",
3787
- table: "tax_regions",
4019
+ table: "tax_rates",
3788
4020
  document_id: item.id,
3789
4021
  stall_offline_id: existing.metadata.stall_offline_id,
3790
- data: updated_region
4022
+ data: updated_rate
3791
4023
  });
3792
- updated_regions.push(updated_region);
4024
+ updated_rates.push(updated_rate);
3793
4025
  }
3794
- return updated_regions;
4026
+ return updated_rates;
3795
4027
  } catch (error) {
3796
4028
  throw error;
3797
4029
  }
@@ -3800,26 +4032,26 @@ var bulk_delete13 = async (props) => {
3800
4032
  try {
3801
4033
  const { sdk, ids } = props;
3802
4034
  for (const id of ids) {
3803
- const existing = await local_db.tax_regions.get(id);
4035
+ const existing = await local_db.tax_rates.get(id);
3804
4036
  if (!existing) {
3805
- console.warn(`Tax region with id ${id} not found locally, skipping`);
4037
+ console.warn(`Tax rate with id ${id} not found locally, skipping`);
3806
4038
  continue;
3807
4039
  }
3808
4040
  await add_to_sync_queue({
3809
4041
  action: "delete",
3810
- table: "tax_regions",
4042
+ table: "tax_rates",
3811
4043
  document_id: id,
3812
4044
  stall_offline_id: existing.metadata.stall_offline_id,
3813
4045
  data: { id }
3814
4046
  });
3815
- await local_db.tax_regions.delete(id);
4047
+ await local_db.tax_rates.delete(id);
3816
4048
  }
3817
4049
  return;
3818
4050
  } catch (error) {
3819
4051
  throw error;
3820
4052
  }
3821
4053
  };
3822
- var tax_regions = {
4054
+ var tax_rates = {
3823
4055
  list: list13,
3824
4056
  retrieve: retrieve13,
3825
4057
  create: create13,
@@ -3830,7 +4062,7 @@ var tax_regions = {
3830
4062
  bulk_delete: bulk_delete13
3831
4063
  };
3832
4064
 
3833
- // src/services/tax-rates.service.ts
4065
+ // src/services/tax-classes.service.ts
3834
4066
  var list14 = async (props) => {
3835
4067
  try {
3836
4068
  const { sdk, query } = props;
@@ -3842,15 +4074,15 @@ var list14 = async (props) => {
3842
4074
  }
3843
4075
  const adapter = await sdk.adapter();
3844
4076
  if (!adapter) throw new Error("Adapter not found");
3845
- const rates = await adapter.tax_rates.list({
4077
+ const classes = await adapter.tax_classes.list({
3846
4078
  connector_config: sdk.options.configuration,
3847
4079
  query
3848
4080
  });
3849
4081
  await save_bulk_data({
3850
- table: "tax_rates",
3851
- data: rates
4082
+ table: "tax_classes",
4083
+ data: classes
3852
4084
  });
3853
- return rates;
4085
+ return classes;
3854
4086
  } catch (error) {
3855
4087
  throw error;
3856
4088
  }
@@ -3866,12 +4098,12 @@ var retrieve14 = async (props) => {
3866
4098
  }
3867
4099
  const adapter = await sdk.adapter();
3868
4100
  if (!adapter) throw new Error("Adapter not found");
3869
- const rate = await adapter.tax_rates.retrieve({
4101
+ const tax_class = await adapter.tax_classes.retrieve({
3870
4102
  connector_config: sdk.options.configuration,
3871
4103
  id
3872
4104
  });
3873
- await local_db.tax_rates.put(rate);
3874
- return rate;
4105
+ await local_db.tax_classes.put(tax_class);
4106
+ return tax_class;
3875
4107
  } catch (error) {
3876
4108
  throw error;
3877
4109
  }
@@ -3879,9 +4111,9 @@ var retrieve14 = async (props) => {
3879
4111
  var create14 = async (props) => {
3880
4112
  try {
3881
4113
  const { sdk, data } = props;
3882
- const offline_id = generate_offline_id("tax_rate");
4114
+ const offline_id = generate_offline_id("tax_class");
3883
4115
  const now = (/* @__PURE__ */ new Date()).toISOString();
3884
- const local_rate = {
4116
+ const local_class = {
3885
4117
  ...data,
3886
4118
  id: offline_id,
3887
4119
  metadata: {
@@ -3892,15 +4124,15 @@ var create14 = async (props) => {
3892
4124
  stall_offline_deleted_at: ""
3893
4125
  }
3894
4126
  };
3895
- await local_db.tax_rates.add(local_rate);
4127
+ await local_db.tax_classes.add(local_class);
3896
4128
  await add_to_sync_queue({
3897
4129
  action: "create",
3898
- table: "tax_rates",
4130
+ table: "tax_classes",
3899
4131
  document_id: offline_id,
3900
4132
  stall_offline_id: offline_id,
3901
- data: local_rate
4133
+ data: local_class
3902
4134
  });
3903
- return local_rate;
4135
+ return local_class;
3904
4136
  } catch (error) {
3905
4137
  throw error;
3906
4138
  }
@@ -3908,12 +4140,12 @@ var create14 = async (props) => {
3908
4140
  var update14 = async (props) => {
3909
4141
  try {
3910
4142
  const { sdk, id, data } = props;
3911
- const existing = await local_db.tax_rates.get(id);
4143
+ const existing = await local_db.tax_classes.get(id);
3912
4144
  if (!existing) {
3913
- throw new Error(`Tax rate with id ${id} not found locally`);
4145
+ throw new Error(`Tax class with id ${id} not found locally`);
3914
4146
  }
3915
4147
  const now = (/* @__PURE__ */ new Date()).toISOString();
3916
- const updated_rate = {
4148
+ const updated_class = {
3917
4149
  ...existing,
3918
4150
  ...data,
3919
4151
  id: existing.id,
@@ -3926,15 +4158,15 @@ var update14 = async (props) => {
3926
4158
  stall_offline_deleted_at: existing.metadata.stall_offline_deleted_at
3927
4159
  }
3928
4160
  };
3929
- await local_db.tax_rates.put(updated_rate);
4161
+ await local_db.tax_classes.put(updated_class);
3930
4162
  await add_to_sync_queue({
3931
4163
  action: "update",
3932
- table: "tax_rates",
4164
+ table: "tax_classes",
3933
4165
  document_id: id,
3934
4166
  stall_offline_id: existing.metadata.stall_offline_id,
3935
- data: updated_rate
4167
+ data: updated_class
3936
4168
  });
3937
- return updated_rate;
4169
+ return updated_class;
3938
4170
  } catch (error) {
3939
4171
  throw error;
3940
4172
  }
@@ -3942,18 +4174,18 @@ var update14 = async (props) => {
3942
4174
  var _delete14 = async (props) => {
3943
4175
  try {
3944
4176
  const { sdk, id } = props;
3945
- const existing = await local_db.tax_rates.get(id);
4177
+ const existing = await local_db.tax_classes.get(id);
3946
4178
  if (!existing) {
3947
- throw new Error(`Tax rate with id ${id} not found locally`);
4179
+ throw new Error(`Tax class with id ${id} not found locally`);
3948
4180
  }
3949
4181
  await add_to_sync_queue({
3950
4182
  action: "delete",
3951
- table: "tax_rates",
4183
+ table: "tax_classes",
3952
4184
  document_id: id,
3953
4185
  stall_offline_id: existing.metadata.stall_offline_id,
3954
4186
  data: { id }
3955
4187
  });
3956
- await local_db.tax_rates.delete(id);
4188
+ await local_db.tax_classes.delete(id);
3957
4189
  return;
3958
4190
  } catch (error) {
3959
4191
  throw error;
@@ -3963,31 +4195,31 @@ var bulk_create14 = async (props) => {
3963
4195
  try {
3964
4196
  const { sdk, data } = props;
3965
4197
  const now = (/* @__PURE__ */ new Date()).toISOString();
3966
- const created_rates = [];
3967
- for (const rate of data) {
3968
- const offline_id = generate_offline_id("tax_rate");
3969
- const local_rate = {
3970
- ...rate,
4198
+ const created_classes = [];
4199
+ for (const tax_class of data) {
4200
+ const offline_id = generate_offline_id("tax_class");
4201
+ const local_class = {
4202
+ ...tax_class,
3971
4203
  id: offline_id,
3972
4204
  metadata: {
3973
- ...rate.metadata,
4205
+ ...tax_class.metadata,
3974
4206
  stall_offline_id: offline_id,
3975
4207
  stall_offline_created_at: now,
3976
4208
  stall_offline_updated_at: now,
3977
4209
  stall_offline_deleted_at: ""
3978
4210
  }
3979
4211
  };
3980
- await local_db.tax_rates.add(local_rate);
4212
+ await local_db.tax_classes.add(local_class);
3981
4213
  await add_to_sync_queue({
3982
4214
  action: "create",
3983
- table: "tax_rates",
4215
+ table: "tax_classes",
3984
4216
  document_id: offline_id,
3985
4217
  stall_offline_id: offline_id,
3986
- data: local_rate
4218
+ data: local_class
3987
4219
  });
3988
- created_rates.push(local_rate);
4220
+ created_classes.push(local_class);
3989
4221
  }
3990
- return created_rates;
4222
+ return created_classes;
3991
4223
  } catch (error) {
3992
4224
  throw error;
3993
4225
  }
@@ -3996,14 +4228,14 @@ var bulk_update14 = async (props) => {
3996
4228
  try {
3997
4229
  const { sdk, data } = props;
3998
4230
  const now = (/* @__PURE__ */ new Date()).toISOString();
3999
- const updated_rates = [];
4231
+ const updated_classes = [];
4000
4232
  for (const item of data) {
4001
- const existing = await local_db.tax_rates.get(item.id);
4233
+ const existing = await local_db.tax_classes.get(item.id);
4002
4234
  if (!existing) {
4003
- console.warn(`Tax rate with id ${item.id} not found locally, skipping`);
4235
+ console.warn(`Tax class with id ${item.id} not found locally, skipping`);
4004
4236
  continue;
4005
4237
  }
4006
- const updated_rate = {
4238
+ const updated_class = {
4007
4239
  ...existing,
4008
4240
  ...item.data,
4009
4241
  id: existing.id,
@@ -4016,17 +4248,17 @@ var bulk_update14 = async (props) => {
4016
4248
  stall_offline_deleted_at: existing.metadata.stall_offline_deleted_at
4017
4249
  }
4018
4250
  };
4019
- await local_db.tax_rates.put(updated_rate);
4251
+ await local_db.tax_classes.put(updated_class);
4020
4252
  await add_to_sync_queue({
4021
4253
  action: "update",
4022
- table: "tax_rates",
4254
+ table: "tax_classes",
4023
4255
  document_id: item.id,
4024
4256
  stall_offline_id: existing.metadata.stall_offline_id,
4025
- data: updated_rate
4257
+ data: updated_class
4026
4258
  });
4027
- updated_rates.push(updated_rate);
4259
+ updated_classes.push(updated_class);
4028
4260
  }
4029
- return updated_rates;
4261
+ return updated_classes;
4030
4262
  } catch (error) {
4031
4263
  throw error;
4032
4264
  }
@@ -4035,26 +4267,26 @@ var bulk_delete14 = async (props) => {
4035
4267
  try {
4036
4268
  const { sdk, ids } = props;
4037
4269
  for (const id of ids) {
4038
- const existing = await local_db.tax_rates.get(id);
4270
+ const existing = await local_db.tax_classes.get(id);
4039
4271
  if (!existing) {
4040
- console.warn(`Tax rate with id ${id} not found locally, skipping`);
4272
+ console.warn(`Tax class with id ${id} not found locally, skipping`);
4041
4273
  continue;
4042
4274
  }
4043
4275
  await add_to_sync_queue({
4044
4276
  action: "delete",
4045
- table: "tax_rates",
4277
+ table: "tax_classes",
4046
4278
  document_id: id,
4047
4279
  stall_offline_id: existing.metadata.stall_offline_id,
4048
4280
  data: { id }
4049
4281
  });
4050
- await local_db.tax_rates.delete(id);
4282
+ await local_db.tax_classes.delete(id);
4051
4283
  }
4052
4284
  return;
4053
4285
  } catch (error) {
4054
4286
  throw error;
4055
4287
  }
4056
4288
  };
4057
- var tax_rates = {
4289
+ var tax_classes = {
4058
4290
  list: list14,
4059
4291
  retrieve: retrieve14,
4060
4292
  create: create14,
@@ -4571,8 +4803,8 @@ var fulfillments = {
4571
4803
  remove_from_sync_queue,
4572
4804
  save_bulk_data,
4573
4805
  sync_service,
4806
+ tax_classes,
4574
4807
  tax_rates,
4575
- tax_regions,
4576
4808
  update_sync_queue_status,
4577
4809
  variants
4578
4810
  });