tspace-mysql 1.9.3 → 1.9.4-beta.2

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.
Files changed (67) hide show
  1. package/README.md +139 -21
  2. package/dist/lib/constants/index.d.ts +1 -1
  3. package/dist/lib/constants/index.js +8 -1
  4. package/dist/lib/constants/index.js.map +1 -1
  5. package/dist/lib/core/Abstracts/AbstractBuilder.d.ts +1 -1
  6. package/dist/lib/core/Abstracts/AbstractBuilder.js +1 -0
  7. package/dist/lib/core/Abstracts/AbstractBuilder.js.map +1 -1
  8. package/dist/lib/core/Blueprint.d.ts +45 -12
  9. package/dist/lib/core/Blueprint.js +43 -2
  10. package/dist/lib/core/Blueprint.js.map +1 -1
  11. package/dist/lib/core/Builder.d.ts +6 -6
  12. package/dist/lib/core/Builder.js +29 -35
  13. package/dist/lib/core/Builder.js.map +1 -1
  14. package/dist/lib/core/Contracts/Audit.d.ts +2 -2
  15. package/dist/lib/core/Contracts/Logger.d.ts +2 -2
  16. package/dist/lib/core/DB.d.ts +137 -6
  17. package/dist/lib/core/DB.js +153 -30
  18. package/dist/lib/core/DB.js.map +1 -1
  19. package/dist/lib/core/Driver/index.d.ts +2 -1
  20. package/dist/lib/core/Driver/index.js +11 -0
  21. package/dist/lib/core/Driver/index.js.map +1 -1
  22. package/dist/lib/core/Driver/mariadb/MariadbDriver.d.ts +4 -1
  23. package/dist/lib/core/Driver/mariadb/MariadbDriver.js +21 -7
  24. package/dist/lib/core/Driver/mariadb/MariadbDriver.js.map +1 -1
  25. package/dist/lib/core/Driver/mongodb/MongodbDriver.d.ts +4 -1
  26. package/dist/lib/core/Driver/mongodb/MongodbDriver.js +8 -6
  27. package/dist/lib/core/Driver/mongodb/MongodbDriver.js.map +1 -1
  28. package/dist/lib/core/Driver/mysql/MysqlDriver.d.ts +4 -1
  29. package/dist/lib/core/Driver/mysql/MysqlDriver.js +35 -7
  30. package/dist/lib/core/Driver/mysql/MysqlDriver.js.map +1 -1
  31. package/dist/lib/core/Driver/postgres/PostgresDriver.d.ts +4 -1
  32. package/dist/lib/core/Driver/postgres/PostgresDriver.js +24 -8
  33. package/dist/lib/core/Driver/postgres/PostgresDriver.js.map +1 -1
  34. package/dist/lib/core/Driver/sqlite/SqliteDriver.d.ts +4 -1
  35. package/dist/lib/core/Driver/sqlite/SqliteDriver.js +14 -6
  36. package/dist/lib/core/Driver/sqlite/SqliteDriver.js.map +1 -1
  37. package/dist/lib/core/Model.d.ts +332 -29
  38. package/dist/lib/core/Model.js +329 -19
  39. package/dist/lib/core/Model.js.map +1 -1
  40. package/dist/lib/core/Pool.d.ts +1 -1
  41. package/dist/lib/core/Pool.js +10 -4
  42. package/dist/lib/core/Pool.js.map +1 -1
  43. package/dist/lib/core/{Queue.d.ts → Queue/index.d.ts} +115 -111
  44. package/dist/lib/core/Queue/index.js +283 -0
  45. package/dist/lib/core/Queue/index.js.map +1 -0
  46. package/dist/lib/core/Queue/types.d.ts +40 -0
  47. package/dist/lib/core/Queue/types.js +3 -0
  48. package/dist/lib/core/Queue/types.js.map +1 -0
  49. package/dist/lib/core/Queue/worker.d.ts +103 -0
  50. package/dist/lib/core/{Queue.js → Queue/worker.js} +261 -311
  51. package/dist/lib/core/Queue/worker.js.map +1 -0
  52. package/dist/lib/core/Repository.d.ts +40 -20
  53. package/dist/lib/core/Repository.js +35 -14
  54. package/dist/lib/core/Repository.js.map +1 -1
  55. package/dist/lib/core/Schema.d.ts +4 -4
  56. package/dist/lib/core/Schema.js +40 -14
  57. package/dist/lib/core/Schema.js.map +1 -1
  58. package/dist/lib/core/UtilityTypes.d.ts +7 -3
  59. package/dist/lib/core/UtilityTypes.js.map +1 -1
  60. package/dist/lib/types/decorator/index.d.ts +3 -0
  61. package/dist/lib/types/index.d.ts +19 -18
  62. package/dist/lib/types/repository/index.d.ts +3 -3
  63. package/dist/lib/utils/index.d.ts +10 -5
  64. package/dist/lib/utils/index.js +42 -9
  65. package/dist/lib/utils/index.js.map +1 -1
  66. package/package.json +3 -5
  67. package/dist/lib/core/Queue.js.map +0 -1
