@lix-js/sdk 0.6.0-preview.2 → 0.6.0-preview.3
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/SKILL.md +4 -5
- package/dist/engine-wasm/wasm/lix_engine.js +1 -1
- package/dist/engine-wasm/wasm/lix_engine.wasm +0 -0
- package/dist/generated/builtin-schemas.d.ts +87 -162
- package/dist/generated/builtin-schemas.js +139 -236
- package/dist/open-lix.d.ts +1 -1
- package/dist-engine-src/src/binary_cas/types.rs +0 -6
- package/dist-engine-src/src/catalog/context.rs +412 -0
- package/dist-engine-src/src/catalog/mod.rs +10 -0
- package/dist-engine-src/src/catalog/schema.rs +4 -0
- package/dist-engine-src/src/catalog/snapshot.rs +1114 -0
- package/dist-engine-src/src/cel/mod.rs +1 -1
- package/dist-engine-src/src/cel/provider.rs +1 -1
- package/dist-engine-src/src/commit_graph/context.rs +328 -1015
- package/dist-engine-src/src/commit_graph/mod.rs +2 -3
- package/dist-engine-src/src/commit_graph/types.rs +7 -43
- package/dist-engine-src/src/commit_graph/walker.rs +57 -81
- package/dist-engine-src/src/commit_store/codec.rs +887 -0
- package/dist-engine-src/src/commit_store/context.rs +944 -0
- package/dist-engine-src/src/commit_store/materialization.rs +84 -0
- package/dist-engine-src/src/commit_store/mod.rs +16 -0
- package/dist-engine-src/src/commit_store/storage.rs +600 -0
- package/dist-engine-src/src/commit_store/types.rs +215 -0
- package/dist-engine-src/src/common/identity.rs +15 -5
- package/dist-engine-src/src/common/json_pointer.rs +67 -0
- package/dist-engine-src/src/common/metadata.rs +17 -12
- package/dist-engine-src/src/common/mod.rs +5 -5
- package/dist-engine-src/src/domain.rs +324 -0
- package/dist-engine-src/src/engine.rs +29 -43
- package/dist-engine-src/src/entity_identity.rs +238 -118
- package/dist-engine-src/src/functions/context.rs +17 -52
- package/dist-engine-src/src/functions/deterministic.rs +1 -1
- package/dist-engine-src/src/functions/mod.rs +1 -1
- package/dist-engine-src/src/functions/provider.rs +4 -4
- package/dist-engine-src/src/functions/state.rs +39 -66
- package/dist-engine-src/src/functions/types.rs +1 -1
- package/dist-engine-src/src/init.rs +204 -151
- package/dist-engine-src/src/json_store/context.rs +354 -60
- package/dist-engine-src/src/json_store/encoded.rs +6 -6
- package/dist-engine-src/src/json_store/mod.rs +4 -1
- package/dist-engine-src/src/json_store/store.rs +884 -11
- package/dist-engine-src/src/json_store/types.rs +166 -1
- package/dist-engine-src/src/lib.rs +10 -9
- package/dist-engine-src/src/live_state/context.rs +608 -830
- package/dist-engine-src/src/live_state/mod.rs +3 -3
- package/dist-engine-src/src/live_state/overlay.rs +7 -7
- package/dist-engine-src/src/live_state/reader.rs +5 -5
- package/dist-engine-src/src/live_state/types.rs +19 -36
- package/dist-engine-src/src/live_state/visibility.rs +19 -14
- package/dist-engine-src/src/plugin/archive.rs +3 -6
- package/dist-engine-src/src/plugin/install.rs +0 -18
- package/dist-engine-src/src/plugin/plugin_manifest.json +0 -1
- package/dist-engine-src/src/schema/annotations/defaults.rs +2 -7
- package/dist-engine-src/src/schema/builtin/lix_account.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_active_account.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_binary_blob_ref.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_change.json +11 -10
- package/dist-engine-src/src/schema/builtin/lix_change_author.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_commit.json +8 -46
- package/dist-engine-src/src/schema/builtin/lix_commit_edge.json +29 -22
- package/dist-engine-src/src/schema/builtin/lix_directory_descriptor.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_file_descriptor.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_key_value.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_label.json +10 -3
- package/dist-engine-src/src/schema/builtin/lix_label_assignment.json +74 -0
- package/dist-engine-src/src/schema/builtin/lix_registered_schema.json +2 -8
- package/dist-engine-src/src/schema/builtin/lix_version_descriptor.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_version_ref.json +0 -1
- package/dist-engine-src/src/schema/builtin/mod.rs +10 -59
- package/dist-engine-src/src/schema/compatibility.rs +787 -0
- package/dist-engine-src/src/schema/definition.json +47 -17
- package/dist-engine-src/src/schema/definition.rs +202 -96
- package/dist-engine-src/src/schema/key.rs +9 -77
- package/dist-engine-src/src/schema/mod.rs +4 -4
- package/dist-engine-src/src/schema/tests.rs +133 -92
- package/dist-engine-src/src/session/context.rs +40 -42
- package/dist-engine-src/src/session/create_version.rs +22 -14
- package/dist-engine-src/src/session/execute.rs +45 -14
- package/dist-engine-src/src/session/merge/apply.rs +4 -4
- package/dist-engine-src/src/session/merge/conflicts.rs +3 -2
- package/dist-engine-src/src/session/merge/stats.rs +1 -1
- package/dist-engine-src/src/session/merge/version.rs +35 -45
- package/dist-engine-src/src/session/mod.rs +4 -2
- package/dist-engine-src/src/session/optimization9_sql2_bench.rs +100 -0
- package/dist-engine-src/src/session/switch_version.rs +16 -28
- package/dist-engine-src/src/sql2/change_provider.rs +14 -20
- package/dist-engine-src/src/sql2/classify.rs +61 -26
- package/dist-engine-src/src/sql2/context.rs +22 -18
- package/dist-engine-src/src/sql2/directory_history_provider.rs +28 -20
- package/dist-engine-src/src/sql2/directory_provider.rs +131 -83
- package/dist-engine-src/src/sql2/entity_history_provider.rs +10 -14
- package/dist-engine-src/src/sql2/entity_provider.rs +680 -169
- package/dist-engine-src/src/sql2/error.rs +21 -1
- package/dist-engine-src/src/sql2/execute.rs +325 -264
- package/dist-engine-src/src/sql2/file_history_provider.rs +29 -21
- package/dist-engine-src/src/sql2/file_provider.rs +533 -108
- package/dist-engine-src/src/sql2/filesystem_planner.rs +58 -94
- package/dist-engine-src/src/sql2/filesystem_visibility.rs +37 -23
- package/dist-engine-src/src/sql2/history_projection.rs +3 -27
- package/dist-engine-src/src/sql2/history_provider.rs +11 -17
- package/dist-engine-src/src/sql2/history_route.rs +22 -8
- package/dist-engine-src/src/sql2/lix_state_provider.rs +178 -96
- package/dist-engine-src/src/sql2/mod.rs +6 -3
- package/dist-engine-src/src/sql2/predicate_typecheck.rs +246 -0
- package/dist-engine-src/src/sql2/public_bind/assignment.rs +46 -0
- package/dist-engine-src/src/sql2/public_bind/capability.rs +41 -0
- package/dist-engine-src/src/sql2/public_bind/dml.rs +166 -0
- package/dist-engine-src/src/sql2/public_bind/mod.rs +25 -0
- package/dist-engine-src/src/sql2/public_bind/table.rs +168 -0
- package/dist-engine-src/src/sql2/read_only.rs +10 -12
- package/dist-engine-src/src/sql2/session.rs +7 -10
- package/dist-engine-src/src/sql2/udfs/lix_timestamp.rs +76 -0
- package/dist-engine-src/src/sql2/udfs/mod.rs +8 -1
- package/dist-engine-src/src/sql2/udfs/public_call.rs +211 -0
- package/dist-engine-src/src/sql2/version_provider.rs +46 -31
- package/dist-engine-src/src/sql2/version_scope.rs +4 -4
- package/dist-engine-src/src/storage_bench.rs +1782 -325
- package/dist-engine-src/src/test_support.rs +183 -36
- package/dist-engine-src/src/tracked_state/by_file_index.rs +20 -24
- package/dist-engine-src/src/tracked_state/codec.rs +1519 -181
- package/dist-engine-src/src/tracked_state/context.rs +1155 -271
- package/dist-engine-src/src/tracked_state/diff.rs +249 -57
- package/dist-engine-src/src/tracked_state/materialization.rs +365 -103
- package/dist-engine-src/src/tracked_state/materializer.rs +488 -0
- package/dist-engine-src/src/tracked_state/merge.rs +37 -19
- package/dist-engine-src/src/tracked_state/mod.rs +8 -7
- package/dist-engine-src/src/tracked_state/storage.rs +138 -6
- package/dist-engine-src/src/tracked_state/tree.rs +695 -252
- package/dist-engine-src/src/tracked_state/types.rs +176 -6
- package/dist-engine-src/src/transaction/commit.rs +695 -435
- package/dist-engine-src/src/transaction/context.rs +551 -310
- package/dist-engine-src/src/transaction/live_state_overlay.rs +9 -8
- package/dist-engine-src/src/transaction/mod.rs +2 -0
- package/dist-engine-src/src/transaction/normalization.rs +311 -447
- package/dist-engine-src/src/transaction/prep.rs +37 -0
- package/dist-engine-src/src/transaction/schema_resolver.rs +93 -71
- package/dist-engine-src/src/transaction/staging.rs +701 -406
- package/dist-engine-src/src/transaction/types.rs +231 -122
- package/dist-engine-src/src/transaction/validation.rs +2717 -1698
- package/dist-engine-src/src/untracked_state/codec.rs +40 -96
- package/dist-engine-src/src/untracked_state/context.rs +21 -5
- package/dist-engine-src/src/untracked_state/materialization.rs +10 -104
- package/dist-engine-src/src/untracked_state/mod.rs +3 -5
- package/dist-engine-src/src/untracked_state/storage.rs +105 -57
- package/dist-engine-src/src/untracked_state/types.rs +63 -13
- package/dist-engine-src/src/version/context.rs +1 -13
- package/dist-engine-src/src/version/lifecycle.rs +221 -0
- package/dist-engine-src/src/version/mod.rs +3 -2
- package/dist-engine-src/src/version/refs.rs +12 -103
- package/dist-engine-src/src/version/stage_rows.rs +15 -19
- package/package.json +1 -1
- package/dist-engine-src/src/changelog/codec.rs +0 -321
- package/dist-engine-src/src/changelog/context.rs +0 -92
- package/dist-engine-src/src/changelog/materialization.rs +0 -121
- package/dist-engine-src/src/changelog/mod.rs +0 -13
- package/dist-engine-src/src/changelog/reader.rs +0 -20
- package/dist-engine-src/src/changelog/storage.rs +0 -220
- package/dist-engine-src/src/changelog/types.rs +0 -38
- package/dist-engine-src/src/schema/builtin/lix_change_set.json +0 -18
- package/dist-engine-src/src/schema/builtin/lix_change_set_element.json +0 -75
- package/dist-engine-src/src/schema/builtin/lix_entity_label.json +0 -63
- package/dist-engine-src/src/schema_registry.rs +0 -294
- package/dist-engine-src/src/sql2/commit_derived_provider.rs +0 -591
- package/dist-engine-src/src/tracked_state/rebuild.rs +0 -771
- package/dist-engine-src/src/tracked_state/tree_types.rs +0 -176
|
@@ -22,7 +22,6 @@ use serde::Deserialize;
|
|
|
22
22
|
use tokio::sync::Mutex;
|
|
23
23
|
|
|
24
24
|
use crate::binary_cas::{BlobDataReader, BlobHash};
|
|
25
|
-
use crate::changelog::MaterializedCanonicalChange;
|
|
26
25
|
use crate::commit_graph::CommitGraphReader;
|
|
27
26
|
use crate::serialize_row_metadata;
|
|
28
27
|
use crate::LixError;
|
|
@@ -33,10 +32,11 @@ use super::history_route::{
|
|
|
33
32
|
HistoryColumnStyle, HistoryEntry, HistoryRoute, HistoryViewDescriptor, HISTORY_COL_CHANGE_ID,
|
|
34
33
|
HISTORY_COL_COMMIT_CREATED_AT, HISTORY_COL_DEPTH, HISTORY_COL_ENTITY_ID, HISTORY_COL_FILE_ID,
|
|
35
34
|
HISTORY_COL_METADATA, HISTORY_COL_OBSERVED_COMMIT_ID, HISTORY_COL_SCHEMA_KEY,
|
|
36
|
-
|
|
35
|
+
HISTORY_COL_SNAPSHOT_CONTENT, HISTORY_COL_START_COMMIT_ID,
|
|
37
36
|
};
|
|
38
37
|
use super::result_metadata::json_field;
|
|
39
|
-
use super::
|
|
38
|
+
use super::SqlCommitStoreQuerySource;
|
|
39
|
+
use crate::commit_store::MaterializedChange;
|
|
40
40
|
|
|
41
41
|
const FILE_DESCRIPTOR_SCHEMA_KEY: &str = "lix_file_descriptor";
|
|
42
42
|
const DIRECTORY_DESCRIPTOR_SCHEMA_KEY: &str = "lix_directory_descriptor";
|
|
@@ -45,7 +45,7 @@ const BLOB_REF_SCHEMA_KEY: &str = "lix_binary_blob_ref";
|
|
|
45
45
|
pub(crate) async fn register_lix_file_history_provider(
|
|
46
46
|
session: &datafusion::prelude::SessionContext,
|
|
47
47
|
commit_graph: Box<dyn CommitGraphReader>,
|
|
48
|
-
query_source:
|
|
48
|
+
query_source: SqlCommitStoreQuerySource,
|
|
49
49
|
blob_reader: Arc<dyn BlobDataReader>,
|
|
50
50
|
) -> Result<(), LixError> {
|
|
51
51
|
session
|
|
@@ -64,7 +64,7 @@ pub(crate) async fn register_lix_file_history_provider(
|
|
|
64
64
|
struct LixFileHistoryProvider {
|
|
65
65
|
schema: SchemaRef,
|
|
66
66
|
commit_graph: Arc<Mutex<Box<dyn CommitGraphReader>>>,
|
|
67
|
-
query_source:
|
|
67
|
+
query_source: SqlCommitStoreQuerySource,
|
|
68
68
|
blob_reader: Arc<dyn BlobDataReader>,
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -77,7 +77,7 @@ impl std::fmt::Debug for LixFileHistoryProvider {
|
|
|
77
77
|
impl LixFileHistoryProvider {
|
|
78
78
|
fn new(
|
|
79
79
|
commit_graph: Arc<Mutex<Box<dyn CommitGraphReader>>>,
|
|
80
|
-
query_source:
|
|
80
|
+
query_source: SqlCommitStoreQuerySource,
|
|
81
81
|
blob_reader: Arc<dyn BlobDataReader>,
|
|
82
82
|
) -> Self {
|
|
83
83
|
Self {
|
|
@@ -150,7 +150,7 @@ impl TableProvider for LixFileHistoryProvider {
|
|
|
150
150
|
|
|
151
151
|
struct LixFileHistoryScanExec {
|
|
152
152
|
commit_graph: Arc<Mutex<Box<dyn CommitGraphReader>>>,
|
|
153
|
-
query_source:
|
|
153
|
+
query_source: SqlCommitStoreQuerySource,
|
|
154
154
|
blob_reader: Arc<dyn BlobDataReader>,
|
|
155
155
|
schema: SchemaRef,
|
|
156
156
|
needs_data: bool,
|
|
@@ -171,7 +171,7 @@ impl std::fmt::Debug for LixFileHistoryScanExec {
|
|
|
171
171
|
impl LixFileHistoryScanExec {
|
|
172
172
|
fn new(
|
|
173
173
|
commit_graph: Arc<Mutex<Box<dyn CommitGraphReader>>>,
|
|
174
|
-
query_source:
|
|
174
|
+
query_source: SqlCommitStoreQuerySource,
|
|
175
175
|
blob_reader: Arc<dyn BlobDataReader>,
|
|
176
176
|
schema: SchemaRef,
|
|
177
177
|
needs_data: bool,
|
|
@@ -312,7 +312,7 @@ struct FileHistoryEvent {
|
|
|
312
312
|
start_commit_id: String,
|
|
313
313
|
depth: u32,
|
|
314
314
|
priority: u8,
|
|
315
|
-
change:
|
|
315
|
+
change: MaterializedChange,
|
|
316
316
|
observed_commit_id: String,
|
|
317
317
|
commit_created_at: String,
|
|
318
318
|
}
|
|
@@ -326,7 +326,7 @@ struct FileHistoryOutputRow {
|
|
|
326
326
|
name: Option<String>,
|
|
327
327
|
hidden: Option<bool>,
|
|
328
328
|
data: Option<Vec<u8>>,
|
|
329
|
-
descriptor_change:
|
|
329
|
+
descriptor_change: MaterializedChange,
|
|
330
330
|
event: FileHistoryEvent,
|
|
331
331
|
}
|
|
332
332
|
|
|
@@ -353,7 +353,7 @@ struct BlobRefSnapshot {
|
|
|
353
353
|
|
|
354
354
|
async fn load_file_history_rows(
|
|
355
355
|
commit_graph: Arc<Mutex<Box<dyn CommitGraphReader>>>,
|
|
356
|
-
query_source:
|
|
356
|
+
query_source: SqlCommitStoreQuerySource,
|
|
357
357
|
blob_reader: &Arc<dyn BlobDataReader>,
|
|
358
358
|
route: &HistoryRoute,
|
|
359
359
|
needs_data: bool,
|
|
@@ -440,9 +440,10 @@ async fn load_file_history_rows(
|
|
|
440
440
|
});
|
|
441
441
|
}
|
|
442
442
|
output.retain(|row| {
|
|
443
|
+
let entity_id = entity_id_json_array(&row.entity_id).ok();
|
|
443
444
|
route.matches_surface_row(
|
|
444
445
|
FILE_DESCRIPTOR_SCHEMA_KEY,
|
|
445
|
-
&row.entity_id,
|
|
446
|
+
entity_id.as_deref().unwrap_or(&row.entity_id),
|
|
446
447
|
Some(&row.entity_id),
|
|
447
448
|
row.event.depth,
|
|
448
449
|
)
|
|
@@ -574,7 +575,7 @@ fn parse_file_history_descriptors(
|
|
|
574
575
|
.map(|entry| {
|
|
575
576
|
let Some(snapshot_content) = entry.change.snapshot_content.as_deref() else {
|
|
576
577
|
return Ok(FileHistoryDescriptorRecord {
|
|
577
|
-
id: entry.change.entity_id.
|
|
578
|
+
id: entry.change.entity_id.as_single_string_owned()?,
|
|
578
579
|
directory_id: None,
|
|
579
580
|
name: None,
|
|
580
581
|
hidden: None,
|
|
@@ -640,7 +641,7 @@ fn parse_file_history_blobs(
|
|
|
640
641
|
entry
|
|
641
642
|
.change
|
|
642
643
|
.entity_id
|
|
643
|
-
.
|
|
644
|
+
.as_single_string_owned()
|
|
644
645
|
.expect("canonical change entity identity should project")
|
|
645
646
|
}),
|
|
646
647
|
blob_hash: None,
|
|
@@ -806,15 +807,15 @@ fn file_history_column_array(
|
|
|
806
807
|
.map(|row| row.data.as_deref())
|
|
807
808
|
.collect::<Vec<_>>(),
|
|
808
809
|
)) as ArrayRef,
|
|
809
|
-
HISTORY_COL_ENTITY_ID =>
|
|
810
|
+
HISTORY_COL_ENTITY_ID => Arc::new(StringArray::from(
|
|
811
|
+
rows.iter()
|
|
812
|
+
.map(|row| entity_id_json_array(&row.entity_id).map(Some))
|
|
813
|
+
.collect::<std::result::Result<Vec<_>, _>>()?,
|
|
814
|
+
)) as ArrayRef,
|
|
810
815
|
HISTORY_COL_SCHEMA_KEY => {
|
|
811
816
|
string_array(rows.iter().map(|_| Some(FILE_DESCRIPTOR_SCHEMA_KEY)))
|
|
812
817
|
}
|
|
813
818
|
HISTORY_COL_FILE_ID => string_array(rows.iter().map(|row| Some(row.entity_id.as_str()))),
|
|
814
|
-
HISTORY_COL_SCHEMA_VERSION => string_array(
|
|
815
|
-
rows.iter()
|
|
816
|
-
.map(|row| Some(row.descriptor_change.schema_version.as_str())),
|
|
817
|
-
),
|
|
818
819
|
HISTORY_COL_CHANGE_ID => {
|
|
819
820
|
string_array(rows.iter().map(|row| Some(row.event.change.id.as_str())))
|
|
820
821
|
}
|
|
@@ -868,11 +869,10 @@ fn lix_file_history_schema() -> SchemaRef {
|
|
|
868
869
|
Field::new("name", DataType::Utf8, true),
|
|
869
870
|
Field::new("hidden", DataType::Boolean, true),
|
|
870
871
|
Field::new("data", DataType::Binary, true),
|
|
871
|
-
|
|
872
|
+
json_field(HISTORY_COL_ENTITY_ID, false),
|
|
872
873
|
Field::new(HISTORY_COL_SCHEMA_KEY, DataType::Utf8, false),
|
|
873
874
|
Field::new(HISTORY_COL_FILE_ID, DataType::Utf8, true),
|
|
874
875
|
json_field(HISTORY_COL_SNAPSHOT_CONTENT, true),
|
|
875
|
-
Field::new(HISTORY_COL_SCHEMA_VERSION, DataType::Utf8, false),
|
|
876
876
|
Field::new(HISTORY_COL_CHANGE_ID, DataType::Utf8, false),
|
|
877
877
|
json_field(HISTORY_COL_METADATA, true),
|
|
878
878
|
Field::new(HISTORY_COL_OBSERVED_COMMIT_ID, DataType::Utf8, false),
|
|
@@ -897,6 +897,14 @@ fn datafusion_error_to_lix_error(error: DataFusionError) -> LixError {
|
|
|
897
897
|
super::error::datafusion_error_to_lix_error(error)
|
|
898
898
|
}
|
|
899
899
|
|
|
900
|
+
fn entity_id_json_array(entity_id: &str) -> Result<String, LixError> {
|
|
901
|
+
serde_json::to_string(&[entity_id]).map_err(|error| {
|
|
902
|
+
LixError::unknown(format!(
|
|
903
|
+
"failed to encode history entity id as JSON: {error}"
|
|
904
|
+
))
|
|
905
|
+
})
|
|
906
|
+
}
|
|
907
|
+
|
|
900
908
|
fn lix_error_to_datafusion_error(error: LixError) -> DataFusionError {
|
|
901
909
|
super::error::lix_error_to_datafusion_error(error)
|
|
902
910
|
}
|