@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,21 @@
|
|
|
1
|
+
export interface TraceChunkEnvelopeInput {
|
|
2
|
+
readonly file_ref: string;
|
|
3
|
+
readonly chunk_ref: string;
|
|
4
|
+
readonly row_count: number;
|
|
5
|
+
readonly started_at_ms: number;
|
|
6
|
+
readonly ended_at_ms: number;
|
|
7
|
+
readonly partition_keys?: readonly string[];
|
|
8
|
+
readonly metadata?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface TraceChunkEnvelope {
|
|
11
|
+
readonly chunk_id: string;
|
|
12
|
+
readonly file_ref: string;
|
|
13
|
+
readonly chunk_ref: string;
|
|
14
|
+
readonly row_count: number;
|
|
15
|
+
readonly started_at_ms: number;
|
|
16
|
+
readonly ended_at_ms: number;
|
|
17
|
+
readonly partition_keys: readonly string[];
|
|
18
|
+
readonly metadata?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export declare function buildTraceChunkEnvelope(input: TraceChunkEnvelopeInput): TraceChunkEnvelope;
|
|
21
|
+
//# sourceMappingURL=chunkEnvelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunkEnvelope.d.ts","sourceRoot":"","sources":["../../../src/lib/archive/chunkEnvelope.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,CAsB1F"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export function buildTraceChunkEnvelope(input) {
|
|
2
|
+
const canonical = {
|
|
3
|
+
chunk_ref: input.chunk_ref,
|
|
4
|
+
ended_at_ms: input.ended_at_ms,
|
|
5
|
+
file_ref: input.file_ref,
|
|
6
|
+
metadata: input.metadata ?? null,
|
|
7
|
+
partition_keys: [...(input.partition_keys ?? [])].sort(),
|
|
8
|
+
row_count: input.row_count,
|
|
9
|
+
started_at_ms: input.started_at_ms,
|
|
10
|
+
};
|
|
11
|
+
const chunk_id = `chunk_${hashDeterministic(canonical)}`;
|
|
12
|
+
return {
|
|
13
|
+
chunk_id,
|
|
14
|
+
file_ref: input.file_ref,
|
|
15
|
+
chunk_ref: input.chunk_ref,
|
|
16
|
+
row_count: input.row_count,
|
|
17
|
+
started_at_ms: input.started_at_ms,
|
|
18
|
+
ended_at_ms: input.ended_at_ms,
|
|
19
|
+
partition_keys: canonical.partition_keys,
|
|
20
|
+
metadata: input.metadata,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function hashDeterministic(value) {
|
|
24
|
+
return fnv1a64(stableSerialize(value));
|
|
25
|
+
}
|
|
26
|
+
function stableSerialize(value) {
|
|
27
|
+
if (value === null)
|
|
28
|
+
return 'null';
|
|
29
|
+
if (typeof value === 'number' || typeof value === 'boolean')
|
|
30
|
+
return JSON.stringify(value);
|
|
31
|
+
if (typeof value === 'string')
|
|
32
|
+
return JSON.stringify(value);
|
|
33
|
+
if (typeof value === 'bigint') {
|
|
34
|
+
return `"${value.toString()}n"`;
|
|
35
|
+
}
|
|
36
|
+
if (Array.isArray(value)) {
|
|
37
|
+
return `[${value.map((item) => stableSerialize(item)).join(',')}]`;
|
|
38
|
+
}
|
|
39
|
+
if (typeof value === 'object') {
|
|
40
|
+
// null and array excluded above — TS narrows to `object` via direct typeof check
|
|
41
|
+
const entries = Object.entries(value).sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
42
|
+
return `{${entries.map(([k, v]) => `${JSON.stringify(k)}:${stableSerialize(v)}`).join(',')}}`;
|
|
43
|
+
}
|
|
44
|
+
return JSON.stringify(String(value));
|
|
45
|
+
}
|
|
46
|
+
function fnv1a64(input) {
|
|
47
|
+
let hash = 0xcbf29ce484222325n;
|
|
48
|
+
const prime = 0x100000001b3n;
|
|
49
|
+
const mod = 0xffffffffffffffffn;
|
|
50
|
+
for (let i = 0; i < input.length; i++) {
|
|
51
|
+
hash ^= BigInt(input.charCodeAt(i));
|
|
52
|
+
hash = (hash * prime) & mod;
|
|
53
|
+
}
|
|
54
|
+
return hash.toString(16).padStart(16, '0');
|
|
55
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type PartitionCardinality = 'single' | 'mixed' | 'unknown';
|
|
2
|
+
export interface PartitionSplit<T> {
|
|
3
|
+
readonly partition: string;
|
|
4
|
+
readonly selector: string;
|
|
5
|
+
readonly row_indexes: readonly number[];
|
|
6
|
+
readonly rows: readonly T[];
|
|
7
|
+
}
|
|
8
|
+
export declare function inspectPartitionCardinality<T>(rows: readonly T[], partitionOf: (row: T) => string | null | undefined): PartitionCardinality;
|
|
9
|
+
export declare function splitChunkByPartition<T>(rows: readonly T[], partitionOf: (row: T) => string | null | undefined, partitionField?: string): readonly PartitionSplit<T>[];
|
|
10
|
+
//# sourceMappingURL=chunkRouting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunkRouting.d.ts","sourceRoot":"","sources":["../../../src/lib/archive/chunkRouting.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAElE,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;CAC7B;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAC3C,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,GACjD,oBAAoB,CAkBtB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,EAClD,cAAc,SAAU,GACvB,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,CAiC9B"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export function inspectPartitionCardinality(rows, partitionOf) {
|
|
2
|
+
if (rows.length === 0) {
|
|
3
|
+
return 'unknown';
|
|
4
|
+
}
|
|
5
|
+
const partitions = new Set();
|
|
6
|
+
for (const row of rows) {
|
|
7
|
+
const partition = partitionOf(row);
|
|
8
|
+
if (partition === undefined || partition === null || partition.length === 0) {
|
|
9
|
+
return 'unknown';
|
|
10
|
+
}
|
|
11
|
+
partitions.add(partition);
|
|
12
|
+
if (partitions.size > 1) {
|
|
13
|
+
return 'mixed';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return partitions.size === 1 ? 'single' : 'unknown';
|
|
17
|
+
}
|
|
18
|
+
export function splitChunkByPartition(rows, partitionOf, partitionField = 'group') {
|
|
19
|
+
const grouped = new Map();
|
|
20
|
+
for (let index = 0; index < rows.length; index++) {
|
|
21
|
+
const row = rows[index];
|
|
22
|
+
const partition = partitionOf(row);
|
|
23
|
+
if (partition === undefined || partition === null || partition.length === 0) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const group = grouped.get(partition);
|
|
27
|
+
if (group) {
|
|
28
|
+
group.indexes.push(index);
|
|
29
|
+
group.rows.push(row);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
grouped.set(partition, { indexes: [index], rows: [row] });
|
|
33
|
+
}
|
|
34
|
+
const keys = [...grouped.keys()].sort();
|
|
35
|
+
return keys.map((partition) => {
|
|
36
|
+
const group = grouped.get(partition);
|
|
37
|
+
if (!group) {
|
|
38
|
+
throw new Error(`invariant throw: missing partition group for ${partition}`);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
partition,
|
|
42
|
+
selector: `${partitionField} == ${JSON.stringify(partition)}`,
|
|
43
|
+
row_indexes: group.indexes,
|
|
44
|
+
rows: group.rows,
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TraceChunkEnvelope } from './chunkEnvelope.js';
|
|
2
|
+
import type { PartitionSplit } from './chunkRouting.js';
|
|
3
|
+
export interface TraceChunkStats {
|
|
4
|
+
readonly chunk_id: string;
|
|
5
|
+
readonly row_count: number;
|
|
6
|
+
readonly partition_count: number;
|
|
7
|
+
readonly started_at_ms: number;
|
|
8
|
+
readonly ended_at_ms: number;
|
|
9
|
+
readonly duration_ms: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function extractChunkStats<T>(envelope: TraceChunkEnvelope, partitions?: readonly PartitionSplit<T>[]): TraceChunkStats;
|
|
12
|
+
//# sourceMappingURL=chunkStats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunkStats.d.ts","sourceRoot":"","sources":["../../../src/lib/archive/chunkStats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,GAAE,SAAS,cAAc,CAAC,CAAC,CAAC,EAAO,GAC5C,eAAe,CASjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function extractChunkStats(envelope, partitions = []) {
|
|
2
|
+
return {
|
|
3
|
+
chunk_id: envelope.chunk_id,
|
|
4
|
+
row_count: envelope.row_count,
|
|
5
|
+
partition_count: partitions.length,
|
|
6
|
+
started_at_ms: envelope.started_at_ms,
|
|
7
|
+
ended_at_ms: envelope.ended_at_ms,
|
|
8
|
+
duration_ms: Math.max(0, envelope.ended_at_ms - envelope.started_at_ms),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/archive/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Table } from '@uwdata/flechette';
|
|
2
|
+
import type { SpanBufferConstructor } from '../spanBuffer.js';
|
|
3
|
+
import type { OpMetadata } from '../types.js';
|
|
4
|
+
export interface CapacityStatsEntry {
|
|
5
|
+
bufferClass: SpanBufferConstructor;
|
|
6
|
+
metadata: OpMetadata;
|
|
7
|
+
}
|
|
8
|
+
export declare function createCapacityStatsTable(entriesToLog: CapacityStatsEntry[], periodStartNs: bigint, mergedSchema: Record<string, unknown>): Table;
|
|
9
|
+
//# sourceMappingURL=capacityStats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacityStats.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/capacityStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,KAAK,EAQX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,qBAAqB,CAAC;IACnC,QAAQ,EAAE,UAAU,CAAC;CACtB;AAiCD,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,kBAAkB,EAAE,EAClC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,KAAK,CAoRP"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { bool, dictionary, float64, int8, TimeUnit, tableFromColumns, timestamp, uint8, uint32, uint64, utf8, } from '@uwdata/flechette';
|
|
2
|
+
import { SYSTEM_SCHEMA_FIELD_NAMES } from '../schema/systemSchema.js';
|
|
3
|
+
import { getSchemaType } from '../schema/typeGuards.js';
|
|
4
|
+
import { getArrowIndexTypeOr, makeArrowColumn } from './flechette.js';
|
|
5
|
+
import { getArrowFieldName } from './utils.js';
|
|
6
|
+
const F64Array = Float64Array;
|
|
7
|
+
function encodeUtf8(strings) {
|
|
8
|
+
const enc = new TextEncoder();
|
|
9
|
+
const bytes = strings.map((s) => enc.encode(s));
|
|
10
|
+
const total = bytes.reduce((n, b) => n + b.length, 0);
|
|
11
|
+
const data = new Uint8Array(total);
|
|
12
|
+
const offsets = new Int32Array(strings.length + 1);
|
|
13
|
+
let pos = 0;
|
|
14
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
15
|
+
data.set(bytes[i], pos);
|
|
16
|
+
offsets[i] = pos;
|
|
17
|
+
pos += bytes[i].length;
|
|
18
|
+
}
|
|
19
|
+
offsets[strings.length] = pos;
|
|
20
|
+
return { data, offsets };
|
|
21
|
+
}
|
|
22
|
+
function indexTypeForCount(count) {
|
|
23
|
+
return count <= 255 ? uint8() : uint32();
|
|
24
|
+
}
|
|
25
|
+
function append(entries, name, column) {
|
|
26
|
+
entries.push([name, column]);
|
|
27
|
+
}
|
|
28
|
+
export function createCapacityStatsTable(entriesToLog, periodStartNs, mergedSchema) {
|
|
29
|
+
if (entriesToLog.length === 0)
|
|
30
|
+
return tableFromColumns({});
|
|
31
|
+
const rowsPerModule = 4;
|
|
32
|
+
const totalRows = entriesToLog.length * rowsPerModule;
|
|
33
|
+
const entryTypeStrings = ['period-start', 'buffer-writes', 'buffer-spans', 'buffer-capacity'];
|
|
34
|
+
const [periodStartIdx, writesIdx, spansIdx, capacityIdx] = [0, 1, 2, 3];
|
|
35
|
+
const traceIdStrings = [''];
|
|
36
|
+
const packageNameStrings = Array.from(new Set(entriesToLog.map((e) => e.metadata.package_name)));
|
|
37
|
+
const packageFileStrings = Array.from(new Set(entriesToLog.map((e) => e.metadata.package_file)));
|
|
38
|
+
const gitShaStrings = Array.from(new Set(entriesToLog.map((e) => e.metadata.git_sha)));
|
|
39
|
+
const messageStrings = [''];
|
|
40
|
+
const packageNameMap = new Map(packageNameStrings.map((v, i) => [v, i]));
|
|
41
|
+
const packageFileMap = new Map(packageFileStrings.map((v, i) => [v, i]));
|
|
42
|
+
const gitShaMap = new Map(gitShaStrings.map((v, i) => [v, i]));
|
|
43
|
+
const entryTypes = new Int8Array(totalRows);
|
|
44
|
+
const traceIds = new Uint8Array(totalRows);
|
|
45
|
+
const packageNames = new Uint32Array(totalRows);
|
|
46
|
+
const packageFiles = new Uint32Array(totalRows);
|
|
47
|
+
const gitShas = new Uint32Array(totalRows);
|
|
48
|
+
const messages = new Uint8Array(totalRows);
|
|
49
|
+
const timestamps = new BigInt64Array(totalRows);
|
|
50
|
+
const threadIds = new BigUint64Array(totalRows);
|
|
51
|
+
const spanIds = new Uint32Array(totalRows);
|
|
52
|
+
const parentThreadIds = new BigUint64Array(totalRows);
|
|
53
|
+
const parentSpanIds = new Uint32Array(totalRows);
|
|
54
|
+
const uint64Values = new BigUint64Array(totalRows);
|
|
55
|
+
const parentThreadValidity = new Uint8Array(Math.ceil(totalRows / 8));
|
|
56
|
+
const parentSpanValidity = new Uint8Array(Math.ceil(totalRows / 8));
|
|
57
|
+
for (let m = 0; m < entriesToLog.length; m++) {
|
|
58
|
+
const base = m * rowsPerModule;
|
|
59
|
+
const { bufferClass, metadata } = entriesToLog[m];
|
|
60
|
+
const pName = packageNameMap.get(metadata.package_name) ?? 0;
|
|
61
|
+
const pFile = packageFileMap.get(metadata.package_file) ?? 0;
|
|
62
|
+
const gSha = gitShaMap.get(metadata.git_sha) ?? 0;
|
|
63
|
+
const stats = bufferClass.stats;
|
|
64
|
+
const values = [periodStartNs, BigInt(stats.totalWrites), BigInt(stats.spansCreated), BigInt(stats.capacity)];
|
|
65
|
+
const kinds = [periodStartIdx, writesIdx, spansIdx, capacityIdx];
|
|
66
|
+
for (let i = 0; i < rowsPerModule; i++) {
|
|
67
|
+
const row = base + i;
|
|
68
|
+
entryTypes[row] = kinds[i];
|
|
69
|
+
traceIds[row] = 0;
|
|
70
|
+
packageNames[row] = pName;
|
|
71
|
+
packageFiles[row] = pFile;
|
|
72
|
+
gitShas[row] = gSha;
|
|
73
|
+
messages[row] = 0;
|
|
74
|
+
uint64Values[row] = values[i];
|
|
75
|
+
timestamps[row] = periodStartNs;
|
|
76
|
+
threadIds[row] = 0n;
|
|
77
|
+
spanIds[row] = 0;
|
|
78
|
+
parentThreadIds[row] = 0n;
|
|
79
|
+
parentSpanIds[row] = 0;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const entryTypeUtf8 = encodeUtf8(entryTypeStrings);
|
|
83
|
+
const traceIdUtf8 = encodeUtf8(traceIdStrings);
|
|
84
|
+
const packageNameUtf8 = encodeUtf8(packageNameStrings);
|
|
85
|
+
const packageFileUtf8 = encodeUtf8(packageFileStrings);
|
|
86
|
+
const gitShaUtf8 = encodeUtf8(gitShaStrings);
|
|
87
|
+
const messageUtf8 = encodeUtf8(messageStrings);
|
|
88
|
+
const cols = [];
|
|
89
|
+
append(cols, 'timestamp', makeArrowColumn({ type: timestamp(TimeUnit.NANOSECOND), length: totalRows, nullCount: 0, values: timestamps }));
|
|
90
|
+
append(cols, 'trace_id', makeArrowColumn({
|
|
91
|
+
type: dictionary(utf8(), indexTypeForCount(traceIdStrings.length), false, 0),
|
|
92
|
+
length: totalRows,
|
|
93
|
+
nullCount: 0,
|
|
94
|
+
values: traceIds,
|
|
95
|
+
dictionary: makeArrowColumn({
|
|
96
|
+
type: utf8(),
|
|
97
|
+
length: traceIdStrings.length,
|
|
98
|
+
nullCount: 0,
|
|
99
|
+
values: traceIdUtf8.data,
|
|
100
|
+
offsets: traceIdUtf8.offsets,
|
|
101
|
+
}),
|
|
102
|
+
}));
|
|
103
|
+
append(cols, 'thread_id', makeArrowColumn({ type: uint64(), length: totalRows, nullCount: 0, values: threadIds }));
|
|
104
|
+
append(cols, 'span_id', makeArrowColumn({ type: uint32(), length: totalRows, nullCount: 0, values: spanIds }));
|
|
105
|
+
append(cols, 'parent_thread_id', makeArrowColumn({
|
|
106
|
+
type: uint64(),
|
|
107
|
+
length: totalRows,
|
|
108
|
+
nullCount: totalRows,
|
|
109
|
+
values: parentThreadIds,
|
|
110
|
+
validity: parentThreadValidity,
|
|
111
|
+
}));
|
|
112
|
+
append(cols, 'parent_span_id', makeArrowColumn({
|
|
113
|
+
type: uint32(),
|
|
114
|
+
length: totalRows,
|
|
115
|
+
nullCount: totalRows,
|
|
116
|
+
values: parentSpanIds,
|
|
117
|
+
validity: parentSpanValidity,
|
|
118
|
+
}));
|
|
119
|
+
append(cols, 'entry_type', makeArrowColumn({
|
|
120
|
+
type: dictionary(utf8(), int8(), false, 1),
|
|
121
|
+
length: totalRows,
|
|
122
|
+
nullCount: 0,
|
|
123
|
+
values: entryTypes,
|
|
124
|
+
dictionary: makeArrowColumn({
|
|
125
|
+
type: utf8(),
|
|
126
|
+
length: entryTypeStrings.length,
|
|
127
|
+
nullCount: 0,
|
|
128
|
+
values: entryTypeUtf8.data,
|
|
129
|
+
offsets: entryTypeUtf8.offsets,
|
|
130
|
+
}),
|
|
131
|
+
}));
|
|
132
|
+
append(cols, 'package_name', makeArrowColumn({
|
|
133
|
+
type: dictionary(utf8(), indexTypeForCount(packageNameStrings.length), false, 2),
|
|
134
|
+
length: totalRows,
|
|
135
|
+
nullCount: 0,
|
|
136
|
+
values: packageNames,
|
|
137
|
+
dictionary: makeArrowColumn({
|
|
138
|
+
type: utf8(),
|
|
139
|
+
length: packageNameStrings.length,
|
|
140
|
+
nullCount: 0,
|
|
141
|
+
values: packageNameUtf8.data,
|
|
142
|
+
offsets: packageNameUtf8.offsets,
|
|
143
|
+
}),
|
|
144
|
+
}));
|
|
145
|
+
append(cols, 'package_file', makeArrowColumn({
|
|
146
|
+
type: dictionary(utf8(), indexTypeForCount(packageFileStrings.length), false, 3),
|
|
147
|
+
length: totalRows,
|
|
148
|
+
nullCount: 0,
|
|
149
|
+
values: packageFiles,
|
|
150
|
+
dictionary: makeArrowColumn({
|
|
151
|
+
type: utf8(),
|
|
152
|
+
length: packageFileStrings.length,
|
|
153
|
+
nullCount: 0,
|
|
154
|
+
values: packageFileUtf8.data,
|
|
155
|
+
offsets: packageFileUtf8.offsets,
|
|
156
|
+
}),
|
|
157
|
+
}));
|
|
158
|
+
append(cols, 'git_sha', makeArrowColumn({
|
|
159
|
+
type: dictionary(utf8(), indexTypeForCount(gitShaStrings.length), false, 4),
|
|
160
|
+
length: totalRows,
|
|
161
|
+
nullCount: 0,
|
|
162
|
+
values: gitShas,
|
|
163
|
+
dictionary: makeArrowColumn({
|
|
164
|
+
type: utf8(),
|
|
165
|
+
length: gitShaStrings.length,
|
|
166
|
+
nullCount: 0,
|
|
167
|
+
values: gitShaUtf8.data,
|
|
168
|
+
offsets: gitShaUtf8.offsets,
|
|
169
|
+
}),
|
|
170
|
+
}));
|
|
171
|
+
append(cols, 'message', makeArrowColumn({
|
|
172
|
+
type: dictionary(utf8(), indexTypeForCount(messageStrings.length), false, 5),
|
|
173
|
+
length: totalRows,
|
|
174
|
+
nullCount: 0,
|
|
175
|
+
values: messages,
|
|
176
|
+
dictionary: makeArrowColumn({
|
|
177
|
+
type: utf8(),
|
|
178
|
+
length: messageStrings.length,
|
|
179
|
+
nullCount: 0,
|
|
180
|
+
values: messageUtf8.data,
|
|
181
|
+
offsets: messageUtf8.offsets,
|
|
182
|
+
}),
|
|
183
|
+
}));
|
|
184
|
+
append(cols, 'uint64_value', makeArrowColumn({ type: uint64(), length: totalRows, nullCount: 0, values: uint64Values }));
|
|
185
|
+
for (const [fieldName, fieldSchema] of Object.entries(mergedSchema)) {
|
|
186
|
+
if (SYSTEM_SCHEMA_FIELD_NAMES.has(fieldName))
|
|
187
|
+
continue;
|
|
188
|
+
const lmaoType = getSchemaType(fieldSchema);
|
|
189
|
+
const arrowFieldName = getArrowFieldName(fieldName);
|
|
190
|
+
if (lmaoType === 'number') {
|
|
191
|
+
append(cols, arrowFieldName, makeArrowColumn({
|
|
192
|
+
type: float64(),
|
|
193
|
+
length: totalRows,
|
|
194
|
+
nullCount: totalRows,
|
|
195
|
+
values: new F64Array(totalRows),
|
|
196
|
+
validity: new Uint8Array(Math.ceil(totalRows / 8)),
|
|
197
|
+
}));
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
if (lmaoType === 'boolean') {
|
|
201
|
+
append(cols, arrowFieldName, makeArrowColumn({
|
|
202
|
+
type: bool(),
|
|
203
|
+
length: totalRows,
|
|
204
|
+
nullCount: totalRows,
|
|
205
|
+
values: new Uint8Array(Math.ceil(totalRows / 8)),
|
|
206
|
+
validity: new Uint8Array(Math.ceil(totalRows / 8)),
|
|
207
|
+
}));
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
let idxType = uint8();
|
|
211
|
+
if (lmaoType === 'enum') {
|
|
212
|
+
idxType = getArrowIndexTypeOr(fieldSchema, uint8());
|
|
213
|
+
}
|
|
214
|
+
const dictType = dictionary(utf8(), idxType);
|
|
215
|
+
append(cols, arrowFieldName, makeArrowColumn({
|
|
216
|
+
type: dictType,
|
|
217
|
+
length: totalRows,
|
|
218
|
+
nullCount: totalRows,
|
|
219
|
+
values: new Uint8Array(totalRows),
|
|
220
|
+
validity: new Uint8Array(Math.ceil(totalRows / 8)),
|
|
221
|
+
dictionary: makeArrowColumn({
|
|
222
|
+
type: utf8(),
|
|
223
|
+
length: 1,
|
|
224
|
+
nullCount: 0,
|
|
225
|
+
values: new Uint8Array(0),
|
|
226
|
+
offsets: new Int32Array([0, 0]),
|
|
227
|
+
}),
|
|
228
|
+
}));
|
|
229
|
+
}
|
|
230
|
+
return tableFromColumns(cols);
|
|
231
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dictionary building for Arrow conversion
|
|
3
|
+
*/
|
|
4
|
+
import { type IntType } from '@uwdata/flechette';
|
|
5
|
+
import type { AnySpanBuffer } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Dictionary build result with consistent shape for V8 optimization.
|
|
8
|
+
* Using a class ensures all instances share the same hidden class.
|
|
9
|
+
*/
|
|
10
|
+
export declare class DictionaryBuildResult {
|
|
11
|
+
readonly dictionary: string[];
|
|
12
|
+
readonly indices: Uint8Array | Uint16Array | Uint32Array;
|
|
13
|
+
readonly indexArrayCtor: Uint8ArrayConstructor | Uint16ArrayConstructor | Uint32ArrayConstructor;
|
|
14
|
+
readonly arrowIndexType: IntType;
|
|
15
|
+
readonly nullBitmap: Uint8Array | undefined;
|
|
16
|
+
readonly nullCount: number;
|
|
17
|
+
constructor(dictionary: string[], indices: Uint8Array | Uint16Array | Uint32Array, indexArrayCtor: Uint8ArrayConstructor | Uint16ArrayConstructor | Uint32ArrayConstructor, arrowIndexType: IntType, nullBitmap: Uint8Array | undefined, nullCount: number);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build a sorted category dictionary from buffers
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildSortedCategoryDictionary(buffers: AnySpanBuffer[], columnName: string, maskTransform?: (value: string) => string): DictionaryBuildResult;
|
|
23
|
+
/**
|
|
24
|
+
* Build a text dictionary from buffers (not sorted, uses frequency-based optimization)
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildTextDictionary(buffers: AnySpanBuffer[], columnName: string, maskTransform?: (value: string) => string): DictionaryBuildResult | null;
|
|
27
|
+
//# sourceMappingURL=dictionaries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dictionaries.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/dictionaries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;GAGG;AACH,qBAAa,qBAAqB;aAEd,UAAU,EAAE,MAAM,EAAE;aACpB,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW;aAC/C,cAAc,EAAE,qBAAqB,GAAG,sBAAsB,GAAG,sBAAsB;aACvF,cAAc,EAAE,OAAO;aACvB,UAAU,EAAE,UAAU,GAAG,SAAS;aAClC,SAAS,EAAE,MAAM;gBALjB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,EAC/C,cAAc,EAAE,qBAAqB,GAAG,sBAAsB,GAAG,sBAAsB,EACvF,cAAc,EAAE,OAAO,EACvB,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,SAAS,EAAE,MAAM;CAEpC;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,aAAa,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,qBAAqB,CAkDvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,qBAAqB,GAAG,IAAI,CAqE9B"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dictionary building for Arrow conversion
|
|
3
|
+
*/
|
|
4
|
+
import { uint8, uint16, uint32 } from '@uwdata/flechette';
|
|
5
|
+
import { concatenateNullBitmaps } from './utils.js';
|
|
6
|
+
/**
|
|
7
|
+
* Dictionary build result with consistent shape for V8 optimization.
|
|
8
|
+
* Using a class ensures all instances share the same hidden class.
|
|
9
|
+
*/
|
|
10
|
+
export class DictionaryBuildResult {
|
|
11
|
+
dictionary;
|
|
12
|
+
indices;
|
|
13
|
+
indexArrayCtor;
|
|
14
|
+
arrowIndexType;
|
|
15
|
+
nullBitmap;
|
|
16
|
+
nullCount;
|
|
17
|
+
constructor(dictionary, indices, indexArrayCtor, arrowIndexType, nullBitmap, nullCount) {
|
|
18
|
+
this.dictionary = dictionary;
|
|
19
|
+
this.indices = indices;
|
|
20
|
+
this.indexArrayCtor = indexArrayCtor;
|
|
21
|
+
this.arrowIndexType = arrowIndexType;
|
|
22
|
+
this.nullBitmap = nullBitmap;
|
|
23
|
+
this.nullCount = nullCount;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build a sorted category dictionary from buffers
|
|
28
|
+
*/
|
|
29
|
+
export function buildSortedCategoryDictionary(buffers, columnName, maskTransform) {
|
|
30
|
+
const totalRows = buffers.reduce((sum, buf) => sum + buf._writeIndex, 0);
|
|
31
|
+
// Build mapping from original value to masked value (for dictionary lookup)
|
|
32
|
+
// and collect unique masked values for the dictionary
|
|
33
|
+
const uniqueMaskedStrings = new Set();
|
|
34
|
+
const originalToMasked = new Map();
|
|
35
|
+
for (const buf of buffers) {
|
|
36
|
+
const column = buf.getColumnIfAllocated(columnName);
|
|
37
|
+
if (column && Array.isArray(column)) {
|
|
38
|
+
for (let i = 0; i < buf._writeIndex; i++) {
|
|
39
|
+
const value = column[i];
|
|
40
|
+
if (typeof value === 'string' && !originalToMasked.has(value)) {
|
|
41
|
+
const maskedValue = maskTransform ? maskTransform(value) : value;
|
|
42
|
+
originalToMasked.set(value, maskedValue);
|
|
43
|
+
uniqueMaskedStrings.add(maskedValue);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const dictionary = Array.from(uniqueMaskedStrings).sort();
|
|
49
|
+
const maskedToIndex = new Map(dictionary.map((s, i) => [s, i]));
|
|
50
|
+
// Determine index type constructors based on dictionary size
|
|
51
|
+
const uniqueCount = dictionary.length;
|
|
52
|
+
const indexArrayCtor = uniqueCount <= 255 ? Uint8Array : uniqueCount <= 65535 ? Uint16Array : Uint32Array;
|
|
53
|
+
const arrowIndexType = uniqueCount <= 255 ? uint8() : uniqueCount <= 65535 ? uint16() : uint32();
|
|
54
|
+
const indices = new indexArrayCtor(totalRows);
|
|
55
|
+
const { nullBitmap, nullCount } = concatenateNullBitmaps(buffers, columnName);
|
|
56
|
+
let rowOffset = 0;
|
|
57
|
+
for (const buf of buffers) {
|
|
58
|
+
const column = buf.getColumnIfAllocated(columnName);
|
|
59
|
+
if (column && Array.isArray(column)) {
|
|
60
|
+
for (let i = 0; i < buf._writeIndex; i++) {
|
|
61
|
+
const value = column[i];
|
|
62
|
+
if (typeof value === 'string') {
|
|
63
|
+
const maskedValue = originalToMasked.get(value) ?? value;
|
|
64
|
+
indices[rowOffset + i] = maskedToIndex.get(maskedValue) ?? 0;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
indices[rowOffset + i] = 0;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
rowOffset += buf._writeIndex;
|
|
72
|
+
}
|
|
73
|
+
return new DictionaryBuildResult(dictionary, indices, indexArrayCtor, arrowIndexType, nullBitmap, nullCount);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build a text dictionary from buffers (not sorted, uses frequency-based optimization)
|
|
77
|
+
*/
|
|
78
|
+
export function buildTextDictionary(buffers, columnName, maskTransform) {
|
|
79
|
+
const totalRows = buffers.reduce((sum, buf) => sum + buf._writeIndex, 0);
|
|
80
|
+
// Build mapping from original value to masked value and track frequency of masked values
|
|
81
|
+
const frequencyMap = new Map();
|
|
82
|
+
const originalToMasked = new Map();
|
|
83
|
+
for (const buf of buffers) {
|
|
84
|
+
const column = buf.getColumnIfAllocated(columnName);
|
|
85
|
+
if (column && Array.isArray(column)) {
|
|
86
|
+
for (let i = 0; i < buf._writeIndex; i++) {
|
|
87
|
+
const value = column[i];
|
|
88
|
+
if (typeof value === 'string') {
|
|
89
|
+
let maskedValue;
|
|
90
|
+
if (originalToMasked.has(value)) {
|
|
91
|
+
const masked = originalToMasked.get(value);
|
|
92
|
+
if (masked === undefined) {
|
|
93
|
+
throw new Error(`Masked value not found for: ${value}`);
|
|
94
|
+
}
|
|
95
|
+
maskedValue = masked;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
maskedValue = maskTransform ? maskTransform(value) : value;
|
|
99
|
+
originalToMasked.set(value, maskedValue);
|
|
100
|
+
}
|
|
101
|
+
frequencyMap.set(maskedValue, (frequencyMap.get(maskedValue) ?? 0) + 1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (frequencyMap.size === 0) {
|
|
107
|
+
return new DictionaryBuildResult([], new Uint32Array(totalRows), Uint32Array, uint32(), new Uint8Array(Math.ceil(totalRows / 8)), totalRows);
|
|
108
|
+
}
|
|
109
|
+
const dictionary = Array.from(frequencyMap.keys());
|
|
110
|
+
const maskedToIndex = new Map(dictionary.map((s, i) => [s, i]));
|
|
111
|
+
// Determine index type constructors based on dictionary size
|
|
112
|
+
const uniqueCount = dictionary.length;
|
|
113
|
+
const indexArrayCtor = uniqueCount <= 255 ? Uint8Array : uniqueCount <= 65535 ? Uint16Array : Uint32Array;
|
|
114
|
+
const arrowIndexType = uniqueCount <= 255 ? uint8() : uniqueCount <= 65535 ? uint16() : uint32();
|
|
115
|
+
const indices = new indexArrayCtor(totalRows);
|
|
116
|
+
const { nullBitmap, nullCount } = concatenateNullBitmaps(buffers, columnName);
|
|
117
|
+
let rowOffset = 0;
|
|
118
|
+
for (const buf of buffers) {
|
|
119
|
+
const column = buf.getColumnIfAllocated(columnName);
|
|
120
|
+
if (column && Array.isArray(column)) {
|
|
121
|
+
for (let i = 0; i < buf._writeIndex; i++) {
|
|
122
|
+
const value = column[i];
|
|
123
|
+
if (typeof value === 'string') {
|
|
124
|
+
const maskedValue = originalToMasked.get(value) ?? value;
|
|
125
|
+
indices[rowOffset + i] = maskedToIndex.get(maskedValue) ?? 0;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
indices[rowOffset + i] = 0;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
rowOffset += buf._writeIndex;
|
|
133
|
+
}
|
|
134
|
+
return new DictionaryBuildResult(dictionary, indices, indexArrayCtor, arrowIndexType, nullBitmap, nullCount);
|
|
135
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { bool, Column, type DataType, type dictionary, type IntType, type utf8 } from '@uwdata/flechette';
|
|
2
|
+
export type ArrowIndexArray = Uint8Array | Uint16Array | Uint32Array;
|
|
3
|
+
export type ArrowIndexArrayConstructor = Uint8ArrayConstructor | Uint16ArrayConstructor | Uint32ArrayConstructor;
|
|
4
|
+
export type BoolType = ReturnType<typeof bool>;
|
|
5
|
+
export type DictionaryType = ReturnType<typeof dictionary>;
|
|
6
|
+
export type Utf8Type = ReturnType<typeof utf8>;
|
|
7
|
+
type ColumnDataBase<TType, TValues = unknown> = {
|
|
8
|
+
type: TType;
|
|
9
|
+
length: number;
|
|
10
|
+
nullCount: number;
|
|
11
|
+
values?: TValues;
|
|
12
|
+
validity?: Uint8Array;
|
|
13
|
+
};
|
|
14
|
+
export type DictionaryColumnData<TValues = unknown> = ColumnDataBase<DictionaryType, TValues> & {
|
|
15
|
+
dictionary: Column<unknown>;
|
|
16
|
+
};
|
|
17
|
+
export type Utf8ColumnData = ColumnDataBase<Utf8Type, Uint8Array> & {
|
|
18
|
+
offsets: Int32Array;
|
|
19
|
+
};
|
|
20
|
+
export type BoolColumnData = ColumnDataBase<BoolType, Uint8Array>;
|
|
21
|
+
export type GenericColumnData<TType extends DataType = DataType, TValues = unknown> = ColumnDataBase<TType, TValues>;
|
|
22
|
+
export declare function hasTypeId(value: unknown): value is {
|
|
23
|
+
readonly typeId: unknown;
|
|
24
|
+
};
|
|
25
|
+
export declare function isBoolType(value: unknown): value is BoolType;
|
|
26
|
+
export declare function hasArrowIndexType(value: unknown): value is {
|
|
27
|
+
readonly __arrow_index_type: IntType;
|
|
28
|
+
};
|
|
29
|
+
export declare function hasArrowIndexMetadata(value: unknown): value is {
|
|
30
|
+
readonly __arrow_index_type: IntType;
|
|
31
|
+
readonly __index_array_ctor: ArrowIndexArrayConstructor;
|
|
32
|
+
};
|
|
33
|
+
export declare function getArrowIndexTypeOr(value: unknown, fallback: IntType): IntType;
|
|
34
|
+
export declare function getArrowIndexArrayConstructorOr(value: unknown, fallback?: ArrowIndexArrayConstructor): ArrowIndexArrayConstructor;
|
|
35
|
+
export declare function makeArrowColumn(data: DictionaryColumnData): Column<unknown>;
|
|
36
|
+
export declare function makeArrowColumn(data: Utf8ColumnData): Column<unknown>;
|
|
37
|
+
export declare function makeArrowColumn(data: BoolColumnData): Column<unknown>;
|
|
38
|
+
export declare function makeArrowColumn(data: GenericColumnData): Column<unknown>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=flechette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flechette.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/flechette.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,IAAI,EAAE,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAKrH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;AACrE,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,sBAAsB,CAAC;AACjH,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AAC/C,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAC3D,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AAE/C,KAAK,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,IAAI;IAC9C,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,OAAO,GAAG,OAAO,IAAI,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IAC9F,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CAC7B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG;IAAE,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC;AAC5F,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAClE,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAErH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAE/E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;CAAE,CAEnG;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI;IAAE,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,CAAA;CAAE,CAI5G;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAE9E;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,EACd,QAAQ,GAAE,0BAAuC,GAChD,0BAA0B,CAE5B;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7E,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACvE,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACvE,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC"}
|