@@ -0,0 +1,40 @@
1
+ import { Worker } from "./worker";
2
+ import type { T } from "..";
3
+ import type { Job, QueueContract } from ".";
4
+ export type JobInternal = Job & {
5
+ __job: T.Result<Worker>;
6
+ };
7
+ export type Handler = (job: Job) => any | Promise<any>;
8
+ export type State = {
9
+ handler: Handler;
10
+ idle: number;
11
+ sleeping: boolean;
12
+ running: number;
13
+ opts: Required<QueueProcessOptions>;
14
+ };
15
+ export type QueueAddOptions = {
16
+ delayMs?: number;
17
+ priority?: number;
18
+ metadata?: Record<string, any>;
19
+ maxAttempts?: number;
20
+ };
21
+ export type QueueProcessOptions = {
22
+ interval?: number;
23
+ concurrency?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 20 | 25 | 30;
24
+ };
25
+ export type BufferedJob = {
26
+ jobData: T.Result<Worker>;
27
+ resolve: (value: any) => void;
28
+ reject: (reason?: any) => void;
29
+ };
30
+ export type JobStatus = 'pending' | 'active' | 'completed' | 'failed';
31
+ type QueueEvents = QueueContract extends {
32
+ events: infer E;
33
+ } ? E : never;
34
+ type QueueJobs = QueueContract extends {
35
+ jobs: infer J;
36
+ } ? J : never;
37
+ export type EventName = QueueEvents extends Record<string, readonly string[]> ? keyof QueueEvents & string : string;
38
+ export type EventJobName<E extends EventName> = QueueEvents extends Record<string, readonly string[]> ? E extends keyof QueueEvents ? QueueEvents[E][number] extends never ? string : QueueEvents[E][number] : string : string;
39
+ export type JobName = QueueJobs extends readonly string[] ? QueueJobs[number] extends never ? string : QueueJobs[number] : string;
40
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/core/Queue/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ import type { T } from "../UtilityTypes";
2
+ import { Blueprint } from "../Blueprint";
3
+ import { Model } from "../Model";
4
+ import type { Handler, QueueAddOptions, QueueProcessOptions } from "./types";
5
+ declare const schema: {
6
+ id: Blueprint<number>;
7
+ uuid: Blueprint<string | null>;
8
+ name: Blueprint<string>;
9
+ status: Blueprint<T.Default<NonNullable<"pending" | "active" | "completed" | "failed">>>;
10
+ priority: Blueprint<T.Default<number>>;
11
+ payload: Blueprint<string | null>;
12
+ result: Blueprint<string | null>;
13
+ error: Blueprint<string | null>;
14
+ metadata: Blueprint<string | null>;
15
+ attempts: Blueprint<T.Default<number>>;
16
+ max_attempts: Blueprint<T.Default<number>>;
17
+ delay_ms: Blueprint<T.Default<number>>;
18
+ locked_by: Blueprint<string | null>;
19
+ locked_at: Blueprint<T.DateTime | null>;
20
+ available_at: Blueprint<NonNullable<T.DateTime>>;
21
+ completed_at: Blueprint<T.DateTime | null>;
22
+ created_at: Blueprint<T.DateTime | null>;
23
+ updated_at: Blueprint<T.DateTime | null>;
24
+ };
25
+ export declare class Worker extends Model<T.Schema<typeof schema>> {
26
+ private HOSTNAME;
27
+ private INSPECT_EXEC;
28
+ private STOPPING;
29
+ private IS_FLUSHING;
30
+ private ACTIVE_JOBS;
31
+ private MAX_IDLE_RETRIES;
32
+ private BATCH_SIZE;
33
+ private MAX_WAIT_MS;
34
+ private POLL;
35
+ private BUFFER;
36
+ private WORKER_STATE;
37
+ private EVENT_SUBSCRIBERS;
38
+ protected boot(): void;
39
+ initialize(opts?: {
40
+ inspect?: boolean;
41
+ flush?: boolean;
42
+ hostname?: string;
43
+ maxIdleRetries?: number;
44
+ poll?: {
45
+ enabled?: boolean;
46
+ interval?: number;
47
+ };
48
+ }): Promise<this>;
49
+ shutdown(): Promise<void>;
50
+ flush(): Promise<void>;
51
+ getJobOverallStats(name?: string): Promise<{
52
+ total: number;
53
+ completed: number;
54
+ active: number;
55
+ pending: number;
56
+ failed: number;
57
+ }>;
58
+ getJobStats(name?: string): Promise<{
59
+ name: string;
60
+ completed: number;
61
+ active: number;
62
+ pending: number;
63
+ failed: number;
64
+ }[]>;
65
+ getJobs(name?: string): Promise<{
66
+ [x: string]: unknown;
67
+ id: number;
68
+ uuid: string | null;
69
+ name: string;
70
+ status: "pending" | "active" | "completed" | "failed";
71
+ priority: number;
72
+ payload: string | null;
73
+ result: string | null;
74
+ error: string | null;
75
+ metadata: string | null;
76
+ attempts: number;
77
+ max_attempts: number;
78
+ delay_ms: number;
79
+ locked_by: string | null;
80
+ locked_at: T.DateTime | null;
81
+ available_at: NonNullable<T.DateTime>;
82
+ completed_at: T.DateTime | null;
83
+ created_at: T.DateTime | null;
84
+ updated_at: T.DateTime | null;
85
+ }[]>;
86
+ getNames(): Promise<any[]>;
87
+ add(name: string, payload: any, opts?: QueueAddOptions): Promise<void>;
88
+ process(name: string, handler: Handler, opts?: QueueProcessOptions): Promise<void>;
89
+ publish(event: string, payload: any, opts?: QueueAddOptions): Promise<void>;
90
+ subscribe(event: string, name: string, handler: Handler, opts?: QueueProcessOptions): Promise<void>;
91
+ private _runJob;
92
+ private _executeJob;
93
+ private _dequeueMany;
94
+ private _flushBuffer;
95
+ private _wakeWorker;
96
+ private _pollWorkerJobs;
97
+ private _initializeWorkerJobs;
98
+ private _getPendingOrFailedJobs;
99
+ private _safeJsonParse;
100
+ private _safeJsonStringify;
101
+ private _sleep;
102
+ }
103
+ export {};