@arcote.tech/arc 0.0.27 → 0.1.2

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 (91) hide show
  1. package/dist/collection/collection.d.ts +28 -48
  2. package/dist/collection/queries/abstract-collection-query.d.ts +4 -6
  3. package/dist/collection/queries/{abstract-many-items.d.ts → find.d.ts} +8 -8
  4. package/dist/collection/queries/one-item.d.ts +1 -18
  5. package/dist/collection/query-builders/find-by-id.d.ts +2 -0
  6. package/dist/collection/query-builders/find-one.d.ts +2 -0
  7. package/dist/collection/query-builders/find.d.ts +13 -0
  8. package/dist/command/command.d.ts +29 -0
  9. package/dist/command/index.d.ts +2 -0
  10. package/dist/context/context.d.ts +34 -18
  11. package/dist/context/element.d.ts +36 -6
  12. package/dist/context/event.d.ts +39 -0
  13. package/dist/context/index.d.ts +4 -0
  14. package/dist/context/query-builder-context.d.ts +15 -0
  15. package/dist/context/query-builders.d.ts +11 -2
  16. package/dist/context/query-cache.d.ts +9 -0
  17. package/dist/context/query.d.ts +5 -3
  18. package/dist/context/reactive-query.d.ts +23 -0
  19. package/dist/context/serializable-query.d.ts +11 -0
  20. package/dist/data-storage/store-state-fork.d.ts +2 -3
  21. package/dist/data-storage/store-state-master.d.ts +2 -5
  22. package/dist/data-storage/store-state.abstract.d.ts +2 -3
  23. package/dist/data-storage/types.d.ts +28 -0
  24. package/dist/db/index.d.ts +1 -0
  25. package/dist/db/interface.d.ts +2 -17
  26. package/dist/db/sqliteAdapter.d.ts +39 -0
  27. package/dist/dist/index.d.ts +513 -0
  28. package/dist/elements/abstract-primitive.d.ts +0 -1
  29. package/dist/elements/abstract.d.ts +2 -1
  30. package/dist/elements/array.d.ts +61 -3
  31. package/dist/elements/class.d.ts +1 -24
  32. package/dist/elements/date.d.ts +35 -2
  33. package/dist/elements/index.d.ts +2 -0
  34. package/dist/elements/number.d.ts +21 -6
  35. package/dist/elements/object.d.ts +38 -11
  36. package/dist/elements/or.d.ts +1 -11
  37. package/dist/elements/record.d.ts +16 -4
  38. package/dist/elements/string-enum.d.ts +17 -3
  39. package/dist/elements/string.d.ts +74 -6
  40. package/dist/elements/utils/type-validator-builder.d.ts +8 -0
  41. package/dist/index.d.ts +3 -0
  42. package/dist/index.js +1481 -752
  43. package/dist/model/index.d.ts +2 -0
  44. package/dist/model/model.d.ts +44 -38
  45. package/dist/state/query-builder.d.ts +1 -8
  46. package/dist/state/query.d.ts +1 -14
  47. package/dist/state/state.d.ts +1 -31
  48. package/dist/tests/context/context.test.d.ts +2 -0
  49. package/dist/tests/pipe.d.ts +2 -0
  50. package/dist/tests/query/advance-query.test.d.ts +2 -0
  51. package/dist/tests/query/collection-all.test.d.ts +2 -0
  52. package/dist/tests/utils/expect-not-false.d.ts +2 -0
  53. package/dist/tests/utils/sqlite-adapter.d.ts +3 -0
  54. package/dist/tests/utils/test-model.d.ts +26 -0
  55. package/dist/tests/validations/array.test.d.ts +2 -0
  56. package/dist/tests/validations/date.test.d.ts +2 -0
  57. package/dist/tests/validations/record.test.d.ts +2 -0
  58. package/dist/tests/validations/string-enum.test.d.ts +2 -0
  59. package/dist/utils/arcObjectToStoreSchema.d.ts +4 -0
  60. package/dist/utils/murmur-hash.d.ts +2 -0
  61. package/dist/utils.d.ts +4 -4
  62. package/dist/view/view.d.ts +49 -0
  63. package/package.json +11 -4
  64. package/dist/collection/collection-change.d.ts +0 -18
  65. package/dist/collection/db.d.ts +0 -17
  66. package/dist/collection/queries/all-items.d.ts +0 -7
  67. package/dist/collection/queries/indexed.d.ts +0 -13
  68. package/dist/collection/query-builders/abstract-many-items.d.ts +0 -11
  69. package/dist/collection/query-builders/all-items.d.ts +0 -9
  70. package/dist/collection/query-builders/indexed.d.ts +0 -11
  71. package/dist/collection/query-builders/one-item.d.ts +0 -11
  72. package/dist/collection/utils/index-query.d.ts +0 -6
  73. package/dist/data-storage/DataStorage.d.ts +0 -11
  74. package/dist/data-storage/ForkStoreState.d.ts +0 -32
  75. package/dist/data-storage/StoreState.d.ts +0 -39
  76. package/dist/data-storage/data-storage.d.ts +0 -2
  77. package/dist/data-storage/data-storage.interface.d.ts +0 -46
  78. package/dist/data-storage/master-store-state.d.ts +0 -30
  79. package/dist/data-storage/store-state.d.ts +0 -39
  80. package/dist/elements/object copy.d.ts +0 -29
  81. package/dist/rtc/deserializeChanges.d.ts +0 -3
  82. package/dist/state/db.d.ts +0 -15
  83. package/dist/state/state-change.d.ts +0 -14
  84. package/dist/state/util.d.ts +0 -3
  85. package/dist/tests/query/query.test.d.ts +0 -2
  86. package/dist/tests/query-notification-optimization.test copy.d.ts +0 -2
  87. package/dist/tests/query-notification-optimization.test.d.ts +0 -2
  88. package/dist/tests/validation.test.d.ts +0 -2
  89. package/dist/tests/validations/validation.test.d.ts +0 -2
  90. package/dist/utils/deep-merge.d.ts +0 -6
  91. /package/dist/{elements/tests → tests/validations}/object.test.d.ts +0 -0
