@luzzle/core 0.0.32

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 (231) hide show
  1. package/README.md +41 -0
  2. package/dist/src/database/client.d.ts +4 -0
  3. package/dist/src/database/client.js +12 -0
  4. package/dist/src/database/client.js.map +1 -0
  5. package/dist/src/database/client.test.d.ts +1 -0
  6. package/dist/src/database/client.test.js +34 -0
  7. package/dist/src/database/client.test.js.map +1 -0
  8. package/dist/src/database/database.mock.d.ts +22 -0
  9. package/dist/src/database/database.mock.js +42 -0
  10. package/dist/src/database/database.mock.js.map +1 -0
  11. package/dist/src/database/migrations/2023-05-26T15:04:19.094Z.d.ts +3 -0
  12. package/dist/src/database/migrations/2023-05-26T15:04:19.094Z.js +49 -0
  13. package/dist/src/database/migrations/2023-05-26T15:04:19.094Z.js.map +1 -0
  14. package/dist/src/database/migrations/2023-10-30T23:24:40Z.d.ts +3 -0
  15. package/dist/src/database/migrations/2023-10-30T23:24:40Z.js +35 -0
  16. package/dist/src/database/migrations/2023-10-30T23:24:40Z.js.map +1 -0
  17. package/dist/src/database/migrations/2023-11-22T14:55:18Z.d.ts +3 -0
  18. package/dist/src/database/migrations/2023-11-22T14:55:18Z.js +16 -0
  19. package/dist/src/database/migrations/2023-11-22T14:55:18Z.js.map +1 -0
  20. package/dist/src/database/migrations/2023-11-27T04:32:07Z.d.ts +3 -0
  21. package/dist/src/database/migrations/2023-11-27T04:32:07Z.js +30 -0
  22. package/dist/src/database/migrations/2023-11-27T04:32:07Z.js.map +1 -0
  23. package/dist/src/database/migrations/2024-01-01T23:30:29Z.d.ts +3 -0
  24. package/dist/src/database/migrations/2024-01-01T23:30:29Z.js +11 -0
  25. package/dist/src/database/migrations/2024-01-01T23:30:29Z.js.map +1 -0
  26. package/dist/src/database/migrations/2024-01-06T15:52:43Z.d.ts +3 -0
  27. package/dist/src/database/migrations/2024-01-06T15:52:43Z.js +16 -0
  28. package/dist/src/database/migrations/2024-01-06T15:52:43Z.js.map +1 -0
  29. package/dist/src/database/migrations/2024-02-09T16:33:10Z.d.ts +3 -0
  30. package/dist/src/database/migrations/2024-02-09T16:33:10Z.js +37 -0
  31. package/dist/src/database/migrations/2024-02-09T16:33:10Z.js.map +1 -0
  32. package/dist/src/database/migrations/2024-02-13T05:56:43Z.d.ts +3 -0
  33. package/dist/src/database/migrations/2024-02-13T05:56:43Z.js +116 -0
  34. package/dist/src/database/migrations/2024-02-13T05:56:43Z.js.map +1 -0
  35. package/dist/src/database/migrations/2024-02-24T03:05:47Z-add-texts-table.d.ts +3 -0
  36. package/dist/src/database/migrations/2024-02-24T03:05:47Z-add-texts-table.js +42 -0
  37. package/dist/src/database/migrations/2024-02-24T03:05:47Z-add-texts-table.js.map +1 -0
  38. package/dist/src/database/migrations/2024-02-26T05:37:37Z-add-cache-table.d.ts +3 -0
  39. package/dist/src/database/migrations/2024-02-26T05:37:37Z-add-cache-table.js +20 -0
  40. package/dist/src/database/migrations/2024-02-26T05:37:37Z-add-cache-table.js.map +1 -0
  41. package/dist/src/database/migrations/2024-03-01T01:01:47Z-fix-trigger-bugs.d.ts +3 -0
  42. package/dist/src/database/migrations/2024-03-01T01:01:47Z-fix-trigger-bugs.js +43 -0
  43. package/dist/src/database/migrations/2024-03-01T01:01:47Z-fix-trigger-bugs.js.map +1 -0
  44. package/dist/src/database/migrations/2024-06-15T17:17:51Z-add-games-table.d.ts +3 -0
  45. package/dist/src/database/migrations/2024-06-15T17:17:51Z-add-games-table.js +54 -0
  46. package/dist/src/database/migrations/2024-06-15T17:17:51Z-add-games-table.js.map +1 -0
  47. package/dist/src/database/migrations/2024-06-24T20:16:48Z-remove-book-open-library-fields.d.ts +3 -0
  48. package/dist/src/database/migrations/2024-06-24T20:16:48Z-remove-book-open-library-fields.js +23 -0
  49. package/dist/src/database/migrations/2024-06-24T20:16:48Z-remove-book-open-library-fields.js.map +1 -0
  50. package/dist/src/database/migrations/2024-06-29T16:31:33Z-add-piece-manager-table.d.ts +3 -0
  51. package/dist/src/database/migrations/2024-06-29T16:31:33Z-add-piece-manager-table.js +17 -0
  52. package/dist/src/database/migrations/2024-06-29T16:31:33Z-add-piece-manager-table.js.map +1 -0
  53. package/dist/src/database/migrations/2024-07-14T06:59:07Z-remove-pieces.d.ts +3 -0
  54. package/dist/src/database/migrations/2024-07-14T06:59:07Z-remove-pieces.js +15 -0
  55. package/dist/src/database/migrations/2024-07-14T06:59:07Z-remove-pieces.js.map +1 -0
  56. package/dist/src/database/migrations/2024-11-06T15:27:05Z-remove-tags.d.ts +3 -0
  57. package/dist/src/database/migrations/2024-11-06T15:27:05Z-remove-tags.js +26 -0
  58. package/dist/src/database/migrations/2024-11-06T15:27:05Z-remove-tags.js.map +1 -0
  59. package/dist/src/database/migrations/2024-11-08T05:59:37Z-remove-pieces-items-unique-tables.d.ts +3 -0
  60. package/dist/src/database/migrations/2024-11-08T05:59:37Z-remove-pieces-items-unique-tables.js +24 -0
  61. package/dist/src/database/migrations/2024-11-08T05:59:37Z-remove-pieces-items-unique-tables.js.map +1 -0
  62. package/dist/src/database/migrations/2024-11-13T14:51:17Z-track-file-paths-on-piece.d.ts +3 -0
  63. package/dist/src/database/migrations/2024-11-13T14:51:17Z-track-file-paths-on-piece.js +54 -0
  64. package/dist/src/database/migrations/2024-11-13T14:51:17Z-track-file-paths-on-piece.js.map +1 -0
  65. package/dist/src/database/migrations/2024-12-15T06:35:24Z-track-assets-on-piece.d.ts +3 -0
  66. package/dist/src/database/migrations/2024-12-15T06:35:24Z-track-assets-on-piece.js +10 -0
  67. package/dist/src/database/migrations/2024-12-15T06:35:24Z-track-assets-on-piece.js.map +1 -0
  68. package/dist/src/database/migrations.d.ts +3 -0
  69. package/dist/src/database/migrations.js +16 -0
  70. package/dist/src/database/migrations.js.map +1 -0
  71. package/dist/src/database/migrations.test.d.ts +1 -0
  72. package/dist/src/database/migrations.test.js +37 -0
  73. package/dist/src/database/migrations.test.js.map +1 -0
  74. package/dist/src/database/tables/index.d.ts +21 -0
  75. package/dist/src/database/tables/index.js +7 -0
  76. package/dist/src/database/tables/index.js.map +1 -0
  77. package/dist/src/database/tables/pieces_cache.schema.d.ts +13 -0
  78. package/dist/src/database/tables/pieces_cache.schema.js +2 -0
  79. package/dist/src/database/tables/pieces_cache.schema.js.map +1 -0
  80. package/dist/src/database/tables/pieces_items.schema.d.ts +16 -0
  81. package/dist/src/database/tables/pieces_items.schema.js +2 -0
  82. package/dist/src/database/tables/pieces_items.schema.js.map +1 -0
  83. package/dist/src/database/tables/pieces_manager.schema.d.ts +13 -0
  84. package/dist/src/database/tables/pieces_manager.schema.js +2 -0
  85. package/dist/src/database/tables/pieces_manager.schema.js.map +1 -0
  86. package/dist/src/database/utils.d.ts +8 -0
  87. package/dist/src/database/utils.js +2 -0
  88. package/dist/src/database/utils.js.map +1 -0
  89. package/dist/src/database/utils.test.d.ts +1 -0
  90. package/dist/src/database/utils.test.js +9 -0
  91. package/dist/src/database/utils.test.js.map +1 -0
  92. package/dist/src/index.d.ts +11 -0
  93. package/dist/src/index.js +12 -0
  94. package/dist/src/index.js.map +1 -0
  95. package/dist/src/index.test.d.ts +1 -0
  96. package/dist/src/index.test.js +9 -0
  97. package/dist/src/index.test.js.map +1 -0
  98. package/dist/src/lib/ajv.d.ts +6 -0
  99. package/dist/src/lib/ajv.js +25 -0
  100. package/dist/src/lib/ajv.js.map +1 -0
  101. package/dist/src/lib/ajv.test.d.ts +1 -0
  102. package/dist/src/lib/ajv.test.js +43 -0
  103. package/dist/src/lib/ajv.test.js.map +1 -0
  104. package/dist/src/lib/frontmatter.d.ts +4 -0
  105. package/dist/src/lib/frontmatter.js +8 -0
  106. package/dist/src/lib/frontmatter.js.map +1 -0
  107. package/dist/src/lib/frontmatter.test.d.ts +1 -0
  108. package/dist/src/lib/frontmatter.test.js +37 -0
  109. package/dist/src/lib/frontmatter.test.js.map +1 -0
  110. package/dist/src/lib/markdown.d.ts +7 -0
  111. package/dist/src/lib/markdown.js +21 -0
  112. package/dist/src/lib/markdown.js.map +1 -0
  113. package/dist/src/lib/markdown.test.d.ts +1 -0
  114. package/dist/src/lib/markdown.test.js +34 -0
  115. package/dist/src/lib/markdown.test.js.map +1 -0
  116. package/dist/src/llm/google.d.ts +6 -0
  117. package/dist/src/llm/google.js +91 -0
  118. package/dist/src/llm/google.js.map +1 -0
  119. package/dist/src/llm/google.test.d.ts +1 -0
  120. package/dist/src/llm/google.test.js +253 -0
  121. package/dist/src/llm/google.test.js.map +1 -0
  122. package/dist/src/pieces/Piece.d.ts +66 -0
  123. package/dist/src/pieces/Piece.fixtures.d.ts +43 -0
  124. package/dist/src/pieces/Piece.fixtures.js +83 -0
  125. package/dist/src/pieces/Piece.fixtures.js.map +1 -0
  126. package/dist/src/pieces/Piece.js +256 -0
  127. package/dist/src/pieces/Piece.js.map +1 -0
  128. package/dist/src/pieces/Piece.test.d.ts +1 -0
  129. package/dist/src/pieces/Piece.test.js +839 -0
  130. package/dist/src/pieces/Piece.test.js.map +1 -0
  131. package/dist/src/pieces/Pieces.d.ts +55 -0
  132. package/dist/src/pieces/Pieces.js +144 -0
  133. package/dist/src/pieces/Pieces.js.map +1 -0
  134. package/dist/src/pieces/Pieces.test.d.ts +1 -0
  135. package/dist/src/pieces/Pieces.test.js +327 -0
  136. package/dist/src/pieces/Pieces.test.js.map +1 -0
  137. package/dist/src/pieces/assets.d.ts +5 -0
  138. package/dist/src/pieces/assets.js +6 -0
  139. package/dist/src/pieces/assets.js.map +1 -0
  140. package/dist/src/pieces/cache.d.ts +20 -0
  141. package/dist/src/pieces/cache.fixtures.d.ts +3 -0
  142. package/dist/src/pieces/cache.fixtures.js +12 -0
  143. package/dist/src/pieces/cache.fixtures.js.map +1 -0
  144. package/dist/src/pieces/cache.js +49 -0
  145. package/dist/src/pieces/cache.js.map +1 -0
  146. package/dist/src/pieces/cache.test.d.ts +1 -0
  147. package/dist/src/pieces/cache.test.js +98 -0
  148. package/dist/src/pieces/cache.test.js.map +1 -0
  149. package/dist/src/pieces/index.d.ts +8 -0
  150. package/dist/src/pieces/index.js +9 -0
  151. package/dist/src/pieces/index.js.map +1 -0
  152. package/dist/src/pieces/item.d.ts +9 -0
  153. package/dist/src/pieces/item.js +79 -0
  154. package/dist/src/pieces/item.js.map +1 -0
  155. package/dist/src/pieces/item.test.d.ts +1 -0
  156. package/dist/src/pieces/item.test.js +215 -0
  157. package/dist/src/pieces/item.test.js.map +1 -0
  158. package/dist/src/pieces/items.d.ts +39 -0
  159. package/dist/src/pieces/items.js +45 -0
  160. package/dist/src/pieces/items.js.map +1 -0
  161. package/dist/src/pieces/items.test.d.ts +1 -0
  162. package/dist/src/pieces/items.test.js +100 -0
  163. package/dist/src/pieces/items.test.js.map +1 -0
  164. package/dist/src/pieces/json.schema.d.ts +6 -0
  165. package/dist/src/pieces/json.schema.js +58 -0
  166. package/dist/src/pieces/json.schema.js.map +1 -0
  167. package/dist/src/pieces/json.schema.test.d.ts +1 -0
  168. package/dist/src/pieces/json.schema.test.js +27 -0
  169. package/dist/src/pieces/json.schema.test.js.map +1 -0
  170. package/dist/src/pieces/manager.d.ts +22 -0
  171. package/dist/src/pieces/manager.js +43 -0
  172. package/dist/src/pieces/manager.js.map +1 -0
  173. package/dist/src/pieces/manager.test.d.ts +1 -0
  174. package/dist/src/pieces/manager.test.js +72 -0
  175. package/dist/src/pieces/manager.test.js.map +1 -0
  176. package/dist/src/pieces/utils/frontmatter.d.ts +33 -0
  177. package/dist/src/pieces/utils/frontmatter.js +69 -0
  178. package/dist/src/pieces/utils/frontmatter.js.map +1 -0
  179. package/dist/src/pieces/utils/frontmatter.test.d.ts +1 -0
  180. package/dist/src/pieces/utils/frontmatter.test.js +185 -0
  181. package/dist/src/pieces/utils/frontmatter.test.js.map +1 -0
  182. package/dist/src/pieces/utils/markdown.d.ts +10 -0
  183. package/dist/src/pieces/utils/markdown.js +9 -0
  184. package/dist/src/pieces/utils/markdown.js.map +1 -0
  185. package/dist/src/pieces/utils/markdown.test.d.ts +1 -0
  186. package/dist/src/pieces/utils/markdown.test.js +38 -0
  187. package/dist/src/pieces/utils/markdown.test.js.map +1 -0
  188. package/dist/src/pieces/utils/piece.d.ts +13 -0
  189. package/dist/src/pieces/utils/piece.fixtures.d.ts +19 -0
  190. package/dist/src/pieces/utils/piece.fixtures.js +39 -0
  191. package/dist/src/pieces/utils/piece.fixtures.js.map +1 -0
  192. package/dist/src/pieces/utils/piece.js +142 -0
  193. package/dist/src/pieces/utils/piece.js.map +1 -0
  194. package/dist/src/pieces/utils/piece.test.d.ts +1 -0
  195. package/dist/src/pieces/utils/piece.test.js +333 -0
  196. package/dist/src/pieces/utils/piece.test.js.map +1 -0
  197. package/dist/src/pieces/utils.d.ts +10 -0
  198. package/dist/src/pieces/utils.js +101 -0
  199. package/dist/src/pieces/utils.js.map +1 -0
  200. package/dist/src/pieces/utils.test.d.ts +1 -0
  201. package/dist/src/pieces/utils.test.js +372 -0
  202. package/dist/src/pieces/utils.test.js.map +1 -0
  203. package/dist/src/storage/abstract.d.ts +19 -0
  204. package/dist/src/storage/abstract.js +4 -0
  205. package/dist/src/storage/abstract.js.map +1 -0
  206. package/dist/src/storage/fs.d.ts +22 -0
  207. package/dist/src/storage/fs.js +84 -0
  208. package/dist/src/storage/fs.js.map +1 -0
  209. package/dist/src/storage/fs.test.d.ts +1 -0
  210. package/dist/src/storage/fs.test.js +222 -0
  211. package/dist/src/storage/fs.test.js.map +1 -0
  212. package/dist/src/storage/index.d.ts +5 -0
  213. package/dist/src/storage/index.js +4 -0
  214. package/dist/src/storage/index.js.map +1 -0
  215. package/dist/src/storage/storage.mock.d.ts +2 -0
  216. package/dist/src/storage/storage.mock.js +18 -0
  217. package/dist/src/storage/storage.mock.js.map +1 -0
  218. package/dist/src/storage/types.d.ts +6 -0
  219. package/dist/src/storage/types.js +2 -0
  220. package/dist/src/storage/types.js.map +1 -0
  221. package/dist/src/storage/webdav.d.ts +25 -0
  222. package/dist/src/storage/webdav.js +65 -0
  223. package/dist/src/storage/webdav.js.map +1 -0
  224. package/dist/src/storage/webdav.test.d.ts +1 -0
  225. package/dist/src/storage/webdav.test.js +194 -0
  226. package/dist/src/storage/webdav.test.js.map +1 -0
  227. package/dist/tsconfig.tsbuildinfo +1 -0
  228. package/dist/vite.config.d.ts +2 -0
  229. package/dist/vite.config.js +36 -0
  230. package/dist/vite.config.js.map +1 -0
  231. package/package.json +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pieces.test.js","sourceRoot":"","sources":["../../../src/pieces/Pieces.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ declare const ASSETS_DIRECTORY = ".assets";
