@veolab/discoverylab 1.2.2 → 1.3.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 (172) hide show
  1. package/.mcp.json +2 -2
  2. package/README.md +182 -0
  3. package/dist/{chunk-YEZ26ENO.js → chunk-3QRQEDWR.js} +313 -192
  4. package/dist/{chunk-E3N3P2AG.js → chunk-4L76GPRC.js} +1124 -51
  5. package/dist/{chunk-I6YD3QFM.js → chunk-FIL7IWEL.js} +5 -3
  6. package/dist/{chunk-G524UVBK.js → chunk-FNUN7EPB.js} +5 -5
  7. package/dist/chunk-GAKEFJ5T.js +481 -0
  8. package/dist/chunk-LB3RNE3O.js +109 -0
  9. package/dist/chunk-N6JJ2RGV.js +2680 -0
  10. package/dist/{chunk-7HZEDTS7.js → chunk-VRM42PML.js} +3471 -848
  11. package/dist/{chunk-TJ3H23LL.js → chunk-VVIOB362.js} +3 -1
  12. package/dist/{chunk-W3WJGYR6.js → chunk-XFVDP332.js} +8 -2
  13. package/dist/cli.js +397 -9
  14. package/dist/{db-ADBEBNH6.js → db-6WLEVKUV.js} +3 -1
  15. package/dist/esvp-GSISVXLC.js +52 -0
  16. package/dist/esvp-mobile-GC7MAGMI.js +20 -0
  17. package/dist/index.d.ts +123 -1
  18. package/dist/index.html +11689 -8690
  19. package/dist/index.js +67 -12
  20. package/dist/{ocr-UTWC7537.js → ocr-QDYNCSPE.js} +1 -1
  21. package/dist/{playwright-R7Y5HREH.js → playwright-VZ7PXDC5.js} +2 -2
  22. package/dist/runtime/esvp-host-runtime/darwin-arm64/esvp-host-runtime +0 -0
  23. package/dist/runtime/esvp-host-runtime/manifest.json +10 -0
  24. package/dist/server-FO3UVUZU.js +22 -0
  25. package/dist/{setup-B5YPNUE4.js → setup-2SQC5UHJ.js} +2 -2
  26. package/dist/{tools-YS4QHOTQ.js → tools-OCRMOQ4U.js} +61 -6
  27. package/package.json +36 -5
  28. package/dist/chunk-22OCFYHG.js +0 -6283
  29. package/dist/chunk-24VARQVO.js +0 -7818
  30. package/dist/chunk-2OGZX6C4.js +0 -588
  31. package/dist/chunk-2WCNIFRO.js +0 -6191
  32. package/dist/chunk-43U6UYV7.js +0 -590
  33. package/dist/chunk-4H2E3K2G.js +0 -7638
  34. package/dist/chunk-4KLG6DDE.js +0 -334
  35. package/dist/chunk-4MS6YW2B.js +0 -6490
  36. package/dist/chunk-4NNTRJOI.js +0 -7791
  37. package/dist/chunk-5F76VWME.js +0 -6397
  38. package/dist/chunk-5NEFN42O.js +0 -7791
  39. package/dist/chunk-63MEQ6UH.js +0 -7673
  40. package/dist/chunk-6H3NXFX3.js +0 -6861
  41. package/dist/chunk-7DOG2W4O.js +0 -6428
  42. package/dist/chunk-7IDQLLBW.js +0 -311
  43. package/dist/chunk-7NP64TGJ.js +0 -6822
  44. package/dist/chunk-AATLY4KT.js +0 -6505
  45. package/dist/chunk-C7QUR7XX.js +0 -6397
  46. package/dist/chunk-CGKCE6MC.js +0 -6279
  47. package/dist/chunk-D25V6IWE.js +0 -6487
  48. package/dist/chunk-EQOZSXAT.js +0 -6822
  49. package/dist/chunk-FPHD7HSQ.js +0 -6812
  50. package/dist/chunk-GGJJUCFK.js +0 -7160
  51. package/dist/chunk-GLHOY3NN.js +0 -7805
  52. package/dist/chunk-GML5MKQA.js +0 -6398
  53. package/dist/chunk-GOL6FUJL.js +0 -6045
  54. package/dist/chunk-GSWHWEYC.js +0 -1346
  55. package/dist/chunk-HDKEQOF5.js +0 -7788
  56. package/dist/chunk-HZGSWVVS.js +0 -7111
  57. package/dist/chunk-IGZ5TICZ.js +0 -334
  58. package/dist/chunk-IRKQG33A.js +0 -7054
  59. package/dist/chunk-JFTBF4JR.js +0 -6040
  60. package/dist/chunk-JVLVBPUJ.js +0 -6180
  61. package/dist/chunk-JY3KC67R.js +0 -6504
  62. package/dist/chunk-KUFBCBNJ.js +0 -6815
  63. package/dist/chunk-KV7KDJ43.js +0 -7639
  64. package/dist/chunk-L4SA5F5W.js +0 -6397
  65. package/dist/chunk-L5IJZV5F.js +0 -6822
  66. package/dist/chunk-MFFPQLU4.js +0 -7102
  67. package/dist/chunk-MJS2YKNR.js +0 -6397
  68. package/dist/chunk-MN6LCZHZ.js +0 -1320
  69. package/dist/chunk-NBAUZ7X2.js +0 -1336
  70. package/dist/chunk-NDBW6ELQ.js +0 -7638
  71. package/dist/chunk-O2HBSDI2.js +0 -6175
  72. package/dist/chunk-OFFIUYMG.js +0 -6341
  73. package/dist/chunk-OVCQGF2J.js +0 -1321
  74. package/dist/chunk-P4S7ZY6G.js +0 -7638
  75. package/dist/chunk-PBHUHSC3.js +0 -6002
  76. package/dist/chunk-PC4LR4ZI.js +0 -6359
  77. package/dist/chunk-PMTGGZ7R.js +0 -6397
  78. package/dist/chunk-PTXSB3UV.js +0 -497
  79. package/dist/chunk-PYUCY3U6.js +0 -1340
  80. package/dist/chunk-QJXXHOV7.js +0 -205
  81. package/dist/chunk-RDZDSOAL.js +0 -7750
  82. package/dist/chunk-RLW2OI2L.js +0 -6383
  83. package/dist/chunk-RUGHHO4K.js +0 -6395
  84. package/dist/chunk-SIOQVM2E.js +0 -6819
  85. package/dist/chunk-SR67SRIT.js +0 -1336
  86. package/dist/chunk-SSRXIO2V.js +0 -6822
  87. package/dist/chunk-SWSEKFON.js +0 -6487
  88. package/dist/chunk-TAODYZ52.js +0 -1393
  89. package/dist/chunk-TBG76CYG.js +0 -6395
  90. package/dist/chunk-V3CBINLD.js +0 -6812
  91. package/dist/chunk-VPYSLEGM.js +0 -6710
  92. package/dist/chunk-VY3BLXBW.js +0 -329
  93. package/dist/chunk-WTFOGVJQ.js +0 -6365
  94. package/dist/chunk-X64SFUT5.js +0 -6099
  95. package/dist/chunk-XIBF5LBD.js +0 -6395
  96. package/dist/chunk-XUKWS2CE.js +0 -7805
  97. package/dist/chunk-XZZKFF5V.js +0 -7787
  98. package/dist/chunk-Y5VDMSYC.js +0 -6701
  99. package/dist/chunk-YUBL36H4.js +0 -6605
  100. package/dist/chunk-YWVXFVSW.js +0 -6456
  101. package/dist/chunk-ZJFWMSZF.js +0 -7883
  102. package/dist/chunk-ZXZACOLD.js +0 -6822
  103. package/dist/db-IWIL65EX.js +0 -33
  104. package/dist/gridCompositor-ENKLFPWR.js +0 -409
  105. package/dist/playwright-A3OGSDRG.js +0 -38
  106. package/dist/playwright-ATDC4NYW.js +0 -38
  107. package/dist/playwright-E6EUFIJG.js +0 -38
  108. package/dist/server-2DXLKLFM.js +0 -13
  109. package/dist/server-2ICEWJVK.js +0 -13
  110. package/dist/server-2MQV3FNY.js +0 -13
  111. package/dist/server-2NGD7GE3.js +0 -13
  112. package/dist/server-2VKO76UK.js +0 -14
  113. package/dist/server-3BK2VFU7.js +0 -13
  114. package/dist/server-3FBHBA7L.js +0 -15
  115. package/dist/server-4LDOB3NX.js +0 -13
  116. package/dist/server-4YI44KDR.js +0 -13
  117. package/dist/server-64XMXA5P.js +0 -13
  118. package/dist/server-6IPHVUYT.js +0 -14
  119. package/dist/server-73ORHMJN.js +0 -13
  120. package/dist/server-73P7M3QB.js +0 -14
  121. package/dist/server-BPVRW5LJ.js +0 -14
  122. package/dist/server-BW4RKZIX.js +0 -13
  123. package/dist/server-CFS5SM5K.js +0 -13
  124. package/dist/server-DX7VYHHM.js +0 -13
  125. package/dist/server-F3YPX6ET.js +0 -13
  126. package/dist/server-FUXTR33I.js +0 -13
  127. package/dist/server-G2SY3DOS.js +0 -13
  128. package/dist/server-G32U7VOQ.js +0 -13
  129. package/dist/server-HKRIY7FP.js +0 -14
  130. package/dist/server-HON66OES.js +0 -15
  131. package/dist/server-IOOZK4NP.js +0 -14
  132. package/dist/server-IZEO7OJJ.js +0 -14
  133. package/dist/server-J52LMTBT.js +0 -13
  134. package/dist/server-JG7UKFGK.js +0 -14
  135. package/dist/server-JSCHEBOD.js +0 -13
  136. package/dist/server-K6KC4ZOM.js +0 -13
  137. package/dist/server-KJVRGWFE.js +0 -13
  138. package/dist/server-LCPB2L4U.js +0 -13
  139. package/dist/server-M7LDYKAJ.js +0 -13
  140. package/dist/server-MKVK6ZQQ.js +0 -13
  141. package/dist/server-MU52LCXT.js +0 -13
  142. package/dist/server-NM5CKDUU.js +0 -13
  143. package/dist/server-NPZN3FWO.js +0 -14
  144. package/dist/server-O5FIAHSY.js +0 -14
  145. package/dist/server-OESJUEYC.js +0 -13
  146. package/dist/server-ONSKQO4W.js +0 -13
  147. package/dist/server-P27BZXBL.js +0 -14
  148. package/dist/server-Q4FBWQUA.js +0 -13
  149. package/dist/server-RNQ7VUAL.js +0 -13
  150. package/dist/server-S6B5WUBT.js +0 -14
  151. package/dist/server-SRYNSGSP.js +0 -14
  152. package/dist/server-SUN3W2YK.js +0 -13
  153. package/dist/server-UA62LHZB.js +0 -13
  154. package/dist/server-UJB44EW5.js +0 -13
  155. package/dist/server-X3TLP6DX.js +0 -14
  156. package/dist/server-YT2UGEZK.js +0 -13
  157. package/dist/server-ZBPQ33V6.js +0 -14
  158. package/dist/setup-27CQAX6K.js +0 -17
  159. package/dist/setup-AQX4JQVR.js +0 -17
  160. package/dist/setup-EQTU7FI6.js +0 -17
  161. package/dist/tools-2KPB37GK.js +0 -178
  162. package/dist/tools-3H6IOWXV.js +0 -178
  163. package/dist/tools-3KYHPDCJ.js +0 -178
  164. package/dist/tools-75BAPCUM.js +0 -177
  165. package/dist/tools-BUVCUCRL.js +0 -178
  166. package/dist/tools-HDNODRS6.js +0 -178
  167. package/dist/tools-HP5MNY3D.js +0 -177
  168. package/dist/tools-L6PKKQPY.js +0 -179
  169. package/dist/tools-N5N2IO7V.js +0 -178
  170. package/dist/tools-NFJEZ2FF.js +0 -177
  171. package/dist/tools-OPULIER6.js +0 -178
  172. package/dist/tools-TLCKABUW.js +0 -178
