@powersync/lib-services-framework 0.0.0-dev-20250117095455 → 0.0.0-dev-20250507151436
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/codec/codecs.d.ts +1 -1
- package/dist/codec/parsers.d.ts +2 -2
- package/dist/container.js +5 -3
- package/dist/container.js.map +1 -1
- package/dist/errors/errors-index.d.ts +1 -2
- package/dist/errors/errors-index.js +1 -2
- package/dist/errors/errors-index.js.map +1 -1
- package/dist/ip/lookup.js +6 -4
- package/dist/ip/lookup.js.map +1 -1
- package/dist/locks/AbstractLockManager.js +1 -0
- package/dist/locks/AbstractLockManager.js.map +1 -1
- package/dist/migrations/AbstractMigrationAgent.js +10 -12
- package/dist/migrations/AbstractMigrationAgent.js.map +1 -1
- package/dist/migrations/MigrationManager.js +2 -0
- package/dist/migrations/MigrationManager.js.map +1 -1
- package/dist/router/router-response.js +5 -1
- package/dist/router/router-response.js.map +1 -1
- package/dist/system/LifeCycledSystem.js +18 -18
- package/dist/system/LifeCycledSystem.js.map +1 -1
- package/dist/utils/BaseObserver.d.ts +1 -0
- package/dist/utils/BaseObserver.js +4 -0
- package/dist/utils/BaseObserver.js.map +1 -1
- package/dist/utils/utils-index.d.ts +0 -1
- package/dist/utils/utils-index.js +0 -1
- package/dist/utils/utils-index.js.map +1 -1
- package/package.json +5 -4
- package/dist/errors/framework-errors.d.ts +0 -51
- package/dist/errors/framework-errors.js +0 -111
- package/dist/errors/framework-errors.js.map +0 -1
- package/dist/errors/utils.d.ts +0 -4
- package/dist/errors/utils.js +0 -18
- package/dist/errors/utils.js.map +0 -1
- package/dist/utils/DisposableObserver.d.ts +0 -22
- package/dist/utils/DisposableObserver.js +0 -18
- package/dist/utils/DisposableObserver.js.map +0 -1
package/dist/codec/codecs.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as t from 'ts-codec';
|
|
2
2
|
import * as bson from 'bson';
|
|
3
|
-
export declare const buffer: t.Codec<Buffer
|
|
3
|
+
export declare const buffer: t.Codec<Buffer<ArrayBufferLike>, string, string, t.CodecProps>;
|
|
4
4
|
export declare const date: t.Codec<Date, string, string, t.CodecProps>;
|
|
5
5
|
export declare const ObjectId: t.Codec<bson.ObjectId, string, string, t.CodecProps>;
|
|
6
6
|
export declare const ResourceId: t.Codec<{
|
package/dist/codec/parsers.d.ts
CHANGED
|
@@ -6,9 +6,9 @@ export declare const ResourceIdParser: t.Parser<string, t.Codec<{
|
|
|
6
6
|
id: string;
|
|
7
7
|
}, string, t.CodecProps>>;
|
|
8
8
|
export declare const DateParser: t.Parser<string, t.Codec<Date, string, string, t.CodecProps>>;
|
|
9
|
-
export declare const BufferParser: t.Parser<string, t.Codec<Buffer
|
|
9
|
+
export declare const BufferParser: t.Parser<string, t.Codec<Buffer<ArrayBufferLike>, string, string, t.CodecProps>>;
|
|
10
10
|
export declare const parsers: (t.Parser<string, t.Codec<import("bson").ObjectId, string, string, t.CodecProps>> | t.Parser<string, t.Codec<{
|
|
11
11
|
_id: import("bson").ObjectId;
|
|
12
12
|
}, {
|
|
13
13
|
id: string;
|
|
14
|
-
}, string, t.CodecProps>> | t.Parser<string, t.Codec<Date, string, string, t.CodecProps>> | t.Parser<string, t.Codec<Buffer
|
|
14
|
+
}, string, t.CodecProps>> | t.Parser<string, t.Codec<Date, string, string, t.CodecProps>> | t.Parser<string, t.Codec<Buffer<ArrayBufferLike>, string, string, t.CodecProps>>)[];
|
package/dist/container.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { ServiceAssertionError } from '@powersync/service-errors';
|
|
1
2
|
import _ from 'lodash';
|
|
2
3
|
import { NoOpReporter } from './alerts/no-op-reporter.js';
|
|
3
4
|
import { MigrationManager } from './migrations/MigrationManager.js';
|
|
4
|
-
import {
|
|
5
|
+
import { createInMemoryProbe, createTerminationHandler } from './signals/signals-index.js';
|
|
5
6
|
export var ContainerImplementation;
|
|
6
7
|
(function (ContainerImplementation) {
|
|
7
8
|
ContainerImplementation["REPORTER"] = "reporter";
|
|
@@ -11,7 +12,7 @@ export var ContainerImplementation;
|
|
|
11
12
|
})(ContainerImplementation || (ContainerImplementation = {}));
|
|
12
13
|
const DEFAULT_GENERATORS = {
|
|
13
14
|
[ContainerImplementation.REPORTER]: () => NoOpReporter,
|
|
14
|
-
[ContainerImplementation.PROBES]: () =>
|
|
15
|
+
[ContainerImplementation.PROBES]: () => createInMemoryProbe(),
|
|
15
16
|
[ContainerImplementation.TERMINATION_HANDLER]: () => createTerminationHandler(),
|
|
16
17
|
[ContainerImplementation.MIGRATION_MANAGER]: () => new MigrationManager()
|
|
17
18
|
};
|
|
@@ -20,6 +21,7 @@ const DEFAULT_GENERATORS = {
|
|
|
20
21
|
* function implementations.
|
|
21
22
|
*/
|
|
22
23
|
export class Container {
|
|
24
|
+
implementations;
|
|
23
25
|
/**
|
|
24
26
|
* Manager for system health probes
|
|
25
27
|
*/
|
|
@@ -50,7 +52,7 @@ export class Container {
|
|
|
50
52
|
getImplementation(identifier) {
|
|
51
53
|
const implementation = this.implementations.get(identifier);
|
|
52
54
|
if (!implementation) {
|
|
53
|
-
throw new
|
|
55
|
+
throw new ServiceAssertionError(`Implementation for ${String(identifier)} has not been registered.`);
|
|
54
56
|
}
|
|
55
57
|
return implementation;
|
|
56
58
|
}
|
package/dist/container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAGL,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAN,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,gDAAqB,CAAA;IACrB,4CAAiB,CAAA;IACjB,sEAA2C,CAAA;IAC3C,kEAAuC,CAAA;AACzC,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,QAKlC;AAiCD,MAAM,kBAAkB,GAA6C;IACnE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,YAAY;IACtD,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE;IAC7D,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC,wBAAwB,EAAE;IAC/E,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,EAAE;CAC1E,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,SAAS;IACV,eAAe,CAAmC;IAE5D;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAED;QACE,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;IACnC,CAAC;IAWD,iBAAiB,CAAI,UAAgC;QACnD,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,qBAAqB,CAAC,sBAAsB,MAAM,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAWD,WAAW,CAAI,UAAgC;QAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAiC;QAChD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACzF,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,QAAQ,CAAI,UAAgC,EAAE,cAAiB;QAC7D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export * from '
|
|
2
|
-
export * from './utils.js';
|
|
1
|
+
export * from '@powersync/service-errors';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors-index.js","sourceRoot":"","sources":["../../src/errors/errors-index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"errors-index.js","sourceRoot":"","sources":["../../src/errors/errors-index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
|
package/dist/ip/lookup.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as net from 'node:net';
|
|
2
2
|
import * as dnsp from 'node:dns/promises';
|
|
3
3
|
import ip from 'ipaddr.js';
|
|
4
|
+
import { ErrorCode, ServiceError } from '@powersync/service-errors';
|
|
4
5
|
/**
|
|
5
6
|
* Generate a custom DNS lookup function, that rejects specific IP ranges.
|
|
6
7
|
*
|
|
@@ -55,16 +56,17 @@ export function validateIpHostname(hostname, options) {
|
|
|
55
56
|
// Treat as a DNS name.
|
|
56
57
|
return;
|
|
57
58
|
}
|
|
58
|
-
const
|
|
59
|
+
const ipaddr = hostname;
|
|
60
|
+
const parsed = ip.parse(ipaddr);
|
|
59
61
|
const rejectLocal = reject_ranges.includes('local');
|
|
60
62
|
const rejectSubnets = reject_ranges.filter((range) => range != 'local');
|
|
61
63
|
const reject = { blocked: (rejectSubnets ?? []).map((r) => ip.parseCIDR(r)) };
|
|
62
64
|
if (options.reject_ipv6 && parsed.kind() == 'ipv6') {
|
|
63
|
-
throw new
|
|
65
|
+
throw new ServiceError(ErrorCode.PSYNC_S2202, 'IPv6 support not enabled for JWKS URI');
|
|
64
66
|
}
|
|
65
67
|
if (ip.subnetMatch(parsed, reject) == 'blocked') {
|
|
66
68
|
// Ranges explicitly blocked, e.g. private IPv6 ranges
|
|
67
|
-
throw new
|
|
69
|
+
throw new ServiceError(ErrorCode.PSYNC_S2203, `IPs in this range are not supported: ${ipaddr}`);
|
|
68
70
|
}
|
|
69
71
|
if (!rejectLocal) {
|
|
70
72
|
return;
|
|
@@ -79,7 +81,7 @@ export function validateIpHostname(hostname, options) {
|
|
|
79
81
|
}
|
|
80
82
|
else {
|
|
81
83
|
// Do not connect to any reserved IPs, including loopback and private ranges
|
|
82
|
-
throw new
|
|
84
|
+
throw new ServiceError(ErrorCode.PSYNC_S2203, `IPs in this range are not supported: ${ipaddr}`);
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
/**
|
package/dist/ip/lookup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/ip/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/ip/lookup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractLockManager.js","sourceRoot":"","sources":["../../src/locks/AbstractLockManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,eAAe,EAAyC,MAAM,kBAAkB,CAAC;AAa9G,MAAM,OAAgB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"AbstractLockManager.js","sourceRoot":"","sources":["../../src/locks/AbstractLockManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,eAAe,EAAyC,MAAM,kBAAkB,CAAC;AAa9G,MAAM,OAAgB,mBAAmB;IACjB;IAAtB,YAAsB,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAOnD,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAC1C,IAAI,MAAM,GAAsB,IAAI,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC;YACF,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC;YAChB,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACvB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,WAAW,EAAE;QAE/D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAqB,EAAE,OAA4B;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,eAAe,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACxC,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -2,18 +2,6 @@ import { logger } from '../logger/Logger.js';
|
|
|
2
2
|
import * as defs from './migration-definitions.js';
|
|
3
3
|
export const DEFAULT_MAX_LOCK_WAIT_MS = 3 * 60 * 1000; // 3 minutes
|
|
4
4
|
export class AbstractMigrationAgent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.writeLogsToStore = async (params) => {
|
|
7
|
-
const log = [...(params.state?.log || [])];
|
|
8
|
-
for await (const migration of params.log_stream) {
|
|
9
|
-
log.push(migration);
|
|
10
|
-
await this.store.save({
|
|
11
|
-
last_run: migration.name,
|
|
12
|
-
log: log
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
5
|
async init() {
|
|
18
6
|
await this.locks.init?.();
|
|
19
7
|
await this.store.init?.();
|
|
@@ -135,5 +123,15 @@ export class AbstractMigrationAgent {
|
|
|
135
123
|
resetStore() {
|
|
136
124
|
return this.store.clear();
|
|
137
125
|
}
|
|
126
|
+
writeLogsToStore = async (params) => {
|
|
127
|
+
const log = [...(params.state?.log || [])];
|
|
128
|
+
for await (const migration of params.log_stream) {
|
|
129
|
+
log.push(migration);
|
|
130
|
+
await this.store.save({
|
|
131
|
+
last_run: migration.name,
|
|
132
|
+
log: log
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
};
|
|
138
136
|
}
|
|
139
137
|
//# sourceMappingURL=AbstractMigrationAgent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractMigrationAgent.js","sourceRoot":"","sources":["../../src/migrations/AbstractMigrationAgent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,4BAA4B,CAAC;AA0BnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAEnE,MAAM,OAAgB,sBAAsB;
|
|
1
|
+
{"version":3,"file":"AbstractMigrationAgent.js","sourceRoot":"","sources":["../../src/migrations/AbstractMigrationAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationManager.js","sourceRoot":"","sources":["../../src/migrations/MigrationManager.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"MigrationManager.js","sourceRoot":"","sources":["../../src/migrations/MigrationManager.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IAGnB,UAAU,CAAkD;IAC5D,MAAM,CAA0C;IAExD;QACE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,sBAAsB,CAAC,KAAuC;QAC5D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QACtG,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,kBAAkB,CAAC,UAA2D;QAC5E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAiC;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACrB,GAAG,MAAM;YACT,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -7,11 +7,15 @@ export const isAsyncIterable = (iterable) => {
|
|
|
7
7
|
* payload or a [RouterResponse] which allows for more granular control of what is sent.
|
|
8
8
|
*/
|
|
9
9
|
export class RouterResponse {
|
|
10
|
+
status;
|
|
11
|
+
data;
|
|
12
|
+
headers;
|
|
13
|
+
afterSend;
|
|
14
|
+
__micro_router_response = true;
|
|
10
15
|
static isRouterResponse(input) {
|
|
11
16
|
return input instanceof RouterResponse || input?.__micro_router_response == true;
|
|
12
17
|
}
|
|
13
18
|
constructor(params) {
|
|
14
|
-
this.__micro_router_response = true;
|
|
15
19
|
this.status = params.status || 200;
|
|
16
20
|
this.data = params.data;
|
|
17
21
|
this.headers = params.headers || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-response.js","sourceRoot":"","sources":["../../src/router/router-response.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAa,EAAkC,EAAE;IAC/E,OAAO,QAAQ,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC;AAC9F,CAAC,CAAC;AAYF;;;;GAIG;AACH,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"router-response.js","sourceRoot":"","sources":["../../src/router/router-response.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAa,EAAkC,EAAE;IAC/E,OAAO,QAAQ,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC;AAC9F,CAAC,CAAC;AAYF;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACzB,MAAM,CAAS;IACf,IAAI,CAAI;IACR,OAAO,CAAyB;IAChC,SAAS,CAAsB;IAE/B,uBAAuB,GAAG,IAAI,CAAC;IAE/B,MAAM,CAAC,gBAAgB,CAAC,KAAU;QAChC,OAAO,KAAK,YAAY,cAAc,IAAI,KAAK,EAAE,uBAAuB,IAAI,IAAI,CAAC;IACnF,CAAC;IAED,YAAY,MAA+B;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,0BAA0B,CAAC;YAC5D,CAAC;iBAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,0BAA0B,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -7,26 +7,26 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { container } from '../container.js';
|
|
9
9
|
export class LifeCycledSystem {
|
|
10
|
+
components = [];
|
|
10
11
|
constructor() {
|
|
11
|
-
this.components = [];
|
|
12
|
-
this.withLifecycle = (component, lifecycle) => {
|
|
13
|
-
this.components.push({
|
|
14
|
-
component: component,
|
|
15
|
-
...lifecycle
|
|
16
|
-
});
|
|
17
|
-
return component;
|
|
18
|
-
};
|
|
19
|
-
this.start = async () => {
|
|
20
|
-
for (const lifecycle of this.components) {
|
|
21
|
-
await lifecycle.start?.(lifecycle.component);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
this.stop = async () => {
|
|
25
|
-
for (const lifecycle of this.components.reverse()) {
|
|
26
|
-
await lifecycle.stop?.(lifecycle.component);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
12
|
container.terminationHandler.handleTerminationSignal(() => this.stop());
|
|
30
13
|
}
|
|
14
|
+
withLifecycle = (component, lifecycle) => {
|
|
15
|
+
this.components.push({
|
|
16
|
+
component: component,
|
|
17
|
+
...lifecycle
|
|
18
|
+
});
|
|
19
|
+
return component;
|
|
20
|
+
};
|
|
21
|
+
start = async () => {
|
|
22
|
+
for (const lifecycle of this.components) {
|
|
23
|
+
await lifecycle.start?.(lifecycle.component);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
stop = async () => {
|
|
27
|
+
for (const lifecycle of this.components.reverse()) {
|
|
28
|
+
await lifecycle.stop?.(lifecycle.component);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
31
|
}
|
|
32
32
|
//# sourceMappingURL=LifeCycledSystem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LifeCycledSystem.js","sourceRoot":"","sources":["../../src/system/LifeCycledSystem.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAc5C,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"LifeCycledSystem.js","sourceRoot":"","sources":["../../src/system/LifeCycledSystem.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAc5C,MAAM,OAAO,gBAAgB;IAC3B,UAAU,GAA8B,EAAE,CAAC;IAE3C;QACE,SAAS,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,aAAa,GAAG,CAAI,SAAY,EAAE,SAA8B,EAAK,EAAE;QACrE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,SAAS;YACpB,GAAG,SAAS;SACb,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,IAAI,EAAE;QACjB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,GAAG,KAAK,IAAI,EAAE;QAChB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC;CACH"}
|
|
@@ -9,4 +9,5 @@ export declare class BaseObserver<T> implements ObserverClient<T> {
|
|
|
9
9
|
registerListener(listener: Partial<T>): () => void;
|
|
10
10
|
iterateListeners(cb: (listener: Partial<T>) => any): void;
|
|
11
11
|
iterateAsyncListeners(cb: (listener: Partial<T>) => Promise<any>): Promise<void>;
|
|
12
|
+
clearListeners(): void;
|
|
12
13
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { v4 as uuid } from 'uuid';
|
|
2
2
|
export class BaseObserver {
|
|
3
|
+
listeners;
|
|
3
4
|
constructor() {
|
|
4
5
|
this.listeners = {};
|
|
5
6
|
}
|
|
@@ -20,5 +21,8 @@ export class BaseObserver {
|
|
|
20
21
|
await cb(this.listeners[i]);
|
|
21
22
|
}
|
|
22
23
|
}
|
|
24
|
+
clearListeners() {
|
|
25
|
+
this.listeners = {};
|
|
26
|
+
}
|
|
23
27
|
}
|
|
24
28
|
//# sourceMappingURL=BaseObserver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseObserver.js","sourceRoot":"","sources":["../../src/utils/BaseObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAMlC,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"BaseObserver.js","sourceRoot":"","sources":["../../src/utils/BaseObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAMlC,MAAM,OAAO,YAAY;IACb,SAAS,CAA+B;IAElD;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,gBAAgB,CAAC,QAAoB;QACnC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QAC9B,OAAO,GAAG,EAAE;YACV,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,EAAiC;QAChD,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,EAA0C;QACpE,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-index.js","sourceRoot":"","sources":["../../src/utils/utils-index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,
|
|
1
|
+
{"version":3,"file":"utils-index.js","sourceRoot":"","sources":["../../src/utils/utils-index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powersync/lib-services-framework",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
|
-
"version": "0.0.0-dev-
|
|
4
|
+
"version": "0.0.0-dev-20250507151436",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -16,19 +16,20 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"ajv": "^8.12.0",
|
|
18
18
|
"better-ajv-errors": "^1.2.0",
|
|
19
|
-
"bson": "^6.
|
|
19
|
+
"bson": "^6.10.3",
|
|
20
20
|
"dotenv": "^16.4.5",
|
|
21
21
|
"ipaddr.js": "^2.1.0",
|
|
22
22
|
"lodash": "^4.17.21",
|
|
23
23
|
"ts-codec": "^1.3.0",
|
|
24
24
|
"uuid": "^9.0.1",
|
|
25
25
|
"winston": "^3.13.0",
|
|
26
|
-
"zod": "^3.23.8"
|
|
26
|
+
"zod": "^3.23.8",
|
|
27
|
+
"@powersync/service-errors": "0.2.2"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
30
|
"@types/lodash": "^4.17.5",
|
|
30
31
|
"@types/uuid": "^9.0.4",
|
|
31
|
-
"vitest": "^
|
|
32
|
+
"vitest": "^3.0.5"
|
|
32
33
|
},
|
|
33
34
|
"scripts": {
|
|
34
35
|
"clean": "rm -r ./dist && tsc -b --clean",
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export declare enum ErrorSeverity {
|
|
2
|
-
INFO = "info",
|
|
3
|
-
WARNING = "warning",
|
|
4
|
-
ERROR = "error"
|
|
5
|
-
}
|
|
6
|
-
export type ErrorData = {
|
|
7
|
-
name?: string;
|
|
8
|
-
code: string;
|
|
9
|
-
description: string;
|
|
10
|
-
severity?: ErrorSeverity;
|
|
11
|
-
details?: string;
|
|
12
|
-
status?: number;
|
|
13
|
-
stack?: string;
|
|
14
|
-
origin?: string;
|
|
15
|
-
trace_id?: string;
|
|
16
|
-
};
|
|
17
|
-
export declare class JourneyError extends Error {
|
|
18
|
-
is_journey_error: boolean;
|
|
19
|
-
errorData: ErrorData;
|
|
20
|
-
static isJourneyError(input: any): input is JourneyError;
|
|
21
|
-
private static errorMessage;
|
|
22
|
-
constructor(data: ErrorData);
|
|
23
|
-
toString(): string | undefined;
|
|
24
|
-
toJSON(): ErrorData;
|
|
25
|
-
setTraceId(id: string): void;
|
|
26
|
-
}
|
|
27
|
-
export declare class ValidationError extends JourneyError {
|
|
28
|
-
static CODE: string;
|
|
29
|
-
constructor(errors: any);
|
|
30
|
-
}
|
|
31
|
-
export declare class AuthorizationError extends JourneyError {
|
|
32
|
-
static CODE: string;
|
|
33
|
-
constructor(errors: any);
|
|
34
|
-
}
|
|
35
|
-
export declare class InternalServerError extends JourneyError {
|
|
36
|
-
static CODE: string;
|
|
37
|
-
constructor(err: Error);
|
|
38
|
-
}
|
|
39
|
-
export declare class ResourceNotFound extends JourneyError {
|
|
40
|
-
static CODE: string;
|
|
41
|
-
/**
|
|
42
|
-
* @deprecated Use the (resource, id) constructor instead.
|
|
43
|
-
* @param id
|
|
44
|
-
*/
|
|
45
|
-
constructor(id: string);
|
|
46
|
-
constructor(resource: string, id: string);
|
|
47
|
-
}
|
|
48
|
-
export declare class ResourceConflict extends JourneyError {
|
|
49
|
-
static CODE: string;
|
|
50
|
-
constructor(details: string);
|
|
51
|
-
}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
export var ErrorSeverity;
|
|
2
|
-
(function (ErrorSeverity) {
|
|
3
|
-
ErrorSeverity["INFO"] = "info";
|
|
4
|
-
ErrorSeverity["WARNING"] = "warning";
|
|
5
|
-
ErrorSeverity["ERROR"] = "error";
|
|
6
|
-
})(ErrorSeverity || (ErrorSeverity = {}));
|
|
7
|
-
// Maybe this could be renamed to ServiceError or something similar
|
|
8
|
-
export class JourneyError extends Error {
|
|
9
|
-
static isJourneyError(input) {
|
|
10
|
-
return input instanceof JourneyError || input?.is_journey_error == true;
|
|
11
|
-
}
|
|
12
|
-
static errorMessage(data) {
|
|
13
|
-
let message = `[${data.code}] ${data.description}`;
|
|
14
|
-
if (data.details) {
|
|
15
|
-
message += `\n ${data.details}`;
|
|
16
|
-
}
|
|
17
|
-
return message;
|
|
18
|
-
}
|
|
19
|
-
constructor(data) {
|
|
20
|
-
super(JourneyError.errorMessage(data));
|
|
21
|
-
this.is_journey_error = true;
|
|
22
|
-
this.errorData = data;
|
|
23
|
-
if (data.stack) {
|
|
24
|
-
this.stack = data.stack;
|
|
25
|
-
}
|
|
26
|
-
this.name = data.name || this.constructor.name;
|
|
27
|
-
this.errorData.name = this.name;
|
|
28
|
-
}
|
|
29
|
-
toString() {
|
|
30
|
-
return this.stack;
|
|
31
|
-
}
|
|
32
|
-
toJSON() {
|
|
33
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
34
|
-
return this.errorData;
|
|
35
|
-
}
|
|
36
|
-
return {
|
|
37
|
-
name: this.errorData.name,
|
|
38
|
-
code: this.errorData.code,
|
|
39
|
-
status: this.errorData.status,
|
|
40
|
-
description: this.errorData.description,
|
|
41
|
-
details: this.errorData.details,
|
|
42
|
-
trace_id: this.errorData.trace_id,
|
|
43
|
-
severity: this.errorData.severity,
|
|
44
|
-
origin: this.errorData.origin
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
setTraceId(id) {
|
|
48
|
-
this.errorData.trace_id = id;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
export class ValidationError extends JourneyError {
|
|
52
|
-
constructor(errors) {
|
|
53
|
-
super({
|
|
54
|
-
code: ValidationError.CODE,
|
|
55
|
-
status: 400,
|
|
56
|
-
description: 'Validation failed',
|
|
57
|
-
details: JSON.stringify(errors)
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
ValidationError.CODE = 'VALIDATION_ERROR';
|
|
62
|
-
export class AuthorizationError extends JourneyError {
|
|
63
|
-
constructor(errors) {
|
|
64
|
-
super({
|
|
65
|
-
code: AuthorizationError.CODE,
|
|
66
|
-
status: 401,
|
|
67
|
-
description: 'Authorization failed',
|
|
68
|
-
details: errors
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
AuthorizationError.CODE = 'AUTHORIZATION';
|
|
73
|
-
export class InternalServerError extends JourneyError {
|
|
74
|
-
constructor(err) {
|
|
75
|
-
super({
|
|
76
|
-
code: InternalServerError.CODE,
|
|
77
|
-
severity: ErrorSeverity.ERROR,
|
|
78
|
-
status: 500,
|
|
79
|
-
description: 'Something went wrong',
|
|
80
|
-
details: err.message,
|
|
81
|
-
stack: process.env.NODE_ENV !== 'production' ? err.stack : undefined
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
InternalServerError.CODE = 'INTERNAL_SERVER_ERROR';
|
|
86
|
-
export class ResourceNotFound extends JourneyError {
|
|
87
|
-
constructor(resource, id) {
|
|
88
|
-
const combinedId = id ? `${resource}/${id}` : resource;
|
|
89
|
-
super({
|
|
90
|
-
code: ResourceNotFound.CODE,
|
|
91
|
-
status: 404,
|
|
92
|
-
description: 'The requested resource does not exist on this server',
|
|
93
|
-
details: `The resource ${combinedId} does not exist on this server`,
|
|
94
|
-
severity: ErrorSeverity.INFO
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
ResourceNotFound.CODE = 'RESOURCE_NOT_FOUND';
|
|
99
|
-
export class ResourceConflict extends JourneyError {
|
|
100
|
-
constructor(details) {
|
|
101
|
-
super({
|
|
102
|
-
code: ResourceConflict.CODE,
|
|
103
|
-
status: 409,
|
|
104
|
-
description: 'The specified resource already exists on this server',
|
|
105
|
-
details: details,
|
|
106
|
-
severity: ErrorSeverity.INFO
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
ResourceConflict.CODE = 'RESOURCE_CONFLICT';
|
|
111
|
-
//# sourceMappingURL=framework-errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"framework-errors.js","sourceRoot":"","sources":["../../src/errors/framework-errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,oCAAmB,CAAA;IACnB,gCAAe,CAAA;AACjB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAkBD,mEAAmE;AACnE,MAAM,OAAO,YAAa,SAAQ,KAAK;IAKrC,MAAM,CAAC,cAAc,CAAC,KAAU;QAC9B,OAAO,KAAK,YAAY,YAAY,IAAI,KAAK,EAAE,gBAAgB,IAAI,IAAI,CAAC;IAC1E,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,IAAe;QACzC,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QACnD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,IAAe;QACzB,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAjBzC,qBAAgB,GAAG,IAAI,CAAC;QAmBtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAClC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM;QACJ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QACD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;YACzB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;YACzB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;YAC7B,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW;YACvC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;YAC/B,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;YACjC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;YACjC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;SAC9B,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAE/C,YAAY,MAAW;QACrB,KAAK,CAAC;YACJ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,mBAAmB;YAChC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;;AARM,oBAAI,GAAG,kBAAkB,CAAC;AAWnC,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAElD,YAAY,MAAW;QACrB,KAAK,CAAC;YACJ,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;IACL,CAAC;;AARM,uBAAI,GAAG,eAAe,CAAC;AAWhC,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IAEnD,YAAY,GAAU;QACpB,KAAK,CAAC;YACJ,IAAI,EAAE,mBAAmB,CAAC,IAAI;YAC9B,QAAQ,EAAE,aAAa,CAAC,KAAK;YAC7B,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC,CAAC;IACL,CAAC;;AAVM,wBAAI,GAAG,uBAAuB,CAAC;AAaxC,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAUhD,YAAY,QAAgB,EAAE,EAAW;QACvC,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvD,KAAK,CAAC;YACJ,IAAI,EAAE,gBAAgB,CAAC,IAAI;YAC3B,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,sDAAsD;YACnE,OAAO,EAAE,gBAAgB,UAAU,gCAAgC;YACnE,QAAQ,EAAE,aAAa,CAAC,IAAI;SAC7B,CAAC,CAAC;IACL,CAAC;;AAlBM,qBAAI,GAAG,oBAAoB,CAAC;AAqBrC,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAGhD,YAAY,OAAe;QACzB,KAAK,CAAC;YACJ,IAAI,EAAE,gBAAgB,CAAC,IAAI;YAC3B,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,sDAAsD;YACnE,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,aAAa,CAAC,IAAI;SAC7B,CAAC,CAAC;IACL,CAAC;;AAVM,qBAAI,GAAG,mBAAmB,CAAC"}
|
package/dist/errors/utils.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ErrorData, JourneyError } from './framework-errors.js';
|
|
2
|
-
export declare const isJourneyError: (err: any) => err is JourneyError;
|
|
3
|
-
export declare const getErrorData: (err: Error | any) => ErrorData | undefined;
|
|
4
|
-
export declare const matchesErrorCode: (err: Error | any, code: string) => boolean;
|
package/dist/errors/utils.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { JourneyError } from './framework-errors.js';
|
|
2
|
-
export const isJourneyError = (err) => {
|
|
3
|
-
const matches = JourneyError.isJourneyError(err);
|
|
4
|
-
return !!matches;
|
|
5
|
-
};
|
|
6
|
-
export const getErrorData = (err) => {
|
|
7
|
-
if (!isJourneyError(err)) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
return err.toJSON();
|
|
11
|
-
};
|
|
12
|
-
export const matchesErrorCode = (err, code) => {
|
|
13
|
-
if (isJourneyError(err)) {
|
|
14
|
-
return err.errorData.code === code;
|
|
15
|
-
}
|
|
16
|
-
return false;
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/errors/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/errors/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAuB,EAAE;IAC9D,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAgB,EAAyB,EAAE;IACtE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAgB,EAAE,IAAY,EAAE,EAAE;IACjE,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { BaseObserver, ObserverClient } from './BaseObserver.js';
|
|
2
|
-
export interface DisposableListener {
|
|
3
|
-
/**
|
|
4
|
-
* Event which is fired when the `[Symbol.disposed]` method is called.
|
|
5
|
-
*/
|
|
6
|
-
disposed: () => void;
|
|
7
|
-
}
|
|
8
|
-
export interface ManagedObserverClient<T extends DisposableListener> extends ObserverClient<T> {
|
|
9
|
-
/**
|
|
10
|
-
* Registers a listener that is automatically disposed when the parent is disposed.
|
|
11
|
-
* This is useful for disposing nested listeners.
|
|
12
|
-
*/
|
|
13
|
-
registerManagedListener: (parent: DisposableObserverClient<DisposableListener>, cb: Partial<T>) => () => void;
|
|
14
|
-
}
|
|
15
|
-
export interface DisposableObserverClient<T extends DisposableListener> extends ManagedObserverClient<T>, Disposable {
|
|
16
|
-
}
|
|
17
|
-
export interface AsyncDisposableObserverClient<T extends DisposableListener> extends ManagedObserverClient<T>, AsyncDisposable {
|
|
18
|
-
}
|
|
19
|
-
export declare class DisposableObserver<T extends DisposableListener> extends BaseObserver<T> implements DisposableObserverClient<T> {
|
|
20
|
-
registerManagedListener(parent: DisposableObserverClient<DisposableListener>, cb: Partial<T>): () => void;
|
|
21
|
-
[Symbol.dispose](): void;
|
|
22
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { BaseObserver } from './BaseObserver.js';
|
|
2
|
-
export class DisposableObserver extends BaseObserver {
|
|
3
|
-
registerManagedListener(parent, cb) {
|
|
4
|
-
const disposer = this.registerListener(cb);
|
|
5
|
-
parent.registerListener({
|
|
6
|
-
disposed: () => {
|
|
7
|
-
disposer();
|
|
8
|
-
}
|
|
9
|
-
});
|
|
10
|
-
return disposer;
|
|
11
|
-
}
|
|
12
|
-
[Symbol.dispose]() {
|
|
13
|
-
this.iterateListeners((cb) => cb.disposed?.());
|
|
14
|
-
// Delete all callbacks
|
|
15
|
-
Object.keys(this.listeners).forEach((key) => delete this.listeners[key]);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=DisposableObserver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DisposableObserver.js","sourceRoot":"","sources":["../../src/utils/DisposableObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,mBAAmB,CAAC;AAsBjE,MAAM,OAAO,kBACX,SAAQ,YAAe;IAGvB,uBAAuB,CAAC,MAAoD,EAAE,EAAc;QAC1F,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,gBAAgB,CAAC;YACtB,QAAQ,EAAE,GAAG,EAAE;gBACb,QAAQ,EAAE,CAAC;YACb,CAAC;SACF,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/C,uBAAuB;QACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF"}
|