@aiao/rxdb 0.0.3 → 0.0.5

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 (89) hide show
  1. package/LICENSE +21 -0
  2. package/{RxDB.d.ts → dist/RxDB.d.ts} +39 -11
  3. package/dist/RxDB.d.ts.map +1 -0
  4. package/{RxDBError.d.ts → dist/RxDBError.d.ts} +2 -0
  5. package/dist/RxDBError.d.ts.map +1 -0
  6. package/{entity → dist/entity}/@Entity.d.ts +4 -9
  7. package/dist/entity/@Entity.d.ts.map +1 -0
  8. package/{entity → dist/entity}/@TreeEntity.d.ts +5 -4
  9. package/dist/entity/@TreeEntity.d.ts.map +1 -0
  10. package/{entity → dist/entity}/EntityBase.d.ts +3 -2
  11. package/dist/entity/EntityBase.d.ts.map +1 -0
  12. package/{entity → dist/entity}/EntityManager.d.ts +33 -9
  13. package/dist/entity/EntityManager.d.ts.map +1 -0
  14. package/{entity → dist/entity}/EntityStatus.d.ts +26 -19
  15. package/dist/entity/EntityStatus.d.ts.map +1 -0
  16. package/dist/entity/TreeEntityBase.d.ts +15 -0
  17. package/dist/entity/TreeEntityBase.d.ts.map +1 -0
  18. package/{entity → dist/entity}/entity-metadata-options.interface.d.ts +67 -68
  19. package/dist/entity/entity-metadata-options.interface.d.ts.map +1 -0
  20. package/{entity → dist/entity}/entity-metadata.interface.d.ts +5 -14
  21. package/dist/entity/entity-metadata.interface.d.ts.map +1 -0
  22. package/{entity → dist/entity}/entity.interface.d.ts +10 -1
  23. package/dist/entity/entity.interface.d.ts.map +1 -0
  24. package/{entity → dist/entity}/entity.utils.d.ts +9 -2
  25. package/dist/entity/entity.utils.d.ts.map +1 -0
  26. package/{entity → dist/entity}/entity_proxy_helper.d.ts +3 -2
  27. package/dist/entity/entity_proxy_helper.d.ts.map +1 -0
  28. package/{entity → dist/entity}/entity_relation_helper.d.ts +4 -3
  29. package/dist/entity/entity_relation_helper.d.ts.map +1 -0
  30. package/{entity → dist/entity}/generate_many_to_many_entity.d.ts +5 -4
  31. package/dist/entity/generate_many_to_many_entity.d.ts.map +1 -0
  32. package/{entity → dist/entity}/transition-metadata.d.ts +4 -3
  33. package/dist/entity/transition-metadata.d.ts.map +1 -0
  34. package/dist/index.d.ts +38 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +3378 -0
  37. package/{repository → dist/repository}/Repository.d.ts +14 -20
  38. package/dist/repository/Repository.d.ts.map +1 -0
  39. package/{repository → dist/repository}/RepositoryBase.d.ts +6 -5
  40. package/dist/repository/RepositoryBase.d.ts.map +1 -0
  41. package/dist/repository/TreeRepository.d.ts +29 -0
  42. package/dist/repository/TreeRepository.d.ts.map +1 -0
  43. package/dist/repository/query-options.interface.d.ts +47 -0
  44. package/dist/repository/query-options.interface.d.ts.map +1 -0
  45. package/{repository → dist/repository}/query.interface.d.ts +18 -5
  46. package/dist/repository/query.interface.d.ts.map +1 -0
  47. package/dist/repository/query.utils.d.ts +27 -0
  48. package/dist/repository/query.utils.d.ts.map +1 -0
  49. package/{repository → dist/repository}/relation-query.interface.d.ts +1 -0
  50. package/dist/repository/relation-query.interface.d.ts.map +1 -0
  51. package/{repository → dist/repository}/repository.interface.d.ts +9 -18
  52. package/dist/repository/repository.interface.d.ts.map +1 -0
  53. package/dist/repository/tree-repository.interface.d.ts +66 -0
  54. package/dist/repository/tree-repository.interface.d.ts.map +1 -0
  55. package/{rxdb-adapter.d.ts → dist/rxdb-adapter.d.ts} +35 -6
  56. package/dist/rxdb-adapter.d.ts.map +1 -0
  57. package/{rxdb-events.d.ts → dist/rxdb-events.d.ts} +9 -82
  58. package/dist/rxdb-events.d.ts.map +1 -0
  59. package/{rxdb-plugin.d.ts → dist/rxdb-plugin.d.ts} +2 -1
  60. package/dist/rxdb-plugin.d.ts.map +1 -0
  61. package/{rxdb-utils.d.ts → dist/rxdb-utils.d.ts} +15 -3
  62. package/dist/rxdb-utils.d.ts.map +1 -0
  63. package/{rxdb.interface.d.ts → dist/rxdb.interface.d.ts} +3 -10
  64. package/dist/rxdb.interface.d.ts.map +1 -0
  65. package/{rxdb.private.d.ts → dist/rxdb.private.d.ts} +14 -14
  66. package/dist/rxdb.private.d.ts.map +1 -0
  67. package/{schema → dist/schema}/SchemaManager.d.ts +8 -4
  68. package/dist/schema/SchemaManager.d.ts.map +1 -0
  69. package/dist/system/VersionManager.d.ts +35 -0
  70. package/dist/system/VersionManager.d.ts.map +1 -0
  71. package/dist/system/branch.d.ts +17 -0
  72. package/dist/system/branch.d.ts.map +1 -0
  73. package/dist/system/change.d.ts +78 -0
  74. package/dist/system/change.d.ts.map +1 -0
  75. package/dist/system/migration.d.ts +27 -0
  76. package/dist/system/migration.d.ts.map +1 -0
  77. package/dist/system/types.d.ts +335 -0
  78. package/dist/system/types.d.ts.map +1 -0
  79. package/package.json +26 -12
  80. package/entity/TreeEntityBase.d.ts +0 -9
  81. package/index.d.ts +0 -33
  82. package/index.js +0 -1789
  83. package/repository/TreeRepository.d.ts +0 -28
  84. package/repository/query-options.interface.d.ts +0 -53
  85. package/repository/query.utils.d.ts +0 -19
  86. package/repository/tree-query-options.interface.d.ts +0 -9
  87. package/repository/tree-repository.interface.d.ts +0 -26
  88. package/system/change.d.ts +0 -13
  89. package/system/migration.d.ts +0 -9
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Aiao Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,13 +1,13 @@
1
1
  import { Observable } from 'rxjs';
