@xylabs/base 5.0.75 → 5.0.78
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 +11 -3
- package/dist/neutral/Base.d.ts.map +1 -1
- package/dist/neutral/UniqueBase.d.ts +9 -0
- package/dist/neutral/UniqueBase.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +1 -6
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +12 -59
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +5 -10
- package/src/Base.ts +12 -6
- package/src/UniqueBase.ts +13 -0
- package/src/index.ts +1 -6
- package/dist/neutral/BaseContext.d.ts +0 -4
- package/dist/neutral/BaseContext.d.ts.map +0 -1
- package/dist/neutral/BaseContext.zod.d.ts +0 -26
- package/dist/neutral/BaseContext.zod.d.ts.map +0 -1
- package/dist/neutral/BaseParams.d.ts +0 -19
- package/dist/neutral/BaseParams.d.ts.map +0 -1
- package/dist/neutral/BaseParams.zod.d.ts +0 -16
- package/dist/neutral/BaseParams.zod.d.ts.map +0 -1
- package/dist/neutral/BaseV2.d.ts +0 -18
- package/dist/neutral/BaseV2.d.ts.map +0 -1
- package/dist/neutral/map/AsyncMap.d.ts +0 -36
- package/dist/neutral/map/AsyncMap.d.ts.map +0 -1
- package/dist/neutral/map/MapType.d.ts +0 -10
- package/dist/neutral/map/MapType.d.ts.map +0 -1
- package/dist/neutral/map/SyncMap.d.ts +0 -35
- package/dist/neutral/map/SyncMap.d.ts.map +0 -1
- package/dist/neutral/map/index.d.ts +0 -4
- package/dist/neutral/map/index.d.ts.map +0 -1
- package/src/BaseContext.ts +0 -5
- package/src/BaseContext.zod.ts +0 -30
- package/src/BaseParams.ts +0 -23
- package/src/BaseParams.zod.ts +0 -14
- package/src/BaseV2.ts +0 -31
- package/src/map/AsyncMap.ts +0 -32
- package/src/map/MapType.ts +0 -20
- package/src/map/SyncMap.ts +0 -32
- package/src/map/index.ts +0 -3
package/dist/neutral/Base.d.ts
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
import type { Meter, Tracer } from '@opentelemetry/api';
|
|
1
|
+
import type { Meter, MeterProvider, Tracer, TracerProvider } from '@opentelemetry/api';
|
|
2
2
|
import type { Logger } from '@xylabs/logger';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
3
|
+
import type { EmptyObject } from '@xylabs/object';
|
|
4
|
+
export type BaseClassName = string & {
|
|
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;
|
|
5
13
|
export declare abstract class Base<TParams extends BaseParams = BaseParams> {
|
|
6
14
|
static defaultLogger?: Logger;
|
|
7
15
|
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,MAAM,
|
|
1
|
+
{"version":3,"file":"Base.d.ts","sourceRoot":"","sources":["../../src/Base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EAAE,MAAM,EAAE,cAAc,EACtC,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAQjD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,eAAe,EAAE,IAAI,CAAA;CAAE,CAAA;AAE9D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,iBAAiB,SAAS,WAAW,GAAG,WAAW,IAAI,iBAAiB,GAAG,gBAAgB,CAAA;AAElH,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,9 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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/dist/neutral/index.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
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';
|
|
7
2
|
export * from './globallyUnique.ts';
|
|
8
|
-
export * from './
|
|
3
|
+
export * from './UniqueBase.ts';
|
|
9
4
|
//# 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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -114,54 +114,6 @@ 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
|
-
logger: LoggerZod.optional(),
|
|
130
|
-
meterProvider: MeterProviderZod.optional(),
|
|
131
|
-
singletons: SingletonsZod,
|
|
132
|
-
timeBudgetLimit: TimeBudgetLimitZod.optional(),
|
|
133
|
-
traceProvider: TracerProviderZod.optional()
|
|
134
|
-
});
|
|
135
|
-
var CachingContextZod = BaseContextZod.extend({ caches: CachesZod });
|
|
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
|
-
|
|
165
117
|
// src/globallyUnique.ts
|
|
166
118
|
var xyoGlobal = () => {
|
|
167
119
|
globalThis.xylabs = globalThis.xylabs ?? {};
|
|
@@ -187,19 +139,20 @@ var globallyUnique = (name, value, domain = "global") => {
|
|
|
187
139
|
}
|
|
188
140
|
return uniqueName;
|
|
189
141
|
};
|
|
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
|
+
};
|
|
190
153
|
export {
|
|
191
154
|
Base,
|
|
192
|
-
|
|
193
|
-
BaseParamsV2Zod,
|
|
194
|
-
BaseParamsZod,
|
|
195
|
-
BaseV2,
|
|
196
|
-
CachesZod,
|
|
197
|
-
CachingContextZod,
|
|
198
|
-
LoggerZod,
|
|
199
|
-
MeterProviderZod,
|
|
200
|
-
SingletonsZod,
|
|
201
|
-
TimeBudgetLimitZod,
|
|
202
|
-
TracerProviderZod,
|
|
155
|
+
UniqueBase,
|
|
203
156
|
disableGloballyUnique,
|
|
204
157
|
globallyUnique
|
|
205
158
|
};
|
|
@@ -1 +1 @@
|
|
|
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 logger: LoggerZod.optional(),\n meterProvider: MeterProviderZod.optional(),\n singletons: SingletonsZod,\n timeBudgetLimit: TimeBudgetLimitZod.optional(),\n traceProvider: TracerProviderZod.optional(),\n})\n\nexport const CachingContextZod = BaseContextZod.extend({ caches: CachesZod })\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"]}
|
|
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":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xylabs/base",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.78",
|
|
4
4
|
"description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -39,20 +39,15 @@
|
|
|
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.
|
|
45
|
-
"@xylabs/promise": "~5.0.75"
|
|
42
|
+
"@xylabs/assert": "~5.0.78",
|
|
43
|
+
"@xylabs/logger": "~5.0.78",
|
|
44
|
+
"@xylabs/object": "~5.0.78"
|
|
46
45
|
},
|
|
47
46
|
"devDependencies": {
|
|
48
47
|
"@xylabs/ts-scripts-yarn3": "~7.3.2",
|
|
49
48
|
"@xylabs/tsconfig": "~7.3.2",
|
|
50
49
|
"tslib": "~2.8.1",
|
|
51
|
-
"typescript": "~5.9.3"
|
|
52
|
-
"zod": "^4.3.6"
|
|
53
|
-
},
|
|
54
|
-
"peerDependencies": {
|
|
55
|
-
"zod": "^4"
|
|
50
|
+
"typescript": "~5.9.3"
|
|
56
51
|
},
|
|
57
52
|
"publishConfig": {
|
|
58
53
|
"access": "public"
|
package/src/Base.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
Meter,
|
|
3
|
-
Tracer,
|
|
3
|
+
MeterProvider, Tracer, TracerProvider,
|
|
4
4
|
} from '@opentelemetry/api'
|
|
5
5
|
import { assertEx } from '@xylabs/assert'
|
|
6
6
|
import type { Logger } from '@xylabs/logger'
|
|
7
|
-
|
|
8
|
-
import type {
|
|
9
|
-
BaseClassName, BaseParams,
|
|
10
|
-
} from './BaseParams.ts'
|
|
7
|
+
import type { EmptyObject } from '@xylabs/object'
|
|
11
8
|
|
|
12
9
|
const DEFAULT_HISTORY_INTERVAL = 1000 * 5
|
|
13
10
|
const DEFAULT_HISTORY_TIME = 60 * 60 * 1000
|
|
@@ -15,7 +12,16 @@ const MAX_GC_FREQUENCY = 1000 * 60
|
|
|
15
12
|
const MIN_GC_FREQUENCY = 1000
|
|
16
13
|
const MIN_HISTORY_INTERVAL = 1000
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
export type BaseClassName = string & { __baseClassName: true }
|
|
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
|
+
|
|
19
25
|
export abstract class Base<TParams extends BaseParams = BaseParams> {
|
|
20
26
|
static defaultLogger?: Logger
|
|
21
27
|
static readonly globalInstances: Record<BaseClassName, WeakRef<Base>[]> = {}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
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'
|
|
7
2
|
export * from './globallyUnique.ts'
|
|
8
|
-
export * from './
|
|
3
|
+
export * from './UniqueBase.ts'
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
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
|
-
logger: z.ZodOptional<z.ZodCustom<Logger, Logger>>;
|
|
13
|
-
meterProvider: z.ZodOptional<z.ZodCustom<MeterProvider, MeterProvider>>;
|
|
14
|
-
singletons: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
15
|
-
timeBudgetLimit: z.ZodOptional<z.ZodNumber>;
|
|
16
|
-
traceProvider: z.ZodOptional<z.ZodCustom<TracerProvider, TracerProvider>>;
|
|
17
|
-
}, z.core.$strip>;
|
|
18
|
-
export declare const CachingContextZod: z.ZodObject<{
|
|
19
|
-
logger: z.ZodOptional<z.ZodCustom<Logger, Logger>>;
|
|
20
|
-
meterProvider: z.ZodOptional<z.ZodCustom<MeterProvider, MeterProvider>>;
|
|
21
|
-
singletons: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
22
|
-
timeBudgetLimit: z.ZodOptional<z.ZodNumber>;
|
|
23
|
-
traceProvider: z.ZodOptional<z.ZodCustom<TracerProvider, TracerProvider>>;
|
|
24
|
-
caches: z.ZodRecord<z.ZodString, z.ZodCustom<MapType<string, unknown>, MapType<string, unknown>>>;
|
|
25
|
-
}, z.core.$strip>;
|
|
26
|
-
//# sourceMappingURL=BaseContext.zod.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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;;;;;;iBAMzB,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;iBAA+C,CAAA"}
|
|
@@ -1,19 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
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
|
-
logger: z.ZodOptional<z.ZodCustom<import("@xylabs/logger").Logger, import("@xylabs/logger").Logger>>;
|
|
10
|
-
meterProvider: z.ZodOptional<z.ZodCustom<import("@opentelemetry/api").MeterProvider, import("@opentelemetry/api").MeterProvider>>;
|
|
11
|
-
singletons: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
12
|
-
timeBudgetLimit: z.ZodOptional<z.ZodNumber>;
|
|
13
|
-
traceProvider: z.ZodOptional<z.ZodCustom<import("@opentelemetry/api").TracerProvider, import("@opentelemetry/api").TracerProvider>>;
|
|
14
|
-
}, z.core.$strip>;
|
|
15
|
-
}, z.core.$strip>;
|
|
16
|
-
//# sourceMappingURL=BaseParams.zod.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/neutral/BaseV2.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
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
|
-
logger?: import("@xylabs/logger").Logger | undefined;
|
|
8
|
-
meterProvider?: import("@opentelemetry/api").MeterProvider | undefined;
|
|
9
|
-
timeBudgetLimit?: number | undefined;
|
|
10
|
-
traceProvider?: import("@opentelemetry/api").TracerProvider | undefined;
|
|
11
|
-
};
|
|
12
|
-
get logger(): import("@xylabs/logger").Logger | undefined;
|
|
13
|
-
get meter(): Meter | undefined;
|
|
14
|
-
get params(): TParams;
|
|
15
|
-
get tracer(): Tracer | undefined;
|
|
16
|
-
abstract get className(): BaseClassName;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=BaseV2.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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/src/BaseContext.ts
DELETED
package/src/BaseContext.zod.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
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
|
-
logger: LoggerZod.optional(),
|
|
24
|
-
meterProvider: MeterProviderZod.optional(),
|
|
25
|
-
singletons: SingletonsZod,
|
|
26
|
-
timeBudgetLimit: TimeBudgetLimitZod.optional(),
|
|
27
|
-
traceProvider: TracerProviderZod.optional(),
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
export const CachingContextZod = BaseContextZod.extend({ caches: CachesZod })
|
package/src/BaseParams.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
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
|
package/src/BaseParams.zod.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
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/map/AsyncMap.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
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]> {}
|
package/src/map/MapType.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
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>
|
package/src/map/SyncMap.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
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
DELETED