document-drive 3.3.0-staging.0 → 4.0.0-staging.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.
- package/dist/src/processors/processor-manager.d.ts +1 -0
- package/dist/src/processors/processor-manager.d.ts.map +1 -1
- package/dist/src/processors/processor-manager.js +21 -2
- package/dist/src/processors/processor-manager.js.map +1 -1
- package/dist/src/processors/relational.d.ts +62 -0
- package/dist/src/processors/relational.d.ts.map +1 -0
- package/dist/src/processors/relational.js +60 -0
- package/dist/src/processors/relational.js.map +1 -0
- package/dist/src/processors/types.d.ts +15 -6
- package/dist/src/processors/types.d.ts.map +1 -1
- package/dist/src/processors/utils.d.ts +30 -0
- package/dist/src/processors/utils.d.ts.map +1 -0
- package/dist/src/processors/utils.js +74 -0
- package/dist/src/processors/utils.js.map +1 -0
- package/dist/src/server/base-server.d.ts +1 -1
- package/dist/src/server/base-server.d.ts.map +1 -1
- package/dist/src/server/base-server.js +8 -2
- package/dist/src/server/base-server.js.map +1 -1
- package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/internal.js +5 -2
- package/dist/src/server/listener/transmitter/internal.js.map +1 -1
- package/dist/src/server/types.d.ts +9 -9
- package/dist/src/server/types.d.ts.map +1 -1
- package/dist/src/utils/default-drives-manager.d.ts +1 -1
- package/dist/src/utils/default-drives-manager.d.ts.map +1 -1
- package/dist/src/utils/default-drives-manager.js +15 -10
- package/dist/src/utils/default-drives-manager.js.map +1 -1
- package/dist/src/utils/gql-transformations.d.ts +1 -1
- package/dist/src/utils/gql-transformations.d.ts.map +1 -1
- package/dist/src/utils/gql-transformations.js +2 -0
- package/dist/src/utils/gql-transformations.js.map +1 -1
- package/dist/test/default-remote-drives.test.js.map +1 -1
- package/dist/test/drive-operations.test.js.map +1 -1
- package/dist/test/internal-listener.test.js +2 -0
- package/dist/test/internal-listener.test.js.map +1 -1
- package/dist/test/queue.test.js.map +1 -1
- package/dist/test/server.test.js.map +1 -1
- package/dist/test/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -4
- package/dist/src/processors/operational-processor.d.ts +0 -36
- package/dist/src/processors/operational-processor.d.ts.map +0 -1
- package/dist/src/processors/operational-processor.js +0 -54
- package/dist/src/processors/operational-processor.js.map +0 -1
|
@@ -4,6 +4,7 @@ export declare class ProcessorManager implements IProcessorManager {
|
|
|
4
4
|
private listeners;
|
|
5
5
|
private drive;
|
|
6
6
|
private readonly logger;
|
|
7
|
+
private processorsByDrive;
|
|
7
8
|
private idToFactory;
|
|
8
9
|
private identifierToListeners;
|
|
9
10
|
constructor(listeners: IListenerManager, drive: IDocumentDriveServer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor-manager.d.ts","sourceRoot":"","sources":["../../../src/processors/processor-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAEtB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAEtB,MAAM,6BAA6B,CAAC;AAKrC,qBAAa,gBAAiB,YAAW,iBAAiB;
|
|
1
|
+
{"version":3,"file":"processor-manager.d.ts","sourceRoot":"","sources":["../../../src/processors/processor-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAEtB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAEtB,MAAM,6BAA6B,CAAC;AAKrC,qBAAa,gBAAiB,YAAW,iBAAiB;IAWtD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;IAXf,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAEH,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,qBAAqB,CAAiC;gBAGpD,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,oBAAoB;IAK/B,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC;IAeV,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBpD,aAAa,CAAC,OAAO,EAAE,MAAM;IASnC;;;;;OAKG;IACG,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB;CA8D5B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InternalTransmitter } from "document-drive/server/listener/transmitter/internal";
|
|
2
2
|
import { generateId } from "document-model";
|
|
3
3
|
import { childLogger } from "../../index.js";
|
|
4
|
+
import { isRelationalDbProcessor } from "./relational.js";
|
|
4
5
|
export class ProcessorManager {
|
|
5
6
|
listeners;
|
|
6
7
|
drive;
|
|
@@ -8,6 +9,7 @@ export class ProcessorManager {
|
|
|
8
9
|
"document-drive",
|
|
9
10
|
"processor-manager",
|
|
10
11
|
]);
|
|
12
|
+
processorsByDrive = new Map();
|
|
11
13
|
idToFactory = new Map();
|
|
12
14
|
identifierToListeners = new Map();
|
|
13
15
|
constructor(listeners, drive) {
|
|
@@ -20,6 +22,9 @@ export class ProcessorManager {
|
|
|
20
22
|
this.idToFactory.set(identifier, factory);
|
|
21
23
|
// iterate over all drives and register the factory
|
|
22
24
|
const driveIds = await this.drive.getDrives();
|
|
25
|
+
if (!driveIds) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
23
28
|
for (const driveId of driveIds) {
|
|
24
29
|
await this.createProcessors(driveId, identifier, factory);
|
|
25
30
|
}
|
|
@@ -56,17 +61,30 @@ export class ProcessorManager {
|
|
|
56
61
|
listeners = [];
|
|
57
62
|
this.identifierToListeners.set(identifier, listeners);
|
|
58
63
|
}
|
|
64
|
+
let driveProcessors = this.processorsByDrive.get(driveId);
|
|
65
|
+
if (!driveProcessors) {
|
|
66
|
+
driveProcessors = [];
|
|
67
|
+
this.processorsByDrive.set(driveId, driveProcessors);
|
|
68
|
+
}
|
|
59
69
|
// don't let the factory throw, we want to continue with the rest of the processors
|
|
60
70
|
let processors = [];
|
|
61
71
|
try {
|
|
62
|
-
processors = factory(driveId);
|
|
72
|
+
processors = await factory(driveId);
|
|
63
73
|
}
|
|
64
74
|
catch (e) {
|
|
65
75
|
this.logger.error(`Error creating processors for drive ${driveId}:`, e);
|
|
66
76
|
return;
|
|
67
77
|
}
|
|
68
78
|
for (const { filter, processor } of processors) {
|
|
69
|
-
|
|
79
|
+
const isRelational = isRelationalDbProcessor(processor);
|
|
80
|
+
// check for duplicated namespaces
|
|
81
|
+
if (isRelational &&
|
|
82
|
+
driveProcessors.some((p) => isRelationalDbProcessor(p.processor) &&
|
|
83
|
+
p.processor.namespace === processor.namespace)) {
|
|
84
|
+
this.logger.warn(`Processor with namespace '${processor.namespace}' already registered for drive '${driveId}'.`);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (isRelational) {
|
|
70
88
|
await processor.initAndUpgrade();
|
|
71
89
|
}
|
|
72
90
|
const id = generateId();
|
|
@@ -81,6 +99,7 @@ export class ProcessorManager {
|
|
|
81
99
|
};
|
|
82
100
|
await this.listeners.setListener(driveId, listener);
|
|
83
101
|
listeners.push(listener);
|
|
102
|
+
driveProcessors.push({ filter, processor });
|
|
84
103
|
}
|
|
85
104
|
}
|
|
86
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor-manager.js","sourceRoot":"","sources":["../../../src/processors/processor-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAM1F,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"processor-manager.js","sourceRoot":"","sources":["../../../src/processors/processor-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type ListenerFilter } from "#drive-document-model/module";
|
|
2
|
+
import { type PHDocument } from "document-model";
|
|
3
|
+
import { type InternalTransmitterUpdate } from "../server/listener/transmitter/internal.js";
|
|
4
|
+
import { type IProcessor, type IRelationalDb, type IRelationalQueryBuilder } from "./types.js";
|
|
5
|
+
export type { IRelationalQueryBuilder } from "./types.js";
|
|
6
|
+
export type RelationalDbProcessorFilter = ListenerFilter;
|
|
7
|
+
export interface IRelationalDbProcessor<TDatabaseSchema = unknown> extends IProcessor {
|
|
8
|
+
namespace: string;
|
|
9
|
+
query: IRelationalQueryBuilder<TDatabaseSchema>;
|
|
10
|
+
filter: RelationalDbProcessorFilter;
|
|
11
|
+
initAndUpgrade(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare function isRelationalDbProcessor(p: IProcessor): p is IRelationalDbProcessor;
|
|
14
|
+
export type ExtractProcessorSchema<TProcessor> = TProcessor extends RelationalDbProcessor<infer TSchema> ? TSchema : never;
|
|
15
|
+
export type ExtractProcessorSchemaOrSelf<TProcessor> = TProcessor extends RelationalDbProcessor<infer TSchema> ? TSchema : TProcessor;
|
|
16
|
+
export type RelationalDbProcessorClass<TSchema> = typeof RelationalDbProcessor<TSchema>;
|
|
17
|
+
declare const IS_RELATIONAL_DB_PROCESSOR: unique symbol;
|
|
18
|
+
/**
|
|
19
|
+
* Base class for relational db processors that require a relational database storage.
|
|
20
|
+
* This class abstracts database initialization, migration management, and resource cleanup,
|
|
21
|
+
* allowing derived classes to focus on business logic.
|
|
22
|
+
*/
|
|
23
|
+
export declare abstract class RelationalDbProcessor<TDatabaseSchema = unknown> implements IRelationalDbProcessor<TDatabaseSchema> {
|
|
24
|
+
protected _namespace: string;
|
|
25
|
+
protected _filter: RelationalDbProcessorFilter;
|
|
26
|
+
protected relationalDb: IRelationalDb<TDatabaseSchema>;
|
|
27
|
+
constructor(_namespace: string, _filter: RelationalDbProcessorFilter, relationalDb: IRelationalDb<TDatabaseSchema>);
|
|
28
|
+
static [IS_RELATIONAL_DB_PROCESSOR]: boolean;
|
|
29
|
+
static is(p: unknown): p is RelationalDbProcessor;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the namespace for a given drive id.
|
|
32
|
+
* This method can be overridden by derived classes to provide a custom namespace.
|
|
33
|
+
*/
|
|
34
|
+
static getNamespace(driveId: string): string;
|
|
35
|
+
static query<Schema>(this: RelationalDbProcessorClass<Schema>, driveId: string, db: IRelationalDb<any>): IRelationalQueryBuilder<Schema>;
|
|
36
|
+
/**
|
|
37
|
+
* Returns the filter for the processor.
|
|
38
|
+
* This method can be overridden by derived classes to provide a custom filter.
|
|
39
|
+
*/
|
|
40
|
+
get filter(): RelationalDbProcessorFilter;
|
|
41
|
+
/**
|
|
42
|
+
* Returns the namespace used by the processor.
|
|
43
|
+
*/
|
|
44
|
+
get namespace(): string;
|
|
45
|
+
get query(): IRelationalQueryBuilder<TDatabaseSchema>;
|
|
46
|
+
/**
|
|
47
|
+
* Abstract method that derived classes must implement.
|
|
48
|
+
* This method is meant to be called on subclasses to initialize and upgrade the database.
|
|
49
|
+
*/
|
|
50
|
+
abstract initAndUpgrade(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Abstract method that derived classes must implement.
|
|
53
|
+
* This is where the business logic for processing document operations should be implemented.
|
|
54
|
+
*/
|
|
55
|
+
abstract onStrands<TDocument extends PHDocument>(strands: InternalTransmitterUpdate<TDocument>[]): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Called when the processor is disconnected.
|
|
58
|
+
* This method is meant to be overridden by subclasses to clean up resources.
|
|
59
|
+
*/
|
|
60
|
+
abstract onDisconnect(): Promise<void>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=relational.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relational.d.ts","sourceRoot":"","sources":["../../../src/processors/relational.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EACL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAC;AAKpB,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,MAAM,2BAA2B,GAAG,cAAc,CAAC;AACzD,MAAM,WAAW,sBAAsB,CAAC,eAAe,GAAG,OAAO,CAC/D,SAAQ,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,EAAE,2BAA2B,CAAC;IACpC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,UAAU,GACZ,CAAC,IAAI,sBAAsB,CAE7B;AAED,MAAM,MAAM,sBAAsB,CAAC,UAAU,IAC3C,UAAU,SAAS,qBAAqB,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;AAE5E,MAAM,MAAM,4BAA4B,CAAC,UAAU,IACjD,UAAU,SAAS,qBAAqB,CAAC,MAAM,OAAO,CAAC,GACnD,OAAO,GACP,UAAU,CAAC;AAEjB,MAAM,MAAM,0BAA0B,CAAC,OAAO,IAC5C,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAExC,QAAA,MAAM,0BAA0B,eAA8C,CAAC;AAE/E;;;;GAIG;AACH,8BAAsB,qBAAqB,CAAC,eAAe,GAAG,OAAO,CACnE,YAAW,sBAAsB,CAAC,eAAe,CAAC;IAGhD,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,SAAS,CAAC,OAAO,EAAE,2BAA2B;IAC9C,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC;gBAF5C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,2BAA2B,EACpC,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC;IAGxD,MAAM,CAAC,CAAC,0BAA0B,CAAC,UAAQ;IAE3C,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,qBAAqB;IAYjD;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI5C,MAAM,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,EAAE,0BAA0B,CAAC,MAAM,CAAC,EACxC,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,GACrB,uBAAuB,CAAC,MAAM,CAAC;IAIlC;;;OAGG;IACH,IAAI,MAAM,IAAI,2BAA2B,CAExC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,KAAK,IAAI,uBAAuB,CAAC,eAAe,CAAC,CAEpD;IAED;;;OAGG;IACH,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,SAAS,SAAS,UAAU,EAC7C,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAAE,GAC9C,OAAO,CAAC,IAAI,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CACvC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { relationalDbToQueryBuilder } from "./utils.js";
|
|
2
|
+
export function isRelationalDbProcessor(p) {
|
|
3
|
+
return RelationalDbProcessor.is(p);
|
|
4
|
+
}
|
|
5
|
+
const IS_RELATIONAL_DB_PROCESSOR = Symbol.for("ph.IS_RELATIONAL_DB_PROCESSOR");
|
|
6
|
+
/**
|
|
7
|
+
* Base class for relational db processors that require a relational database storage.
|
|
8
|
+
* This class abstracts database initialization, migration management, and resource cleanup,
|
|
9
|
+
* allowing derived classes to focus on business logic.
|
|
10
|
+
*/
|
|
11
|
+
export class RelationalDbProcessor {
|
|
12
|
+
_namespace;
|
|
13
|
+
_filter;
|
|
14
|
+
relationalDb;
|
|
15
|
+
constructor(_namespace, _filter, relationalDb) {
|
|
16
|
+
this._namespace = _namespace;
|
|
17
|
+
this._filter = _filter;
|
|
18
|
+
this.relationalDb = relationalDb;
|
|
19
|
+
}
|
|
20
|
+
static [IS_RELATIONAL_DB_PROCESSOR] = true;
|
|
21
|
+
static is(p) {
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
23
|
+
let proto = Object.getPrototypeOf(p);
|
|
24
|
+
while (proto) {
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
26
|
+
if (proto.constructor?.[IS_RELATIONAL_DB_PROCESSOR])
|
|
27
|
+
return true;
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
29
|
+
proto = Object.getPrototypeOf(proto);
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the namespace for a given drive id.
|
|
35
|
+
* This method can be overridden by derived classes to provide a custom namespace.
|
|
36
|
+
*/
|
|
37
|
+
static getNamespace(driveId) {
|
|
38
|
+
return `${this.name}_${driveId.replaceAll("-", "_")}`;
|
|
39
|
+
}
|
|
40
|
+
static query(driveId, db) {
|
|
41
|
+
return db.queryNamespace(this.getNamespace(driveId));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Returns the filter for the processor.
|
|
45
|
+
* This method can be overridden by derived classes to provide a custom filter.
|
|
46
|
+
*/
|
|
47
|
+
get filter() {
|
|
48
|
+
return this._filter;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Returns the namespace used by the processor.
|
|
52
|
+
*/
|
|
53
|
+
get namespace() {
|
|
54
|
+
return this._namespace;
|
|
55
|
+
}
|
|
56
|
+
get query() {
|
|
57
|
+
return relationalDbToQueryBuilder(this.relationalDb);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=relational.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relational.js","sourceRoot":"","sources":["../../../src/processors/relational.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAexD,MAAM,UAAU,uBAAuB,CACrC,CAAa;IAEb,OAAO,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAaD,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,OAAgB,qBAAqB;IAI7B;IACA;IACA;IAHZ,YACY,UAAkB,EAClB,OAAoC,EACpC,YAA4C;QAF5C,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAA6B;QACpC,iBAAY,GAAZ,YAAY,CAAgC;IACrD,CAAC;IAEJ,MAAM,CAAC,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAAC;IAE3C,MAAM,CAAC,EAAE,CAAC,CAAU;QAClB,mEAAmE;QACnE,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,KAAK,EAAE,CAAC;YACb,sEAAsE;YACtE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,0BAA0B,CAAC;gBAAE,OAAO,IAAI,CAAC;YACjE,mEAAmE;YACnE,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,OAAe;QACjC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,KAAK,CAEV,OAAe,EACf,EAAsB;QAEtB,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC"}
|
|
@@ -2,16 +2,25 @@ import { type ListenerFilter } from "#drive-document-model/gen/schema/types";
|
|
|
2
2
|
import { type InternalTransmitterUpdate } from "#server/listener/transmitter/internal";
|
|
3
3
|
import { type IAnalyticsStore } from "@powerhousedao/analytics-engine-core";
|
|
4
4
|
import { type PHDocument } from "document-model";
|
|
5
|
-
import { type Kysely } from "kysely";
|
|
5
|
+
import { type Kysely, type QueryCreator } from "kysely";
|
|
6
|
+
import { type ExtractProcessorSchemaOrSelf } from "./relational.js";
|
|
7
|
+
export type IRelationalQueryMethods = "selectFrom" | "selectNoFrom" | "with" | "withRecursive";
|
|
8
|
+
export type IRelationalQueryBuilder<Schema = unknown> = Pick<QueryCreator<Schema>, IRelationalQueryMethods> & {
|
|
9
|
+
withSchema: (schema: string) => IRelationalQueryBuilder<Schema>;
|
|
10
|
+
};
|
|
11
|
+
export type IBaseRelationalDb<Schema = unknown> = Kysely<Schema>;
|
|
6
12
|
/**
|
|
7
|
-
* The standardized relational database interface for
|
|
13
|
+
* The standardized relational database interface for relational db processors.
|
|
8
14
|
* This abstraction provides type-safe database operations while hiding the underlying
|
|
9
15
|
* database framework implementation details.
|
|
10
|
-
|
|
11
|
-
export type
|
|
16
|
+
**/
|
|
17
|
+
export type IRelationalDb<Schema = unknown> = IBaseRelationalDb<Schema> & {
|
|
18
|
+
createNamespace<NamespaceSchema>(namespace: string): Promise<IRelationalDb<ExtractProcessorSchemaOrSelf<NamespaceSchema>>>;
|
|
19
|
+
queryNamespace<NamespaceSchema>(namespace: string): IRelationalQueryBuilder<NamespaceSchema>;
|
|
20
|
+
};
|
|
12
21
|
export interface IProcessorHostModule {
|
|
13
22
|
analyticsStore: IAnalyticsStore;
|
|
14
|
-
|
|
23
|
+
relationalDb: IRelationalDb;
|
|
15
24
|
}
|
|
16
25
|
/**
|
|
17
26
|
* Describes an object that can process strands.
|
|
@@ -42,7 +51,7 @@ export type ProcessorRecord = {
|
|
|
42
51
|
* @param driveId The drive to create processors for.
|
|
43
52
|
* @returns A list of processor records.
|
|
44
53
|
*/
|
|
45
|
-
export type ProcessorFactory = (driveId: string) => ProcessorRecord[]
|
|
54
|
+
export type ProcessorFactory = (driveId: string) => ProcessorRecord[] | Promise<ProcessorRecord[]>;
|
|
46
55
|
/**
|
|
47
56
|
* Manages processor creation and destruction.
|
|
48
57
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/processors/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/processors/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,MAAM,uBAAuB,GAC/B,YAAY,GACZ,cAAc,GACd,MAAM,GACN,eAAe,CAAC;AAEpB,MAAM,MAAM,uBAAuB,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,CAC1D,YAAY,CAAC,MAAM,CAAC,EACpB,uBAAuB,CACxB,GAAG;IACF,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,uBAAuB,CAAC,MAAM,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,MAAM,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAEjE;;;;IAII;AACJ,MAAM,MAAM,aAAa,CAAC,MAAM,GAAG,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,GAAG;IACxE,eAAe,CAAC,eAAe,EAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzE,cAAc,CAAC,eAAe,EAC5B,SAAS,EAAE,MAAM,GAChB,uBAAuB,CAAC,eAAe,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,eAAe,CAAC;IAChC,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,SAAS,CAAC,SAAS,SAAS,UAAU,EACpC,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAAE,GAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,MAAM,KACZ,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E;;;;;OAKG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type IBaseRelationalDb, type IRelationalDb, type IRelationalQueryBuilder } from "./types.js";
|
|
2
|
+
export type HashAlgorithms = "fnv1a";
|
|
3
|
+
/**
|
|
4
|
+
* Hashes a string to a lowercase base-26 string.
|
|
5
|
+
* @param str The string to hash.
|
|
6
|
+
* @param length The length of the hash. Defaults to 10.
|
|
7
|
+
* @param algorithm The hashing algorithm to use. Defaults to "fnv1a".
|
|
8
|
+
* @returns The hashed string.
|
|
9
|
+
*/
|
|
10
|
+
export declare function hashNamespace(str: string, length?: number, algorithm?: HashAlgorithms): string;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a RelationalDb instance with namespace support.
|
|
13
|
+
* @param baseDb The base RelationalDb instance to enhance.
|
|
14
|
+
* @param baseOptions The default options for namespace creation. Hashes namespace by default.
|
|
15
|
+
* @returns The enhanced RelationalDb instance.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createRelationalDb<Schema>(baseDb: IBaseRelationalDb<Schema>, baseOptions?: NamespaceOptions): IRelationalDb<Schema>;
|
|
18
|
+
type NamespaceOptions = {
|
|
19
|
+
hashNamespace?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export declare function createNamespacedDb<Schema>(db: IBaseRelationalDb<any>, namespace: string, options?: NamespaceOptions): Promise<IRelationalDb<Schema>>;
|
|
22
|
+
export declare function createNamespacedQueryBuilder<Schema>(db: IBaseRelationalDb<any>, namespace: string, options?: NamespaceOptions): IRelationalQueryBuilder<Schema>;
|
|
23
|
+
/**
|
|
24
|
+
* Returns a query builder for a RelationalDb instance.
|
|
25
|
+
* @param query The RelationalDb instance to convert.
|
|
26
|
+
* @returns The IRelationalQueryBuilder instance.
|
|
27
|
+
*/
|
|
28
|
+
export declare function relationalDbToQueryBuilder<TSchema>(query: IBaseRelationalDb<TSchema>): IRelationalQueryBuilder<TSchema>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/processors/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;AAErC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,MAAM,SAAK,EACX,SAAS,GAAE,cAAwB,UAapC;AAaD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EACvC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACjC,WAAW,CAAC,EAAE,gBAAgB,GAC7B,aAAa,CAAC,MAAM,CAAC,CAwBvB;AAED,KAAK,gBAAgB,GAAG;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,MAAM,EAC7C,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAOhC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EACjD,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,uBAAuB,CAAC,MAAM,CAAC,CAKjC;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAChD,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAChC,uBAAuB,CAAC,OAAO,CAAC,CASlC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import fnv1a from "@sindresorhus/fnv1a";
|
|
2
|
+
const SUPPORTED_SIZES = [32, 64, 128, 256, 512, 1024];
|
|
3
|
+
const LOG2_26 = Math.log2(26); //
|
|
4
|
+
/**
|
|
5
|
+
* Hashes a string to a lowercase base-26 string.
|
|
6
|
+
* @param str The string to hash.
|
|
7
|
+
* @param length The length of the hash. Defaults to 10.
|
|
8
|
+
* @param algorithm The hashing algorithm to use. Defaults to "fnv1a".
|
|
9
|
+
* @returns The hashed string.
|
|
10
|
+
*/
|
|
11
|
+
export function hashNamespace(str, length = 10, algorithm = "fnv1a") {
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
13
|
+
if (algorithm === "fnv1a") {
|
|
14
|
+
const requiredBits = Math.ceil(length * LOG2_26);
|
|
15
|
+
const bitSize = SUPPORTED_SIZES.find((size) => size && size >= requiredBits) ?? 1024;
|
|
16
|
+
const hash = fnv1a(str, { size: bitSize });
|
|
17
|
+
return toBase26(hash, length);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
21
|
+
throw new Error(`Unsupported hashing algorithm: ${algorithm}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// converts hash to lowercase letters
|
|
25
|
+
function toBase26(num, length = 10) {
|
|
26
|
+
const alphabet = "abcdefghijklmnopqrstuvwxyz";
|
|
27
|
+
let out = "";
|
|
28
|
+
while (num > 0n && out.length < length) {
|
|
29
|
+
out = alphabet[Number(num % 26n)] + out;
|
|
30
|
+
num /= 26n;
|
|
31
|
+
}
|
|
32
|
+
return out.padStart(length, "a"); // optional padding
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Creates a RelationalDb instance with namespace support.
|
|
36
|
+
* @param baseDb The base RelationalDb instance to enhance.
|
|
37
|
+
* @param baseOptions The default options for namespace creation. Hashes namespace by default.
|
|
38
|
+
* @returns The enhanced RelationalDb instance.
|
|
39
|
+
*/
|
|
40
|
+
export function createRelationalDb(baseDb, baseOptions) {
|
|
41
|
+
const relationalDb = baseDb;
|
|
42
|
+
relationalDb.createNamespace = (namespace, options) => createNamespacedDb(baseDb, namespace, options ?? baseOptions);
|
|
43
|
+
relationalDb.queryNamespace = (namespace, options) => createNamespacedQueryBuilder(baseDb, namespace, options ?? baseOptions);
|
|
44
|
+
return relationalDb;
|
|
45
|
+
}
|
|
46
|
+
export async function createNamespacedDb(db, namespace, options) {
|
|
47
|
+
// hash the namespace to avoid too long namespaces
|
|
48
|
+
const shouldHash = options?.hashNamespace ?? true;
|
|
49
|
+
const hashValue = shouldHash ? hashNamespace(namespace) : namespace;
|
|
50
|
+
await db.schema.createSchema(hashValue).ifNotExists().execute();
|
|
51
|
+
const schemaRelationalDb = db.withSchema(hashValue);
|
|
52
|
+
return schemaRelationalDb;
|
|
53
|
+
}
|
|
54
|
+
export function createNamespacedQueryBuilder(db, namespace, options) {
|
|
55
|
+
const shouldHash = options?.hashNamespace ?? true;
|
|
56
|
+
const hashValue = shouldHash ? hashNamespace(namespace) : namespace;
|
|
57
|
+
const namespacedDb = db.withSchema(hashValue);
|
|
58
|
+
return relationalDbToQueryBuilder(namespacedDb);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Returns a query builder for a RelationalDb instance.
|
|
62
|
+
* @param query The RelationalDb instance to convert.
|
|
63
|
+
* @returns The IRelationalQueryBuilder instance.
|
|
64
|
+
*/
|
|
65
|
+
export function relationalDbToQueryBuilder(query) {
|
|
66
|
+
return {
|
|
67
|
+
selectFrom: query.selectFrom.bind(query),
|
|
68
|
+
selectNoFrom: query.selectNoFrom.bind(query),
|
|
69
|
+
with: query.with.bind(query),
|
|
70
|
+
withRecursive: query.withRecursive.bind(query),
|
|
71
|
+
withSchema: (schema) => relationalDbToQueryBuilder(query.withSchema(schema)),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/processors/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,7 @@ export declare class BaseDocumentDriveServer implements IBaseDocumentDriveServer
|
|
|
53
53
|
getDrive(driveId: string, options?: GetDocumentOptions): Promise<DocumentDriveDocument>;
|
|
54
54
|
getDriveBySlug(slug: string, options?: GetDocumentOptions): Promise<DocumentDriveDocument>;
|
|
55
55
|
getDriveIdBySlug(slug: string): Promise<string>;
|
|
56
|
-
getDocument<TDocument extends PHDocument>(driveId: string, documentId: string, options?: GetDocumentOptions): Promise<TDocument>;
|
|
56
|
+
getDocument<TDocument extends PHDocument>(driveId: string, documentId: string, options?: GetDocumentOptions): Promise<TDocument | undefined>;
|
|
57
57
|
getDocuments(driveId: string): Promise<string[]>;
|
|
58
58
|
protected createDocument<TDocument extends PHDocument>(driveId: string, input: CreateDocumentInput<TDocument>): Promise<TDocument>;
|
|
59
59
|
deleteDocument(driveId: string, documentId: string): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-server.d.ts","sourceRoot":"","sources":["../../../src/server/base-server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base-server.d.ts","sourceRoot":"","sources":["../../../src/server/base-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,7 +104,7 @@ export class BaseDocumentDriveServer {
|
|
|
104
104
|
errors.push(error);
|
|
105
105
|
});
|
|
106
106
|
try {
|
|
107
|
-
await this.defaultDrivesManager.
|
|
107
|
+
await this.defaultDrivesManager.removeOldRemoteDrives();
|
|
108
108
|
}
|
|
109
109
|
catch (error) {
|
|
110
110
|
this.logger.error(error);
|
|
@@ -720,6 +720,9 @@ export class BaseDocumentDriveServer {
|
|
|
720
720
|
break;
|
|
721
721
|
case "COPY_CHILD_DOCUMENT":
|
|
722
722
|
handler = () => this.getDocument(driveId, signal.input.id).then((documentToCopy) => {
|
|
723
|
+
if (!documentToCopy) {
|
|
724
|
+
return;
|
|
725
|
+
}
|
|
723
726
|
const doc = {
|
|
724
727
|
...documentToCopy,
|
|
725
728
|
header: {
|
|
@@ -783,7 +786,7 @@ export class BaseDocumentDriveServer {
|
|
|
783
786
|
try {
|
|
784
787
|
const document = await this.getDocument(drive, id);
|
|
785
788
|
const newOperation = operations.find((op) => !op.id ||
|
|
786
|
-
!document
|
|
789
|
+
!document?.operations[op.scope].find((existingOp) => existingOp.id === op.id &&
|
|
787
790
|
existingOp.index === op.index &&
|
|
788
791
|
existingOp.type === op.type &&
|
|
789
792
|
existingOp.hash === op.hash));
|
|
@@ -1214,6 +1217,9 @@ export class BaseDocumentDriveServer {
|
|
|
1214
1217
|
}
|
|
1215
1218
|
}
|
|
1216
1219
|
_buildOperations(documentId, actions) {
|
|
1220
|
+
if (!documentId) {
|
|
1221
|
+
return [];
|
|
1222
|
+
}
|
|
1217
1223
|
const operations = [];
|
|
1218
1224
|
const { reducer } = this.getDocumentModelModule(documentId.header.documentType);
|
|
1219
1225
|
for (const action of actions) {
|