2
- import { SetRequired } from 'type-fest';
3
- import { EntityManager } from './entity/EntityManager';
4
- import { AdapterFactory, RxDBAdapters } from './rxdb-adapter';
5
- import { RxDBEvent, RxDBEventMap } from './rxdb-events';
6
- import { Plugin } from './rxdb-plugin';
7
- import { RxDBContext, RxDBOptions } from './rxdb.interface';
8
- import { SchemaManager } from './schema/SchemaManager';
2
+ import { EntityManager } from './entity/EntityManager.js';
3
+ import { AdapterFactory, IRxDBAdapter, RxDBAdapters } from './rxdb-adapter.js';
4
+ import { RxDBEvent, RxDBEventMap } from './rxdb-events.js';
5
+ import { Plugin } from './rxdb-plugin.js';
6
+ import { RxDBContext, RxDBOptions } from './rxdb.interface.js';
7
+ import { SchemaManager } from './schema/SchemaManager.js';
8
+ import { VersionManager } from './system/VersionManager.js';
9
9
  type EventListener<T> = (event: T) => void;
10
- type RxDBConfig = SetRequired<RxDBOptions, 'relationQueryDeep'>;
10
+ type RxDBConfig = RxDBOptions;
11
11
  /**
12
12
  * RxDB
13
13
  */
