@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.
- package/dist/fts5/wa-sqlite.mjs +1 -1
- package/dist/fts5/wa-sqlite.node.mjs +3 -1
- package/dist/fts5/wa-sqlite.node.wasm +0 -0
- package/dist/fts5/wa-sqlite.wasm +0 -0
- package/dist/wa-sqlite.mjs +1 -1
- package/dist/wa-sqlite.node.mjs +3 -1
- package/dist/wa-sqlite.node.wasm +0 -0
- package/dist/wa-sqlite.wasm +0 -0
- package/package.json +1 -1
- package/src/sqlite-api.js +61 -11
- package/src/types/index.d.ts +16 -0
package/dist/wa-sqlite.node.mjs
CHANGED
|
@@ -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');
|
package/dist/wa-sqlite.node.wasm
CHANGED
|
Binary file
|
package/dist/wa-sqlite.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED
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.
|
|
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:
|
|
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
|
-
|
|
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
|
-
//
|
|
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
|
})();
|
package/src/types/index.d.ts
CHANGED
|
@@ -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
|
*
|