@rlabs-inc/fsdb 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,107 @@
1
+ /**
2
+ * fsDB Type Definitions
3
+ *
4
+ * Core types for the Fractal State Database
5
+ */
6
+ /** Supported column types */
7
+ export type ColumnType = 'string' | 'number' | 'boolean' | 'timestamp' | 'string[]' | 'number[]' | `vector:${number}`;
8
+ /** Schema definition - maps field names to column types */
9
+ export type SchemaDefinition = Record<string, ColumnType>;
10
+ /** Convert a column type to its TypeScript type */
11
+ export type ColumnTypeToTS<T extends ColumnType> = T extends 'string' ? string : T extends 'number' ? number : T extends 'boolean' ? boolean : T extends 'timestamp' ? number : T extends 'string[]' ? string[] : T extends 'number[]' ? number[] : T extends `vector:${number}` ? Float32Array | null : never;
12
+ /** Convert a schema definition to a record type */
13
+ export type SchemaToRecord<S extends SchemaDefinition> = {
14
+ [K in keyof S]: ColumnTypeToTS<S[K]>;
15
+ };
16
+ /** Record with metadata */
17
+ export type RecordWithMeta<S extends SchemaDefinition> = SchemaToRecord<S> & {
18
+ id: string;
19
+ created: number;
20
+ updated: number;
21
+ stale: boolean;
22
+ };
23
+ /** Partial record for inserts/updates */
24
+ export type PartialRecord<S extends SchemaDefinition> = Partial<SchemaToRecord<S>> & {
25
+ id?: string;
26
+ };
27
+ export interface ParsedColumnType {
28
+ baseType: 'string' | 'number' | 'boolean' | 'timestamp' | 'array' | 'vector';
29
+ arrayType?: 'string' | 'number';
30
+ vectorDimensions?: number;
31
+ }
32
+ export interface ParsedSchema<S extends SchemaDefinition> {
33
+ definition: S;
34
+ columns: (keyof S)[];
35
+ vectorColumns: (keyof S)[];
36
+ parsedTypes: Map<keyof S, ParsedColumnType>;
37
+ }
38
+ export interface CollectionOptions<S extends SchemaDefinition> {
39
+ /** Schema defining the columns */
40
+ schema: S;
41
+ /** Which column contains the main content (stored as markdown body) */
42
+ contentColumn?: keyof S;
43
+ /** Storage path - local folder or ~/.fsdb/[name] */
44
+ path?: string;
45
+ /** Auto-save changes to disk */
46
+ autoSave?: boolean;
47
+ /** Watch files for external changes */
48
+ watchFiles?: boolean;
49
+ /** Callback when external file changes are detected */
50
+ onExternalChange?: (event: FileChangeEvent<S>) => void | Promise<void>;
51
+ }
52
+ export interface DatabaseOptions {
53
+ /** Database name (used for path generation) */
54
+ name?: string;
55
+ /**
56
+ * Use project-local storage instead of global ~/.fsdb/
57
+ * - false (default): ~/.fsdb/[name]/[collection]/
58
+ * - true: ./.fsdb/[name]/[collection]/
59
+ */
60
+ local?: boolean;
61
+ /**
62
+ * Custom base path - overrides both local and global defaults
63
+ * If set, collections will be stored at [basePath]/[collection]/
64
+ */
65
+ basePath?: string;
66
+ }
67
+ export interface FileChangeEvent<S extends SchemaDefinition> {
68
+ type: 'create' | 'update' | 'delete';
69
+ id: string;
70
+ filename: string;
71
+ filepath: string;
72
+ record?: RecordWithMeta<S>;
73
+ stale: boolean;
74
+ }
75
+ export type FilterFn<S extends SchemaDefinition> = (record: SchemaToRecord<S>, index: number) => boolean;
76
+ export interface QueryResult<S extends SchemaDefinition> {
77
+ indices: number[];
78
+ records: RecordWithMeta<S>[];
79
+ count: number;
80
+ }
81
+ export interface PaginatedResult<S extends SchemaDefinition> {
82
+ records: RecordWithMeta<S>[];
83
+ total: number;
84
+ page: number;
85
+ pageSize: number;
86
+ totalPages: number;
87
+ hasNext: boolean;
88
+ hasPrev: boolean;
89
+ }
90
+ export interface SortOption<S extends SchemaDefinition> {
91
+ column: keyof S;
92
+ direction: 'asc' | 'desc';
93
+ }
94
+ export interface VectorSearchOptions<S extends SchemaDefinition> {
95
+ /** Number of top results to return */
96
+ topK?: number;
97
+ /** Minimum similarity threshold (0-1) */
98
+ minSimilarity?: number;
99
+ /** Pre-filter records before vector search */
100
+ filter?: FilterFn<S>;
101
+ }
102
+ export interface VectorSearchResult<S extends SchemaDefinition> {
103
+ record: RecordWithMeta<S>;
104
+ similarity: number;
105
+ stale: boolean;
106
+ }
107
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * fsDB - Fractal State Database
3
+ *
4
+ * A reactive database with parallel arrays and fine-grained reactivity.
5
+ * Built on the Father State pattern at every level.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export type { ColumnType, SchemaDefinition, ColumnTypeToTS, SchemaToRecord, RecordWithMeta, PartialRecord, ParsedColumnType, ParsedSchema, CollectionOptions, DatabaseOptions, FileChangeEvent, FilterFn, QueryResult, PaginatedResult, SortOption, VectorSearchOptions, VectorSearchResult, } from './core/types';
10
+ export { createDatabase, fsDB, createPersistentCollection, type Database, type PersistentCollection, } from './core/database';
11
+ export { createCollection, type Collection, } from './core/collection';
12
+ export { createRegistry, generateId, type Registry, } from './core/registry';
13
+ export { createColumns, parseColumnType, parseSchema, getDefaultValue, type ColumnsManager, } from './core/columns';
14
+ export { query, querySorted, queryFirst, queryCount, queryAggregate, queryGroupBy, } from './query/reactive';
15
+ export { eq, neq, gt, gte, lt, lte, between, oneOf, fullText, matches, startsWith, endsWith, contains, containsAny, containsAll, isEmpty, isNotEmpty, exists, isNull, after, before, withinLast, and, or, not, sortBy, paginate, } from './query/filters';
16
+ export { vectorSearch, cosineSimilarity, batchCosineSimilarity, normalizeVector, toFloat32Array, createEmbeddingManager, type EmbeddingManager, } from './vector/search';
17
+ export { parseMarkdown, generateMarkdown, loadFromMarkdown, saveToMarkdown, loadFromDirectory, deleteMarkdownFile, ensureDirectory, idToFilename, filenameToId, } from './persistence/markdown';
18
+ export { createFileWatcher, type FileWatcher, type WatcherOptions, } from './persistence/watcher';
19
+ export { DEFAULT_VALUES, WATCHER_DEBOUNCE_MS, SAVE_GRACE_PERIOD_MS, DEFAULT_PAGE_SIZE, } from './core/constants';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,YAAY,EAEV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EAGZ,iBAAiB,EACjB,eAAe,EAGf,eAAe,EAGf,QAAQ,EACR,WAAW,EACX,eAAe,EACf,UAAU,EAGV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAMrB,OAAO,EACL,cAAc,EACd,IAAI,EACJ,0BAA0B,EAC1B,KAAK,QAAQ,EACb,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAA;AAM1B,OAAO,EACL,cAAc,EACd,UAAU,EACV,KAAK,QAAQ,GACd,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,aAAa,EACb,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAA;AAMvB,OAAO,EACL,KAAK,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,GACb,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EAEL,EAAE,EACF,GAAG,EACH,EAAE,EACF,GAAG,EACH,EAAE,EACF,GAAG,EACH,OAAO,EACP,KAAK,EAGL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAQ,EAGR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,OAAO,EACP,UAAU,EAGV,MAAM,EACN,MAAM,EAGN,KAAK,EACL,MAAM,EACN,UAAU,EAGV,GAAG,EACH,EAAE,EACF,GAAG,EAGH,MAAM,EACN,QAAQ,GACT,MAAM,iBAAiB,CAAA;AAMxB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAA;AAMxB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAA;AAM9B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,kBAAkB,CAAA"}