@@ -16,11 +16,15 @@ export declare class RxDB {
16
16
  /**
17
17
  * Schema 管理
18
18
  */
19
- readonly schema: SchemaManager;
19
+ readonly schemaManager: SchemaManager;
20
20
  /**
21
21
  * Entity 管理
22
22
  */
23
- readonly em: EntityManager;
23
+ readonly entityManager: EntityManager;
24
+ /**
25
+ * 版本管理
26
+ */
27
+ readonly versionManager: VersionManager;
24
28
  /**
25
29
  * 设置环境上下文
26
30
  */
@@ -43,9 +47,33 @@ export declare class RxDB {
43
47
  /**
44
48
  * 连接适配器
45
49
  */
46
- connect<K extends keyof RxDBAdapters>(adapterName: K): Observable<import('./rxdb-adapter').IRxDBAdapter>;
50
+ connect<K extends keyof RxDBAdapters>(adapterName: K): Observable<IRxDBAdapter>;
51
+ /**
52
+ * 断开适配器
53
+ * @param adapterName 适配器注册名称
54
+ */
55
+ disconnect<K extends keyof RxDBAdapters>(adapterName: K): Observable<void>;
56
+ /**
57
+ * 断开所有适配器
58
+ */
59
+ disconnectAll(): Observable<void[]>;
60
+ /**
61
+ * 监听事件
62
+ * @param type
63
+ * @param listener
64
+ */
47
65
  addEventListener<T extends keyof RxDBEventMap>(type: T, listener: EventListener<RxDBEventMap[T]>): void;
66
+ /**
67
+ * 移除事件
68
+ * @param type
69
+ * @param listener
70
+ */
48
71
  removeEventListener<T extends keyof RxDBEventMap>(type: T, listener: EventListener<RxDBEventMap[T]>): void;
72
+ /**
73
+ * 派发事件
74
+ * @param event
75
+ */
49
76
  dispatchEvent(event: RxDBEvent): void;
50
77
  }
51
78
  export {};
79
+ //# sourceMappingURL=RxDB.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RxDB.d.ts","sourceRoot":"","sources":["../src/RxDB.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,UAAU,EAIX,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAEL,SAAS,EACT,YAAY,EAIb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAE3C,KAAK,UAAU,GAAG,WAAW,CAAC;AAE9B;;GAEG;AACH,qBAAa,IAAI;;IAkBf;;OAEG;IACH,SAAgB,aAAa,EAAG,aAAa,CAAC;IAE9C;;OAEG;IACH,SAAgB,aAAa,EAAG,aAAa,CAAC;IAE9C;;OAEG;IACH,SAAgB,cAAc,EAAG,cAAc,CAAC;IAEhD;;OAEG;IACH,IAAI,OAAO,IAGU,WAAW,CAD/B;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,EAE/B;IAED,SAAgB,OAAO,EAAE,UAAU,CAAC;gBAExB,OAAO,EAAE,WAAW;IA2BhC;;OAEG;IACI,OAAO,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAM3F;;OAEG;IACI,UAAU,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,WAAW,EAAE,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAsB5F;;OAEG;IACI,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO;IAWpE;;OAEG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,WAAW,EAAE,CAAC;IAyBpD;;;OAGG;IACH,UAAU,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,WAAW,EAAE,CAAC;IAIvD;;OAEG;IACH,aAAa;IAMb;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAIvG;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAI1G;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAmBtC"}
@@ -2,4 +2,6 @@
2
2
  * RxDB 基础错误类型
3
3
  */
4
4
  export declare class RxDBError extends Error {
5
+ constructor(message: string);
5
6
  }
7
+ //# sourceMappingURL=RxDBError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RxDBError.d.ts","sourceRoot":"","sources":["../src/RxDBError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAK5B"}
@@ -1,10 +1,5 @@
1
- import { EntityMetadataOptions } from './entity-metadata-options.interface';
2
- import { AbstractEntityType, EntityType } from './entity.interface';
3
- /**
4
- * 装饰后的实体类型
5
- * 根据原始类型是否为抽象类,返回相应的构造函数类型
6
- */
7
- type DecoratedEntityType<T extends EntityType | AbstractEntityType> = T extends EntityType ? new (initData?: Partial<InstanceType<T>>) => InstanceType<T> : abstract new (initData?: Partial<InstanceType<T>>) => InstanceType<T>;
1
+ import { EntityMetadataOptions } from './entity-metadata-options.interface.js';
2
+ import { AbstractEntityType, EntityType } from './entity.interface.js';
8
3
  /**
9
4
  * 实体装饰器
10
5
  * 用于将类标记为 RxDB 实体,并处理元数据、代理和生命周期
@@ -25,5 +20,5 @@ type DecoratedEntityType<T extends EntityType | AbstractEntityType> = T extends
25
20
  * @param metadataOptions - 实体元数据选项,包含名称、显示名称、属性、关系、索引等配置
26
21
  * @returns 类装饰器函数
27
22
  */
28
- export declare const Entity: (metadataOptions: EntityMetadataOptions) => <T extends EntityType | AbstractEntityType>(target: T) => DecoratedEntityType<T>;
29
- export {};
23
+ export declare const Entity: (metadataOptions: EntityMetadataOptions) => <T extends EntityType | AbstractEntityType>(target: T) => any;
24
+ //# sourceMappingURL=@Entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"@Entity.d.ts","sourceRoot":"","sources":["../../src/entity/@Entity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIvE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,MAAM,GAChB,iBAAiB,qBAAqB,MACtC,CAAC,SAAS,UAAU,GAAG,kBAAkB,EAAE,QAAQ,CAAC,KAAG,GAuCvD,CAAC"}
@@ -1,10 +1,10 @@
1
- import { EntityMetadataOptions } from './entity-metadata-options.interface';
1
+ import { EntityMetadataOptions } from './entity-metadata-options.interface.js';
2
2
  /**
3
3
  * 树形实体装饰器
4
4
  * 用于将类标记为树形结构实体,并处理树形特定的元数据
5
5
  *
6
- * 该装饰器基于基础的Entity装饰器,但添加了树形结构特定的处理:
7
- * 1. 设置默认仓库为TreeRepository
6
+ * 该装饰器基于基础的 Entity 装饰器,但添加了树形结构特定的处理:
7
+ * 1. 设置默认仓库为 TreeRepository
8
8
  * 2. 处理树形结构特定的元数据
9
9
  * 3. 支持树形结构的查询和操作
10
10
  *
@@ -22,4 +22,5 @@ import { EntityMetadataOptions } from './entity-metadata-options.interface';
22
22
  * }
23
23
  * ```
24
24
  */
25
- export declare const TreeEntity: (metadataOptions: EntityMetadataOptions) => <T extends import('./entity.interface').EntityType | import('./entity.interface').AbstractEntityType>(target: T) => T extends import('./entity.interface').EntityType ? new (initData?: Partial<InstanceType<T>> | undefined) => InstanceType<T> : abstract new (initData?: Partial<InstanceType<T>> | undefined) => InstanceType<T>;
25
+ export declare const TreeEntity: (metadataOptions: EntityMetadataOptions) => <T extends import('@aiao/rxdb').EntityType | import('@aiao/rxdb').AbstractEntityType>(target: T) => any;
26
+ //# sourceMappingURL=@TreeEntity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"@TreeEntity.d.ts","sourceRoot":"","sources":["../../src/entity/@TreeEntity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,UAAU,GAAI,iBAAiB,qBAAqB,4GAUhE,CAAC"}
@@ -1,5 +1,5 @@
1
- import { EntityMetadataOptions } from './entity-metadata-options.interface';
2
- import { IEntity, UUID } from './entity.interface';
1
+ import { EntityMetadataOptions } from './entity-metadata-options.interface.js';
2
+ import { IEntity, UUID } from './entity.interface.js';
3
3
  export declare const ENTITY_BASE_METADATA_OPTIONS: EntityMetadataOptions;
4
4
  /**
5
5
  * 实体基类装饰器配置
@@ -49,3 +49,4 @@ export declare abstract class EntityBase implements IEntity {
49
49
  */
50
50
  constructor(initData?: any);
51
51
  }
