@devbro/pashmak 0.1.22 → 0.1.24
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/bin/app/console/DefaultCommand.cjs +42 -50
- package/dist/bin/app/console/KeyGenerateCommand.cjs +42 -50
- package/dist/bin/app/console/StartCommand.cjs +42 -50
- package/dist/bin/app/console/generate/GenerateControllerCommand.cjs +42 -50
- package/dist/bin/app/console/generate/index.cjs +42 -50
- package/dist/bin/app/console/index.cjs +46 -54
- package/dist/bin/app/console/migrate/GenerateMigrateCommand.cjs +42 -50
- package/dist/bin/app/console/migrate/MigrateCommand.cjs +44 -52
- package/dist/bin/app/console/migrate/MigrateRollbackCommand.cjs +44 -52
- package/dist/bin/app/console/migrate/index.cjs +46 -54
- package/dist/bin/app/console/queue/GenerateQueueMigrateCommand.cjs +42 -50
- package/dist/bin/cache.cjs +42 -50
- package/dist/bin/facades.cjs +42 -50
- package/dist/bin/factories.cjs +44 -52
- package/dist/bin/index.cjs +57 -66
- package/dist/bin/middlewares.cjs +42 -50
- package/dist/bin/queue.cjs +39 -47
- package/dist/factories.mjs +2 -15
- package/dist/factories.mjs.map +1 -1
- package/dist/queue.mjs +32 -29
- package/dist/queue.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1612,7 +1612,7 @@ var Router = class {
|
|
|
1612
1612
|
// src/facades.mts
|
|
1613
1613
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
1614
1614
|
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
1615
|
-
var
|
|
1615
|
+
var import_neko_context3 = require("@devbro/neko-context");
|
|
1616
1616
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
1617
1617
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
1618
1618
|
var import_neko_config = require("@devbro/neko-config");
|
|
@@ -1629,7 +1629,6 @@ var import_neko_logger = require("@devbro/neko-logger");
|
|
|
1629
1629
|
// src/factories.mts
|
|
1630
1630
|
var import_neko_mailer = require("@devbro/neko-mailer");
|
|
1631
1631
|
var import_neko_queue = require("@devbro/neko-queue");
|
|
1632
|
-
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
1633
1632
|
|
|
1634
1633
|
// src/queue.mts
|
|
1635
1634
|
var queue_exports = {};
|
|
@@ -1638,6 +1637,7 @@ __export(queue_exports, {
|
|
|
1638
1637
|
});
|
|
1639
1638
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
1640
1639
|
var import_neko_helper = require("@devbro/neko-helper");
|
|
1640
|
+
var import_neko_context2 = require("@devbro/neko-context");
|
|
1641
1641
|
var DatabaseTransport = class {
|
|
1642
1642
|
static {
|
|
1643
1643
|
__name(this, "DatabaseTransport");
|
|
@@ -1654,37 +1654,39 @@ var DatabaseTransport = class {
|
|
|
1654
1654
|
messageQueues = [];
|
|
1655
1655
|
repeater;
|
|
1656
1656
|
processMessage = /* @__PURE__ */ __name(async () => {
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1657
|
+
await import_neko_context2.context_provider.run(async () => {
|
|
1658
|
+
const conn = db(this.config.db_connection);
|
|
1659
|
+
try {
|
|
1660
|
+
await conn.connect();
|
|
1661
|
+
let q = conn.getQuery();
|
|
1662
|
+
let messages = await q.table(this.config.queue_table).whereOp("channel", "in", Array.from(this.channels.keys())).whereOp("status", "in", ["pending", "failed"]).limit(this.config.message_limit).orderBy("last_tried_at", "asc").get();
|
|
1663
|
+
for (let msg of messages) {
|
|
1664
|
+
try {
|
|
1665
|
+
let callback = this.channels.get(msg.channel);
|
|
1666
|
+
await callback(msg.message);
|
|
1667
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
1668
|
+
status: "processed",
|
|
1669
|
+
updated_at: /* @__PURE__ */ new Date(),
|
|
1670
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
1671
|
+
retried_count: (msg.retried_count || 0) + 1
|
|
1672
|
+
});
|
|
1673
|
+
} catch (error) {
|
|
1674
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
1675
|
+
status: "failed",
|
|
1676
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
1677
|
+
retried_count: (msg.retried_count || 0) + 1,
|
|
1678
|
+
process_message: error.message || "Error processing message"
|
|
1679
|
+
});
|
|
1680
|
+
}
|
|
1679
1681
|
}
|
|
1682
|
+
} catch (error) {
|
|
1683
|
+
logger().error("Error in DatabaseTransport listen interval:", {
|
|
1684
|
+
error
|
|
1685
|
+
});
|
|
1686
|
+
} finally {
|
|
1687
|
+
await conn.disconnect();
|
|
1680
1688
|
}
|
|
1681
|
-
}
|
|
1682
|
-
logger().error("Error in DatabaseTransport listen interval:", {
|
|
1683
|
-
error
|
|
1684
|
-
});
|
|
1685
|
-
} finally {
|
|
1686
|
-
await conn.disconnect();
|
|
1687
|
-
}
|
|
1689
|
+
});
|
|
1688
1690
|
}, "processMessage");
|
|
1689
1691
|
constructor(config5 = {}) {
|
|
1690
1692
|
this.config = { ...this.config, ...config5 };
|
|
@@ -1747,14 +1749,6 @@ var FlexibleFactory = class {
|
|
|
1747
1749
|
return ctor(...args);
|
|
1748
1750
|
}
|
|
1749
1751
|
};
|
|
1750
|
-
import_neko_mailer.MailerProviderFactory.register("logger", (opt) => {
|
|
1751
|
-
return new import_neko_mailer.FunctionProvider((mail) => {
|
|
1752
|
-
logger().info({
|
|
1753
|
-
msg: "Sending email",
|
|
1754
|
-
mail
|
|
1755
|
-
});
|
|
1756
|
-
});
|
|
1757
|
-
});
|
|
1758
1752
|
import_neko_mailer.MailerProviderFactory.register("ses", (opt) => {
|
|
1759
1753
|
return new import_neko_mailer.SESProvider(opt);
|
|
1760
1754
|
});
|
|
@@ -1764,13 +1758,11 @@ import_neko_mailer.MailerProviderFactory.register("smtp", (opt) => {
|
|
|
1764
1758
|
import_neko_mailer.MailerProviderFactory.register("memory", (opt) => {
|
|
1765
1759
|
return new import_neko_mailer.MemoryProvider();
|
|
1766
1760
|
});
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
1761
|
+
import_neko_queue.QueueTransportFactory.register("database", (opt) => {
|
|
1762
|
+
return new DatabaseTransport(opt);
|
|
1770
1763
|
});
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
1764
|
+
import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
|
|
1765
|
+
return new import_neko_queue.MemoryTransport(opt);
|
|
1774
1766
|
});
|
|
1775
1767
|
var CacheProviderFactory = class _CacheProviderFactory {
|
|
1776
1768
|
static {
|
|
@@ -1805,7 +1797,7 @@ import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
|
1805
1797
|
|
|
1806
1798
|
// src/facades.mts
|
|
1807
1799
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
1808
|
-
var
|
|
1800
|
+
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
1809
1801
|
var router = (0, import_neko_helper2.createSingleton)(() => new Router());
|
|
1810
1802
|
var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
1811
1803
|
const rc = new import_neko_scheduler.Scheduler();
|
|
@@ -1818,7 +1810,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
1818
1810
|
});
|
|
1819
1811
|
return rc;
|
|
1820
1812
|
});
|
|
1821
|
-
var db = /* @__PURE__ */ __name((label = "default") => (0,
|
|
1813
|
+
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
|
|
1822
1814
|
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
1823
1815
|
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
1824
1816
|
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
@@ -1874,7 +1866,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
1874
1866
|
const logger_config = import_neko_config.config.get(["loggers", label].join("."));
|
|
1875
1867
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
1876
1868
|
rc.setExtrasFunction((message) => {
|
|
1877
|
-
message.requestId = (0,
|
|
1869
|
+
message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
|
|
1878
1870
|
return message;
|
|
1879
1871
|
});
|
|
1880
1872
|
return rc;
|
|
@@ -1893,11 +1885,11 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
1893
1885
|
if (!queue_config) {
|
|
1894
1886
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
1895
1887
|
}
|
|
1896
|
-
const provider =
|
|
1888
|
+
const provider = import_neko_queue2.QueueTransportFactory.create(
|
|
1897
1889
|
queue_config.provider,
|
|
1898
1890
|
queue_config.config
|
|
1899
1891
|
);
|
|
1900
|
-
const rc = new
|
|
1892
|
+
const rc = new import_neko_queue2.QueueConnection(provider);
|
|
1901
1893
|
return rc;
|
|
1902
1894
|
});
|
|
1903
1895
|
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
@@ -1914,7 +1906,7 @@ var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
1914
1906
|
|
|
1915
1907
|
// src/app/console/migrate/MigrateCommand.mts
|
|
1916
1908
|
var import_clipanion2 = require("clipanion");
|
|
1917
|
-
var
|
|
1909
|
+
var import_neko_context4 = require("@devbro/neko-context");
|
|
1918
1910
|
var import_path2 = __toESM(require("path"), 1);
|
|
1919
1911
|
var import_promises = __toESM(require("fs/promises"), 1);
|
|
1920
1912
|
var import_neko_config2 = require("@devbro/neko-config");
|
|
@@ -1930,7 +1922,7 @@ var MigrateCommand = class extends import_clipanion2.Command {
|
|
|
1930
1922
|
description: `whether to drop all tables before running migrations by using rollback function`
|
|
1931
1923
|
});
|
|
1932
1924
|
async execute() {
|
|
1933
|
-
await
|
|
1925
|
+
await import_neko_context4.context_provider.run(async () => {
|
|
1934
1926
|
const db2 = db();
|
|
1935
1927
|
const schema = db2.getSchema();
|
|
1936
1928
|
if (this.fresh) {
|
|
@@ -2065,7 +2057,7 @@ cli().register(GenerateMigrateCommand);
|
|
|
2065
2057
|
|
|
2066
2058
|
// src/app/console/migrate/MigrateRollbackCommand.mts
|
|
2067
2059
|
var import_clipanion4 = require("clipanion");
|
|
2068
|
-
var
|
|
2060
|
+
var import_neko_context5 = require("@devbro/neko-context");
|
|
2069
2061
|
var import_path4 = __toESM(require("path"), 1);
|
|
2070
2062
|
var import_promises2 = __toESM(require("fs/promises"), 1);
|
|
2071
2063
|
var import_neko_config4 = require("@devbro/neko-config");
|
|
@@ -2080,7 +2072,7 @@ var MigrateRollbackCommand = class extends import_clipanion4.Command {
|
|
|
2080
2072
|
validator: t.isNumber()
|
|
2081
2073
|
});
|
|
2082
2074
|
async execute() {
|
|
2083
|
-
await
|
|
2075
|
+
await import_neko_context5.context_provider.run(async () => {
|
|
2084
2076
|
const db2 = db();
|
|
2085
2077
|
const schema = db2.getSchema();
|
|
2086
2078
|
const migrationsDir = import_neko_config4.config.get("migration.path");
|
|
@@ -455,7 +455,7 @@ var Router = class {
|
|
|
455
455
|
// src/facades.mts
|
|
456
456
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
457
457
|
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
458
|
-
var
|
|
458
|
+
var import_neko_context3 = require("@devbro/neko-context");
|
|
459
459
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
460
460
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
461
461
|
var import_neko_config = require("@devbro/neko-config");
|
|
@@ -472,7 +472,6 @@ var import_neko_logger = require("@devbro/neko-logger");
|
|
|
472
472
|
// src/factories.mts
|
|
473
473
|
var import_neko_mailer = require("@devbro/neko-mailer");
|
|
474
474
|
var import_neko_queue = require("@devbro/neko-queue");
|
|
475
|
-
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
476
475
|
|
|
477
476
|
// src/queue.mts
|
|
478
477
|
var queue_exports = {};
|
|
@@ -481,6 +480,7 @@ __export(queue_exports, {
|
|
|
481
480
|
});
|
|
482
481
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
483
482
|
var import_neko_helper = require("@devbro/neko-helper");
|
|
483
|
+
var import_neko_context2 = require("@devbro/neko-context");
|
|
484
484
|
var DatabaseTransport = class {
|
|
485
485
|
static {
|
|
486
486
|
__name(this, "DatabaseTransport");
|
|
@@ -497,37 +497,39 @@ var DatabaseTransport = class {
|
|
|
497
497
|
messageQueues = [];
|
|
498
498
|
repeater;
|
|
499
499
|
processMessage = /* @__PURE__ */ __name(async () => {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
500
|
+
await import_neko_context2.context_provider.run(async () => {
|
|
501
|
+
const conn = db(this.config.db_connection);
|
|
502
|
+
try {
|
|
503
|
+
await conn.connect();
|
|
504
|
+
let q = conn.getQuery();
|
|
505
|
+
let messages = await q.table(this.config.queue_table).whereOp("channel", "in", Array.from(this.channels.keys())).whereOp("status", "in", ["pending", "failed"]).limit(this.config.message_limit).orderBy("last_tried_at", "asc").get();
|
|
506
|
+
for (let msg of messages) {
|
|
507
|
+
try {
|
|
508
|
+
let callback = this.channels.get(msg.channel);
|
|
509
|
+
await callback(msg.message);
|
|
510
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
511
|
+
status: "processed",
|
|
512
|
+
updated_at: /* @__PURE__ */ new Date(),
|
|
513
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
514
|
+
retried_count: (msg.retried_count || 0) + 1
|
|
515
|
+
});
|
|
516
|
+
} catch (error) {
|
|
517
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
518
|
+
status: "failed",
|
|
519
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
520
|
+
retried_count: (msg.retried_count || 0) + 1,
|
|
521
|
+
process_message: error.message || "Error processing message"
|
|
522
|
+
});
|
|
523
|
+
}
|
|
522
524
|
}
|
|
525
|
+
} catch (error) {
|
|
526
|
+
logger().error("Error in DatabaseTransport listen interval:", {
|
|
527
|
+
error
|
|
528
|
+
});
|
|
529
|
+
} finally {
|
|
530
|
+
await conn.disconnect();
|
|
523
531
|
}
|
|
524
|
-
}
|
|
525
|
-
logger().error("Error in DatabaseTransport listen interval:", {
|
|
526
|
-
error
|
|
527
|
-
});
|
|
528
|
-
} finally {
|
|
529
|
-
await conn.disconnect();
|
|
530
|
-
}
|
|
532
|
+
});
|
|
531
533
|
}, "processMessage");
|
|
532
534
|
constructor(config3 = {}) {
|
|
533
535
|
this.config = { ...this.config, ...config3 };
|
|
@@ -590,14 +592,6 @@ var FlexibleFactory = class {
|
|
|
590
592
|
return ctor(...args);
|
|
591
593
|
}
|
|
592
594
|
};
|
|
593
|
-
import_neko_mailer.MailerProviderFactory.register("logger", (opt) => {
|
|
594
|
-
return new import_neko_mailer.FunctionProvider((mail) => {
|
|
595
|
-
logger().info({
|
|
596
|
-
msg: "Sending email",
|
|
597
|
-
mail
|
|
598
|
-
});
|
|
599
|
-
});
|
|
600
|
-
});
|
|
601
595
|
import_neko_mailer.MailerProviderFactory.register("ses", (opt) => {
|
|
602
596
|
return new import_neko_mailer.SESProvider(opt);
|
|
603
597
|
});
|
|
@@ -607,13 +601,11 @@ import_neko_mailer.MailerProviderFactory.register("smtp", (opt) => {
|
|
|
607
601
|
import_neko_mailer.MailerProviderFactory.register("memory", (opt) => {
|
|
608
602
|
return new import_neko_mailer.MemoryProvider();
|
|
609
603
|
});
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
604
|
+
import_neko_queue.QueueTransportFactory.register("database", (opt) => {
|
|
605
|
+
return new DatabaseTransport(opt);
|
|
613
606
|
});
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
607
|
+
import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
|
|
608
|
+
return new import_neko_queue.MemoryTransport(opt);
|
|
617
609
|
});
|
|
618
610
|
var CacheProviderFactory = class _CacheProviderFactory {
|
|
619
611
|
static {
|
|
@@ -648,7 +640,7 @@ import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
|
648
640
|
|
|
649
641
|
// src/facades.mts
|
|
650
642
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
651
|
-
var
|
|
643
|
+
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
652
644
|
var router = (0, import_neko_helper2.createSingleton)(() => new Router());
|
|
653
645
|
var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
654
646
|
const rc = new import_neko_scheduler.Scheduler();
|
|
@@ -661,7 +653,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
661
653
|
});
|
|
662
654
|
return rc;
|
|
663
655
|
});
|
|
664
|
-
var db = /* @__PURE__ */ __name((label = "default") => (0,
|
|
656
|
+
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
|
|
665
657
|
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
666
658
|
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
667
659
|
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
@@ -717,7 +709,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
717
709
|
const logger_config = import_neko_config.config.get(["loggers", label].join("."));
|
|
718
710
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
719
711
|
rc.setExtrasFunction((message) => {
|
|
720
|
-
message.requestId = (0,
|
|
712
|
+
message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
|
|
721
713
|
return message;
|
|
722
714
|
});
|
|
723
715
|
return rc;
|
|
@@ -736,11 +728,11 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
736
728
|
if (!queue_config) {
|
|
737
729
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
738
730
|
}
|
|
739
|
-
const provider =
|
|
731
|
+
const provider = import_neko_queue2.QueueTransportFactory.create(
|
|
740
732
|
queue_config.provider,
|
|
741
733
|
queue_config.config
|
|
742
734
|
);
|
|
743
|
-
const rc = new
|
|
735
|
+
const rc = new import_neko_queue2.QueueConnection(provider);
|
|
744
736
|
return rc;
|
|
745
737
|
});
|
|
746
738
|
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
package/dist/bin/cache.cjs
CHANGED
|
@@ -456,7 +456,7 @@ var Router = class {
|
|
|
456
456
|
// src/facades.mts
|
|
457
457
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
458
458
|
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
459
|
-
var
|
|
459
|
+
var import_neko_context3 = require("@devbro/neko-context");
|
|
460
460
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
461
461
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
462
462
|
var import_neko_config = require("@devbro/neko-config");
|
|
@@ -473,7 +473,6 @@ var import_neko_logger = require("@devbro/neko-logger");
|
|
|
473
473
|
// src/factories.mts
|
|
474
474
|
var import_neko_mailer = require("@devbro/neko-mailer");
|
|
475
475
|
var import_neko_queue = require("@devbro/neko-queue");
|
|
476
|
-
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
477
476
|
|
|
478
477
|
// src/queue.mts
|
|
479
478
|
var queue_exports = {};
|
|
@@ -482,6 +481,7 @@ __export(queue_exports, {
|
|
|
482
481
|
});
|
|
483
482
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
484
483
|
var import_neko_helper = require("@devbro/neko-helper");
|
|
484
|
+
var import_neko_context2 = require("@devbro/neko-context");
|
|
485
485
|
var DatabaseTransport = class {
|
|
486
486
|
static {
|
|
487
487
|
__name(this, "DatabaseTransport");
|
|
@@ -498,37 +498,39 @@ var DatabaseTransport = class {
|
|
|
498
498
|
messageQueues = [];
|
|
499
499
|
repeater;
|
|
500
500
|
processMessage = /* @__PURE__ */ __name(async () => {
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
501
|
+
await import_neko_context2.context_provider.run(async () => {
|
|
502
|
+
const conn = db(this.config.db_connection);
|
|
503
|
+
try {
|
|
504
|
+
await conn.connect();
|
|
505
|
+
let q = conn.getQuery();
|
|
506
|
+
let messages = await q.table(this.config.queue_table).whereOp("channel", "in", Array.from(this.channels.keys())).whereOp("status", "in", ["pending", "failed"]).limit(this.config.message_limit).orderBy("last_tried_at", "asc").get();
|
|
507
|
+
for (let msg of messages) {
|
|
508
|
+
try {
|
|
509
|
+
let callback = this.channels.get(msg.channel);
|
|
510
|
+
await callback(msg.message);
|
|
511
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
512
|
+
status: "processed",
|
|
513
|
+
updated_at: /* @__PURE__ */ new Date(),
|
|
514
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
515
|
+
retried_count: (msg.retried_count || 0) + 1
|
|
516
|
+
});
|
|
517
|
+
} catch (error) {
|
|
518
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
519
|
+
status: "failed",
|
|
520
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
521
|
+
retried_count: (msg.retried_count || 0) + 1,
|
|
522
|
+
process_message: error.message || "Error processing message"
|
|
523
|
+
});
|
|
524
|
+
}
|
|
523
525
|
}
|
|
526
|
+
} catch (error) {
|
|
527
|
+
logger().error("Error in DatabaseTransport listen interval:", {
|
|
528
|
+
error
|
|
529
|
+
});
|
|
530
|
+
} finally {
|
|
531
|
+
await conn.disconnect();
|
|
524
532
|
}
|
|
525
|
-
}
|
|
526
|
-
logger().error("Error in DatabaseTransport listen interval:", {
|
|
527
|
-
error
|
|
528
|
-
});
|
|
529
|
-
} finally {
|
|
530
|
-
await conn.disconnect();
|
|
531
|
-
}
|
|
533
|
+
});
|
|
532
534
|
}, "processMessage");
|
|
533
535
|
constructor(config2 = {}) {
|
|
534
536
|
this.config = { ...this.config, ...config2 };
|
|
@@ -591,14 +593,6 @@ var FlexibleFactory = class {
|
|
|
591
593
|
return ctor(...args);
|
|
592
594
|
}
|
|
593
595
|
};
|
|
594
|
-
import_neko_mailer.MailerProviderFactory.register("logger", (opt) => {
|
|
595
|
-
return new import_neko_mailer.FunctionProvider((mail) => {
|
|
596
|
-
logger().info({
|
|
597
|
-
msg: "Sending email",
|
|
598
|
-
mail
|
|
599
|
-
});
|
|
600
|
-
});
|
|
601
|
-
});
|
|
602
596
|
import_neko_mailer.MailerProviderFactory.register("ses", (opt) => {
|
|
603
597
|
return new import_neko_mailer.SESProvider(opt);
|
|
604
598
|
});
|
|
@@ -608,13 +602,11 @@ import_neko_mailer.MailerProviderFactory.register("smtp", (opt) => {
|
|
|
608
602
|
import_neko_mailer.MailerProviderFactory.register("memory", (opt) => {
|
|
609
603
|
return new import_neko_mailer.MemoryProvider();
|
|
610
604
|
});
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
605
|
+
import_neko_queue.QueueTransportFactory.register("database", (opt) => {
|
|
606
|
+
return new DatabaseTransport(opt);
|
|
614
607
|
});
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
return new import_neko_queue.QueueConnection(transport);
|
|
608
|
+
import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
|
|
609
|
+
return new import_neko_queue.MemoryTransport(opt);
|
|
618
610
|
});
|
|
619
611
|
var CacheProviderFactory = class _CacheProviderFactory {
|
|
620
612
|
static {
|
|
@@ -649,7 +641,7 @@ import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
|
649
641
|
|
|
650
642
|
// src/facades.mts
|
|
651
643
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
652
|
-
var
|
|
644
|
+
var import_neko_queue2 = require("@devbro/neko-queue");
|
|
653
645
|
var router = (0, import_neko_helper2.createSingleton)(() => new Router());
|
|
654
646
|
var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
655
647
|
const rc = new import_neko_scheduler.Scheduler();
|
|
@@ -662,7 +654,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
662
654
|
});
|
|
663
655
|
return rc;
|
|
664
656
|
});
|
|
665
|
-
var db = /* @__PURE__ */ __name((label = "default") => (0,
|
|
657
|
+
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
|
|
666
658
|
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
667
659
|
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
668
660
|
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
@@ -718,7 +710,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
718
710
|
const logger_config = import_neko_config.config.get(["loggers", label].join("."));
|
|
719
711
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
720
712
|
rc.setExtrasFunction((message) => {
|
|
721
|
-
message.requestId = (0,
|
|
713
|
+
message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
|
|
722
714
|
return message;
|
|
723
715
|
});
|
|
724
716
|
return rc;
|
|
@@ -737,11 +729,11 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
737
729
|
if (!queue_config) {
|
|
738
730
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
739
731
|
}
|
|
740
|
-
const provider =
|
|
732
|
+
const provider = import_neko_queue2.QueueTransportFactory.create(
|
|
741
733
|
queue_config.provider,
|
|
742
734
|
queue_config.config
|
|
743
735
|
);
|
|
744
|
-
const rc = new
|
|
736
|
+
const rc = new import_neko_queue2.QueueConnection(provider);
|
|
745
737
|
return rc;
|
|
746
738
|
});
|
|
747
739
|
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|