@@ -0,0 +1,2 @@
1
+ export * from "./model";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -1,40 +1,46 @@
1
- import { Subject } from "rxjs";
2
- import type { CommandsClient } from "../context/commands";
3
- import { type ArcContextChanges, type ArcContextWithCommandsAny } from "../context/context";
4
- import type { ArcContextElementAny } from "../context/element";
5
- import type { ArcQuery } from "../context/query";
6
- import type { QueryFactoryFunction } from "../context/query-builders";
7
- import type { DatabaseAdapter, DBAdapterFactory, ReadWriteTransaction } from "../db";
8
- import type { RealTimeCommunicationAdapter, RealTimeCommunicationAdapterFactory } from "../rtc/rtc";
9
- export interface IArcModel<C extends ArcContextWithCommandsAny> {
10
- readonly context: C;
11
- changes$: Subject<ArcContextChanges<C>>;
12
- query(queryFactory: QueryFactoryFunction<C>): ArcQuery;
13
- commands(): CommandsClient<C["commands"]>;
14
- getContextElement(name: string): ArcContextElementAny;
15
- applyChanges(changes: ArcContextChanges<C>[]): Promise<void>;
1
+ import { type ArcContextAny, type IArcQueryBuilder } from "../context";
2
+ import { type DataStorage } from "../data-storage";
3
+ type UnaryFunction<T, R> = (input: T) => R;
4
+ export declare abstract class ModelBase<C extends ArcContextAny> {
5
+ abstract query<Q extends IArcQueryBuilder>(queryBuilderFn: UnaryFunction<ReturnType<C["queryBuilder"]>, Q>): Promise<ReturnType<Q["toQuery"]>["lastResult"]>;
6
+ abstract subscribe<Q extends IArcQueryBuilder>(queryBuilderFn: UnaryFunction<ReturnType<C["queryBuilder"]>, Q>, callback: (result: ReturnType<Q["toQuery"]>["lastResult"]) => void): {
7
+ result: ReturnType<Q["toQuery"]>["lastResult"];
8
+ unsubscribe: () => void;
9
+ };
10
+ abstract commands(): ReturnType<C["commandsClient"]>;
16
11
  }
17
- export declare class ArcModel<C extends ArcContextWithCommandsAny> implements IArcModel<C> {
18
- readonly context: C;
19
- rtc: RealTimeCommunicationAdapter<C>;
20
- dbAdapterPromise: Promise<DatabaseAdapter>;
21
- changes$: Subject<ArcContextChanges<C>>;
22
- constructor(context: C, dbAdapterFactory: DBAdapterFactory, rtcAdapterFactory: RealTimeCommunicationAdapterFactory<C>);
23
- query(queryFactory: QueryFactoryFunction<C>): import("..").ArcQueryAny;
24
- private runQuery;
25
- commands(): CommandsClient<C["commands"]>;
26
- executeCommand(command: C["commands"][string], ...args: any[]): Promise<{
27
- changes: any;
28
- result: any;
29
- }>;
30
- applyChangesForTransaction(transaction: ReadWriteTransaction, changes: ArcContextChanges<C>[]): Promise<void>;
31
- private notifyChange;
32
- applyChanges(changes: ArcContextChanges<C>[]): Promise<void>;
33
- getContextElement(name: string): any;
12
+ export declare class Model<C extends ArcContextAny> extends ModelBase<C> {
13
+ private readonly context;
14
+ private readonly dataStorage;
15
+ private readonly client;
16
+ private readonly catchErrorCallback;
17
+ private queryCache;
18
+ constructor(context: C, dataStorage: DataStorage, client: string, catchErrorCallback: (error: any) => void);
19
+ query<Q extends IArcQueryBuilder>(queryBuilderFn: UnaryFunction<ReturnType<C["queryBuilder"]>, Q>): Promise<ReturnType<Q["toQuery"]>["lastResult"]>;
20
+ subscribe<Q extends IArcQueryBuilder>(queryBuilderFn: UnaryFunction<ReturnType<C["queryBuilder"]>, Q>, callback: (result: ReturnType<Q["toQuery"]>["lastResult"]) => void): {
21
+ result: ReturnType<Q["toQuery"]>["lastResult"];
22
+ unsubscribe: () => void;
23
+ };
24
+ commands(): ReturnType<C["commandsClient"]>;
25
+ fork(): ForkedModel<C>;
26
+ get $debug(): {};
34
27
  }
35
- export type ArcModelAny = ArcModel<ArcContextWithCommandsAny>;
36
- export type ArcModelDependencies<C extends ArcContextWithCommandsAny> = {
37
- dbAdapterFactory: DBAdapterFactory;
38
- rtcAdapterFactory: RealTimeCommunicationAdapterFactory<C>;
39
- };
40
- export declare function model<C extends ArcContextWithCommandsAny>(context: C, dependencies: ArcModelDependencies<C>): ArcModel<C>;
28
+ export declare class ForkedModel<C extends ArcContextAny> extends Model<C> {
29
+ constructor(context: C, dataStorage: DataStorage, client: string, catchErrorCallback: (error: any) => void);
30
+ merge(): void;
31
+ }
32
+ export declare class RemoteModelClient<C extends ArcContextAny> extends ModelBase<C> {
33
+ private readonly context;
34
+ private readonly apiBaseUrl;
35
+ private readonly client;
36
+ private readonly catchErrorCallback;
37
+ constructor(context: C, apiBaseUrl: string, client: string, catchErrorCallback: (error: any) => void);
38
+ query<Q extends IArcQueryBuilder>(queryBuilderFn: UnaryFunction<ReturnType<C["queryBuilder"]>, Q>): Promise<ReturnType<Q["toQuery"]>["lastResult"]>;
39
+ subscribe<Q extends IArcQueryBuilder>(queryBuilderFn: UnaryFunction<ReturnType<C["queryBuilder"]>, Q>, callback: (result: ReturnType<Q["toQuery"]>["lastResult"]) => void): {
40
+ result: ReturnType<Q["toQuery"]>["lastResult"];
41
+ unsubscribe: () => void;
42
+ };
43
+ commands(): ReturnType<C["commandsClient"]>;
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=model.d.ts.map
@@ -1,9 +1,2 @@
1
- import { ArcQueryBuilder } from "../context/query-builders";
2
- import { ArcStateQuery } from "./query";
3
- import type { ArcStateAny } from "./state";
4
- export declare class ArcStateQueryBuilder<S extends ArcStateAny> extends ArcQueryBuilder {
5
- private state;
6
- constructor(state: S);
7
- toQuery(): ArcStateQuery<S>;
8
- }
1
+ export {};
9
2
  //# sourceMappingURL=query-builder.d.ts.map
@@ -1,15 +1,2 @@
1
- import { ArcQuery, type ArcQueryListener } from "../context/query";
2
- import type { DataStorage, ListenerEvent } from "../data-storage";
3
- import type { ArcStateAny, StateItem } from "./state";
4
- export declare class ArcStateQuery<State extends ArcStateAny> extends ArcQuery<StateItem<State>> {
5
- protected state: State;
6
- private bindedChangeHandler;
7
- private store;
8
- constructor(state: State);
9
- run(dataStorage: DataStorage, listener?: ArcQueryListener<StateItem<State>>): Promise<ReturnType<State["deserialize"]> extends infer T ? { [KeyType in keyof T]: ReturnType<State["deserialize"]>[KeyType]; } : never>;
10
- protected onChange(change: ListenerEvent<StateItem<State>>): false | (ReturnType<State["deserialize"]> extends infer T ? { [KeyType in keyof T]: ReturnType<State["deserialize"]>[KeyType]; } : never);
11
- protected changeHandler(changes: ListenerEvent<StateItem<State>>[]): void;
12
- unsubscribe(): void;
13
- private nextResult;
14
- }
1
+ export {};
15
2
  //# sourceMappingURL=query.d.ts.map
@@ -1,32 +1,2 @@
1
- import { ArcContextElement } from "../context/element";
2
- import type { DataStorage } from "../data-storage";
3
- import { type ArcObjectAny } from "../elements/object";
4
- import { objectUtil, type DeepPartial, type util } from "../utils";
5
- import { ArcStateQueryBuilder } from "./query-builder";
6
- export type StateItem<S extends ArcStateAny> = objectUtil.simplify<ReturnType<S["deserialize"]>>;
7
- export type StateItemWithId<S extends ArcStateAny> = objectUtil.simplify<{
8
- _id: string;
9
- } & ReturnType<S["deserialize"]>>;
10
- export declare class ArcState<Name extends string, Schema extends ArcObjectAny> extends ArcContextElement<{
11
- type: "modify";
12
- from: StateItem<ArcState<Name, Schema>>;
13
- to: StateItem<ArcState<Name, Schema>>;
14
- changes: objectUtil.simplify<Partial<util.FirstArgument<Schema["serialize"]>>>;
15
- }> {
16
- readonly name: Name;
17
- readonly schema: Schema;
18
- constructor(name: Name, schema: Schema);
19
- serialize(data: objectUtil.simplify<objectUtil.addQuestionMarks<util.FirstArgument<Schema["serialize"]>>>): {
20
- _id: Name;
21
- };
22
- deserialize(data: objectUtil.simplify<objectUtil.addQuestionMarks<util.FirstArgument<Schema["deserialize"]>>>): ReturnType<Schema["deserialize"]>;
23
- queryBuilder(): ArcStateQueryBuilder<this>;
24
- commandContext(dataStorage: DataStorage, publishEvent: (event: this["$event"]) => Promise<void>): {
25
- get: () => Promise<StateItem<ArcState<Name, Schema>>>;
26
- modify: (data: DeepPartial<StateItem<ArcState<Name, Schema>>>) => Promise<void>;
27
- edit: (editCallback: (item: StateItem<ArcState<Name, Schema>>) => Promise<void> | void) => Promise<void>;
28
- };
29
- }
30
- export type ArcStateAny = ArcState<any, any>;
31
- export declare function state<Name extends string, Schema extends ArcObjectAny>(name: Name, schema: Schema): ArcState<Name, Schema>;
1
+ export {};
32
2
  //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=context.test.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pipe.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=advance-query.test.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=collection-all.test.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function expectNotFalse<T>(value: T | false): asserts value is T;
2
+ //# sourceMappingURL=expect-not-false.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { type DBAdapterFactory } from "../../index";
2
+ export declare const sqliteAdapterFactory: (dbName: string) => DBAdapterFactory;
3
+ //# sourceMappingURL=sqlite-adapter.d.ts.map
@@ -0,0 +1,26 @@
1
+ import type { ArcContextAny } from "../../context/context";
2
+ import { type DataStorageChanges } from "../../data-storage";
3
+ import { Model } from "../../model";
4
+ import type { RealTimeCommunicationAdapter } from "../../rtc";
5
+ export declare class TestRTCAdapter implements RealTimeCommunicationAdapter {
6
+ private syncCalls;
7
+ private commitCalls;
8
+ commitChanges(changes: DataStorageChanges[]): void;
9
+ sync(progressCallback: ({ store, size, }: {
10
+ store: string;
11
+ size: number;
12
+ }) => void): Promise<void>;
13
+ getSyncCalls(): {
14
+ store: string;
15
+ size: number;
16
+ }[];
17
+ getCommitCalls(): DataStorageChanges[][];
18
+ clearHistory(): void;
19
+ }
20
+ export declare function testModel<C extends ArcContextAny>(arcContext: C): {
21
+ model: Model<C>;
22
+ getRTCAdapter(): TestRTCAdapter;
23
+ fork(): import("../..").ForkedModel<C>;
24
+ clearRTCHistory(): void;
25
+ };
26
+ //# sourceMappingURL=test-model.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=array.test.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=date.test.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=record.test.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=string-enum.test.d.ts.map
@@ -0,0 +1,4 @@
1
+ import type { StoreSchema } from "../context/element";
2
+ import { ArcObject } from "../elements";
3
+ export declare function arcObjectToStoreSchema(tableName: string, schema: ArcObject<any>): StoreSchema;
4
+ //# sourceMappingURL=arcObjectToStoreSchema.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function murmurHash(key: string, seed?: number): number;
2
+ //# sourceMappingURL=murmur-hash.d.ts.map
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { ArcCollectionAny, ArcIndexedCollectionAny, CollectionItem } from "./collection/collection";
2
- import type { QueryCollectionResult } from "./collection/queries/abstract-many-items";
1
+ import type { ArcCollectionAny, CollectionItem } from "./collection/collection";
2
+ import type { QueryCollectionResult } from "./collection/queries/find";
3
3
  import type { ArcElement } from "./elements/element";
4
4
  export declare namespace objectUtil {
5
5
  export type MergeShapes<U, V> = {
@@ -42,12 +42,12 @@ export declare namespace objectUtil {
42
42
  export declare namespace util {
43
43
  type FirstArgument<T> = T extends (arg: infer U, ...args: any[]) => any ? U : never;
44
44
  type GetType<Element extends ArcElement> = ReturnType<Element["deserialize"]>;
45
- type CollectionItemWithId<C extends ArcCollectionAny | ArcIndexedCollectionAny> = ReturnType<C["deserialize"]>;
45
+ type CollectionItemWithId<C extends ArcCollectionAny> = ReturnType<C["deserialize"]>;
46
46
  }
47
47
  export type ContextTypes<Ctx extends {
48
48
  elements: any[];
49
49
  }> = {
50
- [key in keyof Ctx["elements"]]: Ctx["elements"][key] extends ArcCollectionAny | ArcIndexedCollectionAny ? {
50
+ [key in keyof Ctx["elements"]]: Ctx["elements"][key] extends ArcCollectionAny ? {
51
51
  [Collection in Ctx["elements"][number] as `${Collection["name"]}.bodyWithoutId`]: util.GetType<Collection["schema"]>;
52
52
  } & {
53
53
  [Collection in Ctx["elements"][number] as `${Collection["name"]}.setBody`]: objectUtil.addQuestionMarks<util.FirstArgument<Collection["schema"]["parse"]>>;
@@ -0,0 +1,49 @@
1
+ import { ArcContextElementWithStore, type ArcContextElementAny, type StoreSchema } from "../context/element";
2
+ import type { QueryBuilderContext } from "../context/query-builder-context";
3
+ import type { DataStorage } from "../data-storage";
4
+ import type { FindOptions } from "../data-storage/types";
5
+ import { type ArcIdAny, type ArcObjectAny } from "../elements";
6
+ import type { $type } from "../utils";
7
+ type GetEvents<Elements extends ArcContextElementAny[]> = Elements[number]["$event"];
8
+ type ArcViewHandlerContext<Id extends ArcIdAny, Schema extends ArcObjectAny> = {
9
+ modify: (id: $type<Id>, data: $type<Schema>) => Promise<void>;
10
+ set: (id: $type<Id>, data: $type<Schema>) => Promise<void>;
11
+ remove: (id: $type<Id>) => Promise<void>;
12
+ find: (options: FindOptions<ArcViewItem<Id, Schema>>) => Promise<ArcViewItem<Id, Schema>[]>;
13
+ findOne: (where: FindOptions<ArcViewItem<Id, Schema>>["where"]) => Promise<ArcViewItem<Id, Schema> | undefined>;
14
+ };
15
+ type ArcViewItem<Id extends ArcIdAny, Schema extends ArcObjectAny> = {
16
+ _id: $type<Id>;
17
+ } & $type<Schema>;
18
+ type ArcViewHandler<Elements extends ArcContextElementAny[], Id extends ArcIdAny, Schema extends ArcObjectAny> = {
19
+ [Event in GetEvents<Elements> as Event["type"]]: (ctx: ArcViewHandlerContext<Id, Schema>, event: Event) => Promise<void>;
20
+ };
21
+ export declare class ArcView<Name extends string, Id extends ArcIdAny, Schema extends ArcObjectAny, const Elements extends ArcContextElementAny[]> extends ArcContextElementWithStore<null, Name> {
22
+ readonly name: Name;
23
+ readonly id: Id;
24
+ readonly schema: Schema;
25
+ private _description?;
26
+ private _elements?;
27
+ private _handler?;
28
+ constructor(name: Name, id: Id, schema: Schema);
29
+ storeSchema: () => StoreSchema;
30
+ use<const E extends ArcContextElementAny[]>(elements: E): ArcView<Name, Id, Schema, E>;
31
+ description(description: string): ArcView<Name, Id, Schema, Elements>;
32
+ handle<Handler extends ArcViewHandler<Elements, Id, Schema>>(handler: Handler): ArcView<Name, Id, Schema, Elements>;
33
+ queryBuilder: (context: QueryBuilderContext) => {
34
+ readonly find: (options?: FindOptions<$type<Schema>>) => never;
35
+ };
36
+ commandContext: (dataStorage: DataStorage, publishEvent: (event: this["$event"]) => Promise<void>) => {
37
+ readonly find: (options: FindOptions<ArcViewItem<Id, Schema>>) => Promise<{
38
+ _id: string;
39
+ }[]>;
40
+ readonly findOne: (where: FindOptions<ArcViewItem<Id, Schema>>["where"]) => Promise<{
41
+ _id: string;
42
+ }>;
43
+ };
44
+ observer: () => Record<string, any>;
45
+ private clone;
46
+ }
47
+ export declare function view<Name extends string, Id extends ArcIdAny, Schema extends ArcObjectAny>(name: Name, id: Id, schema: Schema): ArcView<Name, Id, Schema, any[]>;
48
+ export {};
49
+ //# sourceMappingURL=view.d.ts.map
package/package.json CHANGED
@@ -1,13 +1,20 @@
1
1
  {
2
2
  "name": "@arcote.tech/arc",
3
- "module": "index.ts",
4
- "main": "dist/index.js",
5
- "types": "dist/index.d.ts",
6
3
  "type": "module",
7
- "version": "0.0.27",
4
+ "version": "0.1.2",
8
5
  "private": false,
9
6
  "author": "Przemysław Krasiński [arcote.tech]",
10
7
  "description": "Arc is a framework designed to align code closely with business logic, streamlining development and enhancing productivity.",
8
+ "main": "./dist/index.js",
9
+ "module": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js",
15
+ "default": "./dist/index.js"
16
+ }
17
+ },
11
18
  "scripts": {
12
19
  "build": "bun build --target=node ./index.ts --outfile=dist/index.js --external rxjs --external mutative && bun run build:declaration",
13
20
  "build:declaration": "tsc --emitDeclarationOnly --project tsconfig.types.json --declarationMap",
@@ -1,18 +0,0 @@
1
- import type { Patches } from "mutative";
2
- export type CollectionChange = {
3
- collection: string;
4
- } & ({
5
- type: "set";
6
- body: any;
7
- } | {
8
- type: "delete";
9
- id: string;
10
- } | {
11
- type: "mutate";
12
- id: string;
13
- patches: Patches<any>;
14
- });
15
- export type CollectionChangesWithoutMutate = Exclude<CollectionChange, {
16
- type: "mutate";
17
- }>;
18
- //# sourceMappingURL=collection-change.d.ts.map
@@ -1,17 +0,0 @@
1
- import type { ReadTransaction, ReadWriteTransaction } from "../db/interface";
2
- import type { util } from "../utils";
3
- import type { ArcCollectionAny, ArcIndexedCollectionAny } from "./collection";
4
- export declare class CollectionReadTransaction {
5
- protected dbTransaction: ReadTransaction;
6
- constructor(dbTransaction: ReadTransaction);
7
- findById<C extends ArcCollectionAny>(collection: C, id: util.GetType<C["id"]>): Promise<ReturnType<C["deserialize"]> | undefined>;
8
- findByIndex<C extends ArcIndexedCollectionAny>(collection: C, index: string, data: any): Promise<ReturnType<C["deserialize"]>[]>;
9
- findAll<C extends ArcCollectionAny>(collection: C): Promise<ReturnType<C["deserialize"]>[]>;
10
- }
11
- export declare class CollectionReadWriteTransaction extends CollectionReadTransaction {
12
- protected dbTransaction: ReadWriteTransaction;
13
- constructor(dbTransaction: ReadWriteTransaction);
14
- remove<C extends ArcCollectionAny>(collection: C, id: util.GetType<C["id"]>): Promise<void>;
15
- set<C extends ArcCollectionAny>(collection: C, data: util.CollectionItemWithId<C>): Promise<void>;
16
- commit(): Promise<void>;
17
- }
@@ -1,7 +0,0 @@
1
- import type { StoreState } from "../../data-storage";
2
- import { type ArcCollectionAny, type CollectionItem } from "../collection";
3
- import { ArcManyItemsQuery } from "./abstract-many-items";
4
- export declare class ArcAllItemsQuery<Collection extends ArcCollectionAny> extends ArcManyItemsQuery<Collection> {
5
- protected fetch(store: StoreState<CollectionItem<Collection>>): Promise<import("./abstract-many-items").QueryCollectionResult<Collection>>;
6
- }
7
- //# sourceMappingURL=all-items.d.ts.map
@@ -1,13 +0,0 @@
1
- import type { StoreState } from "../../data-storage";
2
- import type { ArcIndexedCollectionAny, CollectionItem } from "../collection";
3
- import { ArcManyItemsQuery } from "./abstract-many-items";
4
- export declare class ArcIndexedItemsQuery<Collection extends ArcIndexedCollectionAny> extends ArcManyItemsQuery<Collection> {
5
- private index;
6
- private data;
7
- protected filterFn?: ((item: CollectionItem<Collection>) => boolean) | undefined;
8
- protected sortFn?: ((a: CollectionItem<Collection>, b: CollectionItem<Collection>) => number) | undefined;
9
- constructor(collection: Collection, index: string, data: any, filterFn?: ((item: CollectionItem<Collection>) => boolean) | undefined, sortFn?: ((a: CollectionItem<Collection>, b: CollectionItem<Collection>) => number) | undefined);
10
- protected checkItem(item: CollectionItem<Collection>): boolean;
11
- protected fetch(store: StoreState<CollectionItem<Collection>>): Promise<import("./abstract-many-items").QueryCollectionResult<Collection>>;
12
- }
13
- //# sourceMappingURL=indexed.d.ts.map
@@ -1,11 +0,0 @@
1
- import { ArcQueryBuilder } from "../../context/query-builders";
2
- import { type ArcCollectionAny, type CollectionItem } from "../collection";
3
- type SortComparator<C extends ArcCollectionAny> = ((a: CollectionItem<C>, b: CollectionItem<C>) => number) | Array<[keyof CollectionItem<C>, "ASC" | "DESC"]>;
4
- export declare abstract class ArcManyItemsQueryBuilder<C extends ArcCollectionAny> extends ArcQueryBuilder {
5
- protected filterFn?: (item: CollectionItem<C>) => boolean;
6
- protected sortFn?: (a: CollectionItem<C>, b: CollectionItem<C>) => number;
7
- filter(callback: (item: CollectionItem<C>) => boolean): this;
8
- sort(comparator: SortComparator<C>): this;
9
- }
10
- export {};
11
- //# sourceMappingURL=abstract-many-items.d.ts.map
@@ -1,9 +0,0 @@
1
- import { type ArcCollectionAny } from "../collection";
2
- import { ArcAllItemsQuery } from "../queries/all-items";
3
- import { ArcManyItemsQueryBuilder } from "./abstract-many-items";
4
- export declare class ArcAllItemsQueryBuilder<C extends ArcCollectionAny> extends ArcManyItemsQueryBuilder<C> {
5
- private collection;
6
- constructor(collection: C);
7
- toQuery(): ArcAllItemsQuery<C>;
8
- }
9
- //# sourceMappingURL=all-items.d.ts.map
@@ -1,11 +0,0 @@
1
- import type { ArcIndexedCollectionAny } from "../collection";
2
- import { ArcIndexedItemsQuery } from "../queries/indexed";
3
- import { ArcManyItemsQueryBuilder } from "./abstract-many-items";
4
- export declare class ArcIndexedItemsQueryBuilder<C extends ArcIndexedCollectionAny> extends ArcManyItemsQueryBuilder<C> {
5
- private collection;
6
- private index;
7
- private data;
8
- constructor(collection: C, index: string, data: any);
9
- toQuery(): ArcIndexedItemsQuery<C>;
10
- }
11
- //# sourceMappingURL=indexed.d.ts.map
@@ -1,11 +0,0 @@
1
- import { ArcQueryBuilder } from "../../context/query-builders";
2
- import type { util } from "../../utils";
3
- import type { ArcCollectionAny } from "../collection";
4
- import { ArcOneItemQuery } from "../queries/one-item";
5
- export declare class ArcOneItemQueryBuilder<C extends ArcCollectionAny> extends ArcQueryBuilder {
6
- private collection;
7
- private id;
8
- constructor(collection: C, id: util.GetType<C["id"]>);
9
- toQuery(): ArcOneItemQuery<C>;
10
- }
11
- //# sourceMappingURL=one-item.d.ts.map
@@ -1,6 +0,0 @@
1
- import { IndexQueryArgument } from "./interface";
2
- export declare function indexQueryPredicate<T>(
3
- item: T,
4
- query: IndexQueryArgument<any>,
5
- ): boolean;
6
- //# sourceMappingURL=index-query.d.ts.map
@@ -1,11 +0,0 @@
1
- import type { ReadTransaction, ReadWriteTransaction } from "../db";
2
- import type { ForkedDataStorage, StoreState } from "./data-storage";
3
- export interface DataStorage {
4
- getStore<Item extends {
5
- _id: string;
6
- }>(storeName: string, deserialize?: (data: any) => Item): StoreState<Item>;
7
- fork(): ForkedDataStorage;
8
- getReadTransaction(): Promise<ReadTransaction>;
9
- getReadWriteTransaction(): Promise<ReadWriteTransaction>;
10
- }
11
- //# sourceMappingURL=DataStorage.d.ts.map
@@ -1,32 +0,0 @@
1
- import type { QueryListenerCallback, StoreStateChange } from "./data-storage";
2
- import type { DataStorage } from "./data-storage.abstract";
3
- import type { MasterStoreState } from "./store-state-master";
4
- import { StoreState } from "./store-state.abstract";
5
- export declare class ForkStoreState<
6
- Item extends {
7
- _id: string;
8
- },
9
- > extends StoreState<Item> {
10
- master: MasterStoreState<Item>;
11
- protected changedItems: Map<string, Item>;
12
- changes: StoreStateChange<Item>[];
13
- constructor(
14
- storeName: string,
15
- dataStorage: DataStorage,
16
- master: MasterStoreState<Item>,
17
- deserialize?: (data: any) => Item
18
- );
19
- applyChanges(changes: StoreStateChange<Item>[]): Promise<void>;
20
- findById(
21
- id: string,
22
- listener?: QueryListenerCallback<Item>
23
- ): Promise<Item | undefined>;
24
- findByIndex(
25
- index: string,
26
- data: any,
27
- listener?: QueryListenerCallback<Item>
28
- ): Promise<Item[]>;
29
- findAll(listener?: QueryListenerCallback<Item>): Promise<Item[]>;
30
- private matchesIndex;
31
- }
32
- //# sourceMappingURL=ForkStoreState.d.ts.map
@@ -1,39 +0,0 @@
1
- import {
2
- ForkStoreState,
3
- QueryListener,
4
- QueryListenerCallback,
5
- StoreStateChange,
6
- } from "./data-storage";
7
- import type { DataStorage } from "./data-storage.abstract";
8
- export declare abstract class StoreState<
9
- Item extends {
10
- _id: string;
11
- },
12
- > {
13
- storeName: string;
14
- protected dataStorage: DataStorage;
15
- protected deserialize?: ((data: any) => Item) | undefined;
16
- protected listeners: Set<QueryListener<Item>>;
17
- protected indexQueryCache: Map<string, Item[]>;
18
- constructor(
19
- storeName: string,
20
- dataStorage: DataStorage,
21
- deserialize?: ((data: any) => Item) | undefined
22
- );
23
- abstract applyChanges(changes: StoreStateChange<Item>[]): Promise<void>;
24
- fork(): ForkStoreState<Item>;
25
- findByIndex(
26
- index: string,
27
- data: any,
28
- listener?: QueryListenerCallback<Item>
29
- ): Promise<Item[]>;
30
- set(item: Item): void;
31
- remove(id: string): void;
32
- modify(id: string, data: Partial<Item>): void;
33
- unsubscribe(listener: QueryListener<Item>): void;
34
- private notifyListeners;
35
- private getAllLocalItems;
36
- private mergeWithLocalModifications;
37
- private matchesIndex;
38
- }
39
- //# sourceMappingURL=StoreState.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data-storage.d.ts.map
@@ -1,46 +0,0 @@
1
- import { type Patch } from "mutative";
2
- import type { ReadTransaction, ReadWriteTransaction } from "../db";
3
- import type { ForkedDataStorage } from "./data-storage-forked";
4
- import type { StoreState } from "./store-state.abstract";
5
- export declare abstract class DataStorage {
6
- abstract getStore<Item extends {
7
- _id: string;
8
- }>(storeName: string, deserialize?: (data: any) => Item): StoreState<Item>;
9
- abstract fork(): ForkedDataStorage;
10
- abstract getReadTransaction(): Promise<ReadTransaction>;
11
- abstract getReadWriteTransaction(): Promise<ReadWriteTransaction>;
12
- }
13
- export type StoreStateChange<Item> = {
14
- type: "set";
15
- data: Item;
16
- } | {
17
- type: "delete";
18
- id: string;
19
- } | {
20
- type: "modify";
21
- id: string;
22
- data: Partial<Item>;
23
- } | {
24
- type: "mutate";
25
- id: string;
26
- patches: Patch[];
27
- };
28
- export type QueryListenerCallback<Item> = (events: ListenerEvent<Item>[]) => void;
29
- export type QueryListener<Item> = {
30
- callback: QueryListenerCallback<Item>;
31
- id?: string;
32
- };
33
- export type ListenerEvent<Item> = {
34
- type: "set";
35
- item: Item;
36
- id: string;
37
- } | {
38
- type: "delete";
39
- item: null;
40
- id: string;
41
- };
42
- export type DataStorageChanges = {
43
- store: string;
44
- changes: StoreStateChange<any>[];
45
- };
46
- //# sourceMappingURL=data-storage.interface.d.ts.map
@@ -1,30 +0,0 @@
1
- import type { QueryListenerCallback, StoreStateChange } from "./data-storage";
2
- import type { DataStorage } from "./data-storage.abstract";
3
- import { StoreState } from "./store-state.abstract";
4
- export declare class MasterStoreState<
5
- Item extends {
6
- _id: string;
7
- },
8
- > extends StoreState<Item> {
9
- protected items: Map<string, Item>;
10
- protected isComplete: boolean;
11
- constructor(
12
- storeName: string,
13
- dataStorage: DataStorage,
14
- deserialize?: (data: any) => Item
15
- );
16
- applyChanges(changes: StoreStateChange<Item>[]): Promise<void>;
17
- findById(
18
- id: string,
19
- listener?: QueryListenerCallback<Item>
20
- ): Promise<Item | undefined>;
21
- findByIndex(
22
- index: string,
23
- data: any,
24
- listener?: QueryListenerCallback<Item>
25
- ): Promise<Item[]>;
26
- findAll(listener?: QueryListenerCallback<Item>): Promise<Item[]>;
27
- private mergeWithLocalModifications;
28
- private matchesIndex;
29
- }
30
- //# sourceMappingURL=master-store-state.d.ts.map