52
+ //# sourceMappingURL=EntityBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityBase.d.ts","sourceRoot":"","sources":["../../src/entity/EntityBase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,qBAAqB,EAAgB,MAAM,wCAAwC,CAAC;AAC7F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAEtD,eAAO,MAAM,4BAA4B,EAAE,qBAiDjC,CAAC;AAEX;;;GAGG;AACH,8BAiBsB,UAAW,YAAW,OAAO;IACjD;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAG,IAAI,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAG,IAAI,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAG,IAAI,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEjC;;;;;OAKG;gBAES,QAAQ,CAAC,EAAE,GAAG;CAC3B"}
@@ -1,7 +1,7 @@
1
- import { Repository } from '../repository/Repository';
2
- import { RxDB } from '../RxDB';
3
- import { EntityType, RowId, UUID } from './entity.interface';
4
- import { EntityStatusOptions } from './EntityStatus';
1
+ import { Repository } from '../repository/Repository.js';
2
+ import { RxDB } from '../RxDB.js';
3
+ import { EntityStaticType, EntityType, RowId } from './entity.interface.js';
4
+ import { EntityStatusOptions } from './EntityStatus.js';
5
5
  /**
6
6
  * 实体管理器
7
7
  *
@@ -41,7 +41,7 @@ export declare class EntityManager {
41
41
  * @returns 创建或获取的实体实例
42
42
  */
43
43
  createEntityRef<T extends EntityType>(EntityType: T, data: Partial<InstanceType<T>> & {
44
- id: UUID;
44
+ id: EntityStaticType<T, 'idType'>;
45
45
  }, status?: EntityStatusOptions<T>): any;
46
46
  /**
47
47
  * 获取实体引用
@@ -52,7 +52,14 @@ export declare class EntityManager {
52
52
  * @param id - 实体ID
53
53
  * @returns 实体实例,如果不存在则返回undefined
54
54
  */
55
- getEntityRef<T extends EntityType>(EntityType: T, id: UUID): InstanceType<T> | undefined;
55
+ getEntityRef<T extends EntityType>(EntityType: T, id: EntityStaticType<T, 'idType'>): InstanceType<T> | undefined;
56
+ /**
57
+ * 根据数据库行ID获取实体
58
+ * @param EntityType
59
+ * @param rowId
60
+ * @returns
61
+ */
62
+ getEntityByRowId<T extends EntityType>(EntityType: T, rowId: RowId): InstanceType<T> | undefined;
56
63
  /**
57
64
  * 检查实体是否在缓存中
58
65
  * 判断指定ID的实体是否已在缓存中初始化
@@ -62,7 +69,7 @@ export declare class EntityManager {
62
69
  * @param id - 实体ID
63
70
  * @returns 如果实体在缓存中存在则返回true
64
71
  */
65
- hasEntityRef<T extends EntityType>(EntityType: T, id: UUID): boolean;
72
+ hasEntityRef<T extends EntityType>(EntityType: T, id: EntityStaticType<T, 'idType'>): boolean;
66
73
  /**
67
74
  * 添加实体到缓存
68
75
  * 将实体实例添加到对应类型的缓存映射中
@@ -97,7 +104,19 @@ export declare class EntityManager {
97
104
  * @param data - 要保存的实体实例
98
105
  * @returns 保存后的实体实例
99
106
  */
