@smoothbricks/lmao 0.1.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/README.md +269 -0
- package/dist/allocator.wasm +0 -0
- package/dist/bun/preload.d.ts +11 -0
- package/dist/bun/preload.d.ts.map +1 -0
- package/dist/bun/preload.js +10 -0
- package/dist/bun/trace-preload.d.ts +8 -0
- package/dist/bun/trace-preload.d.ts.map +1 -0
- package/dist/bun/trace-preload.js +12 -0
- package/dist/es.d.ts +8 -0
- package/dist/es.d.ts.map +1 -0
- package/dist/es.js +9 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/lib/JsBufferStrategy.d.ts +49 -0
- package/dist/lib/JsBufferStrategy.d.ts.map +1 -0
- package/dist/lib/JsBufferStrategy.js +60 -0
- package/dist/lib/archive/chunkCompaction.d.ts +15 -0
- package/dist/lib/archive/chunkCompaction.d.ts.map +1 -0
- package/dist/lib/archive/chunkCompaction.js +24 -0
- package/dist/lib/archive/chunkEnvelope.d.ts +21 -0
- package/dist/lib/archive/chunkEnvelope.d.ts.map +1 -0
- package/dist/lib/archive/chunkEnvelope.js +55 -0
- package/dist/lib/archive/chunkRouting.d.ts +10 -0
- package/dist/lib/archive/chunkRouting.d.ts.map +1 -0
- package/dist/lib/archive/chunkRouting.js +47 -0
- package/dist/lib/archive/chunkStats.d.ts +12 -0
- package/dist/lib/archive/chunkStats.d.ts.map +1 -0
- package/dist/lib/archive/chunkStats.js +10 -0
- package/dist/lib/archive/index.d.ts +5 -0
- package/dist/lib/archive/index.d.ts.map +1 -0
- package/dist/lib/archive/index.js +4 -0
- package/dist/lib/arrow/capacityStats.d.ts +9 -0
- package/dist/lib/arrow/capacityStats.d.ts.map +1 -0
- package/dist/lib/arrow/capacityStats.js +231 -0
- package/dist/lib/arrow/dictionaries.d.ts +27 -0
- package/dist/lib/arrow/dictionaries.d.ts.map +1 -0
- package/dist/lib/arrow/dictionaries.js +135 -0
- package/dist/lib/arrow/flechette.d.ts +40 -0
- package/dist/lib/arrow/flechette.d.ts.map +1 -0
- package/dist/lib/arrow/flechette.js +67 -0
- package/dist/lib/arrow/utils.d.ts +38 -0
- package/dist/lib/arrow/utils.d.ts.map +1 -0
- package/dist/lib/arrow/utils.js +112 -0
- package/dist/lib/buffer/Nanoseconds.d.ts +109 -0
- package/dist/lib/buffer/Nanoseconds.d.ts.map +1 -0
- package/dist/lib/buffer/Nanoseconds.js +86 -0
- package/dist/lib/bufferStrategy.d.ts +95 -0
- package/dist/lib/bufferStrategy.d.ts.map +1 -0
- package/dist/lib/bufferStrategy.js +1 -0
- package/dist/lib/capacityTuning.d.ts +50 -0
- package/dist/lib/capacityTuning.d.ts.map +1 -0
- package/dist/lib/capacityTuning.js +65 -0
- package/dist/lib/codegen/evaluatorGenerator.d.ts +35 -0
- package/dist/lib/codegen/evaluatorGenerator.d.ts.map +1 -0
- package/dist/lib/codegen/evaluatorGenerator.js +199 -0
- package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts +139 -0
- package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts.map +1 -0
- package/dist/lib/codegen/fixedPositionWriterGenerator.js +289 -0
- package/dist/lib/codegen/spanLoggerGenerator.d.ts +115 -0
- package/dist/lib/codegen/spanLoggerGenerator.d.ts.map +1 -0
- package/dist/lib/codegen/spanLoggerGenerator.js +575 -0
- package/dist/lib/convertToArrow.d.ts +40 -0
- package/dist/lib/convertToArrow.d.ts.map +1 -0
- package/dist/lib/convertToArrow.js +1467 -0
- package/dist/lib/defineOpContext.d.ts +96 -0
- package/dist/lib/defineOpContext.d.ts.map +1 -0
- package/dist/lib/defineOpContext.js +227 -0
- package/dist/lib/errors/Blocked.d.ts +113 -0
- package/dist/lib/errors/Blocked.d.ts.map +1 -0
- package/dist/lib/errors/Blocked.js +68 -0
- package/dist/lib/errors/CodeError.d.ts +101 -0
- package/dist/lib/errors/CodeError.d.ts.map +1 -0
- package/dist/lib/errors/CodeError.js +42 -0
- package/dist/lib/errors/RetriesExhausted.d.ts +67 -0
- package/dist/lib/errors/RetriesExhausted.d.ts.map +1 -0
- package/dist/lib/errors/RetriesExhausted.js +31 -0
- package/dist/lib/errors/Transient.d.ts +115 -0
- package/dist/lib/errors/Transient.d.ts.map +1 -0
- package/dist/lib/errors/Transient.js +54 -0
- package/dist/lib/errors/index.d.ts +14 -0
- package/dist/lib/errors/index.d.ts.map +1 -0
- package/dist/lib/errors/index.js +16 -0
- package/dist/lib/errors/retry-policy.d.ts +60 -0
- package/dist/lib/errors/retry-policy.d.ts.map +1 -0
- package/dist/lib/errors/retry-policy.js +54 -0
- package/dist/lib/flushScheduler.d.ts +162 -0
- package/dist/lib/flushScheduler.d.ts.map +1 -0
- package/dist/lib/flushScheduler.js +388 -0
- package/dist/lib/library.d.ts +149 -0
- package/dist/lib/library.d.ts.map +1 -0
- package/dist/lib/library.js +588 -0
- package/dist/lib/logApi.d.ts +61 -0
- package/dist/lib/logApi.d.ts.map +1 -0
- package/dist/lib/logApi.js +12 -0
- package/dist/lib/logBinding.d.ts +63 -0
- package/dist/lib/logBinding.d.ts.map +1 -0
- package/dist/lib/logBinding.js +1 -0
- package/dist/lib/op.d.ts +105 -0
- package/dist/lib/op.d.ts.map +1 -0
- package/dist/lib/op.js +59 -0
- package/dist/lib/opContext/contextTypes.d.ts +88 -0
- package/dist/lib/opContext/contextTypes.d.ts.map +1 -0
- package/dist/lib/opContext/contextTypes.js +34 -0
- package/dist/lib/opContext/createOpGroup.d.ts +57 -0
- package/dist/lib/opContext/createOpGroup.d.ts.map +1 -0
- package/dist/lib/opContext/createOpGroup.js +341 -0
- package/dist/lib/opContext/defineOp.d.ts +83 -0
- package/dist/lib/opContext/defineOp.d.ts.map +1 -0
- package/dist/lib/opContext/defineOp.js +197 -0
- package/dist/lib/opContext/featureFlagTypes.d.ts +58 -0
- package/dist/lib/opContext/featureFlagTypes.d.ts.map +1 -0
- package/dist/lib/opContext/featureFlagTypes.js +1 -0
- package/dist/lib/opContext/index.d.ts +13 -0
- package/dist/lib/opContext/index.d.ts.map +1 -0
- package/dist/lib/opContext/index.js +15 -0
- package/dist/lib/opContext/opGroupTypes.d.ts +250 -0
- package/dist/lib/opContext/opGroupTypes.d.ts.map +1 -0
- package/dist/lib/opContext/opGroupTypes.js +31 -0
- package/dist/lib/opContext/opTypes.d.ts +48 -0
- package/dist/lib/opContext/opTypes.d.ts.map +1 -0
- package/dist/lib/opContext/opTypes.js +7 -0
- package/dist/lib/opContext/spanContextTypes.d.ts +347 -0
- package/dist/lib/opContext/spanContextTypes.d.ts.map +1 -0
- package/dist/lib/opContext/spanContextTypes.js +1 -0
- package/dist/lib/opContext/types.d.ts +297 -0
- package/dist/lib/opContext/types.d.ts.map +1 -0
- package/dist/lib/opContext/types.js +16 -0
- package/dist/lib/result.d.ts +308 -0
- package/dist/lib/result.d.ts.map +1 -0
- package/dist/lib/result.js +359 -0
- package/dist/lib/schema/LogSchema.d.ts +62 -0
- package/dist/lib/schema/LogSchema.d.ts.map +1 -0
- package/dist/lib/schema/LogSchema.js +134 -0
- package/dist/lib/schema/builder.d.ts +12 -0
- package/dist/lib/schema/builder.d.ts.map +1 -0
- package/dist/lib/schema/builder.js +169 -0
- package/dist/lib/schema/defineFeatureFlags.d.ts +60 -0
- package/dist/lib/schema/defineFeatureFlags.d.ts.map +1 -0
- package/dist/lib/schema/defineFeatureFlags.js +29 -0
- package/dist/lib/schema/defineLogSchema.d.ts +87 -0
- package/dist/lib/schema/defineLogSchema.d.ts.map +1 -0
- package/dist/lib/schema/defineLogSchema.js +171 -0
- package/dist/lib/schema/evaluator.d.ts +267 -0
- package/dist/lib/schema/evaluator.d.ts.map +1 -0
- package/dist/lib/schema/evaluator.js +169 -0
- package/dist/lib/schema/extend.d.ts +14 -0
- package/dist/lib/schema/extend.d.ts.map +1 -0
- package/dist/lib/schema/extend.js +51 -0
- package/dist/lib/schema/systemSchema.d.ts +112 -0
- package/dist/lib/schema/systemSchema.d.ts.map +1 -0
- package/dist/lib/schema/systemSchema.js +260 -0
- package/dist/lib/schema/typeGuards.d.ts +52 -0
- package/dist/lib/schema/typeGuards.d.ts.map +1 -0
- package/dist/lib/schema/typeGuards.js +127 -0
- package/dist/lib/schema/types.d.ts +156 -0
- package/dist/lib/schema/types.d.ts.map +1 -0
- package/dist/lib/schema/types.js +4 -0
- package/dist/lib/spanBuffer.d.ts +133 -0
- package/dist/lib/spanBuffer.d.ts.map +1 -0
- package/dist/lib/spanBuffer.js +442 -0
- package/dist/lib/spanBufferHelpers.d.ts +53 -0
- package/dist/lib/spanBufferHelpers.d.ts.map +1 -0
- package/dist/lib/spanBufferHelpers.js +65 -0
- package/dist/lib/spanBufferStats.d.ts +38 -0
- package/dist/lib/spanBufferStats.d.ts.map +1 -0
- package/dist/lib/spanBufferStats.js +1 -0
- package/dist/lib/spanContext.d.ts +141 -0
- package/dist/lib/spanContext.d.ts.map +1 -0
- package/dist/lib/spanContext.js +763 -0
- package/dist/lib/sqlite/index.d.ts +14 -0
- package/dist/lib/sqlite/index.d.ts.map +1 -0
- package/dist/lib/sqlite/index.js +12 -0
- package/dist/lib/sqlite/sqlite-async-writer.d.ts +24 -0
- package/dist/lib/sqlite/sqlite-async-writer.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-async-writer.js +65 -0
- package/dist/lib/sqlite/sqlite-common.d.ts +37 -0
- package/dist/lib/sqlite/sqlite-common.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-common.js +207 -0
- package/dist/lib/sqlite/sqlite-d1.d.ts +25 -0
- package/dist/lib/sqlite/sqlite-d1.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-d1.js +67 -0
- package/dist/lib/sqlite/sqlite-db.d.ts +29 -0
- package/dist/lib/sqlite/sqlite-db.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-db.js +1 -0
- package/dist/lib/sqlite/sqlite-node.d.ts +16 -0
- package/dist/lib/sqlite/sqlite-node.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-node.js +68 -0
- package/dist/lib/sqlite/sqlite-writer.d.ts +39 -0
- package/dist/lib/sqlite/sqlite-writer.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-writer.js +78 -0
- package/dist/lib/testing/bun-harness.d.ts +150 -0
- package/dist/lib/testing/bun-harness.d.ts.map +1 -0
- package/dist/lib/testing/bun-harness.js +729 -0
- package/dist/lib/testing/extractFacts.d.ts +73 -0
- package/dist/lib/testing/extractFacts.d.ts.map +1 -0
- package/dist/lib/testing/extractFacts.js +237 -0
- package/dist/lib/testing/facts.d.ts +235 -0
- package/dist/lib/testing/facts.d.ts.map +1 -0
- package/dist/lib/testing/facts.js +209 -0
- package/dist/lib/testing/index.d.ts +58 -0
- package/dist/lib/testing/index.d.ts.map +1 -0
- package/dist/lib/testing/index.js +74 -0
- package/dist/lib/testing/queryable-span.d.ts +39 -0
- package/dist/lib/testing/queryable-span.d.ts.map +1 -0
- package/dist/lib/testing/queryable-span.js +58 -0
- package/dist/lib/testing/span-query.d.ts +21 -0
- package/dist/lib/testing/span-query.d.ts.map +1 -0
- package/dist/lib/testing/span-query.js +47 -0
- package/dist/lib/testing/stdio-replay.d.ts +4 -0
- package/dist/lib/testing/stdio-replay.d.ts.map +1 -0
- package/dist/lib/testing/stdio-replay.js +42 -0
- package/dist/lib/testing/trace-query.d.ts +59 -0
- package/dist/lib/testing/trace-query.d.ts.map +1 -0
- package/dist/lib/testing/trace-query.js +462 -0
- package/dist/lib/testing/vitest-harness.d.ts +135 -0
- package/dist/lib/testing/vitest-harness.d.ts.map +1 -0
- package/dist/lib/testing/vitest-harness.js +486 -0
- package/dist/lib/threadId.d.ts +58 -0
- package/dist/lib/threadId.d.ts.map +1 -0
- package/dist/lib/threadId.js +123 -0
- package/dist/lib/traceContext.d.ts +116 -0
- package/dist/lib/traceContext.d.ts.map +1 -0
- package/dist/lib/traceContext.js +37 -0
- package/dist/lib/traceId.d.ts +78 -0
- package/dist/lib/traceId.d.ts.map +1 -0
- package/dist/lib/traceId.js +87 -0
- package/dist/lib/traceRoot.d.ts +133 -0
- package/dist/lib/traceRoot.d.ts.map +1 -0
- package/dist/lib/traceRoot.es.d.ts +75 -0
- package/dist/lib/traceRoot.es.d.ts.map +1 -0
- package/dist/lib/traceRoot.es.js +129 -0
- package/dist/lib/traceRoot.js +19 -0
- package/dist/lib/traceRoot.node.d.ts +77 -0
- package/dist/lib/traceRoot.node.d.ts.map +1 -0
- package/dist/lib/traceRoot.node.js +133 -0
- package/dist/lib/traceRoot.universal.d.ts +3 -0
- package/dist/lib/traceRoot.universal.d.ts.map +1 -0
- package/dist/lib/traceRoot.universal.js +17 -0
- package/dist/lib/tracer.d.ts +296 -0
- package/dist/lib/tracer.d.ts.map +1 -0
- package/dist/lib/tracer.js +346 -0
- package/dist/lib/tracers/ArrayQueueTracer.d.ts +56 -0
- package/dist/lib/tracers/ArrayQueueTracer.d.ts.map +1 -0
- package/dist/lib/tracers/ArrayQueueTracer.js +67 -0
- package/dist/lib/tracers/CompositeTracer.d.ts +24 -0
- package/dist/lib/tracers/CompositeTracer.d.ts.map +1 -0
- package/dist/lib/tracers/CompositeTracer.js +57 -0
- package/dist/lib/tracers/NoOpTracer.d.ts +58 -0
- package/dist/lib/tracers/NoOpTracer.d.ts.map +1 -0
- package/dist/lib/tracers/NoOpTracer.js +41 -0
- package/dist/lib/tracers/SQLiteTracer.d.ts +42 -0
- package/dist/lib/tracers/SQLiteTracer.d.ts.map +1 -0
- package/dist/lib/tracers/SQLiteTracer.js +84 -0
- package/dist/lib/tracers/StdioTracer.d.ts +83 -0
- package/dist/lib/tracers/StdioTracer.d.ts.map +1 -0
- package/dist/lib/tracers/StdioTracer.js +270 -0
- package/dist/lib/tracers/TestTracer.d.ts +95 -0
- package/dist/lib/tracers/TestTracer.d.ts.map +1 -0
- package/dist/lib/tracers/TestTracer.js +87 -0
- package/dist/lib/tracers/index.d.ts +12 -0
- package/dist/lib/tracers/index.d.ts.map +1 -0
- package/dist/lib/tracers/index.js +11 -0
- package/dist/lib/types.d.ts +366 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +1 -0
- package/dist/lib/utf8Cache.d.ts +111 -0
- package/dist/lib/utf8Cache.d.ts.map +1 -0
- package/dist/lib/utf8Cache.js +177 -0
- package/dist/lib/wasm/WasmBufferStrategy.d.ts +88 -0
- package/dist/lib/wasm/WasmBufferStrategy.d.ts.map +1 -0
- package/dist/lib/wasm/WasmBufferStrategy.js +138 -0
- package/dist/lib/wasm/wasmAllocator.d.ts +109 -0
- package/dist/lib/wasm/wasmAllocator.d.ts.map +1 -0
- package/dist/lib/wasm/wasmAllocator.js +227 -0
- package/dist/lib/wasm/wasmSpanBuffer.d.ts +123 -0
- package/dist/lib/wasm/wasmSpanBuffer.d.ts.map +1 -0
- package/dist/lib/wasm/wasmSpanBuffer.js +772 -0
- package/dist/lib/wasm/wasmTraceRoot.d.ts +167 -0
- package/dist/lib/wasm/wasmTraceRoot.d.ts.map +1 -0
- package/dist/lib/wasm/wasmTraceRoot.js +264 -0
- package/dist/node.d.ts +7 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +8 -0
- package/dist/testing.d.ts +18 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +17 -0
- package/package.json +193 -0
- package/src/bun/preload.ts +11 -0
- package/src/bun/trace-preload.ts +14 -0
- package/src/es.ts +11 -0
- package/src/index.ts +194 -0
- package/src/lib/JsBufferStrategy.ts +102 -0
- package/src/lib/__tests__/arrow-builder-integration/arrow-conversion.test.ts +485 -0
- package/src/lib/__tests__/arrow-builder-integration/binary-arrow-conversion.test.ts +390 -0
- package/src/lib/__tests__/arrow-builder-integration/binary-comparison.test.ts +647 -0
- package/src/lib/__tests__/arrow-builder-integration/binary-format-compliance.test.ts +292 -0
- package/src/lib/__tests__/arrow-builder-integration/buffer-chaining.test.ts +354 -0
- package/src/lib/__tests__/arrow-builder-integration/foundation.test.ts +127 -0
- package/src/lib/__tests__/arrow-builder-integration/integration.test.ts +392 -0
- package/src/lib/__tests__/arrow-builder-integration/lazy-columns.test.ts +389 -0
- package/src/lib/__tests__/arrow-conversion-algorithms.test.ts +54 -0
- package/src/lib/__tests__/arrow-test-helpers.ts +71 -0
- package/src/lib/__tests__/binary-e2e.test.ts +203 -0
- package/src/lib/__tests__/buffer-overflow-op-api.test.ts +608 -0
- package/src/lib/__tests__/buffer-overflow.test.ts +612 -0
- package/src/lib/__tests__/capacity-tuning.test.ts +544 -0
- package/src/lib/__tests__/effective-schema.test.ts +439 -0
- package/src/lib/__tests__/flechette.test.ts +42 -0
- package/src/lib/__tests__/flushScheduler.test.ts +537 -0
- package/src/lib/__tests__/integration.test.ts +600 -0
- package/src/lib/__tests__/library.test.ts +934 -0
- package/src/lib/__tests__/nested-library-tasks.test.ts +849 -0
- package/src/lib/__tests__/op-context-binding.test.ts +135 -0
- package/src/lib/__tests__/op-metadata.test.ts +198 -0
- package/src/lib/__tests__/op-type-safety.test.ts +71 -0
- package/src/lib/__tests__/package-exports.test.ts +57 -0
- package/src/lib/__tests__/remapped-buffer-view-integration.test.ts +319 -0
- package/src/lib/__tests__/remapped-buffer-view.test.ts +635 -0
- package/src/lib/__tests__/scope-attributes.test.ts +348 -0
- package/src/lib/__tests__/span-lifecycle.test.ts +680 -0
- package/src/lib/__tests__/sync-async-trace.test.ts +435 -0
- package/src/lib/__tests__/test-helpers.ts +318 -0
- package/src/lib/__tests__/timestamp.test.ts +259 -0
- package/src/lib/__tests__/trace-archive-primitives.test.ts +98 -0
- package/src/lib/__tests__/traceContext-type-enforcement.test.ts +271 -0
- package/src/lib/__tests__/tracer.test.ts +211 -0
- package/src/lib/__tests__/type-narrowing.test.ts +137 -0
- package/src/lib/archive/chunkCompaction.ts +44 -0
- package/src/lib/archive/chunkEnvelope.ts +79 -0
- package/src/lib/archive/chunkRouting.ts +70 -0
- package/src/lib/archive/chunkStats.ts +25 -0
- package/src/lib/archive/index.ts +4 -0
- package/src/lib/arrow/capacityStats.ts +340 -0
- package/src/lib/arrow/dictionaries.ts +159 -0
- package/src/lib/arrow/flechette.ts +114 -0
- package/src/lib/arrow/utils.ts +126 -0
- package/src/lib/buffer/Nanoseconds.ts +131 -0
- package/src/lib/bufferStrategy.ts +106 -0
- package/src/lib/capacityTuning.ts +102 -0
- package/src/lib/codegen/__tests__/__snapshots__/evaluatorGenerator.test.ts.snap +160 -0
- package/src/lib/codegen/__tests__/__snapshots__/scopeGenerator.test.ts.snap +196 -0
- package/src/lib/codegen/__tests__/__snapshots__/spanLoggerGenerator.test.ts.snap +1965 -0
- package/src/lib/codegen/__tests__/evaluatorGenerator.test.ts +516 -0
- package/src/lib/codegen/__tests__/nullBitmap.test.ts +207 -0
- package/src/lib/codegen/__tests__/spanLoggerGenerator.test.ts +237 -0
- package/src/lib/codegen/evaluatorGenerator.ts +309 -0
- package/src/lib/codegen/fixedPositionWriterGenerator.ts +444 -0
- package/src/lib/codegen/spanLoggerGenerator.ts +715 -0
- package/src/lib/convertToArrow.ts +1805 -0
- package/src/lib/defineOpContext.ts +398 -0
- package/src/lib/errors/Blocked.ts +165 -0
- package/src/lib/errors/CodeError.ts +132 -0
- package/src/lib/errors/RetriesExhausted.ts +78 -0
- package/src/lib/errors/Transient.ts +168 -0
- package/src/lib/errors/__tests__/Blocked-config.test.ts +152 -0
- package/src/lib/errors/__tests__/Transient.test.ts +129 -0
- package/src/lib/errors/__tests__/retry-policy.test.ts +85 -0
- package/src/lib/errors/index.ts +24 -0
- package/src/lib/errors/retry-policy.ts +87 -0
- package/src/lib/flushScheduler.ts +509 -0
- package/src/lib/library.ts +682 -0
- package/src/lib/logApi.ts +70 -0
- package/src/lib/logBinding.ts +67 -0
- package/src/lib/op.ts +103 -0
- package/src/lib/opContext/__tests__/retry.test.ts +764 -0
- package/src/lib/opContext/contextTypes.ts +130 -0
- package/src/lib/opContext/createOpGroup.ts +456 -0
- package/src/lib/opContext/defineOp.ts +281 -0
- package/src/lib/opContext/featureFlagTypes.ts +54 -0
- package/src/lib/opContext/index.ts +16 -0
- package/src/lib/opContext/opGroupTypes.ts +342 -0
- package/src/lib/opContext/opTypes.ts +80 -0
- package/src/lib/opContext/spanContextTypes.ts +398 -0
- package/src/lib/opContext/types.ts +403 -0
- package/src/lib/result.ts +550 -0
- package/src/lib/schema/LogSchema.ts +153 -0
- package/src/lib/schema/__tests__/defineLogSchema.test.ts +342 -0
- package/src/lib/schema/__tests__/featureFlags.test.ts +443 -0
- package/src/lib/schema/builder.ts +201 -0
- package/src/lib/schema/defineFeatureFlags.ts +91 -0
- package/src/lib/schema/defineLogSchema.ts +291 -0
- package/src/lib/schema/evaluator.ts +404 -0
- package/src/lib/schema/extend.ts +69 -0
- package/src/lib/schema/systemSchema.ts +339 -0
- package/src/lib/schema/typeGuards.ts +163 -0
- package/src/lib/schema/types.ts +265 -0
- package/src/lib/spanBuffer.ts +571 -0
- package/src/lib/spanBufferHelpers.ts +73 -0
- package/src/lib/spanBufferStats.ts +40 -0
- package/src/lib/spanContext.ts +1566 -0
- package/src/lib/sqlite/__tests__/sqlite-common.test.ts +89 -0
- package/src/lib/sqlite/index.ts +26 -0
- package/src/lib/sqlite/sqlite-async-writer.ts +101 -0
- package/src/lib/sqlite/sqlite-common.ts +309 -0
- package/src/lib/sqlite/sqlite-d1.ts +104 -0
- package/src/lib/sqlite/sqlite-db.ts +32 -0
- package/src/lib/sqlite/sqlite-node.ts +83 -0
- package/src/lib/sqlite/sqlite-writer.ts +128 -0
- package/src/lib/testing/TRACE-TESTING.md +100 -0
- package/src/lib/testing/__tests__/bun-harness.test.ts +108 -0
- package/src/lib/testing/__tests__/extractFacts.test.ts +279 -0
- package/src/lib/testing/__tests__/facts.test.ts +324 -0
- package/src/lib/testing/__tests__/vitest-harness.test.ts +32 -0
- package/src/lib/testing/bun-harness.ts +990 -0
- package/src/lib/testing/extractFacts.ts +362 -0
- package/src/lib/testing/facts.ts +470 -0
- package/src/lib/testing/index.ts +141 -0
- package/src/lib/testing/queryable-span.ts +108 -0
- package/src/lib/testing/span-query.ts +65 -0
- package/src/lib/testing/stdio-replay.ts +50 -0
- package/src/lib/testing/trace-query.ts +329 -0
- package/src/lib/testing/vitest-harness.ts +691 -0
- package/src/lib/threadId.ts +135 -0
- package/src/lib/traceContext.ts +182 -0
- package/src/lib/traceId.ts +142 -0
- package/src/lib/traceRoot.es.ts +157 -0
- package/src/lib/traceRoot.node.ts +170 -0
- package/src/lib/traceRoot.ts +154 -0
- package/src/lib/traceRoot.universal.ts +22 -0
- package/src/lib/tracer.ts +896 -0
- package/src/lib/tracers/ArrayQueueTracer.ts +76 -0
- package/src/lib/tracers/CompositeTracer.ts +76 -0
- package/src/lib/tracers/NoOpTracer.ts +73 -0
- package/src/lib/tracers/SQLiteTracer.ts +115 -0
- package/src/lib/tracers/StdioTracer.ts +380 -0
- package/src/lib/tracers/TestTracer.ts +146 -0
- package/src/lib/tracers/__tests__/ArrayQueueTracer.test.ts +184 -0
- package/src/lib/tracers/__tests__/NoOpTracer.test.ts +204 -0
- package/src/lib/tracers/__tests__/StdioTracer.test.ts +313 -0
- package/src/lib/tracers/__tests__/TestTracer.test.ts +200 -0
- package/src/lib/tracers/index.ts +12 -0
- package/src/lib/types.ts +498 -0
- package/src/lib/utf8Cache.ts +201 -0
- package/src/lib/wasm/WasmBufferStrategy.ts +219 -0
- package/src/lib/wasm/__tests__/WasmBufferStrategy.test.ts +256 -0
- package/src/lib/wasm/__tests__/wasm-integration.test.ts +476 -0
- package/src/lib/wasm/__tests__/wasmAllocator.test.ts +699 -0
- package/src/lib/wasm/__tests__/wasmSpanBuffer.test.ts +449 -0
- package/src/lib/wasm/__tests__/wasmTraceRoot.test.ts +390 -0
- package/src/lib/wasm/__tests__/wasmTracer.test.ts.disabled +444 -0
- package/src/lib/wasm/allocator.zig +945 -0
- package/src/lib/wasm/wasmAllocator.ts +469 -0
- package/src/lib/wasm/wasmSpanBuffer.ts +1014 -0
- package/src/lib/wasm/wasmTraceRoot.ts +315 -0
- package/src/node.ts +10 -0
- package/src/testing.ts +18 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retries exhausted error - returned when a Blocked error has exceeded max attempts.
|
|
3
|
+
*
|
|
4
|
+
* When an Op repeatedly returns `Blocked` and the retry config's `maxAttempts`
|
|
5
|
+
* is exhausted, the retry layer converts the final failure to `RetriesExhausted`.
|
|
6
|
+
*
|
|
7
|
+
* Unlike `Blocked`, this represents a permanent failure that callers must handle
|
|
8
|
+
* (e.g., compensate, alert, escalate, return error to caller).
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { defineOpContext, S, Err } from '@smoothbricks/lmao';
|
|
13
|
+
* import { Blocked } from '@smoothbricks/lmao/errors/Blocked';
|
|
14
|
+
* import { RetriesExhausted } from '@smoothbricks/lmao/errors/RetriesExhausted';
|
|
15
|
+
*
|
|
16
|
+
* const { defineOp } = defineOpContext({
|
|
17
|
+
* logSchema: { service: S.category() },
|
|
18
|
+
* ctx: { env: null as Env },
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Op that may be blocked by external service
|
|
22
|
+
* const callPaymentApi = defineOp('callPaymentApi', async (ctx, amount: number) => {
|
|
23
|
+
* const health = await checkHealth('payment-api');
|
|
24
|
+
* if (!health.available) {
|
|
25
|
+
* return new Err(Blocked.service('payment-api'));
|
|
26
|
+
* }
|
|
27
|
+
* const result = await ctx.deps.http.post('/pay', { amount });
|
|
28
|
+
* return ctx.ok(result);
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // Caller handles permanent failure after retries exhausted
|
|
32
|
+
* const result = await trace('checkout', checkoutOp);
|
|
33
|
+
* if (result.isErr(RetriesExhausted)) {
|
|
34
|
+
* ctx.log.error(`Payment failed after ${result.error.attempts} attempts`);
|
|
35
|
+
* return ctx.err('PAYMENT_UNAVAILABLE', { service: result.error.reason });
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
import type { TaggedError } from '../result.js';
|
|
40
|
+
import { type BlockedReason } from './Blocked.js';
|
|
41
|
+
type RetriesExhaustedView = {
|
|
42
|
+
_tag: 'RetriesExhausted';
|
|
43
|
+
reason: BlockedReason;
|
|
44
|
+
attempts: number;
|
|
45
|
+
maxAttempts: number;
|
|
46
|
+
};
|
|
47
|
+
export declare class RetriesExhausted extends Error implements TaggedError<'RetriesExhausted'> {
|
|
48
|
+
/** The original blocked reason */
|
|
49
|
+
readonly reason: BlockedReason;
|
|
50
|
+
/** How many attempts were made */
|
|
51
|
+
readonly attempts: number;
|
|
52
|
+
/** Max attempts that was configured (the limit that was hit) */
|
|
53
|
+
readonly maxAttempts: number;
|
|
54
|
+
static readonly _tag: "RetriesExhausted";
|
|
55
|
+
get _tag(): 'RetriesExhausted';
|
|
56
|
+
constructor(
|
|
57
|
+
/** The original blocked reason */
|
|
58
|
+
reason: BlockedReason,
|
|
59
|
+
/** How many attempts were made */
|
|
60
|
+
attempts: number,
|
|
61
|
+
/** Max attempts that was configured (the limit that was hit) */
|
|
62
|
+
maxAttempts: number);
|
|
63
|
+
/** Clean output for JSON.stringify */
|
|
64
|
+
toJSON(): RetriesExhaustedView;
|
|
65
|
+
}
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=RetriesExhausted.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RetriesExhausted.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/RetriesExhausted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,cAAc,CAAC;AAExE,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,KAAM,YAAW,WAAW,CAAC,kBAAkB,CAAC;IAQlF,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,aAAa;IAC9B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,gEAAgE;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM;IAZ9B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,kBAAkB,CAAU;IAEnD,IAAI,IAAI,IAAI,kBAAkB,CAE7B;;IAGC,kCAAkC;IACzB,MAAM,EAAE,aAAa;IAC9B,kCAAkC;IACzB,QAAQ,EAAE,MAAM;IACzB,gEAAgE;IACvD,WAAW,EAAE,MAAM;IAW9B,sCAAsC;IACtC,MAAM,IAAI,oBAAoB;CAG/B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getBlockedReasonName } from './Blocked.js';
|
|
2
|
+
export class RetriesExhausted extends Error {
|
|
3
|
+
reason;
|
|
4
|
+
attempts;
|
|
5
|
+
maxAttempts;
|
|
6
|
+
static _tag = 'RetriesExhausted';
|
|
7
|
+
get _tag() {
|
|
8
|
+
return 'RetriesExhausted';
|
|
9
|
+
}
|
|
10
|
+
constructor(
|
|
11
|
+
/** The original blocked reason */
|
|
12
|
+
reason,
|
|
13
|
+
/** How many attempts were made */
|
|
14
|
+
attempts,
|
|
15
|
+
/** Max attempts that was configured (the limit that was hit) */
|
|
16
|
+
maxAttempts) {
|
|
17
|
+
super(`RetriesExhausted: ${getBlockedReasonName(reason)} after ${attempts} attempts`);
|
|
18
|
+
this.reason = reason;
|
|
19
|
+
this.attempts = attempts;
|
|
20
|
+
this.maxAttempts = maxAttempts;
|
|
21
|
+
this.name = 'RetriesExhausted';
|
|
22
|
+
}
|
|
23
|
+
/** Clean output for console.log in Node.js */
|
|
24
|
+
[Symbol.for('nodejs.util.inspect.custom')]() {
|
|
25
|
+
return { _tag: this._tag, reason: this.reason, attempts: this.attempts, maxAttempts: this.maxAttempts };
|
|
26
|
+
}
|
|
27
|
+
/** Clean output for JSON.stringify */
|
|
28
|
+
toJSON() {
|
|
29
|
+
return { _tag: this._tag, reason: this.reason, attempts: this.attempts, maxAttempts: this.maxAttempts };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TransientError - typed transient error codes with embedded retry policy.
|
|
3
|
+
*
|
|
4
|
+
* Use the `Transient()` factory to define transient error codes WITH default retry policy.
|
|
5
|
+
* Op class checks `instanceof TransientError` and reads `error.policy` for retry config.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { Transient, exponentialBackoff, fixedDelay } from '@smoothbricks/lmao/errors/Transient';
|
|
10
|
+
*
|
|
11
|
+
* // Define error with default exponential backoff (5 attempts)
|
|
12
|
+
* const SERVICE_UNAVAILABLE = Transient<{ service: string }>('SERVICE_UNAVAILABLE', exponentialBackoff(5));
|
|
13
|
+
*
|
|
14
|
+
* // Define error with fixed delay for rate limiting
|
|
15
|
+
* const RATE_LIMITED = Transient<{ retryAfter?: number }>('RATE_LIMITED', fixedDelay(3, 5000));
|
|
16
|
+
*
|
|
17
|
+
* // Usage - data only, uses default policy
|
|
18
|
+
* ctx.err(SERVICE_UNAVAILABLE({ service: 'api' }));
|
|
19
|
+
*
|
|
20
|
+
* // Override policy for this specific call (e.g., use Retry-After header)
|
|
21
|
+
* ctx.err(RATE_LIMITED({ retryAfter: 60000 }, fixedDelay(1, 60000)));
|
|
22
|
+
*
|
|
23
|
+
* // Op class detects transient and reads policy
|
|
24
|
+
* if (result.error instanceof TransientError) {
|
|
25
|
+
* const { maxAttempts, backoff, baseDelayMs } = result.error.policy;
|
|
26
|
+
* // Execute retry loop based on policy
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
import type { TaggedErrorConstructor } from '../result.js';
|
|
31
|
+
import { CodeError } from './CodeError.js';
|
|
32
|
+
import { type RetryPolicy } from './retry-policy.js';
|
|
33
|
+
/**
|
|
34
|
+
* Transient error instance - triggers retry in Op class.
|
|
35
|
+
*
|
|
36
|
+
* Extends CodeError to inherit code/data pattern while adding:
|
|
37
|
+
* - `instanceof TransientError` checks for retry classification
|
|
38
|
+
* - `policy` field carrying merged retry configuration
|
|
39
|
+
*
|
|
40
|
+
* @typeParam C - The error code string literal type (also serves as _tag)
|
|
41
|
+
* @typeParam D - The data payload type
|
|
42
|
+
*/
|
|
43
|
+
export declare class TransientError<C extends string, D = void> extends CodeError<C, D> {
|
|
44
|
+
/**
|
|
45
|
+
* Merged retry policy (defaultPolicy + per-call override).
|
|
46
|
+
* Op class reads this to configure retry loop.
|
|
47
|
+
*/
|
|
48
|
+
readonly policy: RetryPolicy;
|
|
49
|
+
constructor(code: C, data: D, policy: RetryPolicy);
|
|
50
|
+
toJSON(): {
|
|
51
|
+
policy: RetryPolicy;
|
|
52
|
+
code: C;
|
|
53
|
+
data: D;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Constructor function for a specific transient error code.
|
|
58
|
+
* Has static `_tag` for isErr() and `defaultPolicy` for introspection.
|
|
59
|
+
*/
|
|
60
|
+
export interface TransientConstructor<C extends string, D = void> extends TaggedErrorConstructor<TransientError<C, D>> {
|
|
61
|
+
/** Create transient error with data and optional policy override */
|
|
62
|
+
(data: D, policyOverride?: Partial<RetryPolicy>): TransientError<C, D>;
|
|
63
|
+
/** Error code (same as _tag) */
|
|
64
|
+
readonly _tag: C;
|
|
65
|
+
/** Default retry policy for this error type */
|
|
66
|
+
readonly defaultPolicy: RetryPolicy;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Constructor function for transient error codes with no data.
|
|
70
|
+
*/
|
|
71
|
+
export interface TransientConstructorVoid<C extends string> extends TaggedErrorConstructor<TransientError<C, void>> {
|
|
72
|
+
/** Create transient error with optional policy override */
|
|
73
|
+
(policyOverride?: Partial<RetryPolicy>): TransientError<C, void>;
|
|
74
|
+
/** Error code (same as _tag) */
|
|
75
|
+
readonly _tag: C;
|
|
76
|
+
/** Default retry policy for this error type */
|
|
77
|
+
readonly defaultPolicy: RetryPolicy;
|
|
78
|
+
}
|
|
79
|
+
type TransientFactoryReturn<C extends string, D> = [unknown] extends [D] ? TransientConstructor<C, D> : undefined extends D ? TransientConstructorVoid<C> : TransientConstructor<C, D>;
|
|
80
|
+
/**
|
|
81
|
+
* Define a typed transient error code with default retry policy.
|
|
82
|
+
*
|
|
83
|
+
* Creates errors that extend TransientError, enabling:
|
|
84
|
+
* - `instanceof TransientError` for retry triggering
|
|
85
|
+
* - `result.isErr(CODE)` for specific code discrimination
|
|
86
|
+
* - `error.policy` for retry configuration
|
|
87
|
+
*
|
|
88
|
+
* @param code - The error code string (becomes _tag for discrimination)
|
|
89
|
+
* @param defaultPolicy - Default retry policy for this error type
|
|
90
|
+
* @returns A constructor function that creates TransientError instances
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* // With typed data and exponential backoff
|
|
95
|
+
* const NETWORK_ERROR = Transient<{ service: string }>('NETWORK_ERROR', exponentialBackoff(5));
|
|
96
|
+
* ctx.err(NETWORK_ERROR({ service: 'payment-api' }));
|
|
97
|
+
*
|
|
98
|
+
* // Without data, linear backoff
|
|
99
|
+
* const TIMEOUT = Transient('TIMEOUT', linearBackoff(3));
|
|
100
|
+
* ctx.err(TIMEOUT());
|
|
101
|
+
*
|
|
102
|
+
* // Override policy per-call
|
|
103
|
+
* ctx.err(NETWORK_ERROR({ service: 'api' }, fixedDelay(1, 30000)));
|
|
104
|
+
*
|
|
105
|
+
* // Op class handles retry
|
|
106
|
+
* if (result.error instanceof TransientError) {
|
|
107
|
+
* const { policy } = result.error;
|
|
108
|
+
* // Retry loop using policy.maxAttempts, policy.backoff, etc.
|
|
109
|
+
* }
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare function Transient<C extends string>(code: C, defaultPolicy: RetryPolicy): TransientConstructorVoid<C>;
|
|
113
|
+
export declare function Transient<D, C extends string = string>(code: C, defaultPolicy: RetryPolicy): TransientFactoryReturn<C, D>;
|
|
114
|
+
export { exponentialBackoff, fixedDelay, linearBackoff, mergePolicy, type RetryPolicy } from './retry-policy.js';
|
|
115
|
+
//# sourceMappingURL=Transient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Transient.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/Transient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE;;;;;;;;;GASG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW;IAMxC,MAAM;;;;;CAMhB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,sBAAsB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpH,oEAAoE;IACpE,CAAC,IAAI,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,sBAAsB,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjH,2DAA2D;IAC3D,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;CACrC;AAED,KAAK,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GACpE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC1B,SAAS,SAAS,CAAC,GACjB,wBAAwB,CAAC,CAAC,CAAC,GAC3B,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,WAAW,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAC9G,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EACpD,IAAI,EAAE,CAAC,EACP,aAAa,EAAE,WAAW,GACzB,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAmChC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CodeError } from './CodeError.js';
|
|
2
|
+
import { mergePolicy } from './retry-policy.js';
|
|
3
|
+
/**
|
|
4
|
+
* Transient error instance - triggers retry in Op class.
|
|
5
|
+
*
|
|
6
|
+
* Extends CodeError to inherit code/data pattern while adding:
|
|
7
|
+
* - `instanceof TransientError` checks for retry classification
|
|
8
|
+
* - `policy` field carrying merged retry configuration
|
|
9
|
+
*
|
|
10
|
+
* @typeParam C - The error code string literal type (also serves as _tag)
|
|
11
|
+
* @typeParam D - The data payload type
|
|
12
|
+
*/
|
|
13
|
+
export class TransientError extends CodeError {
|
|
14
|
+
/**
|
|
15
|
+
* Merged retry policy (defaultPolicy + per-call override).
|
|
16
|
+
* Op class reads this to configure retry loop.
|
|
17
|
+
*/
|
|
18
|
+
policy;
|
|
19
|
+
constructor(code, data, policy) {
|
|
20
|
+
super(code, data);
|
|
21
|
+
this.name = 'TransientError';
|
|
22
|
+
this.policy = policy;
|
|
23
|
+
}
|
|
24
|
+
toJSON() {
|
|
25
|
+
return {
|
|
26
|
+
...super.toJSON(),
|
|
27
|
+
policy: this.policy,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function Transient(code, defaultPolicy) {
|
|
32
|
+
function createTransientError(dataOrOverride, maybeOverride) {
|
|
33
|
+
const override = maybeOverride !== undefined ? maybeOverride : isRetryPolicyLike(dataOrOverride) ? dataOrOverride : undefined;
|
|
34
|
+
const data = maybeOverride !== undefined || override !== undefined ? undefined : dataOrOverride;
|
|
35
|
+
const mergedPolicy = mergePolicy(defaultPolicy, override);
|
|
36
|
+
return new TransientError(code, data, mergedPolicy);
|
|
37
|
+
}
|
|
38
|
+
return Object.assign(createTransientError, {
|
|
39
|
+
_tag: code,
|
|
40
|
+
defaultPolicy,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Type guard to check if value looks like a RetryPolicy (partial).
|
|
45
|
+
* Used to disambiguate void data + override from actual data.
|
|
46
|
+
*/
|
|
47
|
+
function isRetryPolicyLike(value) {
|
|
48
|
+
if (typeof value !== 'object' || value === null)
|
|
49
|
+
return false;
|
|
50
|
+
// Check for RetryPolicy-specific keys — `in` accepts `object`, no cast needed
|
|
51
|
+
return ('backoff' in value || 'maxAttempts' in value || 'baseDelayMs' in value || 'maxDelayMs' in value || 'jitter' in value);
|
|
52
|
+
}
|
|
53
|
+
// Re-export policy helpers for convenience
|
|
54
|
+
export { exponentialBackoff, fixedDelay, linearBackoff, mergePolicy } from './retry-policy.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error types and utilities for LMAO.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import { Code, CodeError, Transient, TransientError, Blocked, exponentialBackoff } from '@smoothbricks/lmao/errors';
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
export * from './Blocked.js';
|
|
10
|
+
export * from './CodeError.js';
|
|
11
|
+
export * from './RetriesExhausted.js';
|
|
12
|
+
export { exponentialBackoff, fixedDelay, linearBackoff, mergePolicy, type RetryPolicy as TransientRetryPolicy, } from './retry-policy.js';
|
|
13
|
+
export { Transient, type TransientConstructor, type TransientConstructorVoid, TransientError } from './Transient.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,cAAc,CAAC;AAE7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AAItC,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,WAAW,EACX,KAAK,WAAW,IAAI,oBAAoB,GACzC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,KAAK,oBAAoB,EAAE,KAAK,wBAAwB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error types and utilities for LMAO.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import { Code, CodeError, Transient, TransientError, Blocked, exponentialBackoff } from '@smoothbricks/lmao/errors';
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
export * from './Blocked.js';
|
|
10
|
+
// Existing exports
|
|
11
|
+
export * from './CodeError.js';
|
|
12
|
+
export * from './RetriesExhausted.js';
|
|
13
|
+
// Phase 19 exports - TransientError uses RetryPolicy from retry-policy.ts
|
|
14
|
+
// Export with different name to avoid conflict with other retry configs
|
|
15
|
+
export { exponentialBackoff, fixedDelay, linearBackoff, mergePolicy, } from './retry-policy.js';
|
|
16
|
+
export { Transient, TransientError } from './Transient.js';
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RetryPolicy - configures retry behavior for transient failures.
|
|
3
|
+
*
|
|
4
|
+
* Carried by TransientError instances. Op class (in LMAO) reads policy
|
|
5
|
+
* from transient errors to handle retry loop.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Define error with default policy
|
|
10
|
+
* const RATE_LIMITED = Transient<{ retryAfter?: number }>('RATE_LIMITED', exponentialBackoff(5));
|
|
11
|
+
*
|
|
12
|
+
* // Usage with default policy
|
|
13
|
+
* ctx.err(RATE_LIMITED({ retryAfter: 60000 }));
|
|
14
|
+
*
|
|
15
|
+
* // Override policy for this call
|
|
16
|
+
* ctx.err(RATE_LIMITED({ retryAfter: 60000 }, fixedDelay(1, 60000)));
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export interface RetryPolicy {
|
|
20
|
+
/** Backoff strategy */
|
|
21
|
+
backoff: 'exponential' | 'linear' | 'fixed';
|
|
22
|
+
/** Maximum retry attempts (including initial attempt) */
|
|
23
|
+
maxAttempts: number;
|
|
24
|
+
/** Base delay in milliseconds */
|
|
25
|
+
baseDelayMs: number;
|
|
26
|
+
/** Maximum delay cap in milliseconds (optional, defaults to 30000) */
|
|
27
|
+
maxDelayMs?: number;
|
|
28
|
+
/** Add randomness to delay (default: true) */
|
|
29
|
+
jitter?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create linear backoff policy.
|
|
33
|
+
* Delay increases linearly: baseDelay * attempt
|
|
34
|
+
*
|
|
35
|
+
* @example linearBackoff(3) → 100ms, 200ms, 300ms
|
|
36
|
+
* @example linearBackoff(5, 200) → 200ms, 400ms, 600ms, 800ms, 1000ms
|
|
37
|
+
*/
|
|
38
|
+
export declare function linearBackoff(maxAttempts: number, baseDelayMs?: number): RetryPolicy;
|
|
39
|
+
/**
|
|
40
|
+
* Create exponential backoff policy.
|
|
41
|
+
* Delay doubles each attempt: baseDelay * 2^(attempt-1)
|
|
42
|
+
*
|
|
43
|
+
* @example exponentialBackoff(3) → 100ms, 200ms, 400ms
|
|
44
|
+
* @example exponentialBackoff(5, 50) → 50ms, 100ms, 200ms, 400ms, 800ms
|
|
45
|
+
*/
|
|
46
|
+
export declare function exponentialBackoff(maxAttempts: number, baseDelayMs?: number): RetryPolicy;
|
|
47
|
+
/**
|
|
48
|
+
* Create fixed delay policy.
|
|
49
|
+
* Same delay between each attempt.
|
|
50
|
+
*
|
|
51
|
+
* @example fixedDelay(3, 1000) → 1000ms, 1000ms, 1000ms
|
|
52
|
+
* @example fixedDelay(1, 60000) → single retry after 60s (for rate limit Retry-After)
|
|
53
|
+
*/
|
|
54
|
+
export declare function fixedDelay(maxAttempts: number, delayMs?: number): RetryPolicy;
|
|
55
|
+
/**
|
|
56
|
+
* Merge base policy with override.
|
|
57
|
+
* Override fields take precedence.
|
|
58
|
+
*/
|
|
59
|
+
export declare function mergePolicy(base: RetryPolicy, override?: Partial<RetryPolicy>): RetryPolicy;
|
|
60
|
+
//# sourceMappingURL=retry-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-policy.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/retry-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,OAAO,EAAE,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,SAAM,GAAG,WAAW,CAOjF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,SAAM,GAAG,WAAW,CAOtF;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,SAAO,GAAG,WAAW,CAO3E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAG3F"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create linear backoff policy.
|
|
3
|
+
* Delay increases linearly: baseDelay * attempt
|
|
4
|
+
*
|
|
5
|
+
* @example linearBackoff(3) → 100ms, 200ms, 300ms
|
|
6
|
+
* @example linearBackoff(5, 200) → 200ms, 400ms, 600ms, 800ms, 1000ms
|
|
7
|
+
*/
|
|
8
|
+
export function linearBackoff(maxAttempts, baseDelayMs = 100) {
|
|
9
|
+
return {
|
|
10
|
+
backoff: 'linear',
|
|
11
|
+
maxAttempts,
|
|
12
|
+
baseDelayMs,
|
|
13
|
+
jitter: true,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create exponential backoff policy.
|
|
18
|
+
* Delay doubles each attempt: baseDelay * 2^(attempt-1)
|
|
19
|
+
*
|
|
20
|
+
* @example exponentialBackoff(3) → 100ms, 200ms, 400ms
|
|
21
|
+
* @example exponentialBackoff(5, 50) → 50ms, 100ms, 200ms, 400ms, 800ms
|
|
22
|
+
*/
|
|
23
|
+
export function exponentialBackoff(maxAttempts, baseDelayMs = 100) {
|
|
24
|
+
return {
|
|
25
|
+
backoff: 'exponential',
|
|
26
|
+
maxAttempts,
|
|
27
|
+
baseDelayMs,
|
|
28
|
+
jitter: true,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create fixed delay policy.
|
|
33
|
+
* Same delay between each attempt.
|
|
34
|
+
*
|
|
35
|
+
* @example fixedDelay(3, 1000) → 1000ms, 1000ms, 1000ms
|
|
36
|
+
* @example fixedDelay(1, 60000) → single retry after 60s (for rate limit Retry-After)
|
|
37
|
+
*/
|
|
38
|
+
export function fixedDelay(maxAttempts, delayMs = 1000) {
|
|
39
|
+
return {
|
|
40
|
+
backoff: 'fixed',
|
|
41
|
+
maxAttempts,
|
|
42
|
+
baseDelayMs: delayMs,
|
|
43
|
+
jitter: false, // Fixed delay typically doesn't want jitter
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Merge base policy with override.
|
|
48
|
+
* Override fields take precedence.
|
|
49
|
+
*/
|
|
50
|
+
export function mergePolicy(base, override) {
|
|
51
|
+
if (!override)
|
|
52
|
+
return base;
|
|
53
|
+
return { ...base, ...override };
|
|
54
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background flush scheduler with adaptive flushing
|
|
3
|
+
*
|
|
4
|
+
* Per specs/lmao/01b2_buffer_self_tuning.md:
|
|
5
|
+
* - Adaptive flush intervals based on capacity, time, memory pressure
|
|
6
|
+
* - Idle detection for opportunistic flushing
|
|
7
|
+
* - Background processing (cold path)
|
|
8
|
+
*/
|
|
9
|
+
import { type Table } from '@uwdata/flechette';
|
|
10
|
+
import type { AnySpanBuffer } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Flush handler function type
|
|
13
|
+
* Called when buffers are ready to be flushed
|
|
14
|
+
*/
|
|
15
|
+
export type FlushHandler = (table: Table, metadata: FlushMetadata) => Promise<void> | void;
|
|
16
|
+
/**
|
|
17
|
+
* Metadata about the flush operation
|
|
18
|
+
*/
|
|
19
|
+
export interface FlushMetadata {
|
|
20
|
+
totalRows: number;
|
|
21
|
+
totalBuffers: number;
|
|
22
|
+
flushReason: 'capacity' | 'time' | 'memory' | 'idle' | 'manual';
|
|
23
|
+
timestamp: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Flush scheduler configuration
|
|
27
|
+
*/
|
|
28
|
+
export interface FlushSchedulerConfig {
|
|
29
|
+
/**
|
|
30
|
+
* Maximum time between flushes (milliseconds)
|
|
31
|
+
* Default: 10000 (10 seconds)
|
|
32
|
+
*/
|
|
33
|
+
maxFlushInterval?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Minimum time between flushes (milliseconds)
|
|
36
|
+
* Default: 1000 (1 second)
|
|
37
|
+
*/
|
|
38
|
+
minFlushInterval?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Capacity threshold for automatic flush (0.0 - 1.0)
|
|
41
|
+
* Flush when buffer is X% full
|
|
42
|
+
* Default: 0.8 (80%)
|
|
43
|
+
*/
|
|
44
|
+
capacityThreshold?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Enable idle detection for opportunistic flushing
|
|
47
|
+
* Default: true
|
|
48
|
+
*/
|
|
49
|
+
idleDetection?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Idle timeout (milliseconds) - flush if no activity for this duration
|
|
52
|
+
* Default: 5000 (5 seconds)
|
|
53
|
+
*/
|
|
54
|
+
idleTimeout?: number;
|
|
55
|
+
/**
|
|
56
|
+
* Enable memory pressure detection
|
|
57
|
+
* Default: true (Node.js only)
|
|
58
|
+
*/
|
|
59
|
+
memoryPressureDetection?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Memory pressure threshold (bytes)
|
|
62
|
+
* Flush when available memory drops below this
|
|
63
|
+
* Default: 100MB
|
|
64
|
+
*/
|
|
65
|
+
memoryPressureThreshold?: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Background flush scheduler
|
|
69
|
+
* Manages automatic flushing of span buffers to Arrow tables
|
|
70
|
+
*/
|
|
71
|
+
export declare class FlushScheduler {
|
|
72
|
+
private config;
|
|
73
|
+
private handler;
|
|
74
|
+
private buffers;
|
|
75
|
+
private lastFlushTime;
|
|
76
|
+
private lastActivityTime;
|
|
77
|
+
private flushTimer?;
|
|
78
|
+
private idleTimer?;
|
|
79
|
+
private memoryTimer?;
|
|
80
|
+
private isRunning;
|
|
81
|
+
/** Flush counter for periodic capacity stats logging */
|
|
82
|
+
private _flushCount;
|
|
83
|
+
/**
|
|
84
|
+
* Track unique (SpanBufferConstructor, OpMetadata) pairs that have been flushed since last capacity stats log.
|
|
85
|
+
* We use SpanBufferConstructor as the key (for dedup) and store the OpMetadata for building PreEncodedEntry at conversion time.
|
|
86
|
+
* The constructor has static stats property with the capacity stats we need.
|
|
87
|
+
*/
|
|
88
|
+
private _bufferClassesSinceLastStatsLog;
|
|
89
|
+
constructor(handler: FlushHandler, config?: FlushSchedulerConfig);
|
|
90
|
+
/**
|
|
91
|
+
* Register a buffer for automatic flushing
|
|
92
|
+
*/
|
|
93
|
+
register(buffer: AnySpanBuffer): void;
|
|
94
|
+
/**
|
|
95
|
+
* Start the flush scheduler
|
|
96
|
+
*/
|
|
97
|
+
start(): void;
|
|
98
|
+
/**
|
|
99
|
+
* Stop the flush scheduler
|
|
100
|
+
*/
|
|
101
|
+
stop(): void;
|
|
102
|
+
/**
|
|
103
|
+
* Manually trigger a flush
|
|
104
|
+
*/
|
|
105
|
+
flush(): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Check flush conditions and flush if needed
|
|
108
|
+
*/
|
|
109
|
+
private checkFlushConditions;
|
|
110
|
+
/**
|
|
111
|
+
* Check if should flush based on capacity
|
|
112
|
+
*/
|
|
113
|
+
private shouldFlushByCapacity;
|
|
114
|
+
/**
|
|
115
|
+
* Check idle state and flush if idle
|
|
116
|
+
*/
|
|
117
|
+
private checkIdleFlush;
|
|
118
|
+
/**
|
|
119
|
+
* Check memory pressure and flush if needed
|
|
120
|
+
* Node.js only
|
|
121
|
+
*/
|
|
122
|
+
private checkMemoryPressure;
|
|
123
|
+
/**
|
|
124
|
+
* Perform the actual flush operation
|
|
125
|
+
*/
|
|
126
|
+
private doFlush;
|
|
127
|
+
/**
|
|
128
|
+
* Record activity (called when buffers are written to)
|
|
129
|
+
*/
|
|
130
|
+
recordActivity(): void;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get or create global flush scheduler
|
|
134
|
+
*/
|
|
135
|
+
export declare function getGlobalFlushScheduler(handler: FlushHandler, config?: FlushSchedulerConfig): FlushScheduler;
|
|
136
|
+
/**
|
|
137
|
+
* Reset global flush scheduler (for testing)
|
|
138
|
+
*/
|
|
139
|
+
export declare function resetGlobalFlushScheduler(): void;
|
|
140
|
+
/**
|
|
141
|
+
* Test utilities for accessing FlushScheduler internals
|
|
142
|
+
* @internal
|
|
143
|
+
*/
|
|
144
|
+
export declare const FlushSchedulerTestUtils: {
|
|
145
|
+
/**
|
|
146
|
+
* Get the flush timer for a scheduler instance (for testing)
|
|
147
|
+
*/
|
|
148
|
+
getFlushTimer(scheduler: FlushScheduler): NodeJS.Timeout | undefined;
|
|
149
|
+
/**
|
|
150
|
+
* Set the flush timer for a scheduler instance (for testing)
|
|
151
|
+
*/
|
|
152
|
+
setFlushTimer(scheduler: FlushScheduler, timer: NodeJS.Timeout | undefined): void;
|
|
153
|
+
/**
|
|
154
|
+
* Get the last activity time for a scheduler instance (for testing)
|
|
155
|
+
*/
|
|
156
|
+
getLastActivityTime(scheduler: FlushScheduler): number | undefined;
|
|
157
|
+
/**
|
|
158
|
+
* Set the last activity time for a scheduler instance (for testing)
|
|
159
|
+
*/
|
|
160
|
+
setLastActivityTime(scheduler: FlushScheduler, time: number | null | undefined): void;
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=flushScheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flushScheduler.d.ts","sourceRoot":"","sources":["../../src/lib/flushScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAU,KAAK,KAAK,EAAoB,MAAM,mBAAmB,CAAC;AAIzE,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAiC5D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAe;IAE9B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,SAAS,CAAS;IAE1B,wDAAwD;IACxD,OAAO,CAAC,WAAW,CAAK;IAExB;;;;OAIG;IACH,OAAO,CAAC,+BAA+B,CAAgD;gBAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,GAAE,oBAAyB;IAepE;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAUrC;;OAEG;IACH,KAAK,IAAI,IAAI;IA2Bb;;OAEG;IACH,IAAI,IAAI,IAAI;IAqBZ;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;YACW,OAAO;IA+IrB;;OAEG;IACH,cAAc,IAAI,IAAI;CAGvB;AAQD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAK5G;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB;IAClC;;OAEG;6BACsB,cAAc,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS;IAKpE;;OAEG;6BACsB,cAAc,SAAS,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI;IAIjF;;OAEG;mCAC4B,cAAc,GAAG,MAAM,GAAG,SAAS;IAKlE;;OAEG;mCAC4B,cAAc,QAAQ,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;CAGtF,CAAC"}
|