@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 CHANGED
@@ -1,10 +1,11 @@
1
1
  export * from './src/types';
2
- export * from './src/server';
3
- export * from './src/step-handlers';
4
- export * from './src/event-manager';
5
- export * from './src/logger';
6
- export * from './src/state/create-state-adapter';
7
- export * from './src/cron-handler';
8
- export * from './src/guards';
9
- export * from './src/locked-data';
10
- export * from './src/get-step-config';
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
- __exportStar(require("./src/server"), exports);
19
- __exportStar(require("./src/step-handlers"), exports);
20
- __exportStar(require("./src/event-manager"), exports);
21
- __exportStar(require("./src/logger"), exports);
22
- __exportStar(require("./src/state/create-state-adapter"), exports);
23
- __exportStar(require("./src/cron-handler"), exports);
24
- __exportStar(require("./src/guards"), exports);
25
- __exportStar(require("./src/locked-data"), exports);
26
- __exportStar(require("./src/get-step-config"), exports);
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; } });
@@ -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
- if (method === 'POST') {
73
- router.post(path, asyncHandler(step));
74
- }
75
- else if (method === 'GET') {
76
- router.get(path, asyncHandler(step));
77
- }
78
- else {
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 = await this._readFile();
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 = await this._readFile();
67
+ const data = this._readFile();
68
68
  const fullKey = this._makeKey(traceId, key);
69
69
  data[fullKey] = JSON.stringify(value);
70
- await this._writeFile(data);
70
+ this._writeFile(data);
71
71
  }
72
72
  async delete(traceId, key) {
73
- const data = await this._readFile();
73
+ const data = this._readFile();
74
74
  const fullKey = this._makeKey(traceId, key);
75
75
  delete data[fullKey];
76
- await this._writeFile(data);
76
+ this._writeFile(data);
77
77
  }
78
78
  async clear(traceId) {
79
- const data = await this._readFile();
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
- await this._writeFile(data);
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
- async _readFile() {
106
+ _readFile() {
95
107
  const content = fs_1.default.readFileSync(this.filePath, 'utf-8');
96
108
  return JSON.parse(content);
97
109
  }
98
- async _writeFile(data) {
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
  }
@@ -7,4 +7,6 @@ export interface StateAdapter {
7
7
  delete(traceId: string, key: string): Promise<void>;
8
8
  clear(traceId: string): Promise<void>;
9
9
  cleanup(): Promise<void>;
10
+ keys(traceId: string): Promise<string[]>;
11
+ traceIds(): Promise<string[]>;
10
12
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@motiadev/core",
3
3
  "main": "dist/index.js",
4
- "version": "0.0.26",
4
+ "version": "0.0.28",
5
5
  "dependencies": {
6
6
  "body-parser": "^1.20.3",
7
7
  "colors": "^1.4.0",