@yanit/jsondb 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +903 -0
  2. package/dist/bin/cli-export.d.ts +7 -0
  3. package/dist/bin/cli-export.d.ts.map +1 -0
  4. package/dist/bin/cli-export.js +318 -0
  5. package/dist/bin/cli-export.js.map +1 -0
  6. package/dist/bin/cli-import.d.ts +7 -0
  7. package/dist/bin/cli-import.d.ts.map +1 -0
  8. package/dist/bin/cli-import.js +298 -0
  9. package/dist/bin/cli-import.js.map +1 -0
  10. package/dist/bin/server.d.ts +7 -0
  11. package/dist/bin/server.d.ts.map +1 -0
  12. package/dist/bin/server.js +92 -0
  13. package/dist/bin/server.js.map +1 -0
  14. package/dist/examples/sql-example.d.ts +7 -0
  15. package/dist/examples/sql-example.d.ts.map +1 -0
  16. package/dist/examples/sql-example.js +131 -0
  17. package/dist/examples/sql-example.js.map +1 -0
  18. package/dist/src/BulkOp.d.ts +74 -0
  19. package/dist/src/BulkOp.d.ts.map +1 -0
  20. package/dist/src/BulkOp.js +143 -0
  21. package/dist/src/BulkOp.js.map +1 -0
  22. package/dist/src/Collection.d.ts +232 -0
  23. package/dist/src/Collection.d.ts.map +1 -0
  24. package/dist/src/Collection.js +705 -0
  25. package/dist/src/Collection.js.map +1 -0
  26. package/dist/src/Cursor.d.ts +94 -0
  27. package/dist/src/Cursor.d.ts.map +1 -0
  28. package/dist/src/Cursor.js +259 -0
  29. package/dist/src/Cursor.js.map +1 -0
  30. package/dist/src/Database.d.ts +98 -0
  31. package/dist/src/Database.d.ts.map +1 -0
  32. package/dist/src/Database.js +198 -0
  33. package/dist/src/Database.js.map +1 -0
  34. package/dist/src/Operators.d.ts +73 -0
  35. package/dist/src/Operators.d.ts.map +1 -0
  36. package/dist/src/Operators.js +339 -0
  37. package/dist/src/Operators.js.map +1 -0
  38. package/dist/src/QueryCache.d.ts +87 -0
  39. package/dist/src/QueryCache.d.ts.map +1 -0
  40. package/dist/src/QueryCache.js +155 -0
  41. package/dist/src/QueryCache.js.map +1 -0
  42. package/dist/src/SQLExecutor.d.ts +60 -0
  43. package/dist/src/SQLExecutor.d.ts.map +1 -0
  44. package/dist/src/SQLExecutor.js +317 -0
  45. package/dist/src/SQLExecutor.js.map +1 -0
  46. package/dist/src/SQLParser.d.ts +181 -0
  47. package/dist/src/SQLParser.d.ts.map +1 -0
  48. package/dist/src/SQLParser.js +640 -0
  49. package/dist/src/SQLParser.js.map +1 -0
  50. package/dist/src/Schema.d.ts +92 -0
  51. package/dist/src/Schema.d.ts.map +1 -0
  52. package/dist/src/Schema.js +253 -0
  53. package/dist/src/Schema.js.map +1 -0
  54. package/dist/src/Transaction.d.ts +118 -0
  55. package/dist/src/Transaction.d.ts.map +1 -0
  56. package/dist/src/Transaction.js +233 -0
  57. package/dist/src/Transaction.js.map +1 -0
  58. package/dist/src/Utils.d.ts +68 -0
  59. package/dist/src/Utils.d.ts.map +1 -0
  60. package/dist/src/Utils.js +187 -0
  61. package/dist/src/Utils.js.map +1 -0
  62. package/dist/src/errors.d.ts +58 -0
  63. package/dist/src/errors.d.ts.map +1 -0
  64. package/dist/src/errors.js +85 -0
  65. package/dist/src/errors.js.map +1 -0
  66. package/dist/src/index.d.ts +39 -0
  67. package/dist/src/index.d.ts.map +1 -0
  68. package/dist/src/index.js +44 -0
  69. package/dist/src/index.js.map +1 -0
  70. package/dist/test/basic.test.d.ts +5 -0
  71. package/dist/test/basic.test.d.ts.map +1 -0
  72. package/dist/test/basic.test.js +283 -0
  73. package/dist/test/basic.test.js.map +1 -0
  74. package/dist/test/index.test.d.ts +5 -0
  75. package/dist/test/index.test.d.ts.map +1 -0
  76. package/dist/test/index.test.js +126 -0
  77. package/dist/test/index.test.js.map +1 -0
  78. package/dist/test/jsonb.test.d.ts +5 -0
  79. package/dist/test/jsonb.test.d.ts.map +1 -0
  80. package/dist/test/jsonb.test.js +165 -0
  81. package/dist/test/jsonb.test.js.map +1 -0
  82. package/dist/test/optimization.test.d.ts +6 -0
  83. package/dist/test/optimization.test.d.ts.map +1 -0
  84. package/dist/test/optimization.test.js +196 -0
  85. package/dist/test/optimization.test.js.map +1 -0
  86. package/dist/test/schema.test.d.ts +5 -0
  87. package/dist/test/schema.test.d.ts.map +1 -0
  88. package/dist/test/schema.test.js +197 -0
  89. package/dist/test/schema.test.js.map +1 -0
  90. package/dist/test/sql.test.d.ts +7 -0
  91. package/dist/test/sql.test.d.ts.map +1 -0
  92. package/dist/test/sql.test.js +21 -0
  93. package/dist/test/sql.test.js.map +1 -0
  94. package/package.json +73 -0
  95. package/src/BulkOp.js +181 -0
  96. package/src/BulkOp.ts +191 -0
  97. package/src/Collection.js +843 -0
  98. package/src/Collection.ts +896 -0
  99. package/src/Cursor.js +315 -0
  100. package/src/Cursor.ts +319 -0
  101. package/src/Database.js +244 -0
  102. package/src/Database.ts +268 -0
  103. package/src/Operators.js +382 -0
  104. package/src/Operators.ts +375 -0
  105. package/src/QueryCache.js +190 -0
  106. package/src/QueryCache.ts +208 -0
  107. package/src/SQLExecutor.ts +391 -0
  108. package/src/SQLParser.ts +814 -0
  109. package/src/Schema.js +292 -0
  110. package/src/Schema.ts +317 -0
  111. package/src/Transaction.js +291 -0
  112. package/src/Transaction.ts +313 -0
  113. package/src/Utils.js +205 -0
  114. package/src/Utils.ts +205 -0
  115. package/src/errors.js +93 -0
  116. package/src/errors.ts +93 -0
  117. package/src/index.js +90 -0
  118. package/src/index.ts +106 -0
