@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.
- package/README.md +41 -0
- package/dist/src/database/client.d.ts +4 -0
- package/dist/src/database/client.js +12 -0
- package/dist/src/database/client.js.map +1 -0
- package/dist/src/database/client.test.d.ts +1 -0
- package/dist/src/database/client.test.js +34 -0
- package/dist/src/database/client.test.js.map +1 -0
- package/dist/src/database/database.mock.d.ts +22 -0
- package/dist/src/database/database.mock.js +42 -0
- package/dist/src/database/database.mock.js.map +1 -0
- package/dist/src/database/migrations/2023-05-26T15:04:19.094Z.d.ts +3 -0
- package/dist/src/database/migrations/2023-05-26T15:04:19.094Z.js +49 -0
- package/dist/src/database/migrations/2023-05-26T15:04:19.094Z.js.map +1 -0
- package/dist/src/database/migrations/2023-10-30T23:24:40Z.d.ts +3 -0
- package/dist/src/database/migrations/2023-10-30T23:24:40Z.js +35 -0
- package/dist/src/database/migrations/2023-10-30T23:24:40Z.js.map +1 -0
- package/dist/src/database/migrations/2023-11-22T14:55:18Z.d.ts +3 -0
- package/dist/src/database/migrations/2023-11-22T14:55:18Z.js +16 -0
- package/dist/src/database/migrations/2023-11-22T14:55:18Z.js.map +1 -0
- package/dist/src/database/migrations/2023-11-27T04:32:07Z.d.ts +3 -0
- package/dist/src/database/migrations/2023-11-27T04:32:07Z.js +30 -0
- package/dist/src/database/migrations/2023-11-27T04:32:07Z.js.map +1 -0
- package/dist/src/database/migrations/2024-01-01T23:30:29Z.d.ts +3 -0
- package/dist/src/database/migrations/2024-01-01T23:30:29Z.js +11 -0
- package/dist/src/database/migrations/2024-01-01T23:30:29Z.js.map +1 -0
- package/dist/src/database/migrations/2024-01-06T15:52:43Z.d.ts +3 -0
- package/dist/src/database/migrations/2024-01-06T15:52:43Z.js +16 -0
- package/dist/src/database/migrations/2024-01-06T15:52:43Z.js.map +1 -0
- package/dist/src/database/migrations/2024-02-09T16:33:10Z.d.ts +3 -0
- package/dist/src/database/migrations/2024-02-09T16:33:10Z.js +37 -0
- package/dist/src/database/migrations/2024-02-09T16:33:10Z.js.map +1 -0
- package/dist/src/database/migrations/2024-02-13T05:56:43Z.d.ts +3 -0
- package/dist/src/database/migrations/2024-02-13T05:56:43Z.js +116 -0
- package/dist/src/database/migrations/2024-02-13T05:56:43Z.js.map +1 -0
- package/dist/src/database/migrations/2024-02-24T03:05:47Z-add-texts-table.d.ts +3 -0
- package/dist/src/database/migrations/2024-02-24T03:05:47Z-add-texts-table.js +42 -0
- package/dist/src/database/migrations/2024-02-24T03:05:47Z-add-texts-table.js.map +1 -0
- package/dist/src/database/migrations/2024-02-26T05:37:37Z-add-cache-table.d.ts +3 -0
- package/dist/src/database/migrations/2024-02-26T05:37:37Z-add-cache-table.js +20 -0
- package/dist/src/database/migrations/2024-02-26T05:37:37Z-add-cache-table.js.map +1 -0
- package/dist/src/database/migrations/2024-03-01T01:01:47Z-fix-trigger-bugs.d.ts +3 -0
- package/dist/src/database/migrations/2024-03-01T01:01:47Z-fix-trigger-bugs.js +43 -0
- package/dist/src/database/migrations/2024-03-01T01:01:47Z-fix-trigger-bugs.js.map +1 -0
- package/dist/src/database/migrations/2024-06-15T17:17:51Z-add-games-table.d.ts +3 -0
- package/dist/src/database/migrations/2024-06-15T17:17:51Z-add-games-table.js +54 -0
- package/dist/src/database/migrations/2024-06-15T17:17:51Z-add-games-table.js.map +1 -0
- package/dist/src/database/migrations/2024-06-24T20:16:48Z-remove-book-open-library-fields.d.ts +3 -0
- package/dist/src/database/migrations/2024-06-24T20:16:48Z-remove-book-open-library-fields.js +23 -0
- package/dist/src/database/migrations/2024-06-24T20:16:48Z-remove-book-open-library-fields.js.map +1 -0
- package/dist/src/database/migrations/2024-06-29T16:31:33Z-add-piece-manager-table.d.ts +3 -0
- package/dist/src/database/migrations/2024-06-29T16:31:33Z-add-piece-manager-table.js +17 -0
- package/dist/src/database/migrations/2024-06-29T16:31:33Z-add-piece-manager-table.js.map +1 -0
- package/dist/src/database/migrations/2024-07-14T06:59:07Z-remove-pieces.d.ts +3 -0
- package/dist/src/database/migrations/2024-07-14T06:59:07Z-remove-pieces.js +15 -0
- package/dist/src/database/migrations/2024-07-14T06:59:07Z-remove-pieces.js.map +1 -0
- package/dist/src/database/migrations/2024-11-06T15:27:05Z-remove-tags.d.ts +3 -0
- package/dist/src/database/migrations/2024-11-06T15:27:05Z-remove-tags.js +26 -0
- package/dist/src/database/migrations/2024-11-06T15:27:05Z-remove-tags.js.map +1 -0
- package/dist/src/database/migrations/2024-11-08T05:59:37Z-remove-pieces-items-unique-tables.d.ts +3 -0
- package/dist/src/database/migrations/2024-11-08T05:59:37Z-remove-pieces-items-unique-tables.js +24 -0
- package/dist/src/database/migrations/2024-11-08T05:59:37Z-remove-pieces-items-unique-tables.js.map +1 -0
- package/dist/src/database/migrations/2024-11-13T14:51:17Z-track-file-paths-on-piece.d.ts +3 -0
- package/dist/src/database/migrations/2024-11-13T14:51:17Z-track-file-paths-on-piece.js +54 -0
- package/dist/src/database/migrations/2024-11-13T14:51:17Z-track-file-paths-on-piece.js.map +1 -0
- package/dist/src/database/migrations/2024-12-15T06:35:24Z-track-assets-on-piece.d.ts +3 -0
- package/dist/src/database/migrations/2024-12-15T06:35:24Z-track-assets-on-piece.js +10 -0
- package/dist/src/database/migrations/2024-12-15T06:35:24Z-track-assets-on-piece.js.map +1 -0
- package/dist/src/database/migrations.d.ts +3 -0
- package/dist/src/database/migrations.js +16 -0
- package/dist/src/database/migrations.js.map +1 -0
- package/dist/src/database/migrations.test.d.ts +1 -0
- package/dist/src/database/migrations.test.js +37 -0
- package/dist/src/database/migrations.test.js.map +1 -0
- package/dist/src/database/tables/index.d.ts +21 -0
- package/dist/src/database/tables/index.js +7 -0
- package/dist/src/database/tables/index.js.map +1 -0
- package/dist/src/database/tables/pieces_cache.schema.d.ts +13 -0
- package/dist/src/database/tables/pieces_cache.schema.js +2 -0
- package/dist/src/database/tables/pieces_cache.schema.js.map +1 -0
- package/dist/src/database/tables/pieces_items.schema.d.ts +16 -0
- package/dist/src/database/tables/pieces_items.schema.js +2 -0
- package/dist/src/database/tables/pieces_items.schema.js.map +1 -0
- package/dist/src/database/tables/pieces_manager.schema.d.ts +13 -0
- package/dist/src/database/tables/pieces_manager.schema.js +2 -0
- package/dist/src/database/tables/pieces_manager.schema.js.map +1 -0
- package/dist/src/database/utils.d.ts +8 -0
- package/dist/src/database/utils.js +2 -0
- package/dist/src/database/utils.js.map +1 -0
- package/dist/src/database/utils.test.d.ts +1 -0
- package/dist/src/database/utils.test.js +9 -0
- package/dist/src/database/utils.test.js.map +1 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/index.test.d.ts +1 -0
- package/dist/src/index.test.js +9 -0
- package/dist/src/index.test.js.map +1 -0
- package/dist/src/lib/ajv.d.ts +6 -0
- package/dist/src/lib/ajv.js +25 -0
- package/dist/src/lib/ajv.js.map +1 -0
- package/dist/src/lib/ajv.test.d.ts +1 -0
- package/dist/src/lib/ajv.test.js +43 -0
- package/dist/src/lib/ajv.test.js.map +1 -0
- package/dist/src/lib/frontmatter.d.ts +4 -0
- package/dist/src/lib/frontmatter.js +8 -0
- package/dist/src/lib/frontmatter.js.map +1 -0
- package/dist/src/lib/frontmatter.test.d.ts +1 -0
- package/dist/src/lib/frontmatter.test.js +37 -0
- package/dist/src/lib/frontmatter.test.js.map +1 -0
- package/dist/src/lib/markdown.d.ts +7 -0
- package/dist/src/lib/markdown.js +21 -0
- package/dist/src/lib/markdown.js.map +1 -0
- package/dist/src/lib/markdown.test.d.ts +1 -0
- package/dist/src/lib/markdown.test.js +34 -0
- package/dist/src/lib/markdown.test.js.map +1 -0
- package/dist/src/llm/google.d.ts +6 -0
- package/dist/src/llm/google.js +91 -0
- package/dist/src/llm/google.js.map +1 -0
- package/dist/src/llm/google.test.d.ts +1 -0
- package/dist/src/llm/google.test.js +253 -0
- package/dist/src/llm/google.test.js.map +1 -0
- package/dist/src/pieces/Piece.d.ts +66 -0
- package/dist/src/pieces/Piece.fixtures.d.ts +43 -0
- package/dist/src/pieces/Piece.fixtures.js +83 -0
- package/dist/src/pieces/Piece.fixtures.js.map +1 -0
- package/dist/src/pieces/Piece.js +256 -0
- package/dist/src/pieces/Piece.js.map +1 -0
- package/dist/src/pieces/Piece.test.d.ts +1 -0
- package/dist/src/pieces/Piece.test.js +839 -0
- package/dist/src/pieces/Piece.test.js.map +1 -0
- package/dist/src/pieces/Pieces.d.ts +55 -0
- package/dist/src/pieces/Pieces.js +144 -0
- package/dist/src/pieces/Pieces.js.map +1 -0
- package/dist/src/pieces/Pieces.test.d.ts +1 -0
- package/dist/src/pieces/Pieces.test.js +327 -0
- package/dist/src/pieces/Pieces.test.js.map +1 -0
- package/dist/src/pieces/assets.d.ts +5 -0
- package/dist/src/pieces/assets.js +6 -0
- package/dist/src/pieces/assets.js.map +1 -0
- package/dist/src/pieces/cache.d.ts +20 -0
- package/dist/src/pieces/cache.fixtures.d.ts +3 -0
- package/dist/src/pieces/cache.fixtures.js +12 -0
- package/dist/src/pieces/cache.fixtures.js.map +1 -0
- package/dist/src/pieces/cache.js +49 -0
- package/dist/src/pieces/cache.js.map +1 -0
- package/dist/src/pieces/cache.test.d.ts +1 -0
- package/dist/src/pieces/cache.test.js +98 -0
- package/dist/src/pieces/cache.test.js.map +1 -0
- package/dist/src/pieces/index.d.ts +8 -0
- package/dist/src/pieces/index.js +9 -0
- package/dist/src/pieces/index.js.map +1 -0
- package/dist/src/pieces/item.d.ts +9 -0
- package/dist/src/pieces/item.js +79 -0
- package/dist/src/pieces/item.js.map +1 -0
- package/dist/src/pieces/item.test.d.ts +1 -0
- package/dist/src/pieces/item.test.js +215 -0
- package/dist/src/pieces/item.test.js.map +1 -0
- package/dist/src/pieces/items.d.ts +39 -0
- package/dist/src/pieces/items.js +45 -0
- package/dist/src/pieces/items.js.map +1 -0
- package/dist/src/pieces/items.test.d.ts +1 -0
- package/dist/src/pieces/items.test.js +100 -0
- package/dist/src/pieces/items.test.js.map +1 -0
- package/dist/src/pieces/json.schema.d.ts +6 -0
- package/dist/src/pieces/json.schema.js +58 -0
- package/dist/src/pieces/json.schema.js.map +1 -0
- package/dist/src/pieces/json.schema.test.d.ts +1 -0
- package/dist/src/pieces/json.schema.test.js +27 -0
- package/dist/src/pieces/json.schema.test.js.map +1 -0
- package/dist/src/pieces/manager.d.ts +22 -0
- package/dist/src/pieces/manager.js +43 -0
- package/dist/src/pieces/manager.js.map +1 -0
- package/dist/src/pieces/manager.test.d.ts +1 -0
- package/dist/src/pieces/manager.test.js +72 -0
- package/dist/src/pieces/manager.test.js.map +1 -0
- package/dist/src/pieces/utils/frontmatter.d.ts +33 -0
- package/dist/src/pieces/utils/frontmatter.js +69 -0
- package/dist/src/pieces/utils/frontmatter.js.map +1 -0
- package/dist/src/pieces/utils/frontmatter.test.d.ts +1 -0
- package/dist/src/pieces/utils/frontmatter.test.js +185 -0
- package/dist/src/pieces/utils/frontmatter.test.js.map +1 -0
- package/dist/src/pieces/utils/markdown.d.ts +10 -0
- package/dist/src/pieces/utils/markdown.js +9 -0
- package/dist/src/pieces/utils/markdown.js.map +1 -0
- package/dist/src/pieces/utils/markdown.test.d.ts +1 -0
- package/dist/src/pieces/utils/markdown.test.js +38 -0
- package/dist/src/pieces/utils/markdown.test.js.map +1 -0
- package/dist/src/pieces/utils/piece.d.ts +13 -0
- package/dist/src/pieces/utils/piece.fixtures.d.ts +19 -0
- package/dist/src/pieces/utils/piece.fixtures.js +39 -0
- package/dist/src/pieces/utils/piece.fixtures.js.map +1 -0
- package/dist/src/pieces/utils/piece.js +142 -0
- package/dist/src/pieces/utils/piece.js.map +1 -0
- package/dist/src/pieces/utils/piece.test.d.ts +1 -0
- package/dist/src/pieces/utils/piece.test.js +333 -0
- package/dist/src/pieces/utils/piece.test.js.map +1 -0
- package/dist/src/pieces/utils.d.ts +10 -0
- package/dist/src/pieces/utils.js +101 -0
- package/dist/src/pieces/utils.js.map +1 -0
- package/dist/src/pieces/utils.test.d.ts +1 -0
- package/dist/src/pieces/utils.test.js +372 -0
- package/dist/src/pieces/utils.test.js.map +1 -0
- package/dist/src/storage/abstract.d.ts +19 -0
- package/dist/src/storage/abstract.js +4 -0
- package/dist/src/storage/abstract.js.map +1 -0
- package/dist/src/storage/fs.d.ts +22 -0
- package/dist/src/storage/fs.js +84 -0
- package/dist/src/storage/fs.js.map +1 -0
- package/dist/src/storage/fs.test.d.ts +1 -0
- package/dist/src/storage/fs.test.js +222 -0
- package/dist/src/storage/fs.test.js.map +1 -0
- package/dist/src/storage/index.d.ts +5 -0
- package/dist/src/storage/index.js +4 -0
- package/dist/src/storage/index.js.map +1 -0
- package/dist/src/storage/storage.mock.d.ts +2 -0
- package/dist/src/storage/storage.mock.js +18 -0
- package/dist/src/storage/storage.mock.js.map +1 -0
- package/dist/src/storage/types.d.ts +6 -0
- package/dist/src/storage/types.js +2 -0
- package/dist/src/storage/types.js.map +1 -0
- package/dist/src/storage/webdav.d.ts +25 -0
- package/dist/src/storage/webdav.js +65 -0
- package/dist/src/storage/webdav.js.map +1 -0
- package/dist/src/storage/webdav.test.d.ts +1 -0
- package/dist/src/storage/webdav.test.js +194 -0
- package/dist/src/storage/webdav.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/vite.config.d.ts +2 -0
- package/dist/vite.config.js +36 -0
- package/dist/vite.config.js.map +1 -0
- 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,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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAO/C,OAAO,EAEN,oCAAoC,EACpC,+BAA+B,GAE/B,MAAM,wBAAwB,CAAA;AAG/B,SAAS,uBAAuB,CAC/B,KAAa,EACb,QAA0B,EAC1B,MAAiC;IAEjC,MAAM,eAAe,GAAG,EAA6B,CAAA;IACrD,MAAM,MAAM,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAA;IACtD,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,oCAAoC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAEpE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,GAAI,KAAkB,CAAC,CAAA;YACpC,CAAC;QACF,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAA;QAC7B,CAAC;QAED,eAAe,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAA0B;QACzC,EAAE,EAAE,QAAQ,EAAE;QACd,SAAS,EAAE,QAAQ,CAAC,QAAQ;QAC5B,aAAa,EAAE,QAAQ,CAAC,IAAc;QACtC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;QACjD,IAAI,EAAE,KAAK;KACX,CAAA;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,UAAU,CAAA;AAClB,CAAC;AAED,SAAS,sBAAsB,CAC9B,QAA0B,EAC1B,MAAiC,EACjC,IAA2B,EAC3B,KAAK,GAAG,KAAK;IAEb,MAAM,WAAW,GAAG,EAA6B,CAAA;IACjD,MAAM,MAAM,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAA;IACtD,MAAM,MAAM,GAA0B,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAA;IAC5E,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAe,CAAC,CAAA;QACnD,MAAM,WAAW,GAAG,oCAAoC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAEtE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,GAAI,KAAkB,CAAC,CAAA;YACpC,CAAC;QACF,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAA;QAC7B,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAE1C,IAAI,KAAK,IAAI,eAAe,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxD,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;QACnD,MAAM,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAc,CAAA;IAC/C,CAAC;IAED,IAAI,KAAK,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACnD,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAA;IACrC,CAAC;IAED,IAAI,KAAK,IAAI,IAAI,CAAC,iBAAiB,KAAK,WAAW,EAAE,CAAC;QACrD,MAAM,CAAC,iBAAiB,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1E,CAAC;IAED,OAAO,MAAM,CAAA;AACd,CAAC;AAED,SAAS,iBAAiB,CACzB,QAA0B,EAC1B,SAA8B;IAE9B,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO,KAAK,CAAA;AACb,CAAC;AAED,SAAS,0BAA0B,CAClC,SAA8B;IAE9B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAA;IACrC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AAC7D,CAAC;AAED,OAAO,EACN,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,0BAA0B,GAC1B,CAAA"}
|
|
@@ -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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"}
|