@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_items.schema.js","sourceRoot":"","sources":["../../../../src/database/tables/pieces_items.schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Insertable, Updateable, Selectable } from 'kysely';
|
|
2
|
+
import { cuid, date_added, date_updated } from '../utils.js';
|
|
3
|
+
interface PieceManagerTable {
|
|
4
|
+
id: cuid;
|
|
5
|
+
date_added: date_added;
|
|
6
|
+
date_updated?: date_updated;
|
|
7
|
+
name: string;
|
|
8
|
+
schema: string;
|
|
9
|
+
}
|
|
10
|
+
type PieceManagerSelect = Selectable<PieceManagerTable>;
|
|
11
|
+
type PieceManagerInsert = Insertable<PieceManagerTable>;
|
|
12
|
+
type PieceManagerUpdate = Updateable<PieceManagerTable>;
|
|
13
|
+
export { type PieceManagerTable, type PieceManagerSelect, type PieceManagerInsert, type PieceManagerUpdate, };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pieces_manager.schema.js","sourceRoot":"","sources":["../../../../src/database/tables/pieces_manager.schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ColumnType } from 'kysely';
|
|
2
|
+
type cuid = string;
|
|
3
|
+
type date_added = ColumnType<number, undefined, never>;
|
|
4
|
+
type date_updated = ColumnType<number | null, undefined, number>;
|
|
5
|
+
type SchemaDateStringToDatabaseNumber<T> = {
|
|
6
|
+
[K in keyof T]: K extends `date_${string}` ? number : T[K] extends number ? string : T[K];
|
|
7
|
+
};
|
|
8
|
+
export { type cuid, type date_updated, type date_added, type SchemaDateStringToDatabaseNumber };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/database/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest';
|
|
2
|
+
import * as index from './utils.js';
|
|
3
|
+
// https://github.com/vitest-dev/vitest/issues/3605
|
|
4
|
+
describe('src/database/util.ts', () => {
|
|
5
|
+
test('schema', () => {
|
|
6
|
+
expect(index).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../src/database/utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,mDAAmD;AAEnD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;QACnB,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import migrate from './database/migrations.js';
|
|
2
|
+
import compile from './lib/ajv.js';
|
|
3
|
+
import { sql } from 'kysely';
|
|
4
|
+
import { extractFullMarkdown } from './lib/markdown.js';
|
|
5
|
+
import { addFrontMatter } from './lib/frontmatter.js';
|
|
6
|
+
import { getDatabaseClient } from './database/client.js';
|
|
7
|
+
export * from './database/tables/index.js';
|
|
8
|
+
export * from './pieces/index.js';
|
|
9
|
+
export * from './llm/google.js';
|
|
10
|
+
export * from './storage/index.js';
|
|
11
|
+
export { getDatabaseClient, migrate, sql, compile, extractFullMarkdown, addFrontMatter };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import migrate from './database/migrations.js';
|
|
2
|
+
import compile from './lib/ajv.js';
|
|
3
|
+
import { sql } from 'kysely';
|
|
4
|
+
import { extractFullMarkdown } from './lib/markdown.js';
|
|
5
|
+
import { addFrontMatter } from './lib/frontmatter.js';
|
|
6
|
+
import { getDatabaseClient } from './database/client.js';
|
|
7
|
+
export * from './database/tables/index.js';
|
|
8
|
+
export * from './pieces/index.js';
|
|
9
|
+
export * from './llm/google.js';
|
|
10
|
+
export * from './storage/index.js';
|
|
11
|
+
export { getDatabaseClient, migrate, sql, compile, extractFullMarkdown, addFrontMatter };
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,0BAA0B,CAAA;AAC9C,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAElC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest';
|
|
2
|
+
import * as index from './index.js';
|
|
3
|
+
// https://github.com/vitest-dev/vitest/issues/3605
|
|
4
|
+
describe('index.ts', () => {
|
|
5
|
+
test('schema', () => {
|
|
6
|
+
expect(index).toBeDefined();
|
|
7
|
+
});
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,mDAAmD;AAEnD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;QACnB,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ValidateFunction, JSONSchemaType } from 'ajv';
|
|
2
|
+
export declare function commaSeparatedFormatValidator(data: string): boolean;
|
|
3
|
+
export declare function dateFormatValidator(data: string): boolean;
|
|
4
|
+
export declare function assetFormatValidator(data: string): boolean;
|
|
5
|
+
export declare function paragraphValidator(data: string): boolean;
|
|
6
|
+
export default function <T>(schema: JSONSchemaType<T>): ValidateFunction<T>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import Ajv from 'ajv';
|
|
2
|
+
export function commaSeparatedFormatValidator(data) {
|
|
3
|
+
return typeof data === 'string';
|
|
4
|
+
}
|
|
5
|
+
export function dateFormatValidator(data) {
|
|
6
|
+
return !isNaN(Date.parse(data));
|
|
7
|
+
}
|
|
8
|
+
export function assetFormatValidator(data) {
|
|
9
|
+
return /^\.assets\/.+\/.+/.test(data);
|
|
10
|
+
}
|
|
11
|
+
export function paragraphValidator(data) {
|
|
12
|
+
return typeof data === 'string';
|
|
13
|
+
}
|
|
14
|
+
export default function (schema) {
|
|
15
|
+
const ajv = new Ajv();
|
|
16
|
+
ajv.addFormat('date', { type: 'string', validate: dateFormatValidator });
|
|
17
|
+
ajv.addFormat('asset', { type: 'string', validate: assetFormatValidator });
|
|
18
|
+
ajv.addFormat('comma-separated', {
|
|
19
|
+
type: 'string',
|
|
20
|
+
validate: commaSeparatedFormatValidator,
|
|
21
|
+
});
|
|
22
|
+
ajv.addFormat('paragraph', { type: 'string', validate: paragraphValidator });
|
|
23
|
+
return ajv.compile(schema);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ajv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ajv.js","sourceRoot":"","sources":["../../../src/lib/ajv.ts"],"names":[],"mappings":"AAAA,OAAO,GAAyC,MAAM,KAAK,CAAA;AAE3D,MAAM,UAAU,6BAA6B,CAAC,IAAY;IACzD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC/C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAChD,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC9C,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAA;AAChC,CAAC;AAED,MAAM,CAAC,OAAO,WAAc,MAAyB;IACpD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;IAErB,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACxE,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAA;IAC1E,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE;QAChC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,6BAA6B;KACvC,CAAC,CAAA;IACF,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAE5E,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { describe, expect, test, vi, afterEach } from 'vitest';
|
|
2
|
+
import { makeSchema } from '../pieces/utils/piece.fixtures.js';
|
|
3
|
+
import Ajv from 'ajv';
|
|
4
|
+
import ajv, { assetFormatValidator, dateFormatValidator, commaSeparatedFormatValidator, paragraphValidator } from './ajv.js';
|
|
5
|
+
vi.mock('ajv');
|
|
6
|
+
const mocks = {
|
|
7
|
+
Ajv: vi.mocked(Ajv),
|
|
8
|
+
compile: vi.mocked(Ajv.prototype.compile),
|
|
9
|
+
addFormat: vi.mocked(Ajv.prototype.addFormat),
|
|
10
|
+
};
|
|
11
|
+
const spies = {};
|
|
12
|
+
describe('src/lib/ajv.ts', () => {
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
Object.values(mocks).forEach((mock) => {
|
|
15
|
+
mock.mockReset();
|
|
16
|
+
});
|
|
17
|
+
Object.keys(spies).forEach((key) => {
|
|
18
|
+
spies[key].mockRestore();
|
|
19
|
+
delete spies[key];
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
test('ajv', () => {
|
|
23
|
+
const schema = makeSchema();
|
|
24
|
+
ajv(schema);
|
|
25
|
+
expect(mocks.Ajv).toHaveBeenCalledTimes(1);
|
|
26
|
+
expect(mocks.compile).toHaveBeenCalledWith(schema);
|
|
27
|
+
});
|
|
28
|
+
test('commaSeparatedFormatValidator', () => {
|
|
29
|
+
expect(commaSeparatedFormatValidator('a,b,c')).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
test('dateFormatValidator', () => {
|
|
32
|
+
expect(dateFormatValidator('2020-01-01')).toBe(true);
|
|
33
|
+
expect(dateFormatValidator('2020-01-32')).toBe(false);
|
|
34
|
+
});
|
|
35
|
+
test('assetFormatValidtor', () => {
|
|
36
|
+
expect(assetFormatValidator('.assets/1/2/3')).toBe(true);
|
|
37
|
+
expect(assetFormatValidator('./home/to/nowhere/5.jpg')).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
test('paragraphFormatValidtor', () => {
|
|
40
|
+
expect(paragraphValidator('hi there')).toBe(true);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=ajv.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ajv.test.js","sourceRoot":"","sources":["../../../src/lib/ajv.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAgB,MAAM,QAAQ,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAC9D,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,GAAG,EAAE,EACX,oBAAoB,EACpB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,MAAM,UAAU,CAAA;AAEjB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAEd,MAAM,KAAK,GAAG;IACb,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;IACnB,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;IACzC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;CAC7C,CAAA;AAED,MAAM,KAAK,GAAoC,EAAE,CAAA;AAEjD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC/B,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,IAAI,CAAC,SAAS,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAClC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;YACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;QAChB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;QAE3B,GAAG,CAAC,MAAM,CAAC,CAAA;QAEX,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { stringify } from 'yaml';
|
|
2
|
+
function addFrontMatter(markdown, metadata = {}) {
|
|
3
|
+
const yamlString = stringify(metadata);
|
|
4
|
+
const content = markdown?.trim() || '';
|
|
5
|
+
return `---\n${yamlString}---\n${content}\n`;
|
|
6
|
+
}
|
|
7
|
+
export { addFrontMatter };
|
|
8
|
+
//# sourceMappingURL=frontmatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../../src/lib/frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAEhC,SAAS,cAAc,CACtB,QAAwB,EACxB,WAAuC,EAAE;IAEzC,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAEtC,OAAO,QAAQ,UAAU,QAAQ,OAAO,IAAI,CAAA;AAC7C,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { describe, expect, test, vi, afterEach } from 'vitest';
|
|
2
|
+
import * as frontmatter from './frontmatter.js';
|
|
3
|
+
import { stringify } from 'yaml';
|
|
4
|
+
vi.mock('yaml');
|
|
5
|
+
const mocks = {
|
|
6
|
+
stringify: vi.mocked(stringify),
|
|
7
|
+
};
|
|
8
|
+
describe('lib/frontmatter.ts', () => {
|
|
9
|
+
afterEach(() => {
|
|
10
|
+
Object.values(mocks).forEach((mock) => {
|
|
11
|
+
mock.mockReset();
|
|
12
|
+
mock.mockClear();
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
test('addFrontMatter', () => {
|
|
16
|
+
const markdown = 'this is markdown';
|
|
17
|
+
const metadata = {
|
|
18
|
+
a: 'awesome',
|
|
19
|
+
b: 'banana',
|
|
20
|
+
};
|
|
21
|
+
const yamlstring = 'yaml-front-matter';
|
|
22
|
+
mocks.stringify.mockReturnValueOnce(yamlstring);
|
|
23
|
+
const combined = frontmatter.addFrontMatter(markdown, metadata);
|
|
24
|
+
expect(combined).toBe(`---\n${yamlstring}---\n${markdown}\n`);
|
|
25
|
+
});
|
|
26
|
+
test('addFrontMatter with no markdown', () => {
|
|
27
|
+
const metadata = {
|
|
28
|
+
a: 'awesome',
|
|
29
|
+
b: 'banana',
|
|
30
|
+
};
|
|
31
|
+
const yamlstring = 'yaml-front-matter';
|
|
32
|
+
mocks.stringify.mockReturnValueOnce(yamlstring);
|
|
33
|
+
const combined = frontmatter.addFrontMatter(null, metadata);
|
|
34
|
+
expect(combined).toBe(`---\n${yamlstring}---\n\n`);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=frontmatter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatter.test.js","sourceRoot":"","sources":["../../../src/lib/frontmatter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC9D,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAEhC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAEf,MAAM,KAAK,GAAG;IACb,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;CAC/B,CAAA;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,IAAI,CAAC,SAAS,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAA;QACnC,MAAM,QAAQ,GAAG;YAChB,CAAC,EAAE,SAAS;YACZ,CAAC,EAAE,QAAQ;SACX,CAAA;QACD,MAAM,UAAU,GAAG,mBAAmB,CAAA;QAEtC,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAA;QAE/C,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,UAAU,QAAQ,QAAQ,IAAI,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC5C,MAAM,QAAQ,GAAG;YAChB,CAAC,EAAE,SAAS;YACZ,CAAC,EAAE,QAAQ;SACX,CAAA;QACD,MAAM,UAAU,GAAG,mBAAmB,CAAA;QAEtC,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAA;QAE/C,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,UAAU,SAAS,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { remark } from 'remark';
|
|
2
|
+
import remarkFrontMatter from 'remark-frontmatter';
|
|
3
|
+
import { visit } from 'unist-util-visit';
|
|
4
|
+
import YAML from 'yaml';
|
|
5
|
+
async function extractFullMarkdown(contents) {
|
|
6
|
+
let frontmatter = {};
|
|
7
|
+
let markdown = contents.toString();
|
|
8
|
+
await remark()
|
|
9
|
+
.use(remarkFrontMatter)
|
|
10
|
+
.use(() => (tree) => {
|
|
11
|
+
visit(tree, 'yaml', function (node) {
|
|
12
|
+
frontmatter = YAML.parse(node.value);
|
|
13
|
+
const endPosition = node.position?.end.offset;
|
|
14
|
+
markdown = markdown.slice(endPosition).trim();
|
|
15
|
+
});
|
|
16
|
+
})
|
|
17
|
+
.process(contents);
|
|
18
|
+
return { frontmatter, markdown };
|
|
19
|
+
}
|
|
20
|
+
export { extractFullMarkdown };
|
|
21
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/lib/markdown.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,iBAAiB,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,KAAK,UAAU,mBAAmB,CACjC,QAAyB;IAEzB,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;IAElC,MAAM,MAAM,EAAE;SACZ,GAAG,CAAC,iBAAiB,CAAC;SACtB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAU,EAAE,EAAE;QACzB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,IAAI;YACjC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAA;YAC7C,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAA;QAC9C,CAAC,CAAC,CAAA;IACH,CAAC,CAAC;SACD,OAAO,CAAC,QAAQ,CAAC,CAAA;IAEnB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AACjC,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { describe, expect, test, afterEach } from 'vitest';
|
|
2
|
+
import * as markdown from './markdown.js';
|
|
3
|
+
const mocks = {};
|
|
4
|
+
describe('./lib/markdown.ts', () => {
|
|
5
|
+
afterEach(() => {
|
|
6
|
+
Object.values(mocks).forEach(() => {
|
|
7
|
+
//mock.mockReset()
|
|
8
|
+
//mock.mockClear()
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
test('extract markdown and frontmatter', async () => {
|
|
12
|
+
const contents = '---\na: awesome\nb: banana\n---\nthis is markdown';
|
|
13
|
+
const extracted = await markdown.extractFullMarkdown(contents);
|
|
14
|
+
expect(extracted.frontmatter).toEqual({ a: 'awesome', b: 'banana' });
|
|
15
|
+
expect(extracted.markdown).toBe('this is markdown');
|
|
16
|
+
});
|
|
17
|
+
test('should not escape footnotes', async () => {
|
|
18
|
+
const contents = `---
|
|
19
|
+
a: awesome
|
|
20
|
+
b: banana
|
|
21
|
+
---
|
|
22
|
+
Here is a footnote reference,[^1] and another.[^longnote]
|
|
23
|
+
|
|
24
|
+
[^1]: Here is the footnote.
|
|
25
|
+
[^longnote]: Here's one with multiple blocks.
|
|
26
|
+
`;
|
|
27
|
+
const extracted = await markdown.extractFullMarkdown(contents);
|
|
28
|
+
expect(extracted.markdown).toBe(`Here is a footnote reference,[^1] and another.[^longnote]
|
|
29
|
+
|
|
30
|
+
[^1]: Here is the footnote.
|
|
31
|
+
[^longnote]: Here's one with multiple blocks.`);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=markdown.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.test.js","sourceRoot":"","sources":["../../../src/lib/markdown.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC1D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,MAAM,KAAK,GAAG,EAAE,CAAA;AAEhB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACjC,kBAAkB;YAClB,kBAAkB;QACnB,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAG,mDAAmD,CAAA;QAEpE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QAE9D,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;QACpE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,QAAQ,GAAG;;;;;;;;CAQlB,CAAA;QACC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QAC9D,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC9B;;;8CAG2C,CAC3C,CAAA;IACF,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { JSONSchemaType } from 'ajv';
|
|
2
|
+
import { type PieceFrontmatter } from '../pieces/index.js';
|
|
3
|
+
declare function pieceFrontMatterFromPrompt(apiKey: string, schema: JSONSchemaType<PieceFrontmatter>, prompt: string, files?: Array<string | Buffer>): Promise<{
|
|
4
|
+
[k: string]: string | number | boolean | number[] | string[] | boolean[];
|
|
5
|
+
}>;
|
|
6
|
+
export { pieceFrontMatterFromPrompt };
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { fileTypeFromBuffer, fileTypeFromFile } from 'file-type';
|
|
2
|
+
import { createPartFromUri, GoogleGenAI, HarmCategory, HarmBlockThreshold, } from '@google/genai';
|
|
3
|
+
import { readFile } from 'fs/promises';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
const MODEL_NAME = 'gemini-2.5-flash';
|
|
6
|
+
const safetySettings = [
|
|
7
|
+
{
|
|
8
|
+
category: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
|
|
9
|
+
threshold: HarmBlockThreshold.BLOCK_NONE,
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
|
|
13
|
+
threshold: HarmBlockThreshold.BLOCK_NONE,
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
category: HarmCategory.HARM_CATEGORY_CIVIC_INTEGRITY,
|
|
17
|
+
threshold: HarmBlockThreshold.BLOCK_NONE,
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
function getClient(apiKey) {
|
|
21
|
+
return new GoogleGenAI({ apiKey });
|
|
22
|
+
}
|
|
23
|
+
async function extractPartFromFile(file, genAI) {
|
|
24
|
+
const isBuffer = Buffer.isBuffer(file);
|
|
25
|
+
const fileType = isBuffer ? await fileTypeFromBuffer(file) : await fileTypeFromFile(file);
|
|
26
|
+
const mimeType = fileType?.mime;
|
|
27
|
+
// assume it's non binary
|
|
28
|
+
if (!mimeType) {
|
|
29
|
+
const fileContent = isBuffer ? file.toString() : await readFile(file, 'utf-8');
|
|
30
|
+
const fileName = isBuffer ? 'string buffer of downloaded file' : path.basename(file);
|
|
31
|
+
const data = [
|
|
32
|
+
`---[start] embedding ${fileName}---`,
|
|
33
|
+
fileContent,
|
|
34
|
+
`---[end] embedding of ${fileName}---`,
|
|
35
|
+
];
|
|
36
|
+
return data.join('\n');
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const uploadedFile = await genAI.files.upload({
|
|
40
|
+
file: isBuffer ? new Blob([file]) : file,
|
|
41
|
+
config: {
|
|
42
|
+
mimeType,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
// Wait for the file to be processed.
|
|
46
|
+
let getFile = await genAI.files.get({ name: uploadedFile.name });
|
|
47
|
+
while (getFile.state === 'PROCESSING') {
|
|
48
|
+
getFile = await genAI.files.get({ name: uploadedFile.name });
|
|
49
|
+
await new Promise((resolve) => {
|
|
50
|
+
setTimeout(resolve, 5000);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (uploadedFile.state === 'FAILED') {
|
|
54
|
+
throw new Error('File processing failed.');
|
|
55
|
+
}
|
|
56
|
+
if (uploadedFile.uri && uploadedFile.mimeType) {
|
|
57
|
+
const fileContent = createPartFromUri(uploadedFile.uri, uploadedFile.mimeType);
|
|
58
|
+
return fileContent;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
throw new Error('File processing failed.');
|
|
62
|
+
}
|
|
63
|
+
async function pieceFrontMatterFromPrompt(apiKey, schema, prompt, files) {
|
|
64
|
+
const genAI = getClient(apiKey);
|
|
65
|
+
const content = [prompt];
|
|
66
|
+
if (files) {
|
|
67
|
+
for (const file of files) {
|
|
68
|
+
const part = await extractPartFromFile(file, genAI);
|
|
69
|
+
content.push(part);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const result = await genAI.models.generateContent({
|
|
73
|
+
model: MODEL_NAME,
|
|
74
|
+
contents: content,
|
|
75
|
+
config: {
|
|
76
|
+
responseMimeType: 'application/json',
|
|
77
|
+
safetySettings: safetySettings,
|
|
78
|
+
responseJsonSchema: schema,
|
|
79
|
+
systemInstruction: `you are an assistant that helps generate JSON metadata for a record that will be added to a collection of similar records.
|
|
80
|
+
|
|
81
|
+
if you are provided pdf attachments, images or other text based files, please prioritize them as inputs for generating metadata for the record.
|
|
82
|
+
|
|
83
|
+
you are also given a responseJsonSchema to guide your output. each field in the schema has a description and examples to help guide what the intention of each field is and what values to expect.`,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
const metadata = result.text || '{}';
|
|
87
|
+
const frontmatter = JSON.parse(metadata);
|
|
88
|
+
return Object.fromEntries(Object.entries(frontmatter).filter(([, value]) => value !== null || value === ''));
|
|
89
|
+
}
|
|
90
|
+
export { pieceFrontMatterFromPrompt };
|
|
91
|
+
//# sourceMappingURL=google.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/llm/google.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAEN,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,kBAAkB,GAElB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,IAAI,MAAM,MAAM,CAAA;AAIvB,MAAM,UAAU,GAAG,kBAAkB,CAAA;AAErC,MAAM,cAAc,GAAoB;IACvC;QACC,QAAQ,EAAE,YAAY,CAAC,+BAA+B;QACtD,SAAS,EAAE,kBAAkB,CAAC,UAAU;KACxC;IACD;QACC,QAAQ,EAAE,YAAY,CAAC,+BAA+B;QACtD,SAAS,EAAE,kBAAkB,CAAC,UAAU;KACxC;IACD;QACC,QAAQ,EAAE,YAAY,CAAC,6BAA6B;QACpD,SAAS,EAAE,kBAAkB,CAAC,UAAU;KACxC;CACD,CAAA;AAED,SAAS,SAAS,CAAC,MAAc;IAChC,OAAO,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AACnC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAqB,EAAE,KAAkB;IAC3E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACzF,MAAM,QAAQ,GAAG,QAAQ,EAAE,IAAI,CAAA;IAE/B,yBAAyB;IACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC9E,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACpF,MAAM,IAAI,GAAG;YACZ,wBAAwB,QAAQ,KAAK;YACrC,WAAW;YACX,yBAAyB,QAAQ,KAAK;SACtC,CAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;SAAM,CAAC;QACP,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YAC7C,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACxC,MAAM,EAAE;gBACP,QAAQ;aACR;SACD,CAAC,CAAA;QAEF,qCAAqC;QACrC,IAAI,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAc,EAAE,CAAC,CAAA;QAE1E,OAAO,OAAO,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YACvC,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAc,EAAE,CAAC,CAAA;YAEtE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC1B,CAAC,CAAC,CAAA;QACH,CAAC;QAED,IAAI,YAAY,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC3C,CAAC;QAED,IAAI,YAAY,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,iBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;YAC9E,OAAO,WAAW,CAAA;QACnB,CAAC;IACF,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAC3C,CAAC;AAED,KAAK,UAAU,0BAA0B,CACxC,MAAc,EACd,MAAwC,EACxC,MAAc,EACd,KAA8B;IAE9B,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;IAE/B,MAAM,OAAO,GAAqB,CAAC,MAAM,CAAC,CAAA;IAE1C,IAAI,KAAK,EAAE,CAAC;QACX,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACnD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;IACF,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;QACjD,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE;YACP,gBAAgB,EAAE,kBAAkB;YACpC,cAAc,EAAE,cAAc;YAC9B,kBAAkB,EAAE,MAAM;YAC1B,iBAAiB,EAAE;;;;mMAI6K;SAChM;KACD,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAA;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAqB,CAAA;IAE5D,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CACjF,CAAA;AACF,CAAC;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|