@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,256 @@
1
+ import { updateCache, addCache, getCache } from './cache.js';
2
+ import { cpus } from 'os';
3
+ import path from 'path';
4
+ import slugify from '@sindresorhus/slugify';
5
+ import { Readable } from 'stream';
6
+ import { databaseValueToPieceFrontmatterValue, getPieceFrontmatterSchemaFields, initializePieceFrontMatter, } from './utils/frontmatter.js';
7
+ import { makePieceMarkdown, makePieceMarkdownString } from './utils/markdown.js';
8
+ import { calculateHashFromFile, makePieceAttachment, makePieceValue } from './utils/piece.js';
9
+ import compile from '../lib/ajv.js';
10
+ import { getValidatePieceItemErrors, makePieceItemInsertable, makePieceItemUpdatable, validatePieceItem, } from './item.js';
11
+ import { extractFullMarkdown } from '../lib/markdown.js';
12
+ import { deleteItem, insertItem, selectItem, selectItems, updateItem } from './items.js';
13
+ import { LUZZLE_PIECE_FILE_EXTENSION } from './assets.js';
14
+ class Piece {
15
+ _validator;
16
+ _schema;
17
+ _storage;
18
+ _pieceName;
19
+ _fields;
20
+ constructor(pieceName, storage, schema) {
21
+ this._storage = storage;
22
+ this._schema = schema;
23
+ this._pieceName = pieceName;
24
+ if (this._pieceName !== this._schema.title) {
25
+ throw new Error(`${pieceName} does not match the schema title: ${this._schema.title}`);
26
+ }
27
+ }
28
+ async create(directory, name) {
29
+ const slug = slugify(name);
30
+ const filename = `${slug}.${this.type}.${LUZZLE_PIECE_FILE_EXTENSION}`;
31
+ const file = path.join(directory, filename);
32
+ const exists = await this._storage.exists(file);
33
+ if (exists) {
34
+ throw new Error(`file already exists: ${file}`);
35
+ }
36
+ const frontmatter = initializePieceFrontMatter(this._schema, true);
37
+ return makePieceMarkdown(file, this._pieceName, undefined, frontmatter);
38
+ }
39
+ async delete(file) {
40
+ const exists = await this._storage.exists(file);
41
+ if (exists) {
42
+ await this._storage.delete(file);
43
+ return;
44
+ }
45
+ throw new Error(`${file} does not exist`);
46
+ }
47
+ get type() {
48
+ return this._pieceName;
49
+ }
50
+ get schema() {
51
+ return this._schema;
52
+ }
53
+ get validator() {
54
+ this._validator = this._validator || compile(this._schema);
55
+ return this._validator;
56
+ }
57
+ get fields() {
58
+ this._fields = this._fields || getPieceFrontmatterSchemaFields(this._schema);
59
+ return this._fields;
60
+ }
61
+ async isOutdated(file, db) {
62
+ const fileStat = await this._storage.stat(file).catch(() => null);
63
+ if (fileStat) {
64
+ const cache = await getCache(db, file);
65
+ const cachedDate = cache?.date_updated || cache?.date_added;
66
+ return !cachedDate || fileStat.last_modified.getTime() > cachedDate;
67
+ }
68
+ throw new Error(`${file} does not exist`);
69
+ }
70
+ validate(markdown) {
71
+ const valid = validatePieceItem(markdown, this.validator);
72
+ if (valid) {
73
+ return { isValid: true };
74
+ }
75
+ else {
76
+ const errors = getValidatePieceItemErrors(this.validator);
77
+ return { isValid: false, errors };
78
+ }
79
+ }
80
+ async get(file) {
81
+ const exists = await this._storage.exists(file);
82
+ if (exists) {
83
+ const contents = await this._storage.readFile(file, 'text');
84
+ const data = await extractFullMarkdown(contents);
85
+ if (!/^\//.test(file)) {
86
+ return makePieceMarkdown(file, this._pieceName, data.markdown, data.frontmatter);
87
+ }
88
+ }
89
+ throw new Error(`${file} does not exist`);
90
+ }
91
+ async write(markdown) {
92
+ const validated = this.validate(markdown);
93
+ if (validated.isValid) {
94
+ const markdownString = makePieceMarkdownString(markdown);
95
+ await this._storage.writeFile(markdown.filePath, markdownString);
96
+ }
97
+ else {
98
+ throw new Error(`Could not write ${markdown.filePath} due to\n\n: ${validated.errors.join('\n')}`);
99
+ }
100
+ }
101
+ async prune(db, files, options) {
102
+ const dbPieces = await selectItems(db, { type: this._pieceName });
103
+ const diskPiecesSet = new Set(files);
104
+ const missingPieces = dbPieces.filter((piece) => !diskPiecesSet.has(piece.file_path));
105
+ const missingFiles = missingPieces.map((piece) => piece.file_path);
106
+ const stream = Readable.from(missingFiles);
107
+ return stream.map(async (file) => {
108
+ try {
109
+ if (!options?.dryRun) {
110
+ await deleteItem(db, file);
111
+ }
112
+ return { action: 'pruned', file };
113
+ }
114
+ catch (error) {
115
+ return { file, error: true, message: `error pruning piece: ${error}` };
116
+ }
117
+ }, { concurrency: cpus().length });
118
+ }
119
+ async sync(db, files, options) {
120
+ const stream = Readable.from(files);
121
+ return stream.map(async (file) => {
122
+ const markdown = await this.get(file);
123
+ const dbPiece = await selectItem(db, markdown.filePath);
124
+ try {
125
+ if (dbPiece) {
126
+ const readStream = this._storage.createReadStream(markdown.filePath);
127
+ const newHash = await calculateHashFromFile(readStream);
128
+ const cache = await getCache(db, markdown.filePath);
129
+ if (options?.force || cache?.content_hash !== newHash) {
130
+ if (!options?.dryRun) {
131
+ await this.syncMarkdownUpdate(db, markdown, dbPiece);
132
+ }
133
+ return { action: 'updated', file };
134
+ }
135
+ return { action: 'skipped', file };
136
+ }
137
+ else {
138
+ if (!options?.dryRun) {
139
+ await this.syncMarkdownAdd(db, markdown);
140
+ }
141
+ return { action: 'added', file };
142
+ }
143
+ }
144
+ catch (error) {
145
+ return { file, error: true, message: `error syncing piece: ${error}` };
146
+ }
147
+ }, { concurrency: cpus().length });
148
+ }
149
+ async syncMarkdownAdd(db, markdown) {
150
+ const createInput = makePieceItemInsertable(this._pieceName, markdown, this._schema);
151
+ const readStream = this._storage.createReadStream(markdown.filePath);
152
+ const hash = await calculateHashFromFile(readStream);
153
+ await insertItem(db, createInput);
154
+ await addCache(db, markdown.filePath, hash);
155
+ }
156
+ async syncMarkdown(db, markdown) {
157
+ const dbPiece = await selectItem(db, markdown.filePath);
158
+ if (dbPiece) {
159
+ await this.syncMarkdownUpdate(db, markdown, dbPiece);
160
+ }
161
+ else {
162
+ await this.syncMarkdownAdd(db, markdown);
163
+ }
164
+ }
165
+ async syncMarkdownUpdate(db, markdown, data) {
166
+ const updateInput = makePieceItemUpdatable(markdown, this._schema, data, false);
167
+ await updateItem(db, markdown.filePath, updateInput);
168
+ const readStream = this._storage.createReadStream(markdown.filePath);
169
+ const hash = await calculateHashFromFile(readStream);
170
+ await updateCache(db, data.file_path, hash);
171
+ }
172
+ toMarkdown(data) {
173
+ const frontmatter = JSON.parse(data.frontmatter_json);
174
+ const frontmatterJson = {};
175
+ const dataKeys = Object.keys(frontmatter);
176
+ const fields = getPieceFrontmatterSchemaFields(this._schema).filter((f) => dataKeys.includes(f.name));
177
+ fields.forEach((field) => {
178
+ const name = field.name;
179
+ const value = frontmatter[field.name];
180
+ frontmatterJson[name] = databaseValueToPieceFrontmatterValue(value, field);
181
+ });
182
+ return makePieceMarkdown(data.file_path, data.type, data.note_markdown, frontmatterJson);
183
+ }
184
+ async setFields(markdown, fields) {
185
+ let updatedMarkdown = markdown;
186
+ for (const fieldname in fields) {
187
+ updatedMarkdown = await this.setField(updatedMarkdown, fieldname, fields[fieldname]);
188
+ }
189
+ return updatedMarkdown;
190
+ }
191
+ async removeFields(markdown, fields) {
192
+ let updatedMarkdown = markdown;
193
+ for (const field of fields) {
194
+ updatedMarkdown = await this.removeField(markdown, field);
195
+ }
196
+ return updatedMarkdown;
197
+ }
198
+ async setField(markdown, field, value) {
199
+ const pieceField = this.fields.find((f) => f.name === field);
200
+ if (!pieceField) {
201
+ throw new Error(`${field} is not a field in ${this._pieceName} ${markdown.filePath}`);
202
+ }
203
+ const isArray = pieceField.type === 'array';
204
+ const values = Array.isArray(value) ? value : [value];
205
+ const set = [];
206
+ try {
207
+ for (const one of values) {
208
+ const pieceValue = await makePieceValue(pieceField, one);
209
+ if (pieceValue instanceof Readable) {
210
+ const file = markdown.filePath;
211
+ const storage = this._storage;
212
+ const asset = await makePieceAttachment(file, pieceField, pieceValue, storage);
213
+ set.push(asset);
214
+ }
215
+ else {
216
+ set.push(pieceValue);
217
+ }
218
+ }
219
+ }
220
+ catch (e) {
221
+ const error = e;
222
+ console.error(`could not set field ${field}: ${error.message}`);
223
+ return markdown; // On error, return the original markdown, preserving the old value
224
+ }
225
+ return makePieceMarkdown(markdown.filePath, markdown.piece, markdown.note, {
226
+ ...markdown.frontmatter,
227
+ [field]: isArray ? set : set.pop(),
228
+ });
229
+ }
230
+ async removeField(markdown, field, value) {
231
+ const pieceField = this.fields.find((f) => f.name === field);
232
+ const { [field]: fieldValue, ...frontmatter } = markdown.frontmatter;
233
+ if (!pieceField) {
234
+ throw new Error(`${field} is not a field in ${this._pieceName} ${markdown.filePath}`);
235
+ }
236
+ if (pieceField.nullable !== true) {
237
+ throw new Error(`${field} is a required field in ${this._pieceName} ${markdown.filePath}`);
238
+ }
239
+ if (value === undefined || fieldValue === undefined) {
240
+ return makePieceMarkdown(markdown.filePath, markdown.piece, markdown.note, frontmatter);
241
+ }
242
+ const pieceValue = await makePieceValue(pieceField, value);
243
+ if (Array.isArray(fieldValue)) {
244
+ return makePieceMarkdown(markdown.filePath, markdown.piece, markdown.note, {
245
+ ...frontmatter,
246
+ [field]: fieldValue.filter((v) => v !== pieceValue),
247
+ });
248
+ }
249
+ else if (fieldValue === pieceValue) {
250
+ return makePieceMarkdown(markdown.filePath, markdown.piece, markdown.note, frontmatter);
251
+ }
252
+ return markdown;
253
+ }
254
+ }
255
+ export default Piece;
256
+ //# sourceMappingURL=Piece.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Piece.js","sourceRoot":"","sources":["../../../src/pieces/Piece.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};