2
+ declare const LUZZLE_DIRECTORY = ".luzzle";
3
+ declare const LUZZLE_SCHEMAS_DIRECTORY = "schemas";
4
+ declare const LUZZLE_PIECE_FILE_EXTENSION = "md";
5
+ export { ASSETS_DIRECTORY, LUZZLE_DIRECTORY, LUZZLE_SCHEMAS_DIRECTORY, LUZZLE_PIECE_FILE_EXTENSION, };
@@ -0,0 +1,6 @@
1
+ const ASSETS_DIRECTORY = '.assets';
2
+ const LUZZLE_DIRECTORY = '.luzzle';
3
+ const LUZZLE_SCHEMAS_DIRECTORY = 'schemas';
4
+ const LUZZLE_PIECE_FILE_EXTENSION = 'md';
5
+ export { ASSETS_DIRECTORY, LUZZLE_DIRECTORY, LUZZLE_SCHEMAS_DIRECTORY, LUZZLE_PIECE_FILE_EXTENSION, };
6
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/pieces/assets.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,SAAS,CAAA;AAClC,MAAM,gBAAgB,GAAG,SAAS,CAAA;AAClC,MAAM,wBAAwB,GAAG,SAAS,CAAA;AAC1C,MAAM,2BAA2B,GAAG,IAAI,CAAA;AAExC,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,2BAA2B,GAC3B,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { LuzzleDatabase } from '../database/tables';
2
+ declare function getCache(db: LuzzleDatabase, file: string): Promise<{
3
+ id: string;
4
+ date_added: number;
5
+ date_updated: number | null;
6
+ file_path: string;
7
+ content_hash: string;
8
+ } | null>;
9
+ declare function getCacheAll(db: LuzzleDatabase): Promise<{
10
+ id: string;
11
+ date_added: number;
12
+ date_updated: number | null;
13
+ file_path: string;
14
+ content_hash: string;
15
+ }[]>;
16
+ declare function addCache(db: LuzzleDatabase, file: string, hash: string): Promise<void>;
17
+ declare function updateCache(db: LuzzleDatabase, file: string, hash: string): Promise<void>;
18
+ declare function removeCache(db: LuzzleDatabase, file: string): Promise<void>;
19
+ declare function clearCache(db: LuzzleDatabase): Promise<void>;
20
+ export { getCacheAll, getCache, addCache, updateCache, removeCache, clearCache, };
@@ -0,0 +1,3 @@
1
+ import { LuzzleSelectable } from '../database/tables/index.js';
2
+ declare function makeCache(override?: Partial<LuzzleSelectable<'pieces_cache'>>): LuzzleSelectable<'pieces_cache'>;
3
+ export { makeCache };
@@ -0,0 +1,12 @@
1
+ function makeCache(override = {}) {
2
+ return {
3
+ id: '1',
4
+ file_path: 'file',
5
+ date_added: new Date().getTime(),
6
+ date_updated: new Date().getTime(),
7
+ content_hash: 'content',
8
+ ...override,
9
+ };
10
+ }
11
+ export { makeCache };
12
+ //# sourceMappingURL=cache.fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.fixtures.js","sourceRoot":"","sources":["../../../src/pieces/cache.fixtures.ts"],"names":[],"mappings":"AAGA,SAAS,SAAS,CACjB,WAAsD,EAAE;IAExD,OAAO;QACN,EAAE,EAAE,GAAG;QACP,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QAChC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QAClC,YAAY,EAAE,SAAS;QACvB,GAAG,QAAQ;KACX,CAAA;AACF,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { createId } from '@paralleldrive/cuid2';
2
+ async function getCache(db, file) {
3
+ const cache = await db
4
+ .selectFrom('pieces_cache')
5
+ .selectAll()
6
+ .where('file_path', '=', file)
7
+ .executeTakeFirst();
8
+ return cache || null;
9
+ }
10
+ async function getCacheAll(db) {
11
+ return await db.selectFrom('pieces_cache').selectAll().execute();
12
+ }
13
+ async function addCache(db, file, hash) {
14
+ const id = createId();
15
+ const date = new Date().getTime();
16
+ await db
17
+ .insertInto('pieces_cache')
18
+ .values({
19
+ content_hash: hash,
20
+ file_path: file,
21
+ id,
22
+ })
23
+ /* c8 ignore next 6 */
24
+ .onConflict((oc) => oc.columns(['file_path']).doUpdateSet({
25
+ content_hash: hash,
26
+ date_updated: date,
27
+ }))
28
+ .execute();
29
+ }
30
+ async function updateCache(db, file, hash) {
31
+ const date = new Date().getTime();
32
+ const id = await db
33
+ .updateTable('pieces_cache')
34
+ .set({ content_hash: hash, date_updated: date })
35
+ .where('file_path', '=', file)
36
+ .returning('id')
37
+ .executeTakeFirst();
38
+ if (!id) {
39
+ await addCache(db, file, hash);
40
+ }
41
+ }
42
+ async function removeCache(db, file) {
43
+ await db.deleteFrom('pieces_cache').where('file_path', '=', file).execute();
44
+ }
45
+ async function clearCache(db) {
46
+ await db.deleteFrom('pieces_cache').execute();
47
+ }
48
+ export { getCacheAll, getCache, addCache, updateCache, removeCache, clearCache, };
49
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/pieces/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,KAAK,UAAU,QAAQ,CAAC,EAAkB,EAAE,IAAY;IACvD,MAAM,KAAK,GAAG,MAAM,EAAE;SACpB,UAAU,CAAC,cAAc,CAAC;SAC1B,SAAS,EAAE;SACX,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC;SAC7B,gBAAgB,EAAE,CAAA;IACpB,OAAO,KAAK,IAAI,IAAI,CAAA;AACrB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,EAAkB;IAC5C,OAAO,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAA;AACjE,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,EAAkB,EAAE,IAAY,EAAE,IAAY;IACrE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IACrB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAEjC,MAAM,EAAE;SACN,UAAU,CAAC,cAAc,CAAC;SAC1B,MAAM,CAAC;QACP,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,EAAE;KACF,CAAC;QACF,sBAAsB;SACrB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAClB,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QACrC,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;KAClB,CAAC,CACF;SACA,OAAO,EAAE,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,EAAkB,EAAE,IAAY,EAAE,IAAY;IACxE,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAEjC,MAAM,EAAE,GAAG,MAAM,EAAE;SACjB,WAAW,CAAC,cAAc,CAAC;SAC3B,GAAG,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SAC/C,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC;SAC7B,SAAS,CAAC,IAAI,CAAC;SACf,gBAAgB,EAAE,CAAA;IAEpB,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,MAAM,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;AACF,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,EAAkB,EAAE,IAAY;IAC1D,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;AAC5E,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,EAAkB;IAC3C,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAA;AAC9C,CAAC;AAED,OAAO,EACN,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,UAAU,GACV,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,98 @@
1
+ import { describe, expect, test, vi, afterEach } from 'vitest';
2
+ import * as cache from './cache.js';
3
+ import { mockKysely } from '../database/database.mock.js';
4
+ import { makeCache } from './cache.fixtures.js';
5
+ import { createId } from '@paralleldrive/cuid2';
6
+ vi.mock('@paralleldrive/cuid2');
7
+ const mocks = {
8
+ createId: vi.mocked(createId),
9
+ };
10
+ const spies = [];
11
+ describe('pieces/cache.ts', () => {
12
+ afterEach(() => {
13
+ Object.values(mocks).forEach((mock) => {
14
+ mock.mockReset();
15
+ });
16
+ spies.forEach((spy) => {
17
+ spy.mockRestore();
18
+ });
19
+ });
20
+ test('getCache', async () => {
21
+ const { db, queries } = mockKysely();
22
+ const file = 'slug';
23
+ const dbCache = makeCache();
24
+ queries.executeTakeFirst.mockReturnValueOnce(dbCache);
25
+ const cacheGet = await cache.getCache(db, file);
26
+ expect(queries.where).toHaveBeenCalledWith('file_path', '=', file);
27
+ expect(cacheGet).toEqual(dbCache);
28
+ });
29
+ test('getCache returns null', async () => {
30
+ const { db, queries } = mockKysely();
31
+ const file = 'slug';
32
+ queries.executeTakeFirst.mockReturnValueOnce(undefined);
33
+ const cacheGet = await cache.getCache(db, file);
34
+ expect(cacheGet).toEqual(null);
35
+ });
36
+ test('getCacheAll', async () => {
37
+ const { db, queries } = mockKysely();
38
+ const dbCache = makeCache();
39
+ queries.execute.mockReturnValueOnce([dbCache]);
40
+ const cacheGet = await cache.getCacheAll(db);
41
+ expect(cacheGet).toEqual([dbCache]);
42
+ });
43
+ test('addCache', async () => {
44
+ const { db, queries } = mockKysely();
45
+ const file = '/path/to/piece';
46
+ const id = 'id';
47
+ const hash = 'hash';
48
+ mocks.createId.mockReturnValueOnce(id);
49
+ await cache.addCache(db, file, hash);
50
+ expect(mocks.createId).toHaveBeenCalledOnce();
51
+ expect(queries.values).toHaveBeenCalledWith({
52
+ file_path: file,
53
+ content_hash: hash,
54
+ id,
55
+ });
56
+ });
57
+ test('updateCache', async () => {
58
+ const { db, queries } = mockKysely();
59
+ const file = '/path/to/piece';
60
+ const hash = 'hash';
61
+ await cache.updateCache(db, file, hash);
62
+ expect(queries.set).toHaveBeenCalledWith({
63
+ content_hash: hash,
64
+ date_updated: expect.any(Number),
65
+ });
66
+ });
67
+ test('updateCache inserts', async () => {
68
+ const { db, queries } = mockKysely();
69
+ const file = '/path/to/piece';
70
+ const hash = 'hash';
71
+ const id = 'id';
72
+ mocks.createId.mockReturnValueOnce(id);
73
+ queries.executeTakeFirst.mockReturnValueOnce(undefined);
74
+ await cache.updateCache(db, file, hash);
75
+ expect(queries.set).toHaveBeenCalledWith({
76
+ content_hash: hash,
77
+ date_updated: expect.any(Number),
78
+ });
79
+ expect(queries.values).toHaveBeenCalledWith({
80
+ file_path: file,
81
+ content_hash: hash,
82
+ id,
83
+ });
84
+ expect(mocks.createId).toHaveBeenCalledOnce();
85
+ });
86
+ test('removeCache', async () => {
87
+ const { db } = mockKysely();
88
+ const slug = 'slug';
89
+ await cache.removeCache(db, slug);
90
+ expect(db.deleteFrom).toHaveBeenCalledOnce();
91
+ });
92
+ test('removeCache', async () => {
93
+ const { db } = mockKysely();
94
+ await cache.clearCache(db);
95
+ expect(db.deleteFrom).toHaveBeenCalledOnce();
96
+ });
97
+ });
98
+ //# sourceMappingURL=cache.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.test.js","sourceRoot":"","sources":["../../../src/pieces/cache.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from './utils/markdown.js';
2
+ export * from './utils/frontmatter.js';
3
+ export * from './json.schema.js';
4
+ export * from './items.js';
5
+ export * from './item.js';
6
+ export * from './manager.js';
7
+ export { default as Piece, type PieceSyncResult, type PiecePruneResult } from './Piece.js';
8
+ export { default as Pieces, type PiecesSyncResult, type PiecesPruneResult } from './Pieces.js';
@@ -0,0 +1,9 @@
1
+ export * from './utils/markdown.js';
2
+ export * from './utils/frontmatter.js';
3
+ export * from './json.schema.js';
4
+ export * from './items.js';
5
+ export * from './item.js';
6
+ export * from './manager.js';
7
+ export { default as Piece } from './Piece.js';
8
+ export { default as Pieces } from './Pieces.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pieces/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,OAAO,IAAI,KAAK,EAA+C,MAAM,YAAY,CAAA;AAC1F,OAAO,EAAE,OAAO,IAAI,MAAM,EAAiD,MAAM,aAAa,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { PiecesItemsSelectable, PiecesItemsInsertable, PiecesItemsUpdateable } from '../database/tables/pieces_items.schema.js';
2
+ import { PieceMarkdown } from './utils/markdown.js';
3
+ import { PieceFrontmatter, PieceFrontmatterSchema } from './utils/frontmatter.js';
4
+ import { ValidateFunction } from 'ajv';
5
+ declare function makePieceItemInsertable<F extends PieceFrontmatter>(piece: string, markdown: PieceMarkdown<F>, schema: PieceFrontmatterSchema<F>): PiecesItemsInsertable;
6
+ declare function makePieceItemUpdatable<F extends PieceFrontmatter>(markdown: PieceMarkdown<F>, schema: PieceFrontmatterSchema<F>, data: PiecesItemsSelectable, force?: boolean): PiecesItemsUpdateable;
7
+ declare function validatePieceItem<F extends PieceFrontmatter>(markdown: PieceMarkdown<F>, validator: ValidateFunction<F>): boolean;
8
+ declare function getValidatePieceItemErrors<F extends PieceFrontmatter>(validator: ValidateFunction<F>): string[];
9
+ export { makePieceItemInsertable, makePieceItemUpdatable, validatePieceItem, getValidatePieceItemErrors, };
@@ -0,0 +1,79 @@
1
+ import { createId } from '@paralleldrive/cuid2';
2
+ import { pieceFrontmatterValueToDatabaseValue, getPieceFrontmatterSchemaFields, } from './utils/frontmatter.js';
3
+ function makePieceItemInsertable(piece, markdown, schema) {
4
+ const frontmatterJson = {};
5
+ const fields = getPieceFrontmatterSchemaFields(schema);
6
+ const assets = [];
7
+ fields.forEach((field) => {
8
+ const name = field.name;
9
+ const value = markdown.frontmatter[name];
10
+ const jsonValue = pieceFrontmatterValueToDatabaseValue(value, field);
11
+ if (field.type === 'array') {
12
+ if (field.format === 'asset') {
13
+ assets.push(...value);
14
+ }
15
+ }
16
+ else if (field.format === 'asset') {
17
+ assets.push(value);
18
+ }
19
+ frontmatterJson[name] = jsonValue;
20
+ });
21
+ const insertable = {
22
+ id: createId(),
23
+ file_path: markdown.filePath,
24
+ note_markdown: markdown.note,
25
+ frontmatter_json: JSON.stringify(frontmatterJson),
26
+ type: piece,
27
+ };
28
+ if (assets.length) {
29
+ insertable.assets_json_array = JSON.stringify(assets);
30
+ }
31
+ return insertable;
32
+ }
33
+ function makePieceItemUpdatable(markdown, schema, data, force = false) {
34
+ const frontmatter = {};
35
+ const fields = getPieceFrontmatterSchemaFields(schema);
36
+ const update = { date_updated: new Date().getTime() };
37
+ const assets = [];
38
+ fields.forEach((field) => {
39
+ const name = field.name;
40
+ const value = markdown.frontmatter[name];
41
+ const updateValue = pieceFrontmatterValueToDatabaseValue(value, field);
42
+ if (field.type === 'array') {
43
+ if (field.format === 'asset') {
44
+ assets.push(...value);
45
+ }
46
+ }
47
+ else if (field.format === 'asset') {
48
+ assets.push(value);
49
+ }
50
+ frontmatter[name] = updateValue;
51
+ });
52
+ const frontmatterJson = JSON.stringify(frontmatter);
53
+ const assetString = JSON.stringify(assets);
54
+ if (force || frontmatterJson !== data.frontmatter_json) {
55
+ update.frontmatter_json = JSON.stringify(frontmatter);
56
+ }
57
+ if (force || markdown.note !== data.note_markdown) {
58
+ update.note_markdown = markdown.note;
59
+ }
60
+ if (force || markdown.filePath !== data.file_path) {
61
+ update.file_path = markdown.filePath;
62
+ }
63
+ if (force || data.assets_json_array !== assetString) {
64
+ update.assets_json_array = assetString !== '[]' ? assetString : undefined;
65
+ }
66
+ return update;
67
+ }
68
+ function validatePieceItem(markdown, validator) {
69
+ if (validator(markdown.frontmatter)) {
70
+ return true;
71
+ }
72
+ return false;
73
+ }
74
+ function getValidatePieceItemErrors(validator) {
75
+ const errors = validator.errors || [];
76
+ return errors.map((e) => `\t${e.instancePath} ${e.message}`);
77
+ }
78
+ export { makePieceItemInsertable, makePieceItemUpdatable, validatePieceItem, getValidatePieceItemErrors, };
79
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/pieces/item.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,215 @@
1
+ import { describe, expect, test, vi, afterEach } from 'vitest';
2
+ import { getPieceFrontmatterSchemaFields, pieceFrontmatterValueToDatabaseValue, } from './utils/frontmatter.js';
3
+ import { makeMarkdownSample, makeSample, makeSchema } from './utils/piece.fixtures.js';
4
+ import * as database from './item.js';
5
+ vi.mock('./utils/frontmatter.js');
6
+ const mocks = {
7
+ getPieceFrontmatterSchemaFields: vi.mocked(getPieceFrontmatterSchemaFields),
8
+ pieceFrontmatterValueToDatabaseValue: vi.mocked(pieceFrontmatterValueToDatabaseValue),
9
+ };
10
+ const spies = {};
11
+ describe('src/pieces/item.ts', () => {
12
+ afterEach(() => {
13
+ Object.values(mocks).forEach((mock) => {
14
+ mock.mockReset();
15
+ });
16
+ Object.keys(spies).forEach((key) => {
17
+ spies[key].mockRestore();
18
+ delete spies[key];
19
+ });
20
+ });
21
+ test('makePieceItemInsertable', () => {
22
+ const note = 'note';
23
+ const piece = 'books';
24
+ const path = 'path';
25
+ const frontmatter = {
26
+ title: 'title',
27
+ keywords: 'keys',
28
+ subtitle: 'subtitle',
29
+ };
30
+ const markdown = makeMarkdownSample(path, piece, note, frontmatter);
31
+ const schema = makeSchema();
32
+ const fields = [
33
+ { name: 'title', type: 'string' },
34
+ { name: 'keywords', type: 'string' },
35
+ { name: 'subtitle', type: 'string' },
36
+ ];
37
+ mocks.getPieceFrontmatterSchemaFields.mockReturnValueOnce(fields);
38
+ mocks.pieceFrontmatterValueToDatabaseValue.mockImplementation((value) => value);
39
+ const input = database.makePieceItemInsertable(piece, markdown, schema);
40
+ expect(mocks.pieceFrontmatterValueToDatabaseValue).toHaveBeenCalledTimes(Object.keys(frontmatter).length);
41
+ expect(input).toEqual({
42
+ id: expect.any(String),
43
+ file_path: path,
44
+ note_markdown: markdown.note,
45
+ frontmatter_json: JSON.stringify(frontmatter),
46
+ type: piece,
47
+ });
48
+ });
49
+ test('makePieceItemInsertable with assets', () => {
50
+ const note = 'note';
51
+ const piece = 'books';
52
+ const path = 'path';
53
+ const frontmatter = {
54
+ title: 'title',
55
+ keywords: 'keys',
56
+ subtitle: 'subtitle',
57
+ poster: 'poster.jpg',
58
+ images: ['image1.jpg', 'image2.jpg'],
59
+ };
60
+ const markdown = makeMarkdownSample(path, piece, note, frontmatter);
61
+ const schema = makeSchema();
62
+ const fields = [
63
+ { name: 'title', type: 'string' },
64
+ { name: 'keywords', type: 'string' },
65
+ { name: 'subtitle', type: 'string' },
66
+ { name: 'poster', format: 'asset' },
67
+ { name: 'images', type: 'array', format: 'asset' },
68
+ ];
69
+ mocks.getPieceFrontmatterSchemaFields.mockReturnValueOnce(fields);
70
+ mocks.pieceFrontmatterValueToDatabaseValue.mockImplementation((value) => value);
71
+ const input = database.makePieceItemInsertable(piece, markdown, schema);
72
+ expect(mocks.pieceFrontmatterValueToDatabaseValue).toHaveBeenCalledTimes(Object.keys(frontmatter).length);
73
+ expect(input).toEqual({
74
+ id: expect.any(String),
75
+ file_path: path,
76
+ note_markdown: markdown.note,
77
+ frontmatter_json: JSON.stringify(frontmatter),
78
+ type: piece,
79
+ assets_json_array: JSON.stringify([frontmatter.poster, ...frontmatter.images]),
80
+ });
81
+ });
82
+ test('makePieceItemUpdatable', () => {
83
+ const data = makeSample();
84
+ const note = 'note';
85
+ const path = 'path';
86
+ const piece = 'books';
87
+ const frontmatter = {
88
+ title: 'title',
89
+ keywords: 'keys',
90
+ subtitle: 'subtitle',
91
+ };
92
+ const markdown = makeMarkdownSample(path, piece, note, frontmatter);
93
+ const schema = makeSchema();
94
+ const fields = [
95
+ { name: 'title', type: 'string' },
96
+ { name: 'keywords', type: 'string' },
97
+ { name: 'subtitle', type: 'string' },
98
+ ];
99
+ data.note_markdown = 'old note';
100
+ mocks.getPieceFrontmatterSchemaFields.mockReturnValueOnce(fields);
101
+ mocks.pieceFrontmatterValueToDatabaseValue.mockImplementation((value) => value);
102
+ const update = database.makePieceItemUpdatable(markdown, schema, data);
103
+ expect(update).toEqual({
104
+ date_updated: expect.any(Number),
105
+ file_path: path,
106
+ note_markdown: note,
107
+ frontmatter_json: JSON.stringify(frontmatter),
108
+ });
109
+ });
110
+ test('makePieceItemUpdatable with assets', () => {
111
+ const data = makeSample();
112
+ const note = 'note';
113
+ const path = 'path';
114
+ const piece = 'books';
115
+ const frontmatter = {
116
+ title: 'title',
117
+ keywords: 'keys',
118
+ subtitle: 'subtitle',
119
+ poster: 'poster.jpg',
120
+ images: ['image1.jpg', 'image2.jpg'],
121
+ };
122
+ const markdown = makeMarkdownSample(path, piece, note, frontmatter);
123
+ const schema = makeSchema();
124
+ const fields = [
125
+ { name: 'title', type: 'string' },
126
+ { name: 'keywords', type: 'string' },
127
+ { name: 'subtitle', type: 'string' },
128
+ { name: 'poster', format: 'asset' },
129
+ { name: 'images', type: 'array', format: 'asset' },
130
+ ];
131
+ data.note_markdown = 'old note';
132
+ mocks.getPieceFrontmatterSchemaFields.mockReturnValueOnce(fields);
133
+ mocks.pieceFrontmatterValueToDatabaseValue.mockImplementation((value) => value);
134
+ const update = database.makePieceItemUpdatable(markdown, schema, data);
135
+ expect(update).toEqual({
136
+ date_updated: expect.any(Number),
137
+ file_path: path,
138
+ note_markdown: note,
139
+ frontmatter_json: JSON.stringify(frontmatter),
140
+ assets_json_array: JSON.stringify([frontmatter.poster, ...frontmatter.images]),
141
+ });
142
+ });
143
+ test('makePieceItemUpdatable force', () => {
144
+ const data = makeSample();
145
+ const note = 'note';
146
+ const path = 'path';
147
+ const piece = 'books';
148
+ const frontmatter = {
149
+ title: 'title',
150
+ keywords: 'keys',
151
+ subtitle: 'subtitle',
152
+ };
153
+ const markdown = makeMarkdownSample(path, piece, note, frontmatter);
154
+ const schema = makeSchema();
155
+ const fields = [
156
+ { name: 'title', type: 'string' },
157
+ { name: 'keywords', type: 'string' },
158
+ { name: 'subtitle', type: 'string' },
159
+ ];
160
+ data.note_markdown = 'old note';
161
+ data.frontmatter_json = JSON.stringify(frontmatter);
162
+ mocks.getPieceFrontmatterSchemaFields.mockReturnValueOnce(fields);
163
+ mocks.pieceFrontmatterValueToDatabaseValue.mockImplementation((value) => value);
164
+ const update = database.makePieceItemUpdatable(markdown, schema, data, true);
165
+ expect(update).toEqual({
166
+ file_path: path,
167
+ date_updated: expect.any(Number),
168
+ note_markdown: note,
169
+ frontmatter_json: JSON.stringify(frontmatter),
170
+ assets_json_array: undefined,
171
+ });
172
+ });
173
+ test('validatePieceItem', () => {
174
+ const note = 'note';
175
+ const piece = 'books';
176
+ const path = 'path';
177
+ const frontmatter = {
178
+ title: 'title',
179
+ keywords: 'keys',
180
+ subtitle: 'subtitle',
181
+ };
182
+ const markdown = makeMarkdownSample(path, piece, note, frontmatter);
183
+ const validator = vi.fn(() => true);
184
+ const valid = database.validatePieceItem(markdown, validator);
185
+ expect(valid).toBe(true);
186
+ expect(validator).toHaveBeenCalledOnce();
187
+ });
188
+ test('validatePieceItem fails', () => {
189
+ const note = 'note';
190
+ const piece = 'books';
191
+ const path = 'path';
192
+ const frontmatter = {
193
+ title: 'title',
194
+ keywords: 'keys',
195
+ subtitle: 'subtitle',
196
+ };
197
+ const markdown = makeMarkdownSample(path, piece, note, frontmatter);
198
+ const validator = vi.fn(() => false);
199
+ const valid = database.validatePieceItem(markdown, validator);
200
+ expect(valid).toBe(false);
201
+ expect(validator).toHaveBeenCalledOnce();
202
+ });
203
+ test('getValidatePieceItemErrors', () => {
204
+ const errors = ['errors', 'errors', 'errors'];
205
+ const validator = { errors };
206
+ const getErrors = database.getValidatePieceItemErrors(validator);
207
+ expect(getErrors).length(errors.length);
208
+ });
209
+ test('getValidatePieceItemErrors but on valid validator', () => {
210
+ const validator = { errors: undefined };
211
+ const getErrors = database.getValidatePieceItemErrors(validator);
212
+ expect(getErrors).length(0);
213
+ });
214
+ });
215
+ //# sourceMappingURL=item.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.test.js","sourceRoot":"","sources":["../../../src/pieces/item.test.ts"],"names":[],"mappings":"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"}