@livestore/utils 0.0.0
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/.tsbuildinfo.json +1 -0
- package/dist/Deferred.d.ts +10 -0
- package/dist/Deferred.d.ts.map +1 -0
- package/dist/Deferred.js +18 -0
- package/dist/Deferred.js.map +1 -0
- package/dist/NoopTracer.d.ts +9 -0
- package/dist/NoopTracer.d.ts.map +1 -0
- package/dist/NoopTracer.js +54 -0
- package/dist/NoopTracer.js.map +1 -0
- package/dist/base64.d.ts +12 -0
- package/dist/base64.d.ts.map +1 -0
- package/dist/base64.js +114 -0
- package/dist/base64.js.map +1 -0
- package/dist/binary.d.ts +4 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +23 -0
- package/dist/binary.js.map +1 -0
- package/dist/browser.d.ts +3 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +28 -0
- package/dist/browser.js.map +1 -0
- package/dist/effect/Debounce.d.ts +5 -0
- package/dist/effect/Debounce.d.ts.map +1 -0
- package/dist/effect/Debounce.js +33 -0
- package/dist/effect/Debounce.js.map +1 -0
- package/dist/effect/Effect.d.ts +7 -0
- package/dist/effect/Effect.d.ts.map +1 -0
- package/dist/effect/Effect.js +17 -0
- package/dist/effect/Effect.js.map +1 -0
- package/dist/effect/EndableQueue.d.ts +11 -0
- package/dist/effect/EndableQueue.d.ts.map +1 -0
- package/dist/effect/EndableQueue.js +22 -0
- package/dist/effect/EndableQueue.js.map +1 -0
- package/dist/effect/EnvVar.d.ts +16 -0
- package/dist/effect/EnvVar.d.ts.map +1 -0
- package/dist/effect/EnvVar.js +21 -0
- package/dist/effect/EnvVar.js.map +1 -0
- package/dist/effect/Error.d.ts +12 -0
- package/dist/effect/Error.d.ts.map +1 -0
- package/dist/effect/Error.js +13 -0
- package/dist/effect/Error.js.map +1 -0
- package/dist/effect/Gate.d.ts +14 -0
- package/dist/effect/Gate.d.ts.map +1 -0
- package/dist/effect/Gate.js +17 -0
- package/dist/effect/Gate.js.map +1 -0
- package/dist/effect/Layer.d.ts +6 -0
- package/dist/effect/Layer.d.ts.map +1 -0
- package/dist/effect/Layer.js +11 -0
- package/dist/effect/Layer.js.map +1 -0
- package/dist/effect/Otel/Dummy.d.ts +5 -0
- package/dist/effect/Otel/Dummy.d.ts.map +1 -0
- package/dist/effect/Otel/Dummy.js +22 -0
- package/dist/effect/Otel/Dummy.js.map +1 -0
- package/dist/effect/Otel/Meter.d.ts +20 -0
- package/dist/effect/Otel/Meter.d.ts.map +1 -0
- package/dist/effect/Otel/Meter.js +76 -0
- package/dist/effect/Otel/Meter.js.map +1 -0
- package/dist/effect/Otel/OtlpGrpc.d.ts +6 -0
- package/dist/effect/Otel/OtlpGrpc.d.ts.map +1 -0
- package/dist/effect/Otel/OtlpGrpc.js +42 -0
- package/dist/effect/Otel/OtlpGrpc.js.map +1 -0
- package/dist/effect/Otel/OtlpHttp.d.ts +6 -0
- package/dist/effect/Otel/OtlpHttp.d.ts.map +1 -0
- package/dist/effect/Otel/OtlpHttp.js +42 -0
- package/dist/effect/Otel/OtlpHttp.js.map +1 -0
- package/dist/effect/Otel/OtlpWebsocket.d.ts +6 -0
- package/dist/effect/Otel/OtlpWebsocket.d.ts.map +1 -0
- package/dist/effect/Otel/OtlpWebsocket.js +42 -0
- package/dist/effect/Otel/OtlpWebsocket.js.map +1 -0
- package/dist/effect/Otel/Span.d.ts +32 -0
- package/dist/effect/Otel/Span.d.ts.map +1 -0
- package/dist/effect/Otel/Span.js +97 -0
- package/dist/effect/Otel/Span.js.map +1 -0
- package/dist/effect/Otel/Tracer.d.ts +15 -0
- package/dist/effect/Otel/Tracer.d.ts.map +1 -0
- package/dist/effect/Otel/Tracer.js +17 -0
- package/dist/effect/Otel/Tracer.js.map +1 -0
- package/dist/effect/Otel/index.d.ts +8 -0
- package/dist/effect/Otel/index.d.ts.map +1 -0
- package/dist/effect/Otel/index.js +9 -0
- package/dist/effect/Otel/index.js.map +1 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.d.ts +14 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.d.ts.map +1 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.js +15 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.js.map +1 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.d.ts +14 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.d.ts.map +1 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.js +15 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.js.map +1 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.d.ts +19 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.d.ts.map +1 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.js +17 -0
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.js.map +1 -0
- package/dist/effect/Otel/lib-metrics/MetricsProvider.d.ts +10 -0
- package/dist/effect/Otel/lib-metrics/MetricsProvider.d.ts.map +1 -0
- package/dist/effect/Otel/lib-metrics/MetricsProvider.js +4 -0
- package/dist/effect/Otel/lib-metrics/MetricsProvider.js.map +1 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.d.ts +16 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.d.ts.map +1 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.js +39 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.js.map +1 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.d.ts +16 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.d.ts.map +1 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.js +39 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.js.map +1 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.d.ts +16 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.d.ts.map +1 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.js +39 -0
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.js.map +1 -0
- package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.d.ts +17 -0
- package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.d.ts.map +1 -0
- package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.js +27 -0
- package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.js.map +1 -0
- package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.d.ts +18 -0
- package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.d.ts.map +1 -0
- package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.js +31 -0
- package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.js.map +1 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.d.ts +19 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.d.ts.map +1 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.js +36 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.js.map +1 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.d.ts +19 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.d.ts.map +1 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.js +36 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.js.map +1 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.d.ts +9 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.d.ts.map +1 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.js +29 -0
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.js.map +1 -0
- package/dist/effect/Otel/lib-tracer/SimpleProcessor.d.ts +19 -0
- package/dist/effect/Otel/lib-tracer/SimpleProcessor.d.ts.map +1 -0
- package/dist/effect/Otel/lib-tracer/SimpleProcessor.js +25 -0
- package/dist/effect/Otel/lib-tracer/SimpleProcessor.js.map +1 -0
- package/dist/effect/Otel/lib-tracer/TracerProvider.d.ts +10 -0
- package/dist/effect/Otel/lib-tracer/TracerProvider.d.ts.map +1 -0
- package/dist/effect/Otel/lib-tracer/TracerProvider.js +7 -0
- package/dist/effect/Otel/lib-tracer/TracerProvider.js.map +1 -0
- package/dist/effect/Otel/lib-tracer/WebProvider.d.ts +18 -0
- package/dist/effect/Otel/lib-tracer/WebProvider.d.ts.map +1 -0
- package/dist/effect/Otel/lib-tracer/WebProvider.js +25 -0
- package/dist/effect/Otel/lib-tracer/WebProvider.js.map +1 -0
- package/dist/effect/ReadonlyArray.d.ts +4 -0
- package/dist/effect/ReadonlyArray.d.ts.map +1 -0
- package/dist/effect/ReadonlyArray.js +11 -0
- package/dist/effect/ReadonlyArray.js.map +1 -0
- package/dist/effect/RequestResolver.d.ts +11 -0
- package/dist/effect/RequestResolver.d.ts.map +1 -0
- package/dist/effect/RequestResolver.js +18 -0
- package/dist/effect/RequestResolver.js.map +1 -0
- package/dist/effect/STM.d.ts +3 -0
- package/dist/effect/STM.d.ts.map +1 -0
- package/dist/effect/STM.js +3 -0
- package/dist/effect/STM.js.map +1 -0
- package/dist/effect/Schedule.d.ts +5 -0
- package/dist/effect/Schedule.d.ts.map +1 -0
- package/dist/effect/Schedule.js +7 -0
- package/dist/effect/Schedule.js.map +1 -0
- package/dist/effect/Scheduler.d.ts +49 -0
- package/dist/effect/Scheduler.d.ts.map +1 -0
- package/dist/effect/Scheduler.js +168 -0
- package/dist/effect/Scheduler.js.map +1 -0
- package/dist/effect/Schema/SchemaHash.d.ts +3 -0
- package/dist/effect/Schema/SchemaHash.d.ts.map +1 -0
- package/dist/effect/Schema/SchemaHash.js +15 -0
- package/dist/effect/Schema/SchemaHash.js.map +1 -0
- package/dist/effect/Schema/SchemaHash.test.d.ts +2 -0
- package/dist/effect/Schema/SchemaHash.test.d.ts.map +1 -0
- package/dist/effect/Schema/SchemaHash.test.js +13 -0
- package/dist/effect/Schema/SchemaHash.test.js.map +1 -0
- package/dist/effect/Schema/SchemaJsonWrapper.d.ts +11 -0
- package/dist/effect/Schema/SchemaJsonWrapper.d.ts.map +1 -0
- package/dist/effect/Schema/SchemaJsonWrapper.js +38 -0
- package/dist/effect/Schema/SchemaJsonWrapper.js.map +1 -0
- package/dist/effect/Schema/SchemaJsonWrapper.test.d.ts +2 -0
- package/dist/effect/Schema/SchemaJsonWrapper.test.d.ts.map +1 -0
- package/dist/effect/Schema/SchemaJsonWrapper.test.js +42 -0
- package/dist/effect/Schema/SchemaJsonWrapper.test.js.map +1 -0
- package/dist/effect/Schema/index.d.ts +15 -0
- package/dist/effect/Schema/index.d.ts.map +1 -0
- package/dist/effect/Schema/index.js +14 -0
- package/dist/effect/Schema/index.js.map +1 -0
- package/dist/effect/ServiceContext.d.ts +39 -0
- package/dist/effect/ServiceContext.d.ts.map +1 -0
- package/dist/effect/ServiceContext.js +61 -0
- package/dist/effect/ServiceContext.js.map +1 -0
- package/dist/effect/SmartQueue.d.ts +38 -0
- package/dist/effect/SmartQueue.d.ts.map +1 -0
- package/dist/effect/SmartQueue.js +123 -0
- package/dist/effect/SmartQueue.js.map +1 -0
- package/dist/effect/Stream/chainSwitch.d.ts +3 -0
- package/dist/effect/Stream/chainSwitch.d.ts.map +1 -0
- package/dist/effect/Stream/chainSwitch.js +48 -0
- package/dist/effect/Stream/chainSwitch.js.map +1 -0
- package/dist/effect/Stream/index.d.ts +37 -0
- package/dist/effect/Stream/index.d.ts.map +1 -0
- package/dist/effect/Stream/index.js +82 -0
- package/dist/effect/Stream/index.js.map +1 -0
- package/dist/effect/SubscriptionRef.d.ts +10 -0
- package/dist/effect/SubscriptionRef.d.ts.map +1 -0
- package/dist/effect/SubscriptionRef.js +8 -0
- package/dist/effect/SubscriptionRef.js.map +1 -0
- package/dist/effect/TimeoutGate.d.ts +13 -0
- package/dist/effect/TimeoutGate.d.ts.map +1 -0
- package/dist/effect/TimeoutGate.js +41 -0
- package/dist/effect/TimeoutGate.js.map +1 -0
- package/dist/effect/WebCrypto.d.ts +18 -0
- package/dist/effect/WebCrypto.d.ts.map +1 -0
- package/dist/effect/WebCrypto.js +56 -0
- package/dist/effect/WebCrypto.js.map +1 -0
- package/dist/effect/WebLock.d.ts +5 -0
- package/dist/effect/WebLock.d.ts.map +1 -0
- package/dist/effect/WebLock.js +20 -0
- package/dist/effect/WebLock.js.map +1 -0
- package/dist/effect/browser.d.ts +19 -0
- package/dist/effect/browser.d.ts.map +1 -0
- package/dist/effect/browser.js +82 -0
- package/dist/effect/browser.js.map +1 -0
- package/dist/effect/fetch.d.ts +89 -0
- package/dist/effect/fetch.d.ts.map +1 -0
- package/dist/effect/fetch.js +142 -0
- package/dist/effect/fetch.js.map +1 -0
- package/dist/effect/index.d.ts +50 -0
- package/dist/effect/index.d.ts.map +1 -0
- package/dist/effect/index.js +58 -0
- package/dist/effect/index.js.map +1 -0
- package/dist/global.d.ts +5 -0
- package/dist/global.d.ts.map +1 -0
- package/dist/global.js +2 -0
- package/dist/global.js.map +1 -0
- package/dist/guards.d.ts +6 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +6 -0
- package/dist/guards.js.map +1 -0
- package/dist/index.d.ts +69 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +162 -0
- package/dist/index.js.map +1 -0
- package/dist/object/index.d.ts +10 -0
- package/dist/object/index.d.ts.map +1 -0
- package/dist/object/index.js +10 -0
- package/dist/object/index.js.map +1 -0
- package/dist/object/omit.d.ts +3 -0
- package/dist/object/omit.d.ts.map +1 -0
- package/dist/object/omit.js +14 -0
- package/dist/object/omit.js.map +1 -0
- package/dist/object/pick.d.ts +14 -0
- package/dist/object/pick.d.ts.map +1 -0
- package/dist/object/pick.js +17 -0
- package/dist/object/pick.js.map +1 -0
- package/dist/promise.d.ts +6 -0
- package/dist/promise.d.ts.map +1 -0
- package/dist/promise.js +27 -0
- package/dist/promise.js.map +1 -0
- package/dist/set.d.ts +2 -0
- package/dist/set.d.ts.map +1 -0
- package/dist/set.js +10 -0
- package/dist/set.js.map +1 -0
- package/dist/single-item.d.ts +8 -0
- package/dist/single-item.d.ts.map +1 -0
- package/dist/single-item.js +9 -0
- package/dist/single-item.js.map +1 -0
- package/dist/string.d.ts +3 -0
- package/dist/string.d.ts.map +1 -0
- package/dist/string.js +3 -0
- package/dist/string.js.map +1 -0
- package/dist/time.d.ts +12 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +22 -0
- package/dist/time.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/json.d.ts +27 -0
- package/dist/types/json.d.ts.map +1 -0
- package/dist/types/json.js +2 -0
- package/dist/types/json.js.map +1 -0
- package/package.json +58 -0
- package/src/Deferred.ts +24 -0
- package/src/NoopTracer.ts +75 -0
- package/src/base64.ts +118 -0
- package/src/browser.ts +32 -0
- package/src/effect/Effect.ts +27 -0
- package/src/effect/Error.ts +12 -0
- package/src/effect/Otel/Dummy.ts +32 -0
- package/src/effect/Otel/Meter.ts +145 -0
- package/src/effect/Otel/OtlpGrpc.ts +75 -0
- package/src/effect/Otel/OtlpHttp.ts +75 -0
- package/src/effect/Otel/OtlpWebsocket.ts +75 -0
- package/src/effect/Otel/Span.ts +222 -0
- package/src/effect/Otel/Tracer.ts +30 -0
- package/src/effect/Otel/index.ts +8 -0
- package/src/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.ts +39 -0
- package/src/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.ts +39 -0
- package/src/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.ts +47 -0
- package/src/effect/Otel/lib-metrics/MetricsProvider.ts +12 -0
- package/src/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.ts +77 -0
- package/src/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.ts +77 -0
- package/src/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.ts +80 -0
- package/src/effect/Otel/lib-metrics/PeriodicMetricsProvider.ts +55 -0
- package/src/effect/Otel/lib-tracer/BatchSpanProcessor.ts +58 -0
- package/src/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.ts +64 -0
- package/src/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.ts +64 -0
- package/src/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.ts +38 -0
- package/src/effect/Otel/lib-tracer/README.md +1 -0
- package/src/effect/Otel/lib-tracer/SimpleProcessor.ts +46 -0
- package/src/effect/Otel/lib-tracer/TracerProvider.ts +16 -0
- package/src/effect/Otel/lib-tracer/WebProvider.ts +48 -0
- package/src/effect/Schedule.ts +12 -0
- package/src/effect/ServiceContext.ts +116 -0
- package/src/effect/index.ts +65 -0
- package/src/global.ts +5 -0
- package/src/guards.ts +8 -0
- package/src/index.ts +217 -0
- package/src/object/index.ts +24 -0
- package/src/object/omit.ts +17 -0
- package/src/object/pick.ts +27 -0
- package/src/promise.ts +43 -0
- package/src/set.ts +10 -0
- package/src/string.ts +2 -0
- package/src/time.ts +25 -0
- package/tsconfig.json +13 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/object/omit.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,6DAA6D;AAC7D,wFAAwF;AACxF,8DAA8D;AAE9D,uEAAuE;AACvE,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,GAAQ,EACR,IAAY,EACK,EAAE;IACnB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAQ,EAAE,EAAE;QAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,GAAG,CAAC,GAAG,CAAC,GAAI,GAAW,CAAC,GAAG,CAAC,CAAA;SAC7B;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAS,CAAC,CAAA;AACf,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type ConvertUndefined<T> = OrUndefined<{
|
|
2
|
+
[K in keyof T as undefined extends T[K] ? K : never]-?: T[K];
|
|
3
|
+
}>;
|
|
4
|
+
type OrUndefined<T> = {
|
|
5
|
+
[K in keyof T]: T[K] | undefined;
|
|
6
|
+
};
|
|
7
|
+
type PickRequired<T> = {
|
|
8
|
+
[K in keyof T as undefined extends T[K] ? never : K]: T[K];
|
|
9
|
+
};
|
|
10
|
+
type ConvertPick<T> = ConvertUndefined<T> & PickRequired<T>;
|
|
11
|
+
export declare const pick: <Obj, Keys extends keyof Obj>(obj: Obj, keys: Keys[]) => ConvertPick<{ [K in Keys]: Obj[K]; }>;
|
|
12
|
+
export declare const pickAllOrElse: <Obj, Keys extends keyof Obj, TElse>(obj: Obj, keys: Keys[], elseValue: TElse) => TElse | ConvertPick<{ [K in Keys]: NonNullable<Obj[K]>; }>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=pick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../src/object/pick.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,CAAC,CAAC,IAAI,WAAW,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAA;AACxG,KAAK,WAAW,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,CAAA;AAC1D,KAAK,YAAY,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AACrF,KAAK,WAAW,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAE3D,eAAO,MAAM,IAAI,gGAKhB,CAAA;AAED,eAAO,MAAM,aAAa,8IAczB,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const pick = (obj, keys) => {
|
|
2
|
+
return keys.reduce((acc, key) => {
|
|
3
|
+
acc[key] = obj[key];
|
|
4
|
+
return acc;
|
|
5
|
+
}, {});
|
|
6
|
+
};
|
|
7
|
+
export const pickAllOrElse = (obj, keys, elseValue) => {
|
|
8
|
+
const ret = {};
|
|
9
|
+
for (const key of keys) {
|
|
10
|
+
if (obj[key] === undefined) {
|
|
11
|
+
return elseValue;
|
|
12
|
+
}
|
|
13
|
+
ret[key] = obj[key];
|
|
14
|
+
}
|
|
15
|
+
return ret;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=pick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pick.js","sourceRoot":"","sources":["../../src/object/pick.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,IAAI,GAAG,CAA8B,GAAQ,EAAE,IAAY,EAAwC,EAAE;IAChH,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACnB,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAS,CAAC,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAQ,EACR,IAAY,EACZ,SAAgB,EAC2C,EAAE;IAC7D,MAAM,GAAG,GAAG,EAAS,CAAA;IACrB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YAC1B,OAAO,SAAS,CAAA;SACjB;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;KACpB;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Promise.all + Array.map */
|
|
2
|
+
export declare const promiseMap: <T, Res>(arr: T[], map: (el: T, index?: number) => Res | Promise<Res>) => Promise<(Awaited<Res> | Awaited<Res>)[]>;
|
|
3
|
+
export declare const promiseMapDict: <T, Res>(dict: Record<string, T>, map: (el: T, index?: number) => Res | Promise<Res>) => Promise<Record<string, Res>>;
|
|
4
|
+
export declare const promiseMapToDict: <T, Res>(arr: T[], mapValue: (el: T, index?: number) => Res | Promise<Res>, mapKey: (el: T, index?: number) => string) => Promise<Record<string, Res>>;
|
|
5
|
+
export declare const promiseMapPool: <T, Res>(arr: T[], map: (el: T, index?: number) => Promise<Res>, poolLimit: number) => Promise<Res[]>;
|
|
6
|
+
//# sourceMappingURL=promise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,eAAO,MAAM,UAAU,0CAA2C,MAAM,oEAC7C,CAAA;AAE3B,eAAO,MAAM,cAAc,yDAEJ,MAAM,wDAI5B,CAAA;AAED,eAAO,MAAM,gBAAgB,+CAED,MAAM,iDACR,MAAM,KAAK,MAAM,iCAK1C,CAAA;AAED,eAAO,MAAM,cAAc,0CAEJ,MAAM,8BAChB,MAAM,mBAiBlB,CAAA"}
|
package/dist/promise.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Promise.all + Array.map */
|
|
2
|
+
export const promiseMap = (arr, map) => Promise.all(arr.map(map));
|
|
3
|
+
export const promiseMapDict = async (dict, map) => {
|
|
4
|
+
const mappedEntries = await Promise.all(Object.entries(dict).map(async ([key, val]) => [key, await map(val)]));
|
|
5
|
+
return Object.fromEntries(mappedEntries);
|
|
6
|
+
};
|
|
7
|
+
export const promiseMapToDict = async (arr, mapValue, mapKey) => {
|
|
8
|
+
const mappedEntries = await Promise.all(arr.map(async (el, index) => [mapKey(el, index), await mapValue(el, index)]));
|
|
9
|
+
return Object.fromEntries(mappedEntries);
|
|
10
|
+
};
|
|
11
|
+
export const promiseMapPool = async (arr, map, poolLimit) => {
|
|
12
|
+
const ret = [];
|
|
13
|
+
const executing = [];
|
|
14
|
+
for (const [index, item] of arr.entries()) {
|
|
15
|
+
const p = Promise.resolve().then(() => map(item, index));
|
|
16
|
+
ret.push(p);
|
|
17
|
+
if (poolLimit <= arr.length) {
|
|
18
|
+
const e = p.then(() => executing.splice(executing.indexOf(e), 1));
|
|
19
|
+
executing.push(e);
|
|
20
|
+
if (executing.length >= poolLimit) {
|
|
21
|
+
await Promise.race(executing);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return Promise.all(ret);
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=promise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAS,GAAQ,EAAE,GAAkD,EAAE,EAAE,CACjG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAE3B,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,IAAuB,EACvB,GAAkD,EACpB,EAAE;IAChC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9G,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,GAAQ,EACR,QAAuD,EACvD,MAAyC,EACX,EAAE;IAChC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAErH,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,GAAQ,EACR,GAA4C,EAC5C,SAAiB,EACD,EAAE;IAClB,MAAM,GAAG,GAAmB,EAAE,CAAA;IAC9B,MAAM,SAAS,GAAmB,EAAE,CAAA;IACpC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;QACxD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEX,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE;YAC3B,MAAM,CAAC,GAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACtE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,EAAE;gBACjC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAC9B;SACF;KACF;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC,CAAA"}
|
package/dist/set.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,qCAStB,CAAA"}
|
package/dist/set.js
ADDED
package/dist/set.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,CAAS,EAAE,CAAS,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAK,CAAA;IACzB,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE;QACpB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SACf;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class SingleItem<T> {
|
|
2
|
+
item: T;
|
|
3
|
+
constructor(item: T);
|
|
4
|
+
map: <U>(fn: (item: T) => U) => SingleItem<U>;
|
|
5
|
+
filter: (fn: (item: T) => boolean) => SingleItem<T | undefined>;
|
|
6
|
+
}
|
|
7
|
+
export declare const singleItem: <T>(item: T) => SingleItem<T>;
|
|
8
|
+
//# sourceMappingURL=single-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-item.d.ts","sourceRoot":"","sources":["../src/single-item.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU,CAAC,CAAC;IACJ,IAAI,EAAE,CAAC;gBAAP,IAAI,EAAE,CAAC;IAE1B,GAAG,iBAAkB,CAAC,yBAAuD;IAE7E,MAAM,cAAe,CAAC,KAAK,OAAO,KAAG,WAAW,CAAC,GAAG,SAAS,CAAC,CAAsD;CACrH;AAED,eAAO,MAAM,UAAU,+BAAuC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class SingleItem {
|
|
2
|
+
constructor(item) {
|
|
3
|
+
this.item = item;
|
|
4
|
+
this.map = (fn) => new SingleItem(fn(this.item));
|
|
5
|
+
this.filter = (fn) => (fn(this.item) ? this : new SingleItem(undefined));
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export const singleItem = (item) => new SingleItem(item);
|
|
9
|
+
//# sourceMappingURL=single-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-item.js","sourceRoot":"","sources":["../src/single-item.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACrB,YAAmB,IAAO;QAAP,SAAI,GAAJ,IAAI,CAAG;QAE1B,QAAG,GAAG,CAAI,EAAkB,EAAiB,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAE7E,WAAM,GAAG,CAAC,EAAwB,EAA6B,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;IAJvF,CAAC;CAK/B;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,IAAO,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA"}
|
package/dist/string.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,QAAS,MAAM,WAA+C,CAAA;AAC7F,eAAO,MAAM,kBAAkB,QAAS,MAAM,WAA+C,CAAA"}
|
package/dist/string.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA"}
|
package/dist/time.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const minuteInMs: number;
|
|
2
|
+
export declare const time: {
|
|
3
|
+
ms: number;
|
|
4
|
+
sec: number;
|
|
5
|
+
min: number;
|
|
6
|
+
hour: number;
|
|
7
|
+
day: number;
|
|
8
|
+
week: number;
|
|
9
|
+
};
|
|
10
|
+
/** Returns a string of format `m:ss` / `mm:ss` / `h:mm:ss` / ... */
|
|
11
|
+
export declare const msAsTimeString: (ms: number) => string;
|
|
12
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,QAAY,CAAA;AAEnC,eAAO,MAAM,IAAI;;;;;;;CAOhB,CAAA;AAED,oEAAoE;AACpE,eAAO,MAAM,cAAc,OAAQ,MAAM,WAYxC,CAAA"}
|
package/dist/time.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const minuteInMs = 1000 * 60;
|
|
2
|
+
export const time = {
|
|
3
|
+
ms: 1,
|
|
4
|
+
sec: 1000,
|
|
5
|
+
min: 60 * 1000,
|
|
6
|
+
hour: 60 * 60 * 1000,
|
|
7
|
+
day: 24 * 60 * 60 * 1000,
|
|
8
|
+
week: 7 * 24 * 60 * 60 * 1000,
|
|
9
|
+
};
|
|
10
|
+
/** Returns a string of format `m:ss` / `mm:ss` / `h:mm:ss` / ... */
|
|
11
|
+
export const msAsTimeString = (ms) => {
|
|
12
|
+
const seconds = Math.floor(ms / 1000);
|
|
13
|
+
const minutes = Math.floor(seconds / 60);
|
|
14
|
+
const hours = Math.floor(minutes / 60);
|
|
15
|
+
const remainingSeconds = (seconds % 60).toString().padStart(2, '0');
|
|
16
|
+
const remainingMinutes = hours > 0 ? (minutes % 60).toString().padStart(2, '0') : minutes % 60;
|
|
17
|
+
const timeString = [hours > 0 ? `${hours}:` : '', `${remainingMinutes}:`, `${remainingSeconds}`]
|
|
18
|
+
.filter((val) => val !== '')
|
|
19
|
+
.join('');
|
|
20
|
+
return timeString;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=time.js.map
|
package/dist/time.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;AAEnC,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,EAAE,EAAE,CAAC;IACL,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,EAAE,GAAG,IAAI;IACd,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACpB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACxB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAC9B,CAAA;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACtC,MAAM,gBAAgB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACnE,MAAM,gBAAgB,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAA;IAE9F,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,gBAAgB,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC;SAC7F,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;SAC3B,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
@category JSON
|
|
3
|
+
*/
|
|
4
|
+
export type JsonObject = {
|
|
5
|
+
[Key in string]?: JsonValue;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
Matches a JSON array.
|
|
9
|
+
|
|
10
|
+
@category JSON
|
|
11
|
+
*/
|
|
12
|
+
export type JsonArray = JsonValue[];
|
|
13
|
+
/**
|
|
14
|
+
Matches any valid JSON primitive value.
|
|
15
|
+
|
|
16
|
+
@category JSON
|
|
17
|
+
*/
|
|
18
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
19
|
+
/**
|
|
20
|
+
Matches any valid JSON value.
|
|
21
|
+
|
|
22
|
+
@see `Jsonify` if you need to transform a type to one that is assignable to `JsonValue`.
|
|
23
|
+
|
|
24
|
+
@category JSON
|
|
25
|
+
*/
|
|
26
|
+
export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
|
|
27
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/types/json.ts"],"names":[],"mappings":"AAAA;;EAEE;AACF,MAAM,MAAM,UAAU,GAAG;KAAG,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,SAAS;CAAE,CAAA;AAExD;;;;EAIE;AACF,MAAM,MAAM,SAAS,GAAG,SAAS,EAAE,CAAA;AAEnC;;;;EAIE;AACF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AAE5D;;;;;;EAME;AACF,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/types/json.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@livestore/utils",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"react-native": "./dist/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"import": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"./effect": {
|
|
11
|
+
"import": "./dist/effect/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"typesVersions": {
|
|
16
|
+
"*": {
|
|
17
|
+
"effect": [
|
|
18
|
+
"./dist/effect"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"sideEffects": false,
|
|
23
|
+
"scripts": {
|
|
24
|
+
"test": "echo No tests yet"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@effect/data": "0.18.3",
|
|
28
|
+
"@effect/io": "0.39.1",
|
|
29
|
+
"@effect/match": "0.35.1",
|
|
30
|
+
"@effect/schema": "0.34.0",
|
|
31
|
+
"@effect/stm": "0.23.0",
|
|
32
|
+
"@effect/stream": "0.35.1",
|
|
33
|
+
"@opentelemetry/api": "^1.4.1",
|
|
34
|
+
"@opentelemetry/api-metrics": "^0.33.0",
|
|
35
|
+
"@opentelemetry/core": "^1.15.2",
|
|
36
|
+
"@opentelemetry/exporter-metrics-otlp-grpc": "^0.41.2",
|
|
37
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.41.2",
|
|
38
|
+
"@opentelemetry/exporter-trace-otlp-grpc": "0.41.2",
|
|
39
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.41.2",
|
|
40
|
+
"@opentelemetry/otlp-transformer": "^0.41.2",
|
|
41
|
+
"@opentelemetry/resources": "1.15.2",
|
|
42
|
+
"@opentelemetry/sdk-metrics": "^1.15.2",
|
|
43
|
+
"@opentelemetry/sdk-node": "^0.41.2",
|
|
44
|
+
"@opentelemetry/sdk-trace-base": "1.15.2",
|
|
45
|
+
"@opentelemetry/sdk-trace-node": "1.15.2",
|
|
46
|
+
"@opentelemetry/sdk-trace-web": "1.15.2",
|
|
47
|
+
"@opentelemetry/semantic-conventions": "1.15.2",
|
|
48
|
+
"@opentelemetry/tracing": "^0.24.0",
|
|
49
|
+
"date-fns": "^2.30.0",
|
|
50
|
+
"otel-websocket-exporter": "^0.0.21",
|
|
51
|
+
"pretty-bytes": "^6.1.1",
|
|
52
|
+
"uuid": "^9.0.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/uuid": "^9.0.3",
|
|
56
|
+
"@types/web": "^0.0.115"
|
|
57
|
+
}
|
|
58
|
+
}
|
package/src/Deferred.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class Deferred<T> {
|
|
2
|
+
private readonly _promise: Promise<T>
|
|
3
|
+
private _resolve!: (value: T | PromiseLike<T>) => void
|
|
4
|
+
private _reject!: (reason: any) => void
|
|
5
|
+
|
|
6
|
+
constructor() {
|
|
7
|
+
this._promise = new Promise<T>((resolve, reject) => {
|
|
8
|
+
this._resolve = resolve
|
|
9
|
+
this._reject = reject
|
|
10
|
+
})
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get promise(): Promise<T> {
|
|
14
|
+
return this._promise
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
resolve = (value: T | PromiseLike<T>): void => {
|
|
18
|
+
this._resolve(value)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
reject = (reason?: any): void => {
|
|
22
|
+
this._reject(reason)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/* eslint-disable prefer-arrow/prefer-arrow-functions */
|
|
2
|
+
import type * as otel from '@opentelemetry/api'
|
|
3
|
+
|
|
4
|
+
const makeNoopSpan = () => {
|
|
5
|
+
const performanceStartTime: DOMHighResTimeStamp = performance.now()
|
|
6
|
+
|
|
7
|
+
const span = {
|
|
8
|
+
_performanceStartTime: performanceStartTime,
|
|
9
|
+
setAttribute: () => null,
|
|
10
|
+
setAttributes: () => null,
|
|
11
|
+
addEvent: () => null,
|
|
12
|
+
setStatus: () => null,
|
|
13
|
+
updateName: () => null,
|
|
14
|
+
recordException: () => null,
|
|
15
|
+
end: () => {
|
|
16
|
+
const endTime: DOMHighResTimeStamp = performance.now()
|
|
17
|
+
const duration = endTime - performanceStartTime
|
|
18
|
+
const durationSecs = duration / 1000
|
|
19
|
+
const durationRestNs = (duration % 1000) * 1_000_000
|
|
20
|
+
;(span as any)._duration = [durationSecs, durationRestNs]
|
|
21
|
+
},
|
|
22
|
+
spanContext: () => {
|
|
23
|
+
return { traceId: 'noop-trace-id', spanId: 'noop-span-id' }
|
|
24
|
+
},
|
|
25
|
+
_duration: [0, 0],
|
|
26
|
+
} as unknown as otel.Span
|
|
27
|
+
|
|
28
|
+
return span
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const makeNoopTracer = () => {
|
|
32
|
+
return new NoopTracer() as unknown as otel.Tracer
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export class NoopTracer {
|
|
36
|
+
startSpan = () => makeNoopSpan()
|
|
37
|
+
|
|
38
|
+
startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(name: string, fn: F): ReturnType<F>
|
|
39
|
+
startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
|
|
40
|
+
name: string,
|
|
41
|
+
opts: otel.SpanOptions,
|
|
42
|
+
fn: F,
|
|
43
|
+
): ReturnType<F>
|
|
44
|
+
startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
|
|
45
|
+
name: string,
|
|
46
|
+
opts: otel.SpanOptions,
|
|
47
|
+
ctx: otel.Context,
|
|
48
|
+
fn: F,
|
|
49
|
+
): ReturnType<F>
|
|
50
|
+
startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
|
|
51
|
+
name: string,
|
|
52
|
+
arg2?: F | otel.SpanOptions,
|
|
53
|
+
arg3?: F | otel.Context,
|
|
54
|
+
arg4?: F,
|
|
55
|
+
): ReturnType<F> | undefined {
|
|
56
|
+
let _opts: otel.SpanOptions | undefined
|
|
57
|
+
let _ctx: otel.Context | undefined
|
|
58
|
+
let fn: F
|
|
59
|
+
|
|
60
|
+
if (arguments.length < 2) {
|
|
61
|
+
return
|
|
62
|
+
} else if (arguments.length === 2) {
|
|
63
|
+
fn = arg2 as F
|
|
64
|
+
} else if (arguments.length === 3) {
|
|
65
|
+
_opts = arg2 as otel.SpanOptions | undefined
|
|
66
|
+
fn = arg3 as F
|
|
67
|
+
} else {
|
|
68
|
+
_opts = arg2 as otel.SpanOptions | undefined
|
|
69
|
+
_ctx = arg3 as otel.Context | undefined
|
|
70
|
+
fn = arg4 as F
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return fn(makeNoopSpan())
|
|
74
|
+
}
|
|
75
|
+
}
|
package/src/base64.ts
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
// https://deno.land/std/encoding/base64.ts
|
|
4
|
+
|
|
5
|
+
const base64abc = [
|
|
6
|
+
'A',
|
|
7
|
+
'B',
|
|
8
|
+
'C',
|
|
9
|
+
'D',
|
|
10
|
+
'E',
|
|
11
|
+
'F',
|
|
12
|
+
'G',
|
|
13
|
+
'H',
|
|
14
|
+
'I',
|
|
15
|
+
'J',
|
|
16
|
+
'K',
|
|
17
|
+
'L',
|
|
18
|
+
'M',
|
|
19
|
+
'N',
|
|
20
|
+
'O',
|
|
21
|
+
'P',
|
|
22
|
+
'Q',
|
|
23
|
+
'R',
|
|
24
|
+
'S',
|
|
25
|
+
'T',
|
|
26
|
+
'U',
|
|
27
|
+
'V',
|
|
28
|
+
'W',
|
|
29
|
+
'X',
|
|
30
|
+
'Y',
|
|
31
|
+
'Z',
|
|
32
|
+
'a',
|
|
33
|
+
'b',
|
|
34
|
+
'c',
|
|
35
|
+
'd',
|
|
36
|
+
'e',
|
|
37
|
+
'f',
|
|
38
|
+
'g',
|
|
39
|
+
'h',
|
|
40
|
+
'i',
|
|
41
|
+
'j',
|
|
42
|
+
'k',
|
|
43
|
+
'l',
|
|
44
|
+
'm',
|
|
45
|
+
'n',
|
|
46
|
+
'o',
|
|
47
|
+
'p',
|
|
48
|
+
'q',
|
|
49
|
+
'r',
|
|
50
|
+
's',
|
|
51
|
+
't',
|
|
52
|
+
'u',
|
|
53
|
+
'v',
|
|
54
|
+
'w',
|
|
55
|
+
'x',
|
|
56
|
+
'y',
|
|
57
|
+
'z',
|
|
58
|
+
'0',
|
|
59
|
+
'1',
|
|
60
|
+
'2',
|
|
61
|
+
'3',
|
|
62
|
+
'4',
|
|
63
|
+
'5',
|
|
64
|
+
'6',
|
|
65
|
+
'7',
|
|
66
|
+
'8',
|
|
67
|
+
'9',
|
|
68
|
+
'+',
|
|
69
|
+
'/',
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727
|
|
74
|
+
* Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation
|
|
75
|
+
* @param data
|
|
76
|
+
*/
|
|
77
|
+
export const encode = (data: ArrayBuffer | string): string => {
|
|
78
|
+
const uint8 =
|
|
79
|
+
typeof data === 'string' ? new TextEncoder().encode(data) : data instanceof Uint8Array ? data : new Uint8Array(data)
|
|
80
|
+
let result = '',
|
|
81
|
+
i
|
|
82
|
+
const l = uint8.length
|
|
83
|
+
for (i = 2; i < l; i += 3) {
|
|
84
|
+
result += base64abc[uint8[i - 2]! >> 2]
|
|
85
|
+
result += base64abc[((uint8[i - 2]! & 0x03) << 4) | (uint8[i - 1]! >> 4)]
|
|
86
|
+
result += base64abc[((uint8[i - 1]! & 0x0f) << 2) | (uint8[i]! >> 6)]
|
|
87
|
+
result += base64abc[uint8[i]! & 0x3f]
|
|
88
|
+
}
|
|
89
|
+
if (i === l + 1) {
|
|
90
|
+
// 1 octet yet to write
|
|
91
|
+
result += base64abc[uint8[i - 2]! >> 2]
|
|
92
|
+
result += base64abc[(uint8[i - 2]! & 0x03) << 4]
|
|
93
|
+
result += '=='
|
|
94
|
+
}
|
|
95
|
+
if (i === l) {
|
|
96
|
+
// 2 octets yet to write
|
|
97
|
+
result += base64abc[uint8[i - 2]! >> 2]
|
|
98
|
+
result += base64abc[((uint8[i - 2]! & 0x03) << 4) | (uint8[i - 1]! >> 4)]
|
|
99
|
+
result += base64abc[(uint8[i - 1]! & 0x0f) << 2]
|
|
100
|
+
result += '='
|
|
101
|
+
}
|
|
102
|
+
return result
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Decodes a given RFC4648 base64 encoded string
|
|
107
|
+
* @param b64
|
|
108
|
+
*/
|
|
109
|
+
export const decode = (b64: string): Uint8Array => {
|
|
110
|
+
const binString = atob(b64)
|
|
111
|
+
const size = binString.length
|
|
112
|
+
const bytes = new Uint8Array(size)
|
|
113
|
+
for (let i = 0; i < size; i++) {
|
|
114
|
+
// eslint-disable-next-line unicorn/prefer-code-point
|
|
115
|
+
bytes[i] = binString.charCodeAt(i)
|
|
116
|
+
}
|
|
117
|
+
return bytes
|
|
118
|
+
}
|
package/src/browser.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type DetectedBrowser = 'Something' | 'Opera' | 'Chrome' | 'Safari' | 'Firefox' | 'Edge' | 'Browser'
|
|
2
|
+
|
|
3
|
+
export const detectBrowserName: () => DetectedBrowser = () => {
|
|
4
|
+
if (!navigator.userAgent) {
|
|
5
|
+
return 'Something'
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const isOpera = navigator.userAgent.includes('OP')
|
|
9
|
+
const isChrome = navigator.userAgent.includes('Chrome') && !isOpera
|
|
10
|
+
const isSafari = navigator.userAgent.includes('Safari') && !isChrome
|
|
11
|
+
const isFirefox = navigator.userAgent.includes('Firefox')
|
|
12
|
+
const isEdge = navigator.userAgent.includes('Edg') || navigator.userAgent.includes('Trident')
|
|
13
|
+
|
|
14
|
+
// TODO: also parse out version
|
|
15
|
+
|
|
16
|
+
if (isOpera) {
|
|
17
|
+
return 'Opera'
|
|
18
|
+
}
|
|
19
|
+
if (isChrome) {
|
|
20
|
+
return 'Chrome'
|
|
21
|
+
}
|
|
22
|
+
if (isSafari) {
|
|
23
|
+
return 'Safari'
|
|
24
|
+
}
|
|
25
|
+
if (isFirefox) {
|
|
26
|
+
return 'Firefox'
|
|
27
|
+
}
|
|
28
|
+
if (isEdge) {
|
|
29
|
+
return 'Edge'
|
|
30
|
+
}
|
|
31
|
+
return 'Browser'
|
|
32
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as Cause from '@effect/io/Cause'
|
|
2
|
+
import * as Effect from '@effect/io/Effect'
|
|
3
|
+
|
|
4
|
+
export * from '@effect/io/Effect'
|
|
5
|
+
|
|
6
|
+
export const logError = <A>(message: A, ...rest: any[]): Effect.Effect<never, never, void> =>
|
|
7
|
+
Effect.sync(() => {
|
|
8
|
+
console.error(message, ...rest)
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
/** Logs both on errors and defects */
|
|
12
|
+
export const tapCauseLogPretty = <R, E, A>(eff: Effect.Effect<R, E, A>): Effect.Effect<R, E, A> =>
|
|
13
|
+
Effect.tapErrorCause(eff, (err) => {
|
|
14
|
+
if (Cause.isInterruptedOnly(err)) {
|
|
15
|
+
return Effect.unit
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// @ts-expect-error TODO get proper worker name https://github.com/vitejs/vite/issues/12992
|
|
19
|
+
const threadName = window.__tmpWorkerName ? `Worker ${window.__tmpWorkerName}` : 'Main Thread'
|
|
20
|
+
|
|
21
|
+
return logError(`Error on ${threadName}`, Cause.pretty(err))
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
export const tapSync =
|
|
25
|
+
<A>(tapFn: (a: A) => unknown) =>
|
|
26
|
+
<R, E>(eff: Effect.Effect<R, E, A>): Effect.Effect<R, E, A> =>
|
|
27
|
+
Effect.tap(eff, (a) => Effect.sync(() => tapFn(a)))
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TaggedClass } from '@effect/data/Data'
|
|
2
|
+
|
|
3
|
+
import { errorToString, objectToString } from '../index.js'
|
|
4
|
+
|
|
5
|
+
export class UnknownError extends TaggedClass('UnknownError')<{ readonly error: any; readonly payload?: any }> {
|
|
6
|
+
toString = () => {
|
|
7
|
+
const payloadStr = this.payload ? ` with payload ${objectToString(this.payload)}` : ''
|
|
8
|
+
return `UnknownError: ${errorToString(this.error)}${payloadStr}`
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
static from = (error: any, payload?: any) => new UnknownError({ error, payload })
|
|
12
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as Layer from '@effect/io/Layer'
|
|
2
|
+
import type * as otelMetrics from '@opentelemetry/api-metrics'
|
|
3
|
+
|
|
4
|
+
import { NoopTracer } from '../../NoopTracer.js'
|
|
5
|
+
import * as Otel from './index.js'
|
|
6
|
+
|
|
7
|
+
//
|
|
8
|
+
// Dummy Tracer
|
|
9
|
+
//
|
|
10
|
+
|
|
11
|
+
const DummyTracing = () =>
|
|
12
|
+
({
|
|
13
|
+
[Otel.TracerSymbol]: Otel.TracerSymbol,
|
|
14
|
+
tracer: new NoopTracer(),
|
|
15
|
+
}) as const
|
|
16
|
+
|
|
17
|
+
export const DummyTracingLive = Layer.sync(Otel.Tracer, () => DummyTracing())
|
|
18
|
+
|
|
19
|
+
const NoopMeter = () =>
|
|
20
|
+
({
|
|
21
|
+
createHistogram: () => ({ record: () => {} }),
|
|
22
|
+
createCounter: () => ({ add: () => {} }),
|
|
23
|
+
createUpDownCounter: () => ({ add: () => {} }),
|
|
24
|
+
}) as unknown as otelMetrics.Meter
|
|
25
|
+
|
|
26
|
+
const DummyMeter = () =>
|
|
27
|
+
({
|
|
28
|
+
[Otel.MeterSymbol]: Otel.MeterSymbol,
|
|
29
|
+
meter: NoopMeter(),
|
|
30
|
+
}) as const
|
|
31
|
+
|
|
32
|
+
export const DummyMeterLive = Layer.sync(Otel.Meter, () => DummyMeter())
|