100
- save<T extends EntityType>(data: InstanceType<T>): Promise<InstanceType<T>>;
107
+ save<T extends EntityType>(entity: InstanceType<T>): Promise<InstanceType<T>>;
108
+ /**
109
+ * 批量保存
110
+ * @param entities
111
+ * @returns
112
+ */
113
+ saveMany<T extends EntityType>(entities: InstanceType<T>[]): Promise<InstanceType<T>[]>;
114
+ /**
115
+ * 批量删除
116
+ * @param entities
117
+ * @returns
118
+ */
119
+ removeMany<T extends EntityType>(entities: InstanceType<T>[]): Promise<InstanceType<T>[]>;
101
120
  /**
102
121
  * 删除实体
103
122
  * 从数据库中删除实体,并分发相关事件
@@ -108,6 +127,10 @@ export declare class EntityManager {
108
127
  * @throws 如果删除失败,抛出错误
109
128
  */
110
129
  remove<T extends EntityType>(data: InstanceType<T>): Promise<InstanceType<T>>;
130
+ /**
131
+ * 重置实体
132
+ */
133
+ reset<T extends EntityType>(data: InstanceType<T>): Promise<void>;
111
134
  /**
112
135
  * 创建实体
113
136
  * 在数据库中创建新实体,并分发相关事件
@@ -136,5 +159,6 @@ export declare class EntityManager {
136
159
  * @param EntityType - 实体类型
137
160
  * @returns 实体仓库实例
138
161
  */
139
- getRepository<T extends EntityType>(EntityType: T): Repository<T>;
162
+ getRepository<T extends EntityType, RT extends Repository<T>>(EntityType: T): RT;
140
163
  }
164
+ //# sourceMappingURL=EntityManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityManager.d.ts","sourceRoot":"","sources":["../../src/entity/EntityManager.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- import { RxDB } from '../RxDB';
2
- import { UnixMilliseconds } from '../rxdb.interface';
3
- import { STATUS_CHECK, UpdatedBy } from '../rxdb.private';
4
- import { EntityRelationMetadata, RelationKind } from './entity-metadata-options.interface';
5
- import { EntityType, RowId } from './entity.interface';
1
+ import { RxDB } from '../RxDB.js';
2
+ import { UpdatedBy } from '../rxdb.private.js';
3
+ import { EntityRelationMetadata, RelationKind } from './entity-metadata-options.interface.js';
4
+ import { EntityType, RowId } from './entity.interface.js';
6
5
  /**
7
6
  * 实体变化记录接口
8
7
  * 记录实体的变更信息,包括变更内容、逆向变更、时间戳等
@@ -26,7 +25,7 @@ export interface EntityPatch<T extends EntityType> {
26
25
  /**
27
26
  * 记录的毫秒世界时间
28
27
  */
29
- recordAt: UnixMilliseconds;
28
+ recordAt: Date;
30
29
  /**
31
30
  * 记录的程序开始的时间
32
31
  * 用于 recordAt 一样的时候排序用
@@ -102,13 +101,22 @@ export declare class EntityStatus<T extends EntityType> implements IEntityStatus
102
101
  * 实体变更记录数组
103
102
  */
104
103
  protected _patches: EntityPatch<T>[];
104
+ /**
105
+ * 实体变更缓存
106
+ */
107
+ protected _patch_cache?: Partial<InstanceType<T>>;
108
+ /**
109
+ * 实体原始数据
110
+ * 用于比较变更和恢复
111
+ */
112
+ protected _origin: any;
105
113
  /**
106
114
  * 实体原始对象
107
115
  */
108
116
  readonly target: InstanceType<T>;
109
117
  /**
110
118
  * 实体代理对象
111
- * 用于拦截属性访问和修改
119
+ * 用于拦截并记录对象的属性访问和修改
112
120
  */
113
121
  readonly proxyTarget: InstanceType<T>;
114
122
  /**
@@ -116,16 +124,6 @@ export declare class EntityStatus<T extends EntityType> implements IEntityStatus
116
124
  * 用于订阅实体变更
117
125
  */
118
126
  readonly patches$: import('rxjs').Observable<EntityPatch<T>[]>;
119
- /**
120
- * 状态检查标记
121
- * 用于内部状态验证
122
- */
123
- [STATUS_CHECK]: boolean;
124
- /**
125
- * 实体原始数据
126
- * 用于比较变更和恢复
127
- */
128
- _origin: any;
129
127
  /**
130
128
  * 是否已修改
131
129
  */
@@ -146,6 +144,10 @@ export declare class EntityStatus<T extends EntityType> implements IEntityStatus
146
144
  */
