@motiadev/core 0.0.26 → 0.0.28
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.d.ts +10 -9
- package/dist/index.js +23 -9
- package/dist/src/server.js +13 -7
- package/dist/src/state/adapters/default-state-adapter.d.ts +2 -0
- package/dist/src/state/adapters/default-state-adapter.js +21 -9
- package/dist/src/state/adapters/memory-state-adapter.d.ts +2 -0
- package/dist/src/state/adapters/memory-state-adapter.js +10 -0
- package/dist/src/state/adapters/redis-state-adapter.d.ts +2 -0
- package/dist/src/state/adapters/redis-state-adapter.js +10 -0
- package/dist/src/state/state-adapter.d.ts +2 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export * from './src/types';
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
2
|
+
export { createServer, MotiaServer } from './src/server';
|
|
3
|
+
export { createStepHandlers, MotiaEventManager } from './src/step-handlers';
|
|
4
|
+
export { createEventManager } from './src/event-manager';
|
|
5
|
+
export { globalLogger, Logger } from './src/logger';
|
|
6
|
+
export { createStateAdapter } from './src/state/create-state-adapter';
|
|
7
|
+
export { setupCronHandlers, CronManager } from './src/cron-handler';
|
|
8
|
+
export { isApiStep, isCronStep, isEventStep, isNoopStep } from './src/guards';
|
|
9
|
+
export { LockedData } from './src/locked-data';
|
|
10
|
+
export { getStepConfig } from './src/get-step-config';
|
|
11
|
+
export { StateAdapter } from './src/state/state-adapter';
|
package/dist/index.js
CHANGED
|
@@ -14,13 +14,27 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.getStepConfig = exports.LockedData = exports.isNoopStep = exports.isEventStep = exports.isCronStep = exports.isApiStep = exports.setupCronHandlers = exports.createStateAdapter = exports.Logger = exports.globalLogger = exports.createEventManager = exports.createStepHandlers = exports.createServer = void 0;
|
|
17
18
|
__exportStar(require("./src/types"), exports);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
var server_1 = require("./src/server");
|
|
20
|
+
Object.defineProperty(exports, "createServer", { enumerable: true, get: function () { return server_1.createServer; } });
|
|
21
|
+
var step_handlers_1 = require("./src/step-handlers");
|
|
22
|
+
Object.defineProperty(exports, "createStepHandlers", { enumerable: true, get: function () { return step_handlers_1.createStepHandlers; } });
|
|
23
|
+
var event_manager_1 = require("./src/event-manager");
|
|
24
|
+
Object.defineProperty(exports, "createEventManager", { enumerable: true, get: function () { return event_manager_1.createEventManager; } });
|
|
25
|
+
var logger_1 = require("./src/logger");
|
|
26
|
+
Object.defineProperty(exports, "globalLogger", { enumerable: true, get: function () { return logger_1.globalLogger; } });
|
|
27
|
+
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
|
|
28
|
+
var create_state_adapter_1 = require("./src/state/create-state-adapter");
|
|
29
|
+
Object.defineProperty(exports, "createStateAdapter", { enumerable: true, get: function () { return create_state_adapter_1.createStateAdapter; } });
|
|
30
|
+
var cron_handler_1 = require("./src/cron-handler");
|
|
31
|
+
Object.defineProperty(exports, "setupCronHandlers", { enumerable: true, get: function () { return cron_handler_1.setupCronHandlers; } });
|
|
32
|
+
var guards_1 = require("./src/guards");
|
|
33
|
+
Object.defineProperty(exports, "isApiStep", { enumerable: true, get: function () { return guards_1.isApiStep; } });
|
|
34
|
+
Object.defineProperty(exports, "isCronStep", { enumerable: true, get: function () { return guards_1.isCronStep; } });
|
|
35
|
+
Object.defineProperty(exports, "isEventStep", { enumerable: true, get: function () { return guards_1.isEventStep; } });
|
|
36
|
+
Object.defineProperty(exports, "isNoopStep", { enumerable: true, get: function () { return guards_1.isNoopStep; } });
|
|
37
|
+
var locked_data_1 = require("./src/locked-data");
|
|
38
|
+
Object.defineProperty(exports, "LockedData", { enumerable: true, get: function () { return locked_data_1.LockedData; } });
|
|
39
|
+
var get_step_config_1 = require("./src/get-step-config");
|
|
40
|
+
Object.defineProperty(exports, "getStepConfig", { enumerable: true, get: function () { return get_step_config_1.getStepConfig; } });
|
package/dist/src/server.js
CHANGED
|
@@ -69,15 +69,21 @@ const createServer = async (lockedData, eventManager, state) => {
|
|
|
69
69
|
const addRoute = (step) => {
|
|
70
70
|
const { method, path } = step.config;
|
|
71
71
|
logger_1.globalLogger.debug('[API] Registering route', step.config);
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
router.
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
const handler = asyncHandler(step);
|
|
73
|
+
const methods = {
|
|
74
|
+
GET: () => router.get(path, handler),
|
|
75
|
+
POST: () => router.post(path, handler),
|
|
76
|
+
PUT: () => router.put(path, handler),
|
|
77
|
+
DELETE: () => router.delete(path, handler),
|
|
78
|
+
PATCH: () => router.patch(path, handler),
|
|
79
|
+
OPTIONS: () => router.options(path, handler),
|
|
80
|
+
HEAD: () => router.head(path, handler),
|
|
81
|
+
};
|
|
82
|
+
const methodHandler = methods[method];
|
|
83
|
+
if (!methodHandler) {
|
|
79
84
|
throw new Error(`Unsupported method: ${method}`);
|
|
80
85
|
}
|
|
86
|
+
methodHandler();
|
|
81
87
|
};
|
|
82
88
|
const removeRoute = (step) => {
|
|
83
89
|
const { path, method } = step.config;
|
|
@@ -10,6 +10,8 @@ export declare class FileStateAdapter implements StateAdapter {
|
|
|
10
10
|
set<T>(traceId: string, key: string, value: T): Promise<void>;
|
|
11
11
|
delete(traceId: string, key: string): Promise<void>;
|
|
12
12
|
clear(traceId: string): Promise<void>;
|
|
13
|
+
keys(traceId: string): Promise<string[]>;
|
|
14
|
+
traceIds(): Promise<string[]>;
|
|
13
15
|
cleanup(): Promise<void>;
|
|
14
16
|
private _makeKey;
|
|
15
17
|
private _readFile;
|
|
@@ -59,31 +59,43 @@ class FileStateAdapter {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
async get(traceId, key) {
|
|
62
|
-
const data =
|
|
62
|
+
const data = this._readFile();
|
|
63
63
|
const fullKey = this._makeKey(traceId, key);
|
|
64
64
|
return data[fullKey] ? JSON.parse(data[fullKey]) : null;
|
|
65
65
|
}
|
|
66
66
|
async set(traceId, key, value) {
|
|
67
|
-
const data =
|
|
67
|
+
const data = this._readFile();
|
|
68
68
|
const fullKey = this._makeKey(traceId, key);
|
|
69
69
|
data[fullKey] = JSON.stringify(value);
|
|
70
|
-
|
|
70
|
+
this._writeFile(data);
|
|
71
71
|
}
|
|
72
72
|
async delete(traceId, key) {
|
|
73
|
-
const data =
|
|
73
|
+
const data = this._readFile();
|
|
74
74
|
const fullKey = this._makeKey(traceId, key);
|
|
75
75
|
delete data[fullKey];
|
|
76
|
-
|
|
76
|
+
this._writeFile(data);
|
|
77
77
|
}
|
|
78
78
|
async clear(traceId) {
|
|
79
|
-
const data =
|
|
79
|
+
const data = this._readFile();
|
|
80
80
|
const pattern = this._makeKey(traceId, '');
|
|
81
81
|
for (const key in data) {
|
|
82
82
|
if (key.startsWith(pattern)) {
|
|
83
83
|
delete data[key];
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
|
|
86
|
+
this._writeFile(data);
|
|
87
|
+
}
|
|
88
|
+
async keys(traceId) {
|
|
89
|
+
const data = this._readFile();
|
|
90
|
+
return Object.keys(data)
|
|
91
|
+
.filter((key) => key.startsWith(this._makeKey(traceId, '')))
|
|
92
|
+
.map((key) => key.replace(this._makeKey(traceId, ''), ''));
|
|
93
|
+
}
|
|
94
|
+
async traceIds() {
|
|
95
|
+
const data = this._readFile();
|
|
96
|
+
const traceIds = new Set();
|
|
97
|
+
Object.keys(data).forEach((key) => traceIds.add(key.split(':')[0]));
|
|
98
|
+
return Array.from(traceIds);
|
|
87
99
|
}
|
|
88
100
|
async cleanup() {
|
|
89
101
|
// No cleanup needed for file system
|
|
@@ -91,11 +103,11 @@ class FileStateAdapter {
|
|
|
91
103
|
_makeKey(traceId, key) {
|
|
92
104
|
return `${traceId}:${key}`;
|
|
93
105
|
}
|
|
94
|
-
|
|
106
|
+
_readFile() {
|
|
95
107
|
const content = fs_1.default.readFileSync(this.filePath, 'utf-8');
|
|
96
108
|
return JSON.parse(content);
|
|
97
109
|
}
|
|
98
|
-
|
|
110
|
+
_writeFile(data) {
|
|
99
111
|
fs_1.default.writeFileSync(this.filePath, JSON.stringify(data, null, 2), 'utf-8');
|
|
100
112
|
}
|
|
101
113
|
}
|
|
@@ -6,6 +6,8 @@ export declare class MemoryStateAdapter implements StateAdapter {
|
|
|
6
6
|
set<T>(traceId: string, key: string, value: T): Promise<void>;
|
|
7
7
|
delete(traceId: string, key: string): Promise<void>;
|
|
8
8
|
clear(traceId: string): Promise<void>;
|
|
9
|
+
keys(traceId: string): Promise<string[]>;
|
|
10
|
+
traceIds(): Promise<string[]>;
|
|
9
11
|
cleanup(): Promise<void>;
|
|
10
12
|
private _makeKey;
|
|
11
13
|
}
|
|
@@ -28,6 +28,16 @@ class MemoryStateAdapter {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
+
async keys(traceId) {
|
|
32
|
+
return Object.keys(this.state)
|
|
33
|
+
.filter((key) => key.startsWith(this._makeKey(traceId, '')))
|
|
34
|
+
.map((key) => key.replace(this._makeKey(traceId, ''), ''));
|
|
35
|
+
}
|
|
36
|
+
async traceIds() {
|
|
37
|
+
const traceIds = new Set();
|
|
38
|
+
Object.keys(this.state).forEach((key) => traceIds.add(key.split(':')[0]));
|
|
39
|
+
return Array.from(traceIds);
|
|
40
|
+
}
|
|
31
41
|
async cleanup() {
|
|
32
42
|
// No cleanup needed for file system
|
|
33
43
|
}
|
|
@@ -14,6 +14,8 @@ export declare class RedisStateAdapter implements StateAdapter {
|
|
|
14
14
|
set<T>(traceId: string, key: string, value: T): Promise<void>;
|
|
15
15
|
delete(traceId: string, key: string): Promise<void>;
|
|
16
16
|
clear(traceId: string): Promise<void>;
|
|
17
|
+
keys(traceId: string): Promise<string[]>;
|
|
18
|
+
traceIds(): Promise<string[]>;
|
|
17
19
|
cleanup(): Promise<void>;
|
|
18
20
|
_makeKey(traceId: string, key: string): string;
|
|
19
21
|
}
|
|
@@ -34,6 +34,16 @@ class RedisStateAdapter {
|
|
|
34
34
|
await this.client.del(keys);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
async keys(traceId) {
|
|
38
|
+
const pattern = this._makeKey(traceId, '*');
|
|
39
|
+
const keys = await this.client.keys(pattern);
|
|
40
|
+
return keys.map((key) => key.replace(this._makeKey(traceId, ''), ''));
|
|
41
|
+
}
|
|
42
|
+
async traceIds() {
|
|
43
|
+
const pattern = `${this.prefix}:*`;
|
|
44
|
+
const keys = await this.client.keys(pattern);
|
|
45
|
+
return keys.map((key) => key.split(':')[1]);
|
|
46
|
+
}
|
|
37
47
|
async cleanup() {
|
|
38
48
|
await this.client.quit();
|
|
39
49
|
}
|