flex-mcp 1.0.0

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 (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +154 -0
  3. package/dist/api/auth.d.ts +6 -0
  4. package/dist/api/auth.d.ts.map +1 -0
  5. package/dist/api/auth.js +111 -0
  6. package/dist/api/auth.js.map +1 -0
  7. package/dist/api/configs.d.ts +6 -0
  8. package/dist/api/configs.d.ts.map +1 -0
  9. package/dist/api/configs.js +693 -0
  10. package/dist/api/configs.js.map +1 -0
  11. package/dist/api/index.d.ts +6 -0
  12. package/dist/api/index.d.ts.map +1 -0
  13. package/dist/api/index.js +24 -0
  14. package/dist/api/index.js.map +1 -0
  15. package/dist/api/mcp.d.ts +7 -0
  16. package/dist/api/mcp.d.ts.map +1 -0
  17. package/dist/api/mcp.js +46 -0
  18. package/dist/api/mcp.js.map +1 -0
  19. package/dist/api/middleware.d.ts +25 -0
  20. package/dist/api/middleware.d.ts.map +1 -0
  21. package/dist/api/middleware.js +65 -0
  22. package/dist/api/middleware.js.map +1 -0
  23. package/dist/api/prompts.d.ts +6 -0
  24. package/dist/api/prompts.d.ts.map +1 -0
  25. package/dist/api/prompts.js +260 -0
  26. package/dist/api/prompts.js.map +1 -0
  27. package/dist/api/resources.d.ts +6 -0
  28. package/dist/api/resources.d.ts.map +1 -0
  29. package/dist/api/resources.js +159 -0
  30. package/dist/api/resources.js.map +1 -0
  31. package/dist/api/tables.d.ts +15 -0
  32. package/dist/api/tables.d.ts.map +1 -0
  33. package/dist/api/tables.js +702 -0
  34. package/dist/api/tables.js.map +1 -0
  35. package/dist/api/users.d.ts +6 -0
  36. package/dist/api/users.d.ts.map +1 -0
  37. package/dist/api/users.js +96 -0
  38. package/dist/api/users.js.map +1 -0
  39. package/dist/auth/index.d.ts +15 -0
  40. package/dist/auth/index.d.ts.map +1 -0
  41. package/dist/auth/index.js +126 -0
  42. package/dist/auth/index.js.map +1 -0
  43. package/dist/cli.d.ts +7 -0
  44. package/dist/cli.d.ts.map +1 -0
  45. package/dist/cli.js +288 -0
  46. package/dist/cli.js.map +1 -0
  47. package/dist/config.d.ts +21 -0
  48. package/dist/config.d.ts.map +1 -0
  49. package/dist/config.js +54 -0
  50. package/dist/config.js.map +1 -0
  51. package/dist/db/index.d.ts +11 -0
  52. package/dist/db/index.d.ts.map +1 -0
  53. package/dist/db/index.js +164 -0
  54. package/dist/db/index.js.map +1 -0
  55. package/dist/db/schema.d.ts +646 -0
  56. package/dist/db/schema.d.ts.map +1 -0
  57. package/dist/db/schema.js +73 -0
  58. package/dist/db/schema.js.map +1 -0
  59. package/dist/index.d.ts +5 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +153 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/mcp/aggregator.d.ts +78 -0
  64. package/dist/mcp/aggregator.d.ts.map +1 -0
  65. package/dist/mcp/aggregator.js +1266 -0
  66. package/dist/mcp/aggregator.js.map +1 -0
  67. package/dist/mcp/component-loader.d.ts +17 -0
  68. package/dist/mcp/component-loader.d.ts.map +1 -0
  69. package/dist/mcp/component-loader.js +131 -0
  70. package/dist/mcp/component-loader.js.map +1 -0
  71. package/dist/mcp/index.d.ts +7 -0
  72. package/dist/mcp/index.d.ts.map +1 -0
  73. package/dist/mcp/index.js +107 -0
  74. package/dist/mcp/index.js.map +1 -0
  75. package/dist/mcp/mcp-client.d.ts +53 -0
  76. package/dist/mcp/mcp-client.d.ts.map +1 -0
  77. package/dist/mcp/mcp-client.js +418 -0
  78. package/dist/mcp/mcp-client.js.map +1 -0
  79. package/dist/mcp/post-sse-transport.d.ts +52 -0
  80. package/dist/mcp/post-sse-transport.d.ts.map +1 -0
  81. package/dist/mcp/post-sse-transport.js +375 -0
  82. package/dist/mcp/post-sse-transport.js.map +1 -0
  83. package/dist/mcp/service.d.ts +49 -0
  84. package/dist/mcp/service.d.ts.map +1 -0
  85. package/dist/mcp/service.js +358 -0
  86. package/dist/mcp/service.js.map +1 -0
  87. package/dist/mcp/tool-sync.d.ts +27 -0
  88. package/dist/mcp/tool-sync.d.ts.map +1 -0
  89. package/dist/mcp/tool-sync.js +200 -0
  90. package/dist/mcp/tool-sync.js.map +1 -0
  91. package/dist/script/compiler.d.ts +15 -0
  92. package/dist/script/compiler.d.ts.map +1 -0
  93. package/dist/script/compiler.js +163 -0
  94. package/dist/script/compiler.js.map +1 -0
  95. package/dist/script/context.d.ts +11 -0
  96. package/dist/script/context.d.ts.map +1 -0
  97. package/dist/script/context.js +786 -0
  98. package/dist/script/context.js.map +1 -0
  99. package/dist/script/executor.d.ts +43 -0
  100. package/dist/script/executor.d.ts.map +1 -0
  101. package/dist/script/executor.js +126 -0
  102. package/dist/script/executor.js.map +1 -0
  103. package/dist/static.d.ts +21 -0
  104. package/dist/static.d.ts.map +1 -0
  105. package/dist/static.js +95 -0
  106. package/dist/static.js.map +1 -0
  107. package/dist/types/index.d.ts +337 -0
  108. package/dist/types/index.d.ts.map +1 -0
  109. package/dist/types/index.js +5 -0
  110. package/dist/types/index.js.map +1 -0
  111. package/dist/utils/id.d.ts +5 -0
  112. package/dist/utils/id.d.ts.map +1 -0
  113. package/dist/utils/id.js +8 -0
  114. package/dist/utils/id.js.map +1 -0
  115. package/dist/utils/logger.d.ts +21 -0
  116. package/dist/utils/logger.d.ts.map +1 -0
  117. package/dist/utils/logger.js +31 -0
  118. package/dist/utils/logger.js.map +1 -0
  119. package/dist/utils/prompt-template.d.ts +15 -0
  120. package/dist/utils/prompt-template.d.ts.map +1 -0
  121. package/dist/utils/prompt-template.js +82 -0
  122. package/dist/utils/prompt-template.js.map +1 -0
  123. package/dist/utils/telemetry.d.ts +45 -0
  124. package/dist/utils/telemetry.d.ts.map +1 -0
  125. package/dist/utils/telemetry.js +245 -0
  126. package/dist/utils/telemetry.js.map +1 -0
  127. package/dist/utils/variables.d.ts +24 -0
  128. package/dist/utils/variables.d.ts.map +1 -0
  129. package/dist/utils/variables.js +45 -0
  130. package/dist/utils/variables.js.map +1 -0
  131. package/package.json +70 -0
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 服务端配置
3
+ */
4
+ /**
5
+ * 获取数据目录路径
6
+ */
7
+ export declare function getDataDir(): string;
8
+ /**
9
+ * 获取文件系统隔离目录路径
10
+ */
11
+ export declare function getFileSystemDir(): string;
12
+ /**
13
+ * 将用户路径映射到实际隔离路径
14
+ * 用户路径格式:/abc/a.txt -> .data/fileSystem/{userId}/abc/a.txt
15
+ *
16
+ * @param userPath 用户提供的路径(必须以 / 开头)
17
+ * @param userId 用户ID
18
+ * @returns 实际文件系统路径
19
+ */
20
+ export declare function resolveUserPath(userPath: string, userId: string): string;
21
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAmBxE"}
package/dist/config.js ADDED
@@ -0,0 +1,54 @@
1
+ /**
2
+ * 服务端配置
3
+ */
4
+ import * as path from 'path';
5
+ import * as fs from 'fs';
6
+ // 获取数据目录(默认执行目录下的 .data/)
7
+ const DATA_DIR = process.env.DATA_DIR || path.join(process.cwd(), '.data');
8
+ // 确保数据目录存在
9
+ if (!fs.existsSync(DATA_DIR)) {
10
+ fs.mkdirSync(DATA_DIR, { recursive: true });
11
+ }
12
+ // 文件系统隔离目录(在数据目录下)
13
+ const FILE_SYSTEM_DIR = path.join(DATA_DIR, 'fileSystem');
14
+ // 确保文件系统目录存在
15
+ if (!fs.existsSync(FILE_SYSTEM_DIR)) {
16
+ fs.mkdirSync(FILE_SYSTEM_DIR, { recursive: true });
17
+ }
18
+ /**
19
+ * 获取数据目录路径
20
+ */
21
+ export function getDataDir() {
22
+ return DATA_DIR;
23
+ }
24
+ /**
25
+ * 获取文件系统隔离目录路径
26
+ */
27
+ export function getFileSystemDir() {
28
+ return FILE_SYSTEM_DIR;
29
+ }
30
+ /**
31
+ * 将用户路径映射到实际隔离路径
32
+ * 用户路径格式:/abc/a.txt -> .data/fileSystem/{userId}/abc/a.txt
33
+ *
34
+ * @param userPath 用户提供的路径(必须以 / 开头)
35
+ * @param userId 用户ID
36
+ * @returns 实际文件系统路径
37
+ */
38
+ export function resolveUserPath(userPath, userId) {
39
+ // 确保路径以 / 开头
40
+ if (!userPath.startsWith('/')) {
41
+ throw new Error(`Path must start with "/", got: ${userPath}`);
42
+ }
43
+ // 移除开头的 /,然后拼接用户隔离目录
44
+ const relativePath = userPath.substring(1);
45
+ const userDir = path.join(FILE_SYSTEM_DIR, userId);
46
+ // 解析路径,防止路径遍历攻击
47
+ const resolvedPath = path.resolve(userDir, relativePath);
48
+ // 确保解析后的路径在用户目录内(防止路径遍历攻击)
49
+ if (!resolvedPath.startsWith(path.resolve(userDir))) {
50
+ throw new Error(`Invalid path: ${userPath} (path traversal detected)`);
51
+ }
52
+ return resolvedPath;
53
+ }
54
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,0BAA0B;AAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAE3E,WAAW;AACX,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,mBAAmB;AACnB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAE1D,aAAa;AACb,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;IACpC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,MAAc;IAC9D,aAAa;IACb,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,qBAAqB;IACrB,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAEnD,gBAAgB;IAChB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEzD,2BAA2B;IAC3B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,4BAA4B,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 数据库连接和初始化
3
+ */
4
+ import type { Database as BetterSqlite3Database } from 'better-sqlite3';
5
+ import * as schema from './schema.js';
6
+ declare const sqlite: BetterSqlite3Database;
7
+ export declare const db: import("drizzle-orm/better-sqlite3/driver.js").BetterSQLite3Database<typeof schema>;
8
+ export { sqlite };
9
+ export declare function initDatabase(): Promise<void>;
10
+ export declare function closeDatabase(): void;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,IAAI,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAetC,QAAA,MAAM,MAAM,EAAE,qBAAkD,CAAC;AAIjE,eAAO,MAAM,EAAE,qFAA8B,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,CAAC;AAGlB,wBAAsB,YAAY,kBA2IjC;AAGD,wBAAgB,aAAa,SAE5B"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * 数据库连接和初始化
3
+ */
4
+ import Database from 'better-sqlite3';
5
+ import { drizzle } from 'drizzle-orm/better-sqlite3';
6
+ import * as schema from './schema.js';
7
+ import * as path from 'path';
8
+ import * as fs from 'fs';
9
+ import { getDataDir } from '../config.js';
10
+ // 使用统一的数据目录
11
+ const DATABASE_URL = process.env.DATABASE_URL || path.join(getDataDir(), 'database.sqlite');
12
+ // 确保数据目录存在
13
+ const dbDir = path.dirname(DATABASE_URL);
14
+ if (!fs.existsSync(dbDir)) {
15
+ fs.mkdirSync(dbDir, { recursive: true });
16
+ }
17
+ // 创建数据库连接
18
+ const sqlite = new Database(DATABASE_URL);
19
+ sqlite.pragma('journal_mode = WAL'); // 启用 WAL 模式提高性能
20
+ // 创建 Drizzle 实例
21
+ export const db = drizzle(sqlite, { schema });
22
+ // 导出 sqlite 实例用于直接执行 SQL(需要谨慎使用)
23
+ export { sqlite };
24
+ // 初始化数据库(创建表)
25
+ export async function initDatabase() {
26
+ // 使用 Drizzle Kit 迁移,或者手动创建表
27
+ // 这里先手动创建表结构
28
+ sqlite.exec(`
29
+ CREATE TABLE IF NOT EXISTS users (
30
+ id TEXT PRIMARY KEY,
31
+ email TEXT NOT NULL UNIQUE,
32
+ api_key TEXT NOT NULL UNIQUE,
33
+ role TEXT NOT NULL DEFAULT 'user',
34
+ created_at INTEGER NOT NULL,
35
+ updated_at INTEGER NOT NULL
36
+ );
37
+
38
+ CREATE TABLE IF NOT EXISTS mcp_configs (
39
+ id TEXT PRIMARY KEY,
40
+ user_id TEXT NOT NULL,
41
+ name TEXT NOT NULL,
42
+ components TEXT NOT NULL,
43
+ custom_tools TEXT NOT NULL,
44
+ variables TEXT NOT NULL,
45
+ init_script TEXT,
46
+ created_at INTEGER NOT NULL,
47
+ updated_at INTEGER NOT NULL,
48
+ FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
49
+ );
50
+ `);
51
+ // 检查 mcp_configs 表是否有 enable_explore_table 列,如果没有则添加
52
+ try {
53
+ const mcpConfigsTableInfo = sqlite.prepare("PRAGMA table_info(mcp_configs)").all();
54
+ const hasEnableExploreTable = mcpConfigsTableInfo.some(col => col.name === 'enable_explore_table');
55
+ if (mcpConfigsTableInfo.length > 0 && !hasEnableExploreTable) {
56
+ // 表存在但没有 enable_explore_table 列,需要迁移
57
+ console.log('Migrating mcp_configs: adding enable_explore_table column...');
58
+ sqlite.exec(`
59
+ ALTER TABLE mcp_configs ADD COLUMN enable_explore_table INTEGER DEFAULT 1;
60
+ UPDATE mcp_configs SET enable_explore_table = 1 WHERE enable_explore_table IS NULL;
61
+ `);
62
+ }
63
+ }
64
+ catch (error) {
65
+ // 表不存在或出错,继续创建
66
+ console.error('Error checking mcp_configs table:', error);
67
+ }
68
+ // 检查 table_definitions 表是否存在且是否有 user_id 列
69
+ try {
70
+ const tableInfo = sqlite.prepare("PRAGMA table_info(table_definitions)").all();
71
+ const hasUserId = tableInfo.some(col => col.name === 'user_id');
72
+ const hasAllowExplore = tableInfo.some(col => col.name === 'allow_explore');
73
+ if (tableInfo.length > 0 && !hasUserId) {
74
+ // 表存在但没有 user_id 列,需要迁移
75
+ console.log('Migrating table_definitions: adding user_id column...');
76
+ // 删除旧表和关联数据(因为 user_id 是必需的,无法为现有数据分配用户)
77
+ sqlite.exec(`
78
+ DROP TABLE IF EXISTS table_data;
79
+ DROP TABLE IF EXISTS table_definitions;
80
+ `);
81
+ }
82
+ else if (tableInfo.length > 0 && !hasAllowExplore) {
83
+ // 表存在但没有 allow_explore 列,需要迁移
84
+ console.log('Migrating table_definitions: adding allow_explore column...');
85
+ sqlite.exec(`
86
+ ALTER TABLE table_definitions ADD COLUMN allow_explore INTEGER DEFAULT 1;
87
+ UPDATE table_definitions SET allow_explore = 1 WHERE allow_explore IS NULL;
88
+ `);
89
+ }
90
+ }
91
+ catch (error) {
92
+ // 表不存在,继续创建
93
+ }
94
+ // 创建或重新创建 table_definitions 表
95
+ sqlite.exec(`
96
+ CREATE TABLE IF NOT EXISTS table_definitions (
97
+ id TEXT PRIMARY KEY,
98
+ user_id TEXT NOT NULL,
99
+ name TEXT NOT NULL,
100
+ description TEXT,
101
+ columns TEXT NOT NULL,
102
+ allow_explore INTEGER DEFAULT 1,
103
+ created_at INTEGER NOT NULL,
104
+ updated_at INTEGER NOT NULL,
105
+ FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
106
+ UNIQUE(user_id, name)
107
+ );
108
+
109
+ CREATE TABLE IF NOT EXISTS table_data (
110
+ id TEXT PRIMARY KEY,
111
+ table_id TEXT NOT NULL,
112
+ row_data TEXT NOT NULL,
113
+ created_at INTEGER NOT NULL,
114
+ updated_at INTEGER NOT NULL,
115
+ FOREIGN KEY (table_id) REFERENCES table_definitions(id) ON DELETE CASCADE
116
+ );
117
+
118
+ CREATE TABLE IF NOT EXISTS prompts (
119
+ id TEXT PRIMARY KEY,
120
+ user_id TEXT NOT NULL,
121
+ name TEXT NOT NULL,
122
+ description TEXT,
123
+ arguments TEXT NOT NULL,
124
+ messages TEXT NOT NULL,
125
+ created_at INTEGER NOT NULL,
126
+ updated_at INTEGER NOT NULL,
127
+ FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
128
+ UNIQUE(user_id, name)
129
+ );
130
+
131
+ CREATE TABLE IF NOT EXISTS mcp_component_tools (
132
+ id TEXT PRIMARY KEY,
133
+ user_id TEXT NOT NULL,
134
+ config_id TEXT NOT NULL,
135
+ component_id TEXT NOT NULL,
136
+ component_name TEXT NOT NULL,
137
+ tool_name TEXT NOT NULL,
138
+ original_tool_name TEXT NOT NULL,
139
+ description TEXT NOT NULL,
140
+ input_schema TEXT NOT NULL,
141
+ disabled INTEGER NOT NULL DEFAULT 0,
142
+ tool_patches TEXT,
143
+ created_at INTEGER NOT NULL,
144
+ updated_at INTEGER NOT NULL,
145
+ FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
146
+ FOREIGN KEY (config_id) REFERENCES mcp_configs(id) ON DELETE CASCADE
147
+ );
148
+
149
+ CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
150
+ CREATE INDEX IF NOT EXISTS idx_users_api_key ON users(api_key);
151
+ CREATE INDEX IF NOT EXISTS idx_mcp_configs_user_id ON mcp_configs(user_id);
152
+ CREATE INDEX IF NOT EXISTS idx_table_definitions_user_id ON table_definitions(user_id);
153
+ CREATE INDEX IF NOT EXISTS idx_table_data_table_id ON table_data(table_id);
154
+ CREATE INDEX IF NOT EXISTS idx_prompts_user_id ON prompts(user_id);
155
+ CREATE INDEX IF NOT EXISTS idx_mcp_component_tools_user_id ON mcp_component_tools(user_id);
156
+ CREATE INDEX IF NOT EXISTS idx_mcp_component_tools_config_id ON mcp_component_tools(config_id);
157
+ `);
158
+ console.log('Database initialized');
159
+ }
160
+ // 关闭数据库连接
161
+ export function closeDatabase() {
162
+ sqlite.close();
163
+ }
164
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}