@xylabs/base 5.0.65 → 5.0.67
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/neutral/Base.d.ts +3 -11
- package/dist/neutral/Base.d.ts.map +1 -1
- package/dist/neutral/BaseContext.d.ts +4 -0
- package/dist/neutral/BaseContext.d.ts.map +1 -0
- package/dist/neutral/BaseContext.zod.d.ts +19 -0
- package/dist/neutral/BaseContext.zod.d.ts.map +1 -0
- package/dist/neutral/BaseParams.d.ts +19 -0
- package/dist/neutral/BaseParams.d.ts.map +1 -0
- package/dist/neutral/BaseParams.zod.d.ts +17 -0
- package/dist/neutral/BaseParams.zod.d.ts.map +1 -0
- package/dist/neutral/BaseV2.d.ts +19 -0
- package/dist/neutral/BaseV2.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +6 -1
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +58 -12
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/map/AsyncMap.d.ts +36 -0
- package/dist/neutral/map/AsyncMap.d.ts.map +1 -0
- package/dist/neutral/map/MapType.d.ts +10 -0
- package/dist/neutral/map/MapType.d.ts.map +1 -0
- package/dist/neutral/map/SyncMap.d.ts +35 -0
- package/dist/neutral/map/SyncMap.d.ts.map +1 -0
- package/dist/neutral/map/index.d.ts +4 -0
- package/dist/neutral/map/index.d.ts.map +1 -0
- package/package.json +10 -5
- package/src/Base.ts +6 -12
- package/src/BaseContext.ts +5 -0
- package/src/BaseContext.zod.ts +29 -0
- package/src/BaseParams.ts +23 -0
- package/src/BaseParams.zod.ts +14 -0
- package/src/BaseV2.ts +31 -0
- package/src/index.ts +6 -1
- package/src/map/AsyncMap.ts +32 -0
- package/src/map/MapType.ts +20 -0
- package/src/map/SyncMap.ts +32 -0
- package/src/map/index.ts +3 -0
- package/dist/neutral/UniqueBase.d.ts +0 -9
- package/dist/neutral/UniqueBase.d.ts.map +0 -1
- package/src/UniqueBase.ts +0 -13
package/dist/neutral/Base.d.ts
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import type { Meter,
|
|
1
|
+
import type { Meter, Tracer } from '@opentelemetry/api';
|
|
2
2
|
import type { Logger } from '@xylabs/logger';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
__baseClassName: true;
|
|
6
|
-
};
|
|
7
|
-
export type BaseParamsFields = {
|
|
8
|
-
logger?: Logger;
|
|
9
|
-
meterProvider?: MeterProvider;
|
|
10
|
-
traceProvider?: TracerProvider;
|
|
11
|
-
};
|
|
12
|
-
export type BaseParams<TAdditionalParams extends EmptyObject = EmptyObject> = TAdditionalParams & BaseParamsFields;
|
|
3
|
+
import type { BaseClassName, BaseParams } from './BaseParams.ts';
|
|
4
|
+
/** @deprecated use BaseV2 instead */
|
|
13
5
|
export declare abstract class Base<TParams extends BaseParams = BaseParams> {
|
|
14
6
|
static defaultLogger?: Logger;
|
|
15
7
|
static readonly globalInstances: Record<BaseClassName, WeakRef<Base>[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Base.d.ts","sourceRoot":"","sources":["../../src/Base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"Base.d.ts","sourceRoot":"","sources":["../../src/Base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,MAAM,EACP,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,EACV,aAAa,EAAE,UAAU,EAC1B,MAAM,iBAAiB,CAAA;AAQxB,qCAAqC;AACrC,8BAAsB,IAAI,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IAChE,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC7B,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAK;IAC5E,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAK;IACjF,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA2B;IAC1D,OAAO,CAAC,MAAM,CAAC,YAAY,CAAuB;IAClD,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAA+B;IAC9D,OAAO,CAAC,MAAM,CAAC,OAAO,CAAI;IAC1B,OAAO,CAAC,MAAM,CAAC,eAAe,CAAmB;IACjD,OAAO,CAAC,OAAO,CAAqB;gBAExB,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC;IAMvC,MAAM,KAAK,eAAe,IAIQ,MAAM,CAFvC;IAED,MAAM,KAAK,eAAe,CAAC,KAAK,EAAE,MAAM,EAGvC;IAED,MAAM,KAAK,WAAW,IAIQ,MAAM,CAFnC;IAED,MAAM,KAAK,WAAW,CAAC,KAAK,EAAE,MAAM,EAGnC;IAED,MAAM,KAAK,cAAc,IAIQ,MAAM,CAFtC;IAED,MAAM,KAAK,cAAc,CAAC,KAAK,EAAE,MAAM,EAEtC;IAED,MAAM,KAAK,eAAe,WAEzB;IAED,IAAI,MAAM,uBAET;IAED,IAAI,KAAK,IAAI,KAAK,GAAG,SAAS,CAE7B;IAED,IAAI,MAAM,wBAET;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAChC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAWzC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM;IAItD,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC;IAOtD,MAAM,CAAC,YAAY,IAAI,IAAI;IAe3B,MAAM,CAAC,WAAW,IAAI,IAAI;IAO1B,OAAO,CAAC,MAAM,CAAC,YAAY;IAQ3B,OAAO,CAAC,MAAM,CAAC,KAAK;IAMpB,OAAO,CAAC,MAAM,CAAC,OAAO;IAKtB,OAAO,CAAC,cAAc;CAMvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseContext.d.ts","sourceRoot":"","sources":["../../src/BaseContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MeterProvider, TracerProvider } from '@opentelemetry/api';
|
|
2
|
+
import type { Logger } from '@xylabs/logger';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import type { MapType } from './map/index.ts';
|
|
5
|
+
export declare const CachesZod: z.ZodRecord<z.ZodString, z.ZodCustom<MapType<string, unknown>, MapType<string, unknown>>>;
|
|
6
|
+
export declare const SingletonsZod: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
7
|
+
export declare const LoggerZod: z.ZodCustom<Logger, Logger>;
|
|
8
|
+
export declare const MeterProviderZod: z.ZodCustom<MeterProvider, MeterProvider>;
|
|
9
|
+
export declare const TracerProviderZod: z.ZodCustom<TracerProvider, TracerProvider>;
|
|
10
|
+
export declare const TimeBudgetLimitZod: z.ZodNumber;
|
|
11
|
+
export declare const BaseContextZod: z.ZodObject<{
|
|
12
|
+
caches: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodCustom<MapType<string, unknown>, MapType<string, unknown>>>>;
|
|
13
|
+
logger: z.ZodOptional<z.ZodCustom<Logger, Logger>>;
|
|
14
|
+
meterProvider: z.ZodOptional<z.ZodCustom<MeterProvider, MeterProvider>>;
|
|
15
|
+
singletons: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
16
|
+
timeBudgetLimit: z.ZodOptional<z.ZodNumber>;
|
|
17
|
+
traceProvider: z.ZodOptional<z.ZodCustom<TracerProvider, TracerProvider>>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
//# sourceMappingURL=BaseContext.zod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseContext.zod.d.ts","sourceRoot":"","sources":["../../src/BaseContext.zod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE7C,eAAO,MAAM,SAAS,2FAGrB,CAAA;AAED,eAAO,MAAM,aAAa,wCAAoC,CAAA;AAE9D,eAAO,MAAM,SAAS,6BAA6F,CAAA;AAEnH,eAAO,MAAM,gBAAgB,2CAAsF,CAAA;AAEnH,eAAO,MAAM,iBAAiB,6CAAwF,CAAA;AAEtH,eAAO,MAAM,kBAAkB,aAAa,CAAA;AAE5C,eAAO,MAAM,cAAc;;;;;;;iBAOzB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MeterProvider, TracerProvider } from '@opentelemetry/api';
|
|
2
|
+
import type { Logger } from '@xylabs/logger';
|
|
3
|
+
import type { EmptyObject } from '@xylabs/object';
|
|
4
|
+
import type z from 'zod';
|
|
5
|
+
import type { BaseParamsV2Zod } from './BaseParams.zod.ts';
|
|
6
|
+
export type BaseClassName = string & {
|
|
7
|
+
__baseClassName: true;
|
|
8
|
+
};
|
|
9
|
+
export type BaseParamsDeprecated = {
|
|
10
|
+
/** @deprecated Use context.logger instead */
|
|
11
|
+
logger?: Logger;
|
|
12
|
+
/** @deprecated Use context.meterProvider instead */
|
|
13
|
+
meterProvider?: MeterProvider;
|
|
14
|
+
/** @deprecated Use context.traceProvider instead */
|
|
15
|
+
traceProvider?: TracerProvider;
|
|
16
|
+
};
|
|
17
|
+
export type BaseParams<TAdditionalParams extends EmptyObject = EmptyObject> = TAdditionalParams & BaseParamsDeprecated;
|
|
18
|
+
export type BaseParamsV2 = z.infer<typeof BaseParamsV2Zod> & BaseParams;
|
|
19
|
+
//# sourceMappingURL=BaseParams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseParams.d.ts","sourceRoot":"","sources":["../../src/BaseParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,eAAe,EAAE,IAAI,CAAA;CAAE,CAAA;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,oDAAoD;IACpD,aAAa,CAAC,EAAE,aAAa,CAAA;IAE7B,oDAAoD;IACpD,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,iBAAiB,SAAS,WAAW,GAAG,WAAW,IAAI,iBAAiB,GAAG,oBAAoB,CAAA;AAEtH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GAAG,UAAU,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const BaseParamsZod: z.ZodObject<{
|
|
3
|
+
logger: z.ZodOptional<z.ZodCustom<import("@xylabs/logger").Logger, import("@xylabs/logger").Logger>>;
|
|
4
|
+
meterProvider: z.ZodOptional<z.ZodCustom<import("@opentelemetry/api").MeterProvider, import("@opentelemetry/api").MeterProvider>>;
|
|
5
|
+
traceProvider: z.ZodOptional<z.ZodCustom<import("@opentelemetry/api").TracerProvider, import("@opentelemetry/api").TracerProvider>>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export declare const BaseParamsV2Zod: z.ZodObject<{
|
|
8
|
+
context: z.ZodObject<{
|
|
9
|
+
caches: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodCustom<import("./index.ts").MapType<string, unknown>, import("./index.ts").MapType<string, unknown>>>>;
|
|
10
|
+
logger: z.ZodOptional<z.ZodCustom<import("@xylabs/logger").Logger, import("@xylabs/logger").Logger>>;
|
|
11
|
+
meterProvider: z.ZodOptional<z.ZodCustom<import("@opentelemetry/api").MeterProvider, import("@opentelemetry/api").MeterProvider>>;
|
|
12
|
+
singletons: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
13
|
+
timeBudgetLimit: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
traceProvider: z.ZodOptional<z.ZodCustom<import("@opentelemetry/api").TracerProvider, import("@opentelemetry/api").TracerProvider>>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
//# sourceMappingURL=BaseParams.zod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseParams.zod.d.ts","sourceRoot":"","sources":["../../src/BaseParams.zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,eAAO,MAAM,aAAa;;;;iBAIxB,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;iBAAwC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Meter, Tracer } from '@opentelemetry/api';
|
|
2
|
+
import { Base } from './Base.ts';
|
|
3
|
+
import type { BaseClassName, BaseParamsV2 } from './BaseParams.ts';
|
|
4
|
+
export declare abstract class BaseV2<TParams extends BaseParamsV2 = BaseParamsV2> extends Base<TParams> {
|
|
5
|
+
get context(): {
|
|
6
|
+
singletons: Record<string, unknown>;
|
|
7
|
+
caches?: Record<string, import("./index.ts").MapType<string, unknown>> | undefined;
|
|
8
|
+
logger?: import("@xylabs/logger").Logger | undefined;
|
|
9
|
+
meterProvider?: import("@opentelemetry/api").MeterProvider | undefined;
|
|
10
|
+
timeBudgetLimit?: number | undefined;
|
|
11
|
+
traceProvider?: import("@opentelemetry/api").TracerProvider | undefined;
|
|
12
|
+
};
|
|
13
|
+
get logger(): import("@xylabs/logger").Logger | undefined;
|
|
14
|
+
get meter(): Meter | undefined;
|
|
15
|
+
get params(): TParams;
|
|
16
|
+
get tracer(): Tracer | undefined;
|
|
17
|
+
abstract get className(): BaseClassName;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=BaseV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseV2.d.ts","sourceRoot":"","sources":["../../src/BaseV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,MAAM,EACP,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAElE,8BAAsB,MAAM,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,CAAE,SAAQ,IAAI,CAAC,OAAO,CAAC;IAC7F,IAAI,OAAO;;;;;;;MAEV;IAED,IAAa,MAAM,gDAElB;IAED,IAAa,KAAK,IAAI,KAAK,GAAG,SAAS,CAEtC;IAED,IAAa,MAAM,IAAI,OAAO,CAE7B;IAED,IAAa,MAAM,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,QAAQ,KAAK,SAAS,IAAI,aAAa,CAAA;CACxC"}
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export * from './Base.ts';
|
|
2
|
+
export * from './BaseContext.ts';
|
|
3
|
+
export * from './BaseContext.zod.ts';
|
|
4
|
+
export * from './BaseParams.ts';
|
|
5
|
+
export * from './BaseParams.zod.ts';
|
|
6
|
+
export * from './BaseV2.ts';
|
|
2
7
|
export * from './globallyUnique.ts';
|
|
3
|
-
export * from './
|
|
8
|
+
export * from './map/index.ts';
|
|
4
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -114,6 +114,54 @@ var Base = class _Base {
|
|
|
114
114
|
}
|
|
115
115
|
};
|
|
116
116
|
|
|
117
|
+
// src/BaseContext.zod.ts
|
|
118
|
+
import { z } from "zod";
|
|
119
|
+
var CachesZod = z.record(
|
|
120
|
+
z.string(),
|
|
121
|
+
z.custom((val) => val && typeof val === "object" && ("get" in val || "set" in val))
|
|
122
|
+
);
|
|
123
|
+
var SingletonsZod = z.record(z.string(), z.unknown());
|
|
124
|
+
var LoggerZod = z.custom((val) => val && typeof val === "object" && "info" in val && "error" in val);
|
|
125
|
+
var MeterProviderZod = z.custom((val) => val && typeof val === "object" && "getMeter" in val);
|
|
126
|
+
var TracerProviderZod = z.custom((val) => val && typeof val === "object" && "getTracer" in val);
|
|
127
|
+
var TimeBudgetLimitZod = z.number();
|
|
128
|
+
var BaseContextZod = z.object({
|
|
129
|
+
caches: CachesZod.optional(),
|
|
130
|
+
logger: LoggerZod.optional(),
|
|
131
|
+
meterProvider: MeterProviderZod.optional(),
|
|
132
|
+
singletons: SingletonsZod,
|
|
133
|
+
timeBudgetLimit: TimeBudgetLimitZod.optional(),
|
|
134
|
+
traceProvider: TracerProviderZod.optional()
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
// src/BaseParams.zod.ts
|
|
138
|
+
import { z as z2 } from "zod";
|
|
139
|
+
var BaseParamsZod = z2.object({
|
|
140
|
+
logger: LoggerZod.optional(),
|
|
141
|
+
meterProvider: MeterProviderZod.optional(),
|
|
142
|
+
traceProvider: TracerProviderZod.optional()
|
|
143
|
+
});
|
|
144
|
+
var BaseParamsV2Zod = z2.object({ context: BaseContextZod });
|
|
145
|
+
|
|
146
|
+
// src/BaseV2.ts
|
|
147
|
+
var BaseV2 = class _BaseV2 extends Base {
|
|
148
|
+
get context() {
|
|
149
|
+
return this.params.context;
|
|
150
|
+
}
|
|
151
|
+
get logger() {
|
|
152
|
+
return this.context.logger ?? _BaseV2.defaultLogger;
|
|
153
|
+
}
|
|
154
|
+
get meter() {
|
|
155
|
+
return this.context.meterProvider?.getMeter(this.className);
|
|
156
|
+
}
|
|
157
|
+
get params() {
|
|
158
|
+
return super.params;
|
|
159
|
+
}
|
|
160
|
+
get tracer() {
|
|
161
|
+
return this.context.traceProvider?.getTracer(this.className);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
|
|
117
165
|
// src/globallyUnique.ts
|
|
118
166
|
var xyoGlobal = () => {
|
|
119
167
|
globalThis.xylabs = globalThis.xylabs ?? {};
|
|
@@ -139,20 +187,18 @@ var globallyUnique = (name, value, domain = "global") => {
|
|
|
139
187
|
}
|
|
140
188
|
return uniqueName;
|
|
141
189
|
};
|
|
142
|
-
|
|
143
|
-
// src/UniqueBase.ts
|
|
144
|
-
var UniqueBase = class extends Base {
|
|
145
|
-
static uniqueDomain = "xy";
|
|
146
|
-
static uniqueName = globallyUnique(this.name, this, this.uniqueDomain);
|
|
147
|
-
// TODO: Remove xyo domain version when old xyo versions are no longer needed
|
|
148
|
-
static uniqueNameXyo = globallyUnique(this.name, this, "xyo");
|
|
149
|
-
constructor(params) {
|
|
150
|
-
super(params);
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
190
|
export {
|
|
154
191
|
Base,
|
|
155
|
-
|
|
192
|
+
BaseContextZod,
|
|
193
|
+
BaseParamsV2Zod,
|
|
194
|
+
BaseParamsZod,
|
|
195
|
+
BaseV2,
|
|
196
|
+
CachesZod,
|
|
197
|
+
LoggerZod,
|
|
198
|
+
MeterProviderZod,
|
|
199
|
+
SingletonsZod,
|
|
200
|
+
TimeBudgetLimitZod,
|
|
201
|
+
TracerProviderZod,
|
|
156
202
|
disableGloballyUnique,
|
|
157
203
|
globallyUnique
|
|
158
204
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Base.ts","../../src/globallyUnique.ts","../../src/UniqueBase.ts"],"sourcesContent":["import type {\n Meter,\n MeterProvider, Tracer, TracerProvider,\n} from '@opentelemetry/api'\nimport { assertEx } from '@xylabs/assert'\nimport type { Logger } from '@xylabs/logger'\nimport type { EmptyObject } from '@xylabs/object'\n\nconst DEFAULT_HISTORY_INTERVAL = 1000 * 5\nconst DEFAULT_HISTORY_TIME = 60 * 60 * 1000\nconst MAX_GC_FREQUENCY = 1000 * 60\nconst MIN_GC_FREQUENCY = 1000\nconst MIN_HISTORY_INTERVAL = 1000\n\nexport type BaseClassName = string & { __baseClassName: true }\n\nexport type BaseParamsFields = {\n logger?: Logger\n meterProvider?: MeterProvider\n traceProvider?: TracerProvider\n}\n\nexport type BaseParams<TAdditionalParams extends EmptyObject = EmptyObject> = TAdditionalParams & BaseParamsFields\n\nexport abstract class Base<TParams extends BaseParams = BaseParams> {\n static defaultLogger?: Logger\n static readonly globalInstances: Record<BaseClassName, WeakRef<Base>[]> = {}\n static readonly globalInstancesCountHistory: Record<BaseClassName, number[]> = {}\n private static _historyInterval = DEFAULT_HISTORY_INTERVAL\n private static _historyTime = DEFAULT_HISTORY_TIME\n private static _historyTimeout?: ReturnType<typeof setTimeout>\n private static _lastGC = 0\n private static _maxGcFrequency = MAX_GC_FREQUENCY\n private _params: BaseParams<TParams>\n\n constructor(params: BaseParams<TParams>) {\n this._params = params\n params?.logger?.debug(`Base constructed [${Object(this).name}]`)\n this.recordInstance()\n }\n\n static get historyInterval() {\n return this._historyInterval\n }\n\n static set historyInterval(value: number) {\n assertEx(value <= this.historyTime, () => `historyInterval [${value}] must be less than or equal to historyTime [${this.historyTime}]`)\n this._historyInterval = Math.max(value, MIN_HISTORY_INTERVAL)\n }\n\n static get historyTime() {\n return this._historyTime\n }\n\n static set historyTime(value: number) {\n assertEx(value >= this.historyInterval, () => `historyTime [${value}] must be greater than or equal to historyInterval [${this.historyInterval}]`)\n this._historyInterval = value\n }\n\n static get maxGcFrequency() {\n return this._maxGcFrequency\n }\n\n static set maxGcFrequency(value: number) {\n this._maxGcFrequency = Math.max(value, MIN_GC_FREQUENCY)\n }\n\n static get maxHistoryDepth() {\n return Math.floor(this.historyTime / this.historyInterval)\n }\n\n get logger() {\n return this.params?.logger ?? Base.defaultLogger\n }\n\n get meter(): Meter | undefined {\n return this.params?.meterProvider?.getMeter(this.constructor.name)\n }\n\n get params() {\n return this._params\n }\n\n get tracer(): Tracer | undefined {\n return this.params?.traceProvider?.getTracer(this.constructor.name)\n }\n\n static gc(force?: boolean): void\n static gc(className: BaseClassName): void\n static gc(classNameOrForce: BaseClassName | boolean = false): void {\n if (typeof classNameOrForce === 'string') {\n this.gcClass(classNameOrForce)\n } else {\n if (classNameOrForce || Date.now() - this._lastGC > this._maxGcFrequency) {\n this.gcAll()\n }\n }\n }\n\n static instanceCount(className: BaseClassName): number {\n return this.globalInstances[className]?.length ?? 0\n }\n\n static instanceCounts(): Record<BaseClassName, number> {\n this.gc()\n const result: Record<BaseClassName, number> = {}\n for (const [className, instances] of Object.entries(this.globalInstances)) result[className as BaseClassName] = instances.length\n return result\n }\n\n static startHistory(): void {\n if (this._historyTimeout) {\n this.stopHistory()\n }\n\n const timeoutHandler = () => {\n if (this._historyTimeout) {\n this.addToHistory()\n this._historyTimeout = setTimeout(timeoutHandler, this.historyInterval)\n }\n }\n\n this._historyTimeout = setTimeout(timeoutHandler, this.historyInterval)\n }\n\n static stopHistory(): void {\n if (this._historyTimeout) {\n clearTimeout(this._historyTimeout)\n this._historyTimeout = undefined\n }\n }\n\n private static addToHistory() {\n const counts = this.instanceCounts()\n for (const className of Object.keys(this.globalInstances) as BaseClassName[]) {\n this.globalInstancesCountHistory[className] = this.globalInstancesCountHistory[className]?.slice(-this.maxHistoryDepth) ?? []\n this.globalInstancesCountHistory[className].push(counts[className])\n }\n }\n\n private static gcAll() {\n for (const className of Object.keys(this.globalInstances) as BaseClassName[]) {\n this.gcClass(className)\n }\n }\n\n private static gcClass(className: BaseClassName) {\n // remove all the weak refs that are now empty\n this.globalInstances[className] = this.globalInstances[className]?.filter(ref => ref.deref() !== null) ?? []\n }\n\n private recordInstance() {\n const baseClassName = this.constructor.name as BaseClassName\n const instanceArray = Base.globalInstances[baseClassName] ?? []\n instanceArray.push(new WeakRef(this))\n Base.globalInstances[baseClassName] = instanceArray\n }\n}\n","declare global {\n var xylabs: {\n unique: Record<string, unknown>\n uniqueDisabled?: boolean\n }\n}\n\nconst xyoGlobal = () => {\n globalThis.xylabs = globalThis.xylabs ?? {}\n return globalThis.xylabs\n}\n\nexport const disableGloballyUnique = () => {\n xyoGlobal().uniqueDisabled = true\n}\n\nexport const globallyUnique = (name: string | symbol, value: unknown, domain = 'global') => {\n const uniqueName = domain === 'bundle' ? [domain, name].join(':') : [domain, import.meta.url, name].join(':')\n if (!xyoGlobal().uniqueDisabled) {\n const xylabs = globalThis.xylabs = globalThis.xylabs ?? {}\n const unique = (xylabs.unique = xylabs.unique ?? {})\n if (unique[uniqueName] === undefined) {\n unique[uniqueName] = value\n } else {\n if (unique[uniqueName] !== value) {\n throw new Error(\n `Global unique item ${uniqueName} already defined. Make sure you are not importing two versions of the package that contains this item`,\n )\n }\n }\n }\n return uniqueName\n}\n","import type { BaseParams } from './Base.ts'\nimport { Base } from './Base.ts'\nimport { globallyUnique } from './globallyUnique.ts'\n\nexport abstract class UniqueBase<TParams extends BaseParams = BaseParams> extends Base<TParams> {\n static readonly uniqueDomain = 'xy'\n static readonly uniqueName = globallyUnique(this.name, this, this.uniqueDomain)\n // TODO: Remove xyo domain version when old xyo versions are no longer needed\n static readonly uniqueNameXyo = globallyUnique(this.name, this, 'xyo')\n constructor(params: BaseParams<TParams>) {\n super(params)\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/Base.ts","../../src/BaseContext.zod.ts","../../src/BaseParams.zod.ts","../../src/BaseV2.ts","../../src/globallyUnique.ts"],"sourcesContent":["import type {\n Meter,\n Tracer,\n} from '@opentelemetry/api'\nimport { assertEx } from '@xylabs/assert'\nimport type { Logger } from '@xylabs/logger'\n\nimport type {\n BaseClassName, BaseParams,\n} from './BaseParams.ts'\n\nconst DEFAULT_HISTORY_INTERVAL = 1000 * 5\nconst DEFAULT_HISTORY_TIME = 60 * 60 * 1000\nconst MAX_GC_FREQUENCY = 1000 * 60\nconst MIN_GC_FREQUENCY = 1000\nconst MIN_HISTORY_INTERVAL = 1000\n\n/** @deprecated use BaseV2 instead */\nexport abstract class Base<TParams extends BaseParams = BaseParams> {\n static defaultLogger?: Logger\n static readonly globalInstances: Record<BaseClassName, WeakRef<Base>[]> = {}\n static readonly globalInstancesCountHistory: Record<BaseClassName, number[]> = {}\n private static _historyInterval = DEFAULT_HISTORY_INTERVAL\n private static _historyTime = DEFAULT_HISTORY_TIME\n private static _historyTimeout?: ReturnType<typeof setTimeout>\n private static _lastGC = 0\n private static _maxGcFrequency = MAX_GC_FREQUENCY\n private _params: BaseParams<TParams>\n\n constructor(params: BaseParams<TParams>) {\n this._params = params\n params?.logger?.debug(`Base constructed [${Object(this).name}]`)\n this.recordInstance()\n }\n\n static get historyInterval() {\n return this._historyInterval\n }\n\n static set historyInterval(value: number) {\n assertEx(value <= this.historyTime, () => `historyInterval [${value}] must be less than or equal to historyTime [${this.historyTime}]`)\n this._historyInterval = Math.max(value, MIN_HISTORY_INTERVAL)\n }\n\n static get historyTime() {\n return this._historyTime\n }\n\n static set historyTime(value: number) {\n assertEx(value >= this.historyInterval, () => `historyTime [${value}] must be greater than or equal to historyInterval [${this.historyInterval}]`)\n this._historyInterval = value\n }\n\n static get maxGcFrequency() {\n return this._maxGcFrequency\n }\n\n static set maxGcFrequency(value: number) {\n this._maxGcFrequency = Math.max(value, MIN_GC_FREQUENCY)\n }\n\n static get maxHistoryDepth() {\n return Math.floor(this.historyTime / this.historyInterval)\n }\n\n get logger() {\n return this.params?.logger ?? Base.defaultLogger\n }\n\n get meter(): Meter | undefined {\n return this.params?.meterProvider?.getMeter(this.constructor.name)\n }\n\n get params() {\n return this._params\n }\n\n get tracer(): Tracer | undefined {\n return this.params?.traceProvider?.getTracer(this.constructor.name)\n }\n\n static gc(force?: boolean): void\n static gc(className: BaseClassName): void\n static gc(classNameOrForce: BaseClassName | boolean = false): void {\n if (typeof classNameOrForce === 'string') {\n this.gcClass(classNameOrForce)\n } else {\n if (classNameOrForce || Date.now() - this._lastGC > this._maxGcFrequency) {\n this.gcAll()\n }\n }\n }\n\n static instanceCount(className: BaseClassName): number {\n return this.globalInstances[className]?.length ?? 0\n }\n\n static instanceCounts(): Record<BaseClassName, number> {\n this.gc()\n const result: Record<BaseClassName, number> = {}\n for (const [className, instances] of Object.entries(this.globalInstances)) result[className as BaseClassName] = instances.length\n return result\n }\n\n static startHistory(): void {\n if (this._historyTimeout) {\n this.stopHistory()\n }\n\n const timeoutHandler = () => {\n if (this._historyTimeout) {\n this.addToHistory()\n this._historyTimeout = setTimeout(timeoutHandler, this.historyInterval)\n }\n }\n\n this._historyTimeout = setTimeout(timeoutHandler, this.historyInterval)\n }\n\n static stopHistory(): void {\n if (this._historyTimeout) {\n clearTimeout(this._historyTimeout)\n this._historyTimeout = undefined\n }\n }\n\n private static addToHistory() {\n const counts = this.instanceCounts()\n for (const className of Object.keys(this.globalInstances) as BaseClassName[]) {\n this.globalInstancesCountHistory[className] = this.globalInstancesCountHistory[className]?.slice(-this.maxHistoryDepth) ?? []\n this.globalInstancesCountHistory[className].push(counts[className])\n }\n }\n\n private static gcAll() {\n for (const className of Object.keys(this.globalInstances) as BaseClassName[]) {\n this.gcClass(className)\n }\n }\n\n private static gcClass(className: BaseClassName) {\n // remove all the weak refs that are now empty\n this.globalInstances[className] = this.globalInstances[className]?.filter(ref => ref.deref() !== null) ?? []\n }\n\n private recordInstance() {\n const baseClassName = this.constructor.name as BaseClassName\n const instanceArray = Base.globalInstances[baseClassName] ?? []\n instanceArray.push(new WeakRef(this))\n Base.globalInstances[baseClassName] = instanceArray\n }\n}\n","import type { MeterProvider, TracerProvider } from '@opentelemetry/api'\nimport type { Logger } from '@xylabs/logger'\nimport { z } from 'zod'\n\nimport type { MapType } from './map/index.ts'\n\nexport const CachesZod = z.record(\n z.string(),\n z.custom<MapType<string, unknown>>(val => val && typeof val === 'object' && ('get' in val || 'set' in val)),\n)\n\nexport const SingletonsZod = z.record(z.string(), z.unknown())\n\nexport const LoggerZod = z.custom<Logger>(val => val && typeof val === 'object' && 'info' in val && 'error' in val)\n\nexport const MeterProviderZod = z.custom<MeterProvider>(val => val && typeof val === 'object' && 'getMeter' in val)\n\nexport const TracerProviderZod = z.custom<TracerProvider>(val => val && typeof val === 'object' && 'getTracer' in val)\n\nexport const TimeBudgetLimitZod = z.number()\n\nexport const BaseContextZod = z.object({\n caches: CachesZod.optional(),\n logger: LoggerZod.optional(),\n meterProvider: MeterProviderZod.optional(),\n singletons: SingletonsZod,\n timeBudgetLimit: TimeBudgetLimitZod.optional(),\n traceProvider: TracerProviderZod.optional(),\n})\n","import { z } from 'zod'\n\nimport {\n BaseContextZod, LoggerZod, MeterProviderZod,\n TracerProviderZod,\n} from './BaseContext.zod.ts'\n\nexport const BaseParamsZod = z.object({\n logger: LoggerZod.optional(),\n meterProvider: MeterProviderZod.optional(),\n traceProvider: TracerProviderZod.optional(),\n})\n\nexport const BaseParamsV2Zod = z.object({ context: BaseContextZod })\n","import type {\n Meter,\n Tracer,\n} from '@opentelemetry/api'\n\nimport { Base } from './Base.ts'\nimport type { BaseClassName, BaseParamsV2 } from './BaseParams.ts'\n\nexport abstract class BaseV2<TParams extends BaseParamsV2 = BaseParamsV2> extends Base<TParams> {\n get context() {\n return this.params.context\n }\n\n override get logger() {\n return this.context.logger ?? BaseV2.defaultLogger\n }\n\n override get meter(): Meter | undefined {\n return this.context.meterProvider?.getMeter(this.className)\n }\n\n override get params(): TParams {\n return super.params\n }\n\n override get tracer(): Tracer | undefined {\n return this.context.traceProvider?.getTracer(this.className)\n }\n\n abstract get className(): BaseClassName\n}\n","declare global {\n var xylabs: {\n unique: Record<string, unknown>\n uniqueDisabled?: boolean\n }\n}\n\nconst xyoGlobal = () => {\n globalThis.xylabs = globalThis.xylabs ?? {}\n return globalThis.xylabs\n}\n\nexport const disableGloballyUnique = () => {\n xyoGlobal().uniqueDisabled = true\n}\n\nexport const globallyUnique = (name: string | symbol, value: unknown, domain = 'global') => {\n const uniqueName = domain === 'bundle' ? [domain, name].join(':') : [domain, import.meta.url, name].join(':')\n if (!xyoGlobal().uniqueDisabled) {\n const xylabs = globalThis.xylabs = globalThis.xylabs ?? {}\n const unique = (xylabs.unique = xylabs.unique ?? {})\n if (unique[uniqueName] === undefined) {\n unique[uniqueName] = value\n } else {\n if (unique[uniqueName] !== value) {\n throw new Error(\n `Global unique item ${uniqueName} already defined. Make sure you are not importing two versions of the package that contains this item`,\n )\n }\n }\n }\n return uniqueName\n}\n"],"mappings":"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","names":["z","z"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/promise';
|
|
2
|
+
export interface AsyncMapRead<K, V> {
|
|
3
|
+
get(id: K): Promisable<V | undefined>;
|
|
4
|
+
getMany(id: K[]): Promisable<V[]>;
|
|
5
|
+
has(id: K): Promisable<boolean>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated Use AsyncMapRead instead
|
|
9
|
+
*/
|
|
10
|
+
export interface AsynchronousMapRead<K, V> extends AsyncMapRead<K, V> {
|
|
11
|
+
}
|
|
12
|
+
export interface AsyncMapWrite<K, V> {
|
|
13
|
+
clear(): Promisable<void>;
|
|
14
|
+
delete(id: K): Promisable<boolean>;
|
|
15
|
+
set(id: K, data: V): Promisable<K | undefined | void>;
|
|
16
|
+
setMany(entries: [K, V][]): Promisable<K[] | void>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated Use AsyncMapWrite instead
|
|
20
|
+
*/
|
|
21
|
+
export interface AsynchronousMapWrite<K, V> extends AsyncMapWrite<K, V> {
|
|
22
|
+
}
|
|
23
|
+
export interface AsyncMap<K, V> extends AsyncMapRead<K, V>, AsyncMapWrite<K, V> {
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Use AsyncMap instead
|
|
27
|
+
*/
|
|
28
|
+
export interface AsynchronousMap<K, V> extends AsyncMap<K, V> {
|
|
29
|
+
}
|
|
30
|
+
export interface AsyncIterableMapRead<K, V> extends AsyncMapRead<K, V>, AsyncIterable<[K, V]> {
|
|
31
|
+
}
|
|
32
|
+
export interface AsyncIterableMapWrite<K, V> extends AsyncMapWrite<K, V>, AsyncIterable<[K, V]> {
|
|
33
|
+
}
|
|
34
|
+
export interface AsyncIterableMap<K, V> extends AsyncMap<K, V>, AsyncIterable<[K, V]> {
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=AsyncMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncMap.d.ts","sourceRoot":"","sources":["../../../src/map/AsyncMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,WAAW,YAAY,CAAC,CAAC,EAAE,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAA;IACjC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;CAChC;AACD;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;CAAG;AAExE,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC;IACjC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAClC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,CAAA;IACrD,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;CACnD;AACD;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;CAAG;AAE1E,MAAM,WAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;CAAG;AAClF;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;CAAG;AAEhE,MAAM,WAAW,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAAG;AAC/F,MAAM,WAAW,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAAG;AACjG,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,SAAQ,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAAG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AsyncIterableMap, AsyncIterableMapRead, AsyncIterableMapWrite, AsyncMap, AsyncMapRead, AsyncMapWrite } from './AsyncMap.ts';
|
|
2
|
+
import type { SyncIterableMap, SyncIterableMapRead, SyncIterableMapWrite, SyncMap, SyncMapRead, SyncMapWrite } from './SyncMap.ts';
|
|
3
|
+
export type MapType<TId, TData> = SyncMap<TId, TData> | AsyncMap<TId, TData>;
|
|
4
|
+
export type MapTypeRead<TId, TData> = SyncMapRead<TId, TData> | AsyncMapRead<TId, TData>;
|
|
5
|
+
export type MapTypeWrite<TId, TData> = SyncMapWrite<TId, TData> | AsyncMapWrite<TId, TData>;
|
|
6
|
+
export type AsynchronousMapType<TId, TData> = AsyncMapRead<TId, TData> & AsyncMapWrite<TId, TData>;
|
|
7
|
+
export type IterableMapRead<TId, TData> = SyncIterableMapRead<TId, TData> | AsyncIterableMapRead<TId, TData>;
|
|
8
|
+
export type IterableMapWrite<TId, TData> = SyncIterableMapWrite<TId, TData> | AsyncIterableMapWrite<TId, TData>;
|
|
9
|
+
export type IterableMap<TId, TData> = SyncIterableMap<TId, TData> | AsyncIterableMap<TId, TData>;
|
|
10
|
+
//# sourceMappingURL=MapType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapType.d.ts","sourceRoot":"","sources":["../../../src/map/MapType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EACrG,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EACV,eAAe,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAC/F,MAAM,cAAc,CAAA;AAErB,MAAM,MAAM,OAAO,CAAC,GAAG,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAE5E,MAAM,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAExF,MAAM,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAE3F,MAAM,MAAM,mBAAmB,CAAC,GAAG,EAAE,KAAK,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAElG,MAAM,MAAM,eAAe,CAAC,GAAG,EAAE,KAAK,IAAI,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAE5G,MAAM,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,IAAI,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAE/G,MAAM,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface SyncMapRead<K, V> {
|
|
2
|
+
get(id: K): V | undefined;
|
|
3
|
+
getMany(id: K[]): V[];
|
|
4
|
+
has(id: K): boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Use SyncMapRead instead
|
|
8
|
+
*/
|
|
9
|
+
export interface SynchronousMapRead<K, V> extends SyncMapRead<K, V> {
|
|
10
|
+
}
|
|
11
|
+
export interface SyncMapWrite<K, V> {
|
|
12
|
+
clear(): void;
|
|
13
|
+
delete(id: K): boolean;
|
|
14
|
+
set(id: K, data: V): K | undefined | void;
|
|
15
|
+
setMany(entries: [K, V][]): K[] | void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated Use SyncMapWrite instead
|
|
19
|
+
*/
|
|
20
|
+
export interface SynchronousMapWrite<K, V> extends SyncMapWrite<K, V> {
|
|
21
|
+
}
|
|
22
|
+
export interface SyncMap<K, V> extends SyncMapRead<K, V>, SyncMapWrite<K, V> {
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated Use SyncMap instead
|
|
26
|
+
*/
|
|
27
|
+
export interface SynchronousMap<K, V> extends SyncMap<K, V> {
|
|
28
|
+
}
|
|
29
|
+
export interface SyncIterableMapRead<K, V> extends SyncMapRead<K, V>, Iterable<[K, V]> {
|
|
30
|
+
}
|
|
31
|
+
export interface SyncIterableMapWrite<K, V> extends SyncMapWrite<K, V>, Iterable<[K, V]> {
|
|
32
|
+
}
|
|
33
|
+
export interface SyncIterableMap<K, V> extends SyncMap<K, V>, Iterable<[K, V]> {
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=SyncMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncMap.d.ts","sourceRoot":"","sources":["../../../src/map/SyncMap.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC;IAC/B,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;IACzB,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;IACrB,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;CAAG;AAEtE,MAAM,WAAW,YAAY,CAAC,CAAC,EAAE,CAAC;IAChC,KAAK,IAAI,IAAI,CAAA;IACb,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAA;IACtB,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAA;IACzC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAA;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;CAAG;AAExE,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;CAAG;AAC/E;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAAG;AAE9D,MAAM,WAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAAG;AACzF,MAAM,WAAW,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAAG;AAC3F,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/map/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xylabs/base",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.67",
|
|
4
4
|
"description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -39,15 +39,20 @@
|
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@opentelemetry/api": "^1.9.0",
|
|
42
|
-
"@xylabs/assert": "~5.0.
|
|
43
|
-
"@xylabs/logger": "~5.0.
|
|
44
|
-
"@xylabs/object": "~5.0.
|
|
42
|
+
"@xylabs/assert": "~5.0.67",
|
|
43
|
+
"@xylabs/logger": "~5.0.67",
|
|
44
|
+
"@xylabs/object": "~5.0.67",
|
|
45
|
+
"@xylabs/promise": "~5.0.67"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@xylabs/ts-scripts-yarn3": "~7.3.2",
|
|
48
49
|
"@xylabs/tsconfig": "~7.3.2",
|
|
49
50
|
"tslib": "~2.8.1",
|
|
50
|
-
"typescript": "~5.9.3"
|
|
51
|
+
"typescript": "~5.9.3",
|
|
52
|
+
"zod": "^4.3.6"
|
|
53
|
+
},
|
|
54
|
+
"peerDependencies": {
|
|
55
|
+
"zod": "^4"
|
|
51
56
|
},
|
|
52
57
|
"publishConfig": {
|
|
53
58
|
"access": "public"
|
package/src/Base.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
Meter,
|
|
3
|
-
|
|
3
|
+
Tracer,
|
|
4
4
|
} from '@opentelemetry/api'
|
|
5
5
|
import { assertEx } from '@xylabs/assert'
|
|
6
6
|
import type { Logger } from '@xylabs/logger'
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
import type {
|
|
9
|
+
BaseClassName, BaseParams,
|
|
10
|
+
} from './BaseParams.ts'
|
|
8
11
|
|
|
9
12
|
const DEFAULT_HISTORY_INTERVAL = 1000 * 5
|
|
10
13
|
const DEFAULT_HISTORY_TIME = 60 * 60 * 1000
|
|
@@ -12,16 +15,7 @@ const MAX_GC_FREQUENCY = 1000 * 60
|
|
|
12
15
|
const MIN_GC_FREQUENCY = 1000
|
|
13
16
|
const MIN_HISTORY_INTERVAL = 1000
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export type BaseParamsFields = {
|
|
18
|
-
logger?: Logger
|
|
19
|
-
meterProvider?: MeterProvider
|
|
20
|
-
traceProvider?: TracerProvider
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export type BaseParams<TAdditionalParams extends EmptyObject = EmptyObject> = TAdditionalParams & BaseParamsFields
|
|
24
|
-
|
|
18
|
+
/** @deprecated use BaseV2 instead */
|
|
25
19
|
export abstract class Base<TParams extends BaseParams = BaseParams> {
|
|
26
20
|
static defaultLogger?: Logger
|
|
27
21
|
static readonly globalInstances: Record<BaseClassName, WeakRef<Base>[]> = {}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { MeterProvider, TracerProvider } from '@opentelemetry/api'
|
|
2
|
+
import type { Logger } from '@xylabs/logger'
|
|
3
|
+
import { z } from 'zod'
|
|
4
|
+
|
|
5
|
+
import type { MapType } from './map/index.ts'
|
|
6
|
+
|
|
7
|
+
export const CachesZod = z.record(
|
|
8
|
+
z.string(),
|
|
9
|
+
z.custom<MapType<string, unknown>>(val => val && typeof val === 'object' && ('get' in val || 'set' in val)),
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
export const SingletonsZod = z.record(z.string(), z.unknown())
|
|
13
|
+
|
|
14
|
+
export const LoggerZod = z.custom<Logger>(val => val && typeof val === 'object' && 'info' in val && 'error' in val)
|
|
15
|
+
|
|
16
|
+
export const MeterProviderZod = z.custom<MeterProvider>(val => val && typeof val === 'object' && 'getMeter' in val)
|
|
17
|
+
|
|
18
|
+
export const TracerProviderZod = z.custom<TracerProvider>(val => val && typeof val === 'object' && 'getTracer' in val)
|
|
19
|
+
|
|
20
|
+
export const TimeBudgetLimitZod = z.number()
|
|
21
|
+
|
|
22
|
+
export const BaseContextZod = z.object({
|
|
23
|
+
caches: CachesZod.optional(),
|
|
24
|
+
logger: LoggerZod.optional(),
|
|
25
|
+
meterProvider: MeterProviderZod.optional(),
|
|
26
|
+
singletons: SingletonsZod,
|
|
27
|
+
timeBudgetLimit: TimeBudgetLimitZod.optional(),
|
|
28
|
+
traceProvider: TracerProviderZod.optional(),
|
|
29
|
+
})
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { MeterProvider, TracerProvider } from '@opentelemetry/api'
|
|
2
|
+
import type { Logger } from '@xylabs/logger'
|
|
3
|
+
import type { EmptyObject } from '@xylabs/object'
|
|
4
|
+
import type z from 'zod'
|
|
5
|
+
|
|
6
|
+
import type { BaseParamsV2Zod } from './BaseParams.zod.ts'
|
|
7
|
+
|
|
8
|
+
export type BaseClassName = string & { __baseClassName: true }
|
|
9
|
+
|
|
10
|
+
export type BaseParamsDeprecated = {
|
|
11
|
+
/** @deprecated Use context.logger instead */
|
|
12
|
+
logger?: Logger
|
|
13
|
+
|
|
14
|
+
/** @deprecated Use context.meterProvider instead */
|
|
15
|
+
meterProvider?: MeterProvider
|
|
16
|
+
|
|
17
|
+
/** @deprecated Use context.traceProvider instead */
|
|
18
|
+
traceProvider?: TracerProvider
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type BaseParams<TAdditionalParams extends EmptyObject = EmptyObject> = TAdditionalParams & BaseParamsDeprecated
|
|
22
|
+
|
|
23
|
+
export type BaseParamsV2 = z.infer<typeof BaseParamsV2Zod> & BaseParams
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
BaseContextZod, LoggerZod, MeterProviderZod,
|
|
5
|
+
TracerProviderZod,
|
|
6
|
+
} from './BaseContext.zod.ts'
|
|
7
|
+
|
|
8
|
+
export const BaseParamsZod = z.object({
|
|
9
|
+
logger: LoggerZod.optional(),
|
|
10
|
+
meterProvider: MeterProviderZod.optional(),
|
|
11
|
+
traceProvider: TracerProviderZod.optional(),
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
export const BaseParamsV2Zod = z.object({ context: BaseContextZod })
|
package/src/BaseV2.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Meter,
|
|
3
|
+
Tracer,
|
|
4
|
+
} from '@opentelemetry/api'
|
|
5
|
+
|
|
6
|
+
import { Base } from './Base.ts'
|
|
7
|
+
import type { BaseClassName, BaseParamsV2 } from './BaseParams.ts'
|
|
8
|
+
|
|
9
|
+
export abstract class BaseV2<TParams extends BaseParamsV2 = BaseParamsV2> extends Base<TParams> {
|
|
10
|
+
get context() {
|
|
11
|
+
return this.params.context
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
override get logger() {
|
|
15
|
+
return this.context.logger ?? BaseV2.defaultLogger
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
override get meter(): Meter | undefined {
|
|
19
|
+
return this.context.meterProvider?.getMeter(this.className)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
override get params(): TParams {
|
|
23
|
+
return super.params
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
override get tracer(): Tracer | undefined {
|
|
27
|
+
return this.context.traceProvider?.getTracer(this.className)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
abstract get className(): BaseClassName
|
|
31
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
export * from './Base.ts'
|
|
2
|
+
export * from './BaseContext.ts'
|
|
3
|
+
export * from './BaseContext.zod.ts'
|
|
4
|
+
export * from './BaseParams.ts'
|
|
5
|
+
export * from './BaseParams.zod.ts'
|
|
6
|
+
export * from './BaseV2.ts'
|
|
2
7
|
export * from './globallyUnique.ts'
|
|
3
|
-
export * from './
|
|
8
|
+
export * from './map/index.ts'
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/promise'
|
|
2
|
+
|
|
3
|
+
export interface AsyncMapRead<K, V> {
|
|
4
|
+
get(id: K): Promisable<V | undefined>
|
|
5
|
+
getMany(id: K[]): Promisable<V[]>
|
|
6
|
+
has(id: K): Promisable<boolean>
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated Use AsyncMapRead instead
|
|
10
|
+
*/
|
|
11
|
+
export interface AsynchronousMapRead<K, V> extends AsyncMapRead<K, V> {}
|
|
12
|
+
|
|
13
|
+
export interface AsyncMapWrite<K, V> {
|
|
14
|
+
clear(): Promisable<void>
|
|
15
|
+
delete(id: K): Promisable<boolean>
|
|
16
|
+
set(id: K, data: V): Promisable<K | undefined | void>
|
|
17
|
+
setMany(entries: [K, V][]): Promisable<K[] | void>
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Use AsyncMapWrite instead
|
|
21
|
+
*/
|
|
22
|
+
export interface AsynchronousMapWrite<K, V> extends AsyncMapWrite<K, V> {}
|
|
23
|
+
|
|
24
|
+
export interface AsyncMap<K, V> extends AsyncMapRead<K, V>, AsyncMapWrite<K, V> {}
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Use AsyncMap instead
|
|
27
|
+
*/
|
|
28
|
+
export interface AsynchronousMap<K, V> extends AsyncMap<K, V> {}
|
|
29
|
+
|
|
30
|
+
export interface AsyncIterableMapRead<K, V>extends AsyncMapRead<K, V>, AsyncIterable<[K, V]> {}
|
|
31
|
+
export interface AsyncIterableMapWrite<K, V>extends AsyncMapWrite<K, V>, AsyncIterable<[K, V]> {}
|
|
32
|
+
export interface AsyncIterableMap<K, V>extends AsyncMap<K, V>, AsyncIterable<[K, V]> {}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AsyncIterableMap, AsyncIterableMapRead, AsyncIterableMapWrite, AsyncMap, AsyncMapRead, AsyncMapWrite,
|
|
3
|
+
} from './AsyncMap.ts'
|
|
4
|
+
import type {
|
|
5
|
+
SyncIterableMap, SyncIterableMapRead, SyncIterableMapWrite, SyncMap, SyncMapRead, SyncMapWrite,
|
|
6
|
+
} from './SyncMap.ts'
|
|
7
|
+
|
|
8
|
+
export type MapType<TId, TData> = SyncMap<TId, TData> | AsyncMap<TId, TData>
|
|
9
|
+
|
|
10
|
+
export type MapTypeRead<TId, TData> = SyncMapRead<TId, TData> | AsyncMapRead<TId, TData>
|
|
11
|
+
|
|
12
|
+
export type MapTypeWrite<TId, TData> = SyncMapWrite<TId, TData> | AsyncMapWrite<TId, TData>
|
|
13
|
+
|
|
14
|
+
export type AsynchronousMapType<TId, TData> = AsyncMapRead<TId, TData> & AsyncMapWrite<TId, TData>
|
|
15
|
+
|
|
16
|
+
export type IterableMapRead<TId, TData> = SyncIterableMapRead<TId, TData> | AsyncIterableMapRead<TId, TData>
|
|
17
|
+
|
|
18
|
+
export type IterableMapWrite<TId, TData> = SyncIterableMapWrite<TId, TData> | AsyncIterableMapWrite<TId, TData>
|
|
19
|
+
|
|
20
|
+
export type IterableMap<TId, TData> = SyncIterableMap<TId, TData> | AsyncIterableMap<TId, TData>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface SyncMapRead<K, V> {
|
|
2
|
+
get(id: K): V | undefined
|
|
3
|
+
getMany(id: K[]): V[]
|
|
4
|
+
has(id: K): boolean
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated Use SyncMapRead instead
|
|
9
|
+
*/
|
|
10
|
+
export interface SynchronousMapRead<K, V> extends SyncMapRead<K, V> {}
|
|
11
|
+
|
|
12
|
+
export interface SyncMapWrite<K, V> {
|
|
13
|
+
clear(): void
|
|
14
|
+
delete(id: K): boolean
|
|
15
|
+
set(id: K, data: V): K | undefined | void
|
|
16
|
+
setMany(entries: [K, V][]): K[] | void
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Use SyncMapWrite instead
|
|
21
|
+
*/
|
|
22
|
+
export interface SynchronousMapWrite<K, V> extends SyncMapWrite<K, V> {}
|
|
23
|
+
|
|
24
|
+
export interface SyncMap<K, V> extends SyncMapRead<K, V>, SyncMapWrite<K, V> {}
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Use SyncMap instead
|
|
27
|
+
*/
|
|
28
|
+
export interface SynchronousMap<K, V> extends SyncMap<K, V> {}
|
|
29
|
+
|
|
30
|
+
export interface SyncIterableMapRead<K, V> extends SyncMapRead<K, V>, Iterable<[K, V]> {}
|
|
31
|
+
export interface SyncIterableMapWrite<K, V> extends SyncMapWrite<K, V>, Iterable<[K, V]> {}
|
|
32
|
+
export interface SyncIterableMap<K, V> extends SyncMap<K, V>, Iterable<[K, V]> {}
|
package/src/map/index.ts
ADDED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { BaseParams } from './Base.ts';
|
|
2
|
-
import { Base } from './Base.ts';
|
|
3
|
-
export declare abstract class UniqueBase<TParams extends BaseParams = BaseParams> extends Base<TParams> {
|
|
4
|
-
static readonly uniqueDomain = "xy";
|
|
5
|
-
static readonly uniqueName: string;
|
|
6
|
-
static readonly uniqueNameXyo: string;
|
|
7
|
-
constructor(params: BaseParams<TParams>);
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=UniqueBase.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UniqueBase.d.ts","sourceRoot":"","sources":["../../src/UniqueBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGhC,8BAAsB,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,IAAI,CAAC,OAAO,CAAC;IAC7F,MAAM,CAAC,QAAQ,CAAC,YAAY,QAAO;IACnC,MAAM,CAAC,QAAQ,CAAC,UAAU,SAAqD;IAE/E,MAAM,CAAC,QAAQ,CAAC,aAAa,SAAyC;gBAC1D,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC;CAGxC"}
|
package/src/UniqueBase.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { BaseParams } from './Base.ts'
|
|
2
|
-
import { Base } from './Base.ts'
|
|
3
|
-
import { globallyUnique } from './globallyUnique.ts'
|
|
4
|
-
|
|
5
|
-
export abstract class UniqueBase<TParams extends BaseParams = BaseParams> extends Base<TParams> {
|
|
6
|
-
static readonly uniqueDomain = 'xy'
|
|
7
|
-
static readonly uniqueName = globallyUnique(this.name, this, this.uniqueDomain)
|
|
8
|
-
// TODO: Remove xyo domain version when old xyo versions are no longer needed
|
|
9
|
-
static readonly uniqueNameXyo = globallyUnique(this.name, this, 'xyo')
|
|
10
|
-
constructor(params: BaseParams<TParams>) {
|
|
11
|
-
super(params)
|
|
12
|
-
}
|
|
13
|
-
}
|