147
145
  get local(): boolean;
148
146
  set local(value: boolean);
147
+ /**
148
+ * 获取所有变化
149
+ */
150
+ get patch(): Partial<InstanceType<T>> | undefined;
149
151
  /**
150
152
  * 获取变化
151
153
  */
@@ -168,6 +170,10 @@ export declare class EntityStatus<T extends EntityType> implements IEntityStatus
168
170
  * @param data - 实体状态初始数据
169
171
  */
170
172
  constructor(rxdb: RxDB, data: IEntityStatus<T>);
173
+ /**
174
+ * 重置实体状态
175
+ */
176
+ reset(): void;
171
177
  /**
172
178
  * 添加实体变更记录
173
179
  * 记录实体的变更并发布变更事件
@@ -175,9 +181,9 @@ export declare class EntityStatus<T extends EntityType> implements IEntityStatus
175
181
  * @param patch - 变更内容
176
182
  * @param inversePatch - 逆向变更内容,用于撤销操作
177
183
  * @param updatedBy - 更新者信息
178
- * @param [recordAt=Date.now()] - 记录时间戳
184
+ * @param recordAt - 记录时间戳
179
185
  */
180
- addEntityPatch(patch: Partial<InstanceType<T>>, inversePatch: Partial<InstanceType<T>>, updatedBy: UpdatedBy, recordAt?: number): void;
186
+ addEntityPatch(patch: Partial<InstanceType<T>>, inversePatch: Partial<InstanceType<T>>, updatedBy: UpdatedBy, recordAt?: Date): void;
181
187
  /**
182
188
  * 获取需要保存的关联实体
183
189
  * 根据关系类型的优先级排序,返回需要保存的实体数组
@@ -209,3 +215,4 @@ export declare class EntityStatus<T extends EntityType> implements IEntityStatus
209
215
  */
210
216
  getRelationCache(kind: RelationKind): Set<InstanceType<EntityType>>;
211
217
  }
218
+ //# sourceMappingURL=EntityStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityStatus.d.ts","sourceRoot":"","sources":["../../src/entity/EntityStatus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { EntityBase } from './EntityBase.js';
2
+ import { EntityMetadataOptions } from './entity-metadata-options.interface.js';
3
+ import { IEntity, UUID } from './entity.interface.js';
4
+ export declare const TREE_ADJACENCY_LIST_ENTITY_BASE_OPTIONS: EntityMetadataOptions;
5
+ export interface ITreeEntity extends IEntity {
6
+ parentId?: UUID | null;
7
+ }
8
+ /**
9
+ * 树形实体装饰器配置
10
+ * 定义了树形结构所需的父子关系
11
+ */
12
+ export declare abstract class TreeAdjacencyListEntityBase extends EntityBase implements ITreeEntity {
13
+ parentId?: UUID | null;
14
+ }
15
+ //# sourceMappingURL=TreeEntityBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeEntityBase.d.ts","sourceRoot":"","sources":["../../src/entity/TreeEntityBase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAgB,MAAM,wCAAwC,CAAC;AAC7F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAEtD,eAAO,MAAM,uCAAuC,EAAE,qBAiB5C,CAAC;AAEX,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED;;;GAGG;AACH,8BAqBsB,2BAA4B,SAAQ,UAAW,YAAW,WAAW;IACzF,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB"}
@@ -1,5 +1,10 @@
1
1
  import { SetRequired } from 'type-fest';
2
- import { EntityType } from './entity.interface';
2
+ import { EntityType, UUID } from './entity.interface.js';
3
+ /**
4
+ * 值对象
5
+ * 存储键值队列
6
+ */
7
+ export type ValueObjectType = Record<string, number | number[] | Date | Date[] | string | string[] | boolean>;
3
8
  /**
4
9
  * 实体字段基础值对象接口
5
10
  * 定义实体属性的基本特性
@@ -74,6 +79,18 @@ export declare enum PropertyType {
74
79
  * 日期
75
80
  */
76
81
  date = "date",
82
+ /**
83
+ * 字符串组
84
+ */
85
+ stringArray = "stringArray",
86
+ /**
87
+ * 数字组
88
+ */
89
+ numberArray = "numberArray",
90
+ /**
91
+ * 值对象
92
+ */
93
+ valueObject = "valueObject",
77
94
  /**
78
95
  * json
79
96
  */
@@ -187,81 +204,56 @@ export type EntityRelationOneToManyMetadata = SetRequired<EntityRelationOneToMan
187
204
  export type EntityRelationManyToOneMetadata = SetRequired<EntityRelationManyToOneMetadataOptions, 'mappedNamespace'>;
188
205
  export type EntityRelationManyToManyMetadata = SetRequired<EntityRelationManyToManyMetadataOptions, 'mappedNamespace' | 'junctionEntityType'>;