@@ -0,0 +1,232 @@
1
+ /**
2
+ * 集合类 - 管理文档集合
3
+ * 支持 async/await 异步操作
4
+ * 支持 JSONB 二进制存储模式
5
+ * 支持 Schema 验证
6
+ * 支持内存缓存优化
7
+ */
8
+ import { Cursor } from './Cursor.js';
9
+ import type { Database } from './Database.js';
10
+ import type { Schema } from './Schema.js';
11
+ import type { SQLExecutionResult } from './SQLExecutor.js';
12
+ /**
13
+ * 集合统计信息接口
14
+ */
15
+ interface CollectionStats {
16
+ ns: string;
17
+ count: number;
18
+ size: number;
19
+ avgObjSize: number;
20
+ indexes: number;
21
+ jsonb: boolean;
22
+ }
23
+ /**
24
+ * 索引信息接口
25
+ */
26
+ export interface IndexInfo {
27
+ key: Record<string, number>;
28
+ name: string;
29
+ unique: boolean;
30
+ }
31
+ /**
32
+ * 集合数据接口
33
+ */
34
+ interface CollectionData {
35
+ _meta: {
36
+ name: string;
37
+ count: number;
38
+ indexes: IndexInfo[];
39
+ };
40
+ _documents: Array<Record<string, unknown>>;
41
+ _indexes: Record<string, Record<string, string[]>>;
42
+ }
43
+ /**
44
+ * Collection 类
45
+ * 表示一个文档集合,提供 CRUD 操作
46
+ */
47
+ export declare class Collection {
48
+ db: Database;
49
+ name: string;
50
+ private _filePath;
51
+ _data: CollectionData | null;
52
+ private _lock;
53
+ jsonb: boolean;
54
+ private _schema;
55
+ _validateOnInsert: boolean;
56
+ _validateOnUpdate: boolean;
57
+ _cache: CollectionData | null;
58
+ _cacheTime: number;
59
+ private _cacheTTL;
60
+ private _dirty;
61
+ /**
62
+ * @param db - 数据库实例
63
+ * @param name - 集合名称
64
+ */
65
+ constructor(db: Database, name: string);
66
+ /**
67
+ * 设置 Schema
68
+ */
69
+ setSchema(schema: Schema, options?: {
70
+ validateOnInsert?: boolean;
71
+ validateOnUpdate?: boolean;
72
+ }): Collection;
73
+ /**
74
+ * 获取 Schema
75
+ */
76
+ getSchema(): Schema | null;
77
+ /**
78
+ * 验证文档
79
+ */
80
+ _validate(doc: Record<string, unknown>): void;
81
+ /**
82
+ * 加载集合数据(带缓存)
83
+ */
84
+ _load(): Promise<void>;
85
+ /**
86
+ * 保存集合数据(带缓存失效)
87
+ */
88
+ _save(): Promise<void>;
89
+ /**
90
+ * JSONB 编码 - 将数据编码为二进制 Buffer
91
+ */
92
+ _encodeJsonb(): Buffer;
93
+ /**
94
+ * JSONB 解码 - 将二进制 Buffer 解码为数据
95
+ */
96
+ _decodeJsonb(buffer: Buffer): CollectionData;
97
+ /**
98
+ * 获取锁
99
+ */
100
+ _acquireLock(): Promise<void>;
101
+ /**
102
+ * 释放锁
103
+ */
104
+ _releaseLock(): void;
105
+ /**
106
+ * 获取所有文档
107
+ */
108
+ _getDocuments(): Promise<Array<Record<string, unknown>>>;
109
+ /**
110
+ * 插入单个文档
111
+ */
112
+ insertOne(doc: Record<string, unknown>): Promise<Record<string, unknown>>;
113
+ /**
114
+ * 插入多个文档(优化版 - 单次写入)
115
+ */
116
+ insertMany(docs: Array<Record<string, unknown>>, options?: Record<string, unknown>): Promise<{
117
+ acknowledged: boolean;
118
+ insertedCount: number;
119
+ insertedIds: Record<number, string>;
120
+ }>;
121
+ /**
122
+ * 更新索引
123
+ */
124
+ private _updateIndexes;
125
+ /**
126
+ * 查询文档
127
+ */
128
+ find(query?: Record<string, unknown>, options?: Record<string, unknown>): Cursor;
129
+ /**
130
+ * 查询单个文档
131
+ */
132
+ findOne(query?: Record<string, unknown>, options?: Record<string, unknown>): Promise<Record<string, unknown> | null>;
133
+ /**
134
+ * 更新单个文档
135
+ */
136
+ updateOne(query: Record<string, unknown>, update: Record<string, unknown>, options?: {
137
+ upsert?: boolean;
138
+ }): Promise<{
139
+ acknowledged: boolean;
140
+ matchedCount: number;
141
+ modifiedCount: number;
142
+ upsertedId?: string;
143
+ }>;
144
+ /**
145
+ * 更新多个文档
146
+ */
147
+ updateMany(query: Record<string, unknown>, update: Record<string, unknown>, options?: {
148
+ upsert?: boolean;
149
+ }): Promise<{
150
+ acknowledged: boolean;
151
+ matchedCount: number;
152
+ modifiedCount: number;
153
+ upsertedId?: string;
154
+ }>;
155
+ /**
156
+ * 替换单个文档
157
+ */
158
+ replaceOne(query: Record<string, unknown>, doc: Record<string, unknown>, options?: {
159
+ upsert?: boolean;
160
+ }): Promise<{
161
+ acknowledged: boolean;
162
+ matchedCount: number;
163
+ modifiedCount: number;
164
+ upsertedId?: string;
165
+ }>;
166
+ /**
167
+ * 删除单个文档
168
+ */
169
+ deleteOne(query: Record<string, unknown>): Promise<{
170
+ acknowledged: boolean;
171
+ deletedCount: number;
172
+ }>;
173
+ /**
174
+ * 删除多个文档
175
+ */
176
+ deleteMany(query: Record<string, unknown>): Promise<{
177
+ acknowledged: boolean;
178
+ deletedCount: number;
179
+ }>;
180
+ /**
181
+ * 计数文档
182
+ */
183
+ countDocuments(query?: Record<string, unknown>): Promise<number>;
184
+ /**
185
+ * 获取不同值
186
+ */
187
+ distinct(key: string, query?: Record<string, unknown>): Promise<unknown[]>;
188
+ /**
189
+ * 聚合查询
190
+ */
191
+ aggregate(pipeline: Array<Record<string, unknown>>): Promise<Array<Record<string, unknown>>>;
192
+ /**
193
+ * 应用聚合阶段
194
+ */
195
+ private _applyAggregationStage;
196
+ /**
197
+ * 应用分组
198
+ */
199
+ private _applyGroup;
200
+ /**
201
+ * 创建索引
202
+ */
203
+ createIndex(keys: Record<string, number>, options?: {
204
+ unique?: boolean;
205
+ }): Promise<IndexInfo>;
206
+ /**
207
+ * 构建索引数据
208
+ */
209
+ private _buildIndex;
210
+ /**
211
+ * 删除索引
212
+ */
213
+ dropIndex(name: string): Promise<{
214
+ acknowledged: boolean;
215
+ }>;
216
+ /**
217
+ * 列出所有索引
218
+ */
219
+ listIndexes(): Promise<IndexInfo[]>;
220
+ /**
221
+ * 获取集合统计信息
222
+ */
223
+ stats(): Promise<CollectionStats>;
224
+ /**
225
+ * 执行 SQL 语句
226
+ * @param sql - SQL 语句
227
+ * @returns SQL 执行结果
228
+ */
229
+ sql(sqlStr: string): Promise<SQLExecutionResult>;
230
+ }
231
+ export {};
232
+ //# sourceMappingURL=Collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/Collection.ts"],"names":[],"mappings":"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"}