@livestore/wa-sqlite 1.0.3-dev.2 → 1.0.3-dev.4

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.
@@ -30,7 +30,7 @@ Module['ready'] = new Promise((resolve, reject) => {
30
30
  readyPromiseResolve = resolve;
31
31
  readyPromiseReject = reject;
32
32
  });
33
- ["_RegisterExtensionFunctions","_main","_malloc","_free","_sqlite3_aggregate_context","_sqlite3_auto_extension","_sqlite3_autovacuum_pages","_sqlite3_backup_finish","_sqlite3_backup_init","_sqlite3_backup_pagecount","_sqlite3_backup_remaining","_sqlite3_backup_step","_sqlite3_bind_blob","_sqlite3_bind_blob64","_sqlite3_bind_double","_sqlite3_bind_int","_sqlite3_bind_int64","_sqlite3_bind_null","_sqlite3_bind_parameter_count","_sqlite3_bind_parameter_index","_sqlite3_bind_parameter_name","_sqlite3_bind_pointer","_sqlite3_bind_text","_sqlite3_bind_text16","_sqlite3_bind_text64","_sqlite3_bind_value","_sqlite3_bind_zeroblob","_sqlite3_bind_zeroblob64","_sqlite3_blob_bytes","_sqlite3_blob_close","_sqlite3_blob_open","_sqlite3_blob_read","_sqlite3_blob_reopen","_sqlite3_blob_write","_sqlite3_busy_handler","_sqlite3_busy_timeout","_sqlite3_cancel_auto_extension","_sqlite3_changes","_sqlite3_changes64","_sqlite3_clear_bindings","_sqlite3_close","_sqlite3_close_v2","_sqlite3_collation_needed","_sqlite3_collation_needed16","_sqlite3_column_blob","_sqlite3_column_bytes","_sqlite3_column_bytes16","_sqlite3_column_count","_sqlite3_column_double","_sqlite3_column_int","_sqlite3_column_int64","_sqlite3_column_name","_sqlite3_column_name16","_sqlite3_column_text","_sqlite3_column_text16","_sqlite3_column_type","_sqlite3_column_value","_sqlite3_commit_hook","_sqlite3_compileoption_get","_sqlite3_compileoption_used","_sqlite3_complete","_sqlite3_complete16","_sqlite3_config","_sqlite3_context_db_handle","_sqlite3_create_collation","_sqlite3_create_collation16","_sqlite3_create_collation_v2","_sqlite3_create_filename","_sqlite3_create_function","_sqlite3_create_function16","_sqlite3_create_function_v2","_sqlite3_create_module","_sqlite3_create_module_v2","_sqlite3_create_window_function","_sqlite3_data_count","_sqlite3_database_file_object","_sqlite3_db_cacheflush","_sqlite3_db_config","_sqlite3_db_filename","_sqlite3_db_handle","_sqlite3_db_mutex","_sqlite3_db_name","_sqlite3_db_readonly","_sqlite3_db_release_memory","_sqlite3_db_status","_sqlite3_declare_vtab","_sqlite3_deserialize","_sqlite3_drop_modules","_sqlite3_errcode","_sqlite3_errmsg","_sqlite3_errmsg16","_sqlite3_error_offset","_sqlite3_errstr","_sqlite3_exec","_sqlite3_expanded_sql","_sqlite3_extended_errcode","_sqlite3_extended_result_codes","_sqlite3_file_control","_sqlite3_filename_database","_sqlite3_filename_journal","_sqlite3_filename_wal","_sqlite3_finalize","_sqlite3_free","_sqlite3_free_filename","_sqlite3_free_table","_sqlite3_get_autocommit","_sqlite3_get_auxdata","_sqlite3_get_clientdata","_sqlite3_get_table","_sqlite3_hard_heap_limit64","_sqlite3_initialize","_sqlite3_interrupt","_sqlite3_is_interrupted","_sqlite3_keyword_check","_sqlite3_keyword_count","_sqlite3_keyword_name","_sqlite3_last_insert_rowid","_sqlite3_libversion","_sqlite3_libversion_number","_sqlite3_limit","_sqlite3_log","_sqlite3_malloc","_sqlite3_malloc64","_sqlite3_memory_highwater","_sqlite3_memory_used","_sqlite3_mprintf","_sqlite3_msize","_sqlite3_next_stmt","_sqlite3_open","_sqlite3_open16","_sqlite3_open_v2","_sqlite3_os_end","_sqlite3_os_init","_sqlite3_overload_function","_sqlite3_prepare","_sqlite3_prepare16","_sqlite3_prepare16_v2","_sqlite3_prepare16_v3","_sqlite3_prepare_v2","_sqlite3_prepare_v3","_sqlite3_progress_handler","_sqlite3_randomness","_sqlite3_realloc","_sqlite3_realloc64","_sqlite3_release_memory","_sqlite3_reset","_sqlite3_reset_auto_extension","_sqlite3_result_blob","_sqlite3_result_blob64","_sqlite3_result_double","_sqlite3_result_error","_sqlite3_result_error16","_sqlite3_result_error_code","_sqlite3_result_error_nomem","_sqlite3_result_error_toobig","_sqlite3_result_int","_sqlite3_result_int64","_sqlite3_result_null","_sqlite3_result_pointer","_sqlite3_result_subtype","_sqlite3_result_text","_sqlite3_result_text16","_sqlite3_result_text16be","_sqlite3_result_text16le","_sqlite3_result_text64","_sqlite3_result_value","_sqlite3_result_zeroblob","_sqlite3_result_zeroblob64","_sqlite3_rollback_hook","_sqlite3_serialize","_sqlite3_set_authorizer","_sqlite3_set_auxdata","_sqlite3_set_clientdata","_sqlite3_set_last_insert_rowid","_sqlite3_shutdown","_sqlite3_sleep","_sqlite3_snprintf","_sqlite3_soft_heap_limit64","_sqlite3_sourceid","_sqlite3_sql","_sqlite3_status","_sqlite3_status64","_sqlite3_step","_sqlite3_stmt_busy","_sqlite3_stmt_explain","_sqlite3_stmt_isexplain","_sqlite3_stmt_readonly","_sqlite3_stmt_status","_sqlite3_str_append","_sqlite3_str_appendall","_sqlite3_str_appendchar","_sqlite3_str_appendf","_sqlite3_str_errcode","_sqlite3_str_finish","_sqlite3_str_length","_sqlite3_str_new","_sqlite3_str_reset","_sqlite3_str_value","_sqlite3_str_vappendf","_sqlite3_strglob","_sqlite3_stricmp","_sqlite3_strlike","_sqlite3_strnicmp","_sqlite3_system_errno","_sqlite3_table_column_metadata","_sqlite3_test_control","_sqlite3_threadsafe","_sqlite3_total_changes","_sqlite3_total_changes64","_sqlite3_trace_v2","_sqlite3_txn_state","_sqlite3_update_hook","_sqlite3session_create","_sqlite3session_attach","_sqlite3session_enable","_sqlite3session_changeset","_sqlite3session_delete","_sqlite3changeset_invert","_sqlite3changeset_apply","_sqlite3_uri_boolean","_sqlite3_uri_int64","_sqlite3_uri_key","_sqlite3_uri_parameter","_sqlite3_user_data","_sqlite3_value_blob","_sqlite3_value_bytes","_sqlite3_value_bytes16","_sqlite3_value_double","_sqlite3_value_dup","_sqlite3_value_encoding","_sqlite3_value_free","_sqlite3_value_frombind","_sqlite3_value_int","_sqlite3_value_int64","_sqlite3_value_nochange","_sqlite3_value_numeric_type","_sqlite3_value_pointer","_sqlite3_value_subtype","_sqlite3_value_text","_sqlite3_value_text16","_sqlite3_value_text16be","_sqlite3_value_text16le","_sqlite3_value_type","_sqlite3_version","_sqlite3_vfs_find","_sqlite3_vfs_register","_sqlite3_vfs_unregister","_sqlite3_vmprintf","_sqlite3_vsnprintf","_sqlite3_vtab_collation","_sqlite3_vtab_config","_sqlite3_vtab_distinct","_sqlite3_vtab_in","_sqlite3_vtab_in_first","_sqlite3_vtab_in_next","_sqlite3_vtab_nochange","_sqlite3_vtab_on_conflict","_sqlite3_vtab_rhs_value","_sqlite3_wal_autocheckpoint","_sqlite3_wal_checkpoint","_sqlite3_wal_checkpoint_v2","_sqlite3_wal_hook","_memory","_getSqliteFree","_libauthorizer_set_authorizer","_libfunction_create_function","_libhook_update_hook","_libprogress_progress_handler","_libvfs_vfs_register","___indirect_function_table","_fflush","onRuntimeInitialized"].forEach((prop) => {
33
+ ["_RegisterExtensionFunctions","_main","_malloc","_free","_sqlite3_aggregate_context","_sqlite3_auto_extension","_sqlite3_autovacuum_pages","_sqlite3_backup_finish","_sqlite3_backup_init","_sqlite3_backup_pagecount","_sqlite3_backup_remaining","_sqlite3_backup_step","_sqlite3_bind_blob","_sqlite3_bind_blob64","_sqlite3_bind_double","_sqlite3_bind_int","_sqlite3_bind_int64","_sqlite3_bind_null","_sqlite3_bind_parameter_count","_sqlite3_bind_parameter_index","_sqlite3_bind_parameter_name","_sqlite3_bind_pointer","_sqlite3_bind_text","_sqlite3_bind_text16","_sqlite3_bind_text64","_sqlite3_bind_value","_sqlite3_bind_zeroblob","_sqlite3_bind_zeroblob64","_sqlite3_blob_bytes","_sqlite3_blob_close","_sqlite3_blob_open","_sqlite3_blob_read","_sqlite3_blob_reopen","_sqlite3_blob_write","_sqlite3_busy_handler","_sqlite3_busy_timeout","_sqlite3_cancel_auto_extension","_sqlite3_changes","_sqlite3_changes64","_sqlite3_clear_bindings","_sqlite3_close","_sqlite3_close_v2","_sqlite3_collation_needed","_sqlite3_collation_needed16","_sqlite3_column_blob","_sqlite3_column_bytes","_sqlite3_column_bytes16","_sqlite3_column_count","_sqlite3_column_double","_sqlite3_column_int","_sqlite3_column_int64","_sqlite3_column_name","_sqlite3_column_name16","_sqlite3_column_text","_sqlite3_column_text16","_sqlite3_column_type","_sqlite3_column_value","_sqlite3_commit_hook","_sqlite3_compileoption_get","_sqlite3_compileoption_used","_sqlite3_complete","_sqlite3_complete16","_sqlite3_config","_sqlite3_context_db_handle","_sqlite3_create_collation","_sqlite3_create_collation16","_sqlite3_create_collation_v2","_sqlite3_create_filename","_sqlite3_create_function","_sqlite3_create_function16","_sqlite3_create_function_v2","_sqlite3_create_module","_sqlite3_create_module_v2","_sqlite3_create_window_function","_sqlite3_data_count","_sqlite3_database_file_object","_sqlite3_db_cacheflush","_sqlite3_db_config","_sqlite3_db_filename","_sqlite3_db_handle","_sqlite3_db_mutex","_sqlite3_db_name","_sqlite3_db_readonly","_sqlite3_db_release_memory","_sqlite3_db_status","_sqlite3_declare_vtab","_sqlite3_deserialize","_sqlite3_drop_modules","_sqlite3_errcode","_sqlite3_errmsg","_sqlite3_errmsg16","_sqlite3_error_offset","_sqlite3_errstr","_sqlite3_exec","_sqlite3_expanded_sql","_sqlite3_extended_errcode","_sqlite3_extended_result_codes","_sqlite3_file_control","_sqlite3_filename_database","_sqlite3_filename_journal","_sqlite3_filename_wal","_sqlite3_finalize","_sqlite3_free","_sqlite3_free_filename","_sqlite3_free_table","_sqlite3_get_autocommit","_sqlite3_get_auxdata","_sqlite3_get_clientdata","_sqlite3_get_table","_sqlite3_hard_heap_limit64","_sqlite3_initialize","_sqlite3_interrupt","_sqlite3_is_interrupted","_sqlite3_keyword_check","_sqlite3_keyword_count","_sqlite3_keyword_name","_sqlite3_last_insert_rowid","_sqlite3_libversion","_sqlite3_libversion_number","_sqlite3_limit","_sqlite3_log","_sqlite3_malloc","_sqlite3_malloc64","_sqlite3_memory_highwater","_sqlite3_memory_used","_sqlite3_mprintf","_sqlite3_msize","_sqlite3_next_stmt","_sqlite3_open","_sqlite3_open16","_sqlite3_open_v2","_sqlite3_os_end","_sqlite3_os_init","_sqlite3_overload_function","_sqlite3_prepare","_sqlite3_prepare16","_sqlite3_prepare16_v2","_sqlite3_prepare16_v3","_sqlite3_prepare_v2","_sqlite3_prepare_v3","_sqlite3_progress_handler","_sqlite3_randomness","_sqlite3_realloc","_sqlite3_realloc64","_sqlite3_release_memory","_sqlite3_reset","_sqlite3_reset_auto_extension","_sqlite3_result_blob","_sqlite3_result_blob64","_sqlite3_result_double","_sqlite3_result_error","_sqlite3_result_error16","_sqlite3_result_error_code","_sqlite3_result_error_nomem","_sqlite3_result_error_toobig","_sqlite3_result_int","_sqlite3_result_int64","_sqlite3_result_null","_sqlite3_result_pointer","_sqlite3_result_subtype","_sqlite3_result_text","_sqlite3_result_text16","_sqlite3_result_text16be","_sqlite3_result_text16le","_sqlite3_result_text64","_sqlite3_result_value","_sqlite3_result_zeroblob","_sqlite3_result_zeroblob64","_sqlite3_rollback_hook","_sqlite3_serialize","_sqlite3_set_authorizer","_sqlite3_set_auxdata","_sqlite3_set_clientdata","_sqlite3_set_last_insert_rowid","_sqlite3_shutdown","_sqlite3_sleep","_sqlite3_snprintf","_sqlite3_soft_heap_limit64","_sqlite3_sourceid","_sqlite3_sql","_sqlite3_status","_sqlite3_status64","_sqlite3_step","_sqlite3_stmt_busy","_sqlite3_stmt_explain","_sqlite3_stmt_isexplain","_sqlite3_stmt_readonly","_sqlite3_stmt_status","_sqlite3_str_append","_sqlite3_str_appendall","_sqlite3_str_appendchar","_sqlite3_str_appendf","_sqlite3_str_errcode","_sqlite3_str_finish","_sqlite3_str_length","_sqlite3_str_new","_sqlite3_str_reset","_sqlite3_str_value","_sqlite3_str_vappendf","_sqlite3_strglob","_sqlite3_stricmp","_sqlite3_strlike","_sqlite3_strnicmp","_sqlite3_system_errno","_sqlite3_table_column_metadata","_sqlite3_test_control","_sqlite3_threadsafe","_sqlite3_total_changes","_sqlite3_total_changes64","_sqlite3_trace_v2","_sqlite3_txn_state","_sqlite3_update_hook","_sqlite3changeset_start","_sqlite3changeset_finalize","_sqlite3session_create","_sqlite3session_attach","_sqlite3session_enable","_sqlite3session_changeset","_sqlite3session_delete","_sqlite3changeset_invert","_sqlite3changeset_apply","_sqlite3_uri_boolean","_sqlite3_uri_int64","_sqlite3_uri_key","_sqlite3_uri_parameter","_sqlite3_user_data","_sqlite3_value_blob","_sqlite3_value_bytes","_sqlite3_value_bytes16","_sqlite3_value_double","_sqlite3_value_dup","_sqlite3_value_encoding","_sqlite3_value_free","_sqlite3_value_frombind","_sqlite3_value_int","_sqlite3_value_int64","_sqlite3_value_nochange","_sqlite3_value_numeric_type","_sqlite3_value_pointer","_sqlite3_value_subtype","_sqlite3_value_text","_sqlite3_value_text16","_sqlite3_value_text16be","_sqlite3_value_text16le","_sqlite3_value_type","_sqlite3_version","_sqlite3_vfs_find","_sqlite3_vfs_register","_sqlite3_vfs_unregister","_sqlite3_vmprintf","_sqlite3_vsnprintf","_sqlite3_vtab_collation","_sqlite3_vtab_config","_sqlite3_vtab_distinct","_sqlite3_vtab_in","_sqlite3_vtab_in_first","_sqlite3_vtab_in_next","_sqlite3_vtab_nochange","_sqlite3_vtab_on_conflict","_sqlite3_vtab_rhs_value","_sqlite3_wal_autocheckpoint","_sqlite3_wal_checkpoint","_sqlite3_wal_checkpoint_v2","_sqlite3_wal_hook","_memory","_getSqliteFree","_libauthorizer_set_authorizer","_libfunction_create_function","_libhook_update_hook","_libprogress_progress_handler","_libvfs_vfs_register","___indirect_function_table","_fflush","onRuntimeInitialized"].forEach((prop) => {
34
34
  if (!Object.getOwnPropertyDescriptor(Module['ready'], prop)) {
35
35
  Object.defineProperty(Module['ready'], prop, {
36
36
  get: () => abort('You are getting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'),
@@ -5592,6 +5592,8 @@ var _sqlite3session_delete = Module['_sqlite3session_delete'] = createExportWrap
5592
5592
  var _sqlite3session_attach = Module['_sqlite3session_attach'] = createExportWrapper('sqlite3session_attach');
5593
5593
  var _sqlite3session_changeset = Module['_sqlite3session_changeset'] = createExportWrapper('sqlite3session_changeset');
5594
5594
  var _sqlite3session_enable = Module['_sqlite3session_enable'] = createExportWrapper('sqlite3session_enable');
5595
+ var _sqlite3changeset_start = Module['_sqlite3changeset_start'] = createExportWrapper('sqlite3changeset_start');
5596
+ var _sqlite3changeset_finalize = Module['_sqlite3changeset_finalize'] = createExportWrapper('sqlite3changeset_finalize');
5595
5597
  var _sqlite3changeset_invert = Module['_sqlite3changeset_invert'] = createExportWrapper('sqlite3changeset_invert');
5596
5598
  var _sqlite3changeset_apply = Module['_sqlite3changeset_apply'] = createExportWrapper('sqlite3changeset_apply');
5597
5599
  var _sqlite3_sourceid = Module['_sqlite3_sourceid'] = createExportWrapper('sqlite3_sourceid');
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/wa-sqlite",
3
- "version": "1.0.3-dev.2",
3
+ "version": "1.0.3-dev.4",
4
4
  "type": "module",
5
5
  "main": "src/sqlite-api.js",
6
6
  "types": "src/types/index.d.ts",
package/src/sqlite-api.js CHANGED
@@ -343,8 +343,11 @@ export function Factory(Module) {
343
343
  verifyStatement(stmt);
344
344
  const nBytes = sqlite3.column_bytes(stmt, iCol);
345
345
  const address = f(stmt, iCol);
346
+ if (address === 0) {
347
+ return null; // Handle NULL BLOBs
348
+ }
346
349
  const result = Module.HEAPU8.subarray(address, address + nBytes);
347
- return result;
350
+ return new Uint8Array(result); // Ensure a copy is returned
348
351
  };
349
352
  })();
350
353
 
@@ -938,8 +941,13 @@ export function Factory(Module) {
938
941
  // Get the pointer to the changeset
939
942
  const changesetPtr = Module.getValue(changesetPtrPtr, 'i32');
940
943
 
944
+ // Ensure the pointer is valid before accessing memory
945
+ if (changesetPtr === 0) {
946
+ throw new SQLiteError('Failed to retrieve changeset pointer', SQLite.SQLITE_ERROR);
947
+ }
948
+
941
949
  // Copy the changeset data
942
- const changeset = new Uint8Array(Module.HEAPU8.buffer, changesetPtr, size);
950
+ const changeset = new Uint8Array(Module.HEAPU8.subarray(changesetPtr, changesetPtr + size));
943
951
 
944
952
  // Free the allocated changeset memory
945
953
  Module._sqlite3_free(changesetPtr);
@@ -948,7 +956,7 @@ export function Factory(Module) {
948
956
  return {
949
957
  result: result,
950
958
  size: size,
951
- changeset: new Uint8Array(changeset)
959
+ changeset: changeset
952
960
  };
953
961
  }
954
962
  return check(fname, result);
@@ -972,35 +980,77 @@ export function Factory(Module) {
972
980
  };
973
981
  })();
974
982
 
983
+ sqlite3.changeset_start = (function() {
984
+ const fname = 'sqlite3changeset_start';
985
+ const f = Module.cwrap(fname, ...decl('nnn:n'));
986
+ return function(changesetData) {
987
+ // Allocate memory for the input changeset data
988
+ const inPtr = Module._sqlite3_malloc(changesetData.length);
989
+ Module.HEAPU8.subarray(inPtr).set(changesetData);
990
+
991
+ // Allocate memory for the changeset iterator pointer
992
+ const ppIter = Module._malloc(4);
993
+
994
+ try {
995
+ // Call the wrapped C function
996
+ const result = f(ppIter, changesetData.length, inPtr);
997
+
998
+ if (result !== SQLite.SQLITE_OK) {
999
+ check(fname, result); // Handle errors appropriately
1000
+ }
1001
+
1002
+ // Retrieve the changeset iterator handle
1003
+ const pIter = Module.getValue(ppIter, 'i32');
1004
+
1005
+ return pIter;
1006
+ } finally {
1007
+ // Free allocated memory
1008
+ Module._sqlite3_free(inPtr);
1009
+ Module._free(ppIter);
1010
+ }
1011
+ };
1012
+ })();
1013
+
1014
+ sqlite3.changeset_finalize = (function() {
1015
+ const fname = 'sqlite3changeset_finalize';
1016
+ const f = Module.cwrap(fname, ...decl('n:n'));
1017
+ return function(pIter) {
1018
+ const result = f(pIter);
1019
+ return result;
1020
+ };
1021
+ })();
1022
+
975
1023
  sqlite3.changeset_invert = (function() {
976
1024
  const fname = 'sqlite3changeset_invert';
977
1025
  const f = Module.cwrap(fname, ...decl('nn:nn'));
978
1026
  return function(changesetData) {
979
-
1027
+ // Allocate memory for the input changeset data
980
1028
  const inPtr = Module._sqlite3_malloc(changesetData.length);
981
1029
  Module.HEAPU8.subarray(inPtr).set(changesetData);
982
1030
 
1031
+ // Allocate memory for the output changeset length and pointer
983
1032
  const outLengthPtr = Module._malloc(4);
984
1033
  const outPtrPtr = Module._malloc(4);
985
- console.log('changesetData.length', changesetData.length)
1034
+
1035
+ // Call the wrapped C function
986
1036
  const result = f(changesetData.length, inPtr, outLengthPtr, outPtrPtr);
987
1037
 
988
1038
  if (result !== SQLite.SQLITE_OK) {
989
- check(fname, result);
1039
+ check(fname, result); // Handle errors appropriately
990
1040
  }
991
1041
 
992
- // Get the size of the changeset
1042
+ // Retrieve the size and pointer of the inverted changeset
993
1043
  const outLength = Module.getValue(outLengthPtr, 'i32');
994
- // Get the pointer to the changeset
995
1044
  const changesetOutPtr = Module.getValue(outPtrPtr, 'i32');
996
-
997
- // Copy the changeset data
1045
+
1046
+ // Copy the inverted changeset data
998
1047
  const changesetOut = new Uint8Array(Module.HEAPU8.buffer, changesetOutPtr, outLength);
999
1048
 
1049
+ // Free allocated memory
1000
1050
  Module._sqlite3_free(inPtr);
1001
1051
  Module._sqlite3_free(outLengthPtr);
1002
1052
  Module._sqlite3_free(outPtrPtr);
1003
-
1053
+
1004
1054
  return changesetOut;
1005
1055
  };
1006
1056
  })();
@@ -969,6 +969,22 @@ interface SQLiteAPI {
969
969
  */
970
970
  session_delete(pSession: number): void;
971
971
 
972
+ /**
973
+ * Start a changeset.
974
+ *
975
+ * @param changeset changeset blob to import from
976
+ * @returns changeset iterator pointer
977
+ */
978
+ changeset_start(changesetBlob: Uint8Array): number;
979
+
980
+ /**
981
+ * Finalize a changeset iterator.
982
+ *
983
+ * @param pIter changeset iterator pointer
984
+ * @returns `SQLITE_OK` (throws exception on error)
985
+ */
986
+ changeset_finalize(pIter: number): number;
987
+
972
988
  /**
973
989
  * Invert a changeset.
974
990
  *