189
206
  export type EntityRelationMetadata = EntityRelationOneToOneMetadata | EntityRelationOneToManyMetadata | EntityRelationManyToOneMetadata | EntityRelationManyToManyMetadata;
190
- /**
191
- * 默认非主键属性元数据接口
192
- * 定义普通实体属性的元数据
193
- */
194
- interface EntityPropertyDefaultMetadataOptions extends IEntityObject, ISortable {
195
- primary?: false;
196
- /**
197
- * 类型
198
- */
199
- type: PropertyType | `${PropertyType}`;
200
- /**
201
- * 默认值
202
- * 创建数据时如果没有数据就用 default
203
- */
204
- default?: RxDBScalar | (() => RxDBScalar);
207
+ interface UUID_type extends IEntityObject, ISortable {
208
+ primary?: boolean;
209
+ type: PropertyType.uuid | `${PropertyType.uuid}`;
210
+ default?: UUID | (() => UUID);
205
211
  }
206
- /**
207
- * 整数主键属性元数据接口
208
- * 定义使用整数类型作为主键的属性元数据
209
- */
210
- interface EntityPrimaryIntegerPropertyMetadataOptions extends IEntityObject, ISortable {
211
- /**
212
- * 是否主键
213
- */
214
- primary: true;
215
- /**
216
- * 类型
217
- */
218
- type: PropertyType.integer;
219
- /**
220
- * 默认值
221
- * 创建数据时如果没有数据就用 default
222
- */
223
- default?: RxDBScalar | (() => RxDBScalar);
212
+ interface String_type extends IEntityObject, ISortable {
213
+ primary?: boolean;
214
+ type: PropertyType.string | `${PropertyType.string}`;
215
+ default?: string | (() => string);
224
216
  }
225
- /**
226
- * UUID主键属性元数据接口
227
- * 定义使用UUID类型作为主键的属性元数据
228
- */
229
- interface EntityPrimaryUUIDPropertyMetadataOptions extends IEntityObject, ISortable {
230
- /**
231
- * 是否主键
232
- */
233
- primary: true;
234
- /**
235
- * 类型
236
- */
237
- type: PropertyType.uuid;
238
- /**
239
- * 默认值
240
- * 创建数据时如果没有数据就用 default
241
- */
242
- default?: RxDBScalar | (() => RxDBScalar);
217
+ interface StringArray_type extends IEntityObject, ISortable {
218
+ type: PropertyType.stringArray | `${PropertyType.stringArray}`;
219
+ default?: string[] | (() => string[]);
243
220
  }
244
- /**
245
- * 日期属性元数据接口
246
- * 定义日期类型属性的特殊元数据
247
- */
248
- interface EntityDatePropertyMetadataOptions extends EntityPropertyDefaultMetadataOptions {
249
- /**
250
- * 类型
251
- */
252
- type: PropertyType.date;
253
- /**
254
- * 默认值
255
- * 创建数据时如果没有数据就用 default
256
- * CURRENT_TIMESTAMP 默认当前时间
257
- */
258
- default?: RxDBScalar | (() => RxDBScalar) | 'CURRENT_TIMESTAMP';
221
+ interface Number_type extends IEntityObject, ISortable {
222
+ type: PropertyType.number | `${PropertyType.number}`;
223
+ default?: number | (() => number);
224
+ }
225
+ interface NumberArray_type extends IEntityObject, ISortable {
226
+ type: PropertyType.numberArray | `${PropertyType.numberArray}`;
227
+ default?: number[] | (() => number[]);
228
+ }
229
+ interface Integer_type extends IEntityObject, ISortable {
230
+ primary?: boolean;
231
+ type: PropertyType.integer | `${PropertyType.integer}`;
232
+ default?: number | (() => number);
259
233
  }
234
+ interface Date_type extends IEntityObject, ISortable {
235
+ type: PropertyType.date | `${PropertyType.date}`;
236
+ default?: Date | (() => Date) | 'CURRENT_TIMESTAMP';
237
+ }
238
+ interface Boolean_type extends IEntityObject, ISortable {
239
+ type: PropertyType.boolean | `${PropertyType.boolean}`;
240
+ default?: boolean | (() => boolean);
241
+ }
242
+ interface ValueObject_type extends IEntityObject, ISortable {
243
+ type: PropertyType.valueObject | `${PropertyType.valueObject}`;
244
+ default?: ValueObjectType | (() => ValueObjectType);
245
+ properties: KeyValuePropertyMetadataOptions[];
246
+ }
247
+ interface JSON_type extends IEntityObject, ISortable {
248
+ type: PropertyType.json | `${PropertyType.json}`;
249
+ default?: Record<string, any> | (() => Record<string, any>);
250
+ }
251
+ export type KeyValuePropertyMetadataOptions = String_type | Number_type | Integer_type | Date_type | Boolean_type | StringArray_type | NumberArray_type;
260
252
  /**
261
253
  * 实体属性元数据联合类型
262
254
  * 包含所有可能的属性类型元数据
263
255
  */
264
- export type EntityPropertyMetadataOptions = EntityPrimaryIntegerPropertyMetadataOptions | EntityPrimaryUUIDPropertyMetadataOptions | EntityPropertyDefaultMetadataOptions | EntityDatePropertyMetadataOptions;
256
+ export type EntityPropertyMetadataOptions = UUID_type | String_type | Number_type | Integer_type | Date_type | Boolean_type | StringArray_type | NumberArray_type | ValueObject_type | JSON_type;
265
257
  export type EntityPropertyMetadata = EntityPropertyMetadataOptions;
266
258
  /**
267
259
  * 实体索引元数据接口
@@ -315,6 +307,11 @@ export interface EntityMetadataOptions {
315
307
  * @example "用户", "订单项"
316
308
  */
317
309
  displayName?: string;
310
+ /**
311
+ * 继承的实体名称列表
312
+ * 表示当前实体继承自哪些实体
313
+ */
314
+ extends?: string[];
318
315
  /**
319
316
  * 自定义 repository
320
317
  * @default "Repository"
@@ -322,6 +319,7 @@ export interface EntityMetadataOptions {
322
319
  repository?: 'Repository' | 'TreeRepository' | string;
323
320
  /**
324
321
  * 是否开启日志
322
+ * @default true
325
323
  */
326
324
  log?: boolean;
327
325
  /**
@@ -452,3 +450,4 @@ interface Local {
452
450
  */
453
451
  export type SyncOptions = SyncFull | SyncFilter | Remote | Local;
454
452
  export {};
453
+ //# sourceMappingURL=entity-metadata-options.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-metadata-options.interface.d.ts","sourceRoot":"","sources":["../../src/entity/entity-metadata-options.interface.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,14 @@
1
- import { ReadonlyDeep, SetRequired } from 'type-fest';
2
- import { EntityIndexMetadataOptions, EntityMetadataOptions, EntityPropertyMetadata, EntityRelationMetadata } from './entity-metadata-options.interface';
1
+ import { SetRequired } from 'type-fest';
2
+ import { EntityIndexMetadataOptions, EntityMetadataOptions, EntityPropertyMetadata, EntityRelationMetadata } from './entity-metadata-options.interface.js';
3
3
  export type EntityIndexMetadata = EntityIndexMetadataOptions;
4
4
  /**
5
5
  * 实体元数据类型
6
6
  * 包含实体的所有元数据信息,如属性、关系、索引等
7
7
  */
8
- export type EntityMetadataType = SetRequired<EntityMetadataOptions, 'namespace' | 'displayName' | 'repository'> & {
8
+ export type EntityMetadataType = SetRequired<EntityMetadataOptions, 'namespace' | 'displayName' | 'repository' | 'extends'> & {
9
9
  properties: EntityPropertyMetadata[];
10
10
  relations: EntityRelationMetadata[];
11
11
  indexes: EntityIndexMetadata[];
12
- /**
13
- * 继承的实体名称列表
14
- * 表示当前实体继承自哪些实体
15
- */
16
- extends: string[];
17
- /**
18
- * 自定义仓库名称
19
- * 指定实体使用的仓库类型,可以是标准仓库、树形仓库或自定义仓库
20
- */
21
- repository: 'Repository' | 'TreeRepository' | string;
22
12
  /**
23
13
  * 实体所有属性的映射
24
14
  * 键为属性名,值为属性元数据
@@ -64,4 +54,5 @@ export type EntityMetadataType = SetRequired<EntityMetadataOptions, 'namespace'
64
54
  * 实体元数据(只读版本)
65
55
  * 实体元数据的只读深度副本,防止元数据被修改
66
56
  */
67
- export type EntityMetadata = ReadonlyDeep<EntityMetadataType>;
57
+ export type EntityMetadata = Readonly<EntityMetadataType>;
58
+ //# sourceMappingURL=entity-metadata.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-metadata.interface.d.ts","sourceRoot":"","sources":["../../src/entity/entity-metadata.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAE7D;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAC1C,qBAAqB,EACrB,WAAW,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CACvD,GAAG;IACF,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,SAAS,EAAE,sBAAsB,EAAE,CAAC;IACpC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAE/B;;;OAGG;IACH,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAEjD;;;OAGG;IACH,sBAAsB,EAAE,sBAAsB,EAAE,CAAC;IAEjD;;;OAGG;IACH,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAEjD;;OAEG;IACH,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAE3D;;;OAGG;IACH,mBAAmB,EAAE,sBAAsB,EAAE,CAAC;IAE9C;;;OAGG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B;;;OAGG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAE3C;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC"}