@@ -1,329 +0,0 @@
1
- import {
2
- __export
3
- } from "./chunk-MLKGABMK.js";
4
-
5
- // src/db/index.ts
6
- import Database from "better-sqlite3";
7
- import { drizzle } from "drizzle-orm/better-sqlite3";
8
- import { mkdirSync, existsSync } from "fs";
9
- import { join } from "path";
10
- import { homedir } from "os";
11
-
12
- // src/db/schema.ts
13
- var schema_exports = {};
14
- __export(schema_exports, {
15
- exportDestinations: () => exportDestinations,
16
- exportRules: () => exportRules,
17
- frames: () => frames,
18
- projectExports: () => projectExports,
19
- projects: () => projects,
20
- settings: () => settings
21
- });
22
- import { sqliteTable, text, integer, real } from "drizzle-orm/sqlite-core";
23
- var projects = sqliteTable("projects", {
24
- id: text("id").primaryKey(),
25
- name: text("name").notNull(),
26
- // Source
27
- videoPath: text("video_path"),
28
- thumbnailPath: text("thumbnail_path"),
29
- // Best frame or image for project cover
30
- platform: text("platform"),
31
- // 'ios' | 'android' | 'web'
32
- // Analysis
33
- aiSummary: text("ai_summary"),
34
- ocrText: text("ocr_text"),
35
- ocrEngine: text("ocr_engine"),
36
- ocrConfidence: real("ocr_confidence"),
37
- frameCount: integer("frame_count").default(0),
38
- duration: real("duration"),
39
- // seconds
40
- // Annotations
41
- manualNotes: text("manual_notes"),
42
- tags: text("tags"),
43
- // JSON array
44
- linkedTicket: text("linked_ticket"),
45
- // e.g., "ABC-123"
46
- // External integrations (legacy single URLs - maintained for backwards compatibility)
47
- linkedJiraUrl: text("linked_jira_url"),
48
- // Full Jira issue URL
49
- linkedNotionUrl: text("linked_notion_url"),
50
- // Notion page URL
51
- linkedFigmaUrl: text("linked_figma_url"),
52
- // Figma design URL (auto-detected from Jira or manual)
53
- // Task Hub - Multiple links with metadata (JSON array)
54
- taskHubLinks: text("task_hub_links"),
55
- // JSON: [{ id, type, url, title, status, metadata }]
56
- taskRequirements: text("task_requirements"),
57
- // AI-generated requirements from linked content
58
- taskTestMap: text("task_test_map"),
59
- // AI-generated test map from linked content
60
- // Status
61
- status: text("status").default("draft"),
62
- // 'draft' | 'analyzed' | 'exported' | 'archived'
63
- // Timestamps
64
- createdAt: integer("created_at", { mode: "timestamp" }).notNull(),
65
- updatedAt: integer("updated_at", { mode: "timestamp" }).notNull()
66
- });
67
- var projectExports = sqliteTable("project_exports", {
68
- id: text("id").primaryKey(),
69
- projectId: text("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
70
- // Destination
71
- destination: text("destination").notNull(),
72
- // 'notion' | 'drive' | 'jira' | 'slack' | 'local'
73
- destinationUrl: text("destination_url"),
74
- destinationPath: text("destination_path"),
75
- // Content included
76
- contentIncluded: text("content_included"),
77
- // JSON: { video, keyFrames, aiSummary, manualNotes }
78
- // Status
79
- status: text("status").default("pending"),
80
- // 'pending' | 'in_progress' | 'completed' | 'failed'
81
- errorMessage: text("error_message"),
82
- // Timestamps
83
- exportedAt: integer("exported_at", { mode: "timestamp" }),
84
- createdAt: integer("created_at", { mode: "timestamp" }).notNull()
85
- });
86
- var frames = sqliteTable("frames", {
87
- id: text("id").primaryKey(),
88
- projectId: text("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
89
- // Frame data
90
- frameNumber: integer("frame_number").notNull(),
91
- timestamp: real("timestamp").notNull(),
92
- // seconds
93
- imagePath: text("image_path").notNull(),
94
- // Analysis
95
- ocrText: text("ocr_text"),
96
- isKeyFrame: integer("is_key_frame", { mode: "boolean" }).default(false),
97
- // Timestamps
98
- createdAt: integer("created_at", { mode: "timestamp" }).notNull()
99
- });
100
- var settings = sqliteTable("settings", {
101
- key: text("key").primaryKey(),
102
- value: text("value").notNull(),
103
- updatedAt: integer("updated_at", { mode: "timestamp" }).notNull()
104
- });
105
- var exportDestinations = sqliteTable("export_destinations", {
106
- id: text("id").primaryKey(),
107
- // Destination config
108
- type: text("type").notNull(),
109
- // 'notion' | 'drive' | 'jira' | 'slack'
110
- name: text("name").notNull(),
111
- // User-friendly name
112
- // Configuration (JSON)
113
- config: text("config"),
114
- // { workspaceUrl, folderId, projectKey, channelId, etc. }
115
- // Status
116
- isActive: integer("is_active", { mode: "boolean" }).default(true),
117
- lastUsedAt: integer("last_used_at", { mode: "timestamp" }),
118
- // Timestamps
119
- createdAt: integer("created_at", { mode: "timestamp" }).notNull(),
120
- updatedAt: integer("updated_at", { mode: "timestamp" }).notNull()
121
- });
122
- var exportRules = sqliteTable("export_rules", {
123
- id: text("id").primaryKey(),
124
- // Rule definition
125
- name: text("name").notNull(),
126
- destinationId: text("destination_id").notNull().references(() => exportDestinations.id, { onDelete: "cascade" }),
127
- // Trigger conditions (JSON)
128
- conditions: text("conditions"),
129
- // { tags: ['feature'], status: 'analyzed', platform: 'ios' }
130
- // Content to include (JSON)
131
- contentIncluded: text("content_included"),
132
- // { video: true, keyFrames: true, aiSummary: true }
133
- // Status
134
- isActive: integer("is_active", { mode: "boolean" }).default(true),
135
- // Timestamps
136
- createdAt: integer("created_at", { mode: "timestamp" }).notNull(),
137
- updatedAt: integer("updated_at", { mode: "timestamp" }).notNull()
138
- });
139
-
140
- // src/db/index.ts
141
- var DATA_DIR = join(homedir(), ".discoverylab");
142
- var DB_PATH = join(DATA_DIR, "data.db");
143
- var PROJECTS_DIR = join(DATA_DIR, "projects");
144
- var EXPORTS_DIR = join(DATA_DIR, "exports");
145
- var FRAMES_DIR = join(DATA_DIR, "frames");
146
- function ensureDirectories() {
147
- const dirs = [DATA_DIR, PROJECTS_DIR, EXPORTS_DIR, FRAMES_DIR];
148
- for (const dir of dirs) {
149
- if (!existsSync(dir)) {
150
- mkdirSync(dir, { recursive: true });
151
- }
152
- }
153
- }
154
- function createTables(sqlite) {
155
- sqlite.exec(`
156
- CREATE TABLE IF NOT EXISTS projects (
157
- id TEXT PRIMARY KEY,
158
- name TEXT NOT NULL,
159
- video_path TEXT,
160
- thumbnail_path TEXT,
161
- platform TEXT,
162
- ai_summary TEXT,
163
- ocr_text TEXT,
164
- ocr_engine TEXT,
165
- ocr_confidence REAL,
166
- frame_count INTEGER DEFAULT 0,
167
- duration REAL,
168
- manual_notes TEXT,
169
- tags TEXT,
170
- linked_ticket TEXT,
171
- linked_jira_url TEXT,
172
- linked_notion_url TEXT,
173
- linked_figma_url TEXT,
174
- task_hub_links TEXT,
175
- task_requirements TEXT,
176
- task_test_map TEXT,
177
- status TEXT DEFAULT 'draft',
178
- created_at INTEGER NOT NULL,
179
- updated_at INTEGER NOT NULL
180
- )
181
- `);
182
- try {
183
- sqlite.exec(`ALTER TABLE projects ADD COLUMN thumbnail_path TEXT`);
184
- } catch (e) {
185
- }
186
- try {
187
- sqlite.exec(`ALTER TABLE projects ADD COLUMN linked_jira_url TEXT`);
188
- } catch (e) {
189
- }
190
- try {
191
- sqlite.exec(`ALTER TABLE projects ADD COLUMN linked_notion_url TEXT`);
192
- } catch (e) {
193
- }
194
- try {
195
- sqlite.exec(`ALTER TABLE projects ADD COLUMN linked_figma_url TEXT`);
196
- } catch (e) {
197
- }
198
- try {
199
- sqlite.exec(`ALTER TABLE projects ADD COLUMN task_hub_links TEXT`);
200
- } catch (e) {
201
- }
202
- try {
203
- sqlite.exec(`ALTER TABLE projects ADD COLUMN task_requirements TEXT`);
204
- } catch (e) {
205
- }
206
- try {
207
- sqlite.exec(`ALTER TABLE projects ADD COLUMN task_test_map TEXT`);
208
- } catch (e) {
209
- }
210
- try {
211
- sqlite.exec(`ALTER TABLE projects ADD COLUMN ocr_engine TEXT`);
212
- } catch (e) {
213
- }
214
- try {
215
- sqlite.exec(`ALTER TABLE projects ADD COLUMN ocr_confidence REAL`);
216
- } catch (e) {
217
- }
218
- sqlite.exec(`
219
- CREATE TABLE IF NOT EXISTS project_exports (
220
- id TEXT PRIMARY KEY,
221
- project_id TEXT NOT NULL,
222
- destination TEXT NOT NULL,
223
- destination_url TEXT,
224
- destination_path TEXT,
225
- content_included TEXT,
226
- status TEXT DEFAULT 'pending',
227
- error_message TEXT,
228
- exported_at INTEGER,
229
- created_at INTEGER NOT NULL,
230
- FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
231
- )
232
- `);
233
- sqlite.exec(`
234
- CREATE TABLE IF NOT EXISTS frames (
235
- id TEXT PRIMARY KEY,
236
- project_id TEXT NOT NULL,
237
- frame_number INTEGER NOT NULL,
238
- timestamp REAL NOT NULL,
239
- image_path TEXT NOT NULL,
240
- ocr_text TEXT,
241
- is_key_frame INTEGER DEFAULT 0,
242
- created_at INTEGER NOT NULL,
243
- FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
244
- )
245
- `);
246
- sqlite.exec(`
247
- CREATE TABLE IF NOT EXISTS settings (
248
- key TEXT PRIMARY KEY,
249
- value TEXT NOT NULL,
250
- updated_at INTEGER NOT NULL
251
- )
252
- `);
253
- sqlite.exec(`
254
- CREATE TABLE IF NOT EXISTS export_destinations (
255
- id TEXT PRIMARY KEY,
256
- type TEXT NOT NULL,
257
- name TEXT NOT NULL,
258
- config TEXT,
259
- is_active INTEGER DEFAULT 1,
260
- last_used_at INTEGER,
261
- created_at INTEGER NOT NULL,
262
- updated_at INTEGER NOT NULL
263
- )
264
- `);
265
- sqlite.exec(`
266
- CREATE TABLE IF NOT EXISTS export_rules (
267
- id TEXT PRIMARY KEY,
268
- name TEXT NOT NULL,
269
- destination_id TEXT NOT NULL,
270
- conditions TEXT,
271
- content_included TEXT,
272
- is_active INTEGER DEFAULT 1,
273
- created_at INTEGER NOT NULL,
274
- updated_at INTEGER NOT NULL,
275
- FOREIGN KEY (destination_id) REFERENCES export_destinations(id) ON DELETE CASCADE
276
- )
277
- `);
278
- sqlite.exec(`
279
- CREATE INDEX IF NOT EXISTS idx_projects_status ON projects(status);
280
- CREATE INDEX IF NOT EXISTS idx_projects_platform ON projects(platform);
281
- CREATE INDEX IF NOT EXISTS idx_project_exports_project_id ON project_exports(project_id);
282
- CREATE INDEX IF NOT EXISTS idx_project_exports_destination ON project_exports(destination);
283
- CREATE INDEX IF NOT EXISTS idx_frames_project_id ON frames(project_id);
284
- CREATE INDEX IF NOT EXISTS idx_frames_is_key_frame ON frames(is_key_frame);
285
- `);
286
- }
287
- var _db = null;
288
- var _sqlite = null;
289
- function getDatabase() {
290
- if (!_db) {
291
- ensureDirectories();
292
- _sqlite = new Database(DB_PATH);
293
- _sqlite.pragma("journal_mode = WAL");
294
- _sqlite.pragma("foreign_keys = ON");
295
- createTables(_sqlite);
296
- _db = drizzle(_sqlite, { schema: schema_exports });
297
- }
298
- return _db;
299
- }
300
- function getSqlite() {
301
- if (!_sqlite) {
302
- getDatabase();
303
- }
304
- return _sqlite;
305
- }
306
- function closeDatabase() {
307
- if (_sqlite) {
308
- _sqlite.close();
309
- _sqlite = null;
310
- _db = null;
311
- }
312
- }
313
-
314
- export {
315
- projects,
316
- projectExports,
317
- frames,
318
- settings,
319
- exportDestinations,
320
- exportRules,
321
- DATA_DIR,
322
- DB_PATH,
323
- PROJECTS_DIR,
324
- EXPORTS_DIR,
325
- FRAMES_DIR,
326
- getDatabase,
327
- getSqlite,
328
- closeDatabase
329
- };