diff --git a/src-embed/src/schema.rs b/src-embed/src/schema.rs index 280050695..5b79197e5 100644 --- a/src-embed/src/schema.rs +++ b/src-embed/src/schema.rs @@ -1,7 +1,7 @@ use concat_string::concat_string; use serde::Serialize; use serde_wasm_bindgen::to_value; -use surrealdb::sql::{parse, statements::DefineStatement, Index, Permissions, Statement, Strand}; +use surrealdb::sql::{parse, statements::DefineStatement, Index, Permissions, Statement, Strand, thing}; use wasm_bindgen::prelude::*; fn to_response(value: &T, name: &str) -> Result { @@ -349,3 +349,8 @@ pub fn validate_live_query(query: &str) -> Option { } } } + +#[wasm_bindgen] +pub fn validate_thing(value: &str) -> bool { + thing(&value).is_ok() +} \ No newline at end of file diff --git a/src/components/DataTable/datatypes.tsx b/src/components/DataTable/datatypes.tsx index 1bc0025f8..648e794af 100644 --- a/src/components/DataTable/datatypes.tsx +++ b/src/components/DataTable/datatypes.tsx @@ -6,8 +6,8 @@ import { OpenFn } from "~/types"; import { TRUNCATE_STYLE } from "~/util/helpers"; import { Icon } from "../Icon"; import { RecordLink } from "../RecordLink"; +import { validate_thing } from "~/generated/surrealist-embed"; -const THING_REGEX = /^(\w+|[`⟨][^`⟩]+[`⟩]):(\w+|[`⟨][^`⟩]+[`⟩])$/; const DATETIME_REGEX = /^\d{4}-\d\d-\d\dt\d\d:\d\d:\d\d(\.\d+)?(([+-]\d\d:\d\d)|z)?$/i; export interface DataCellType { @@ -126,7 +126,7 @@ const DataCellTypes = [ component: NullishCell, }, { - match: (value: any) => typeof value == "string" && THING_REGEX.test(value), + match: (value: any) => typeof value == "string" && validate_thing(value), component: ThingCell, }, { diff --git a/src/generated/surrealist-embed.d.ts b/src/generated/surrealist-embed.d.ts index b87d7a7f3..75d485c1f 100644 --- a/src/generated/surrealist-embed.d.ts +++ b/src/generated/surrealist-embed.d.ts @@ -20,6 +20,9 @@ export function query_version(): Promise; */ export function execute_remote_query(query: string, params: string): Promise; /** +*/ +export function initialize_embed(): void; +/** * @param {any} details * @param {string} query * @param {string} params @@ -77,8 +80,10 @@ export function validate_where_clause(clause: string): boolean; */ export function validate_live_query(query: string): string | undefined; /** +* @param {string} value +* @returns {boolean} */ -export function initialize_embed(): void; +export function validate_thing(value: string): boolean; export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; @@ -88,6 +93,7 @@ export interface InitOutput { readonly close_connection: () => number; readonly query_version: () => number; readonly execute_remote_query: (a: number, b: number, c: number, d: number) => number; + readonly initialize_embed: () => void; readonly execute_local_query: (a: number, b: number, c: number, d: number, e: number) => number; readonly extract_scope_definition: (a: number, b: number, c: number) => void; readonly extract_table_definition: (a: number, b: number, c: number) => void; @@ -99,19 +105,19 @@ export interface InitOutput { readonly validate_query: (a: number, b: number, c: number) => void; readonly validate_where_clause: (a: number, b: number) => number; readonly validate_live_query: (a: number, b: number, c: number) => void; - readonly initialize_embed: () => void; + readonly validate_thing: (a: number, b: number) => number; readonly ring_core_0_17_5_bn_mul_mont: (a: number, b: number, c: number, d: number, e: number, f: number) => void; readonly __wbindgen_malloc: (a: number, b: number) => number; readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; readonly __wbindgen_export_2: WebAssembly.Table; - readonly wasm_bindgen__convert__closures__invoke1_mut__h71dccea636298a34: (a: number, b: number, c: number) => void; - readonly wasm_bindgen__convert__closures__invoke1_mut__ha14eccfabdcf55cc: (a: number, b: number, c: number) => void; - readonly _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h3c0bb2d98c1bdc61: (a: number, b: number) => void; - readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h362688a5e9153ef2: (a: number, b: number, c: number) => void; + readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h5018271a13d74dd4: (a: number, b: number, c: number) => void; + readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hd1581cd8a6cae8b0: (a: number, b: number, c: number) => void; + readonly _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha89374e8247c74d8: (a: number, b: number) => void; + readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he8512b5dc5406f70: (a: number, b: number, c: number) => void; readonly __wbindgen_add_to_stack_pointer: (a: number) => number; readonly __wbindgen_free: (a: number, b: number, c: number) => void; readonly __wbindgen_exn_store: (a: number) => void; - readonly wasm_bindgen__convert__closures__invoke2_mut__h522e75888bc4761a: (a: number, b: number, c: number, d: number) => void; + readonly wasm_bindgen__convert__closures__invoke2_mut__haf794559bddae9e5: (a: number, b: number, c: number, d: number) => void; } export type SyncInitInput = BufferSource | WebAssembly.Module; diff --git a/src/generated/surrealist-embed.js b/src/generated/surrealist-embed.js index dc9b1d440..a1c99e2cd 100644 --- a/src/generated/surrealist-embed.js +++ b/src/generated/surrealist-embed.js @@ -1,25 +1,5 @@ let wasm; -const heap = new Array(128).fill(undefined); - -heap.push(undefined, null, true, false); - -function getObject(idx) { return heap[idx]; } - -let heap_next = heap.length; - -function dropObject(idx) { - if (idx < 132) return; - heap[idx] = heap_next; - heap_next = idx; -} - -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} - const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; @@ -38,6 +18,12 @@ function getStringFromWasm0(ptr, len) { return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); } +const heap = new Array(128).fill(undefined); + +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + function addHeapObject(obj) { if (heap_next === heap.length) heap.push(heap.length + 1); const idx = heap_next; @@ -47,6 +33,20 @@ function addHeapObject(obj) { return idx; } +function getObject(idx) { return heap[idx]; } + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + let WASM_VECTOR_LEN = 0; const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); @@ -214,19 +214,19 @@ function makeMutClosure(arg0, arg1, dtor, f) { return real; } function __wbg_adapter_40(arg0, arg1, arg2) { - wasm.wasm_bindgen__convert__closures__invoke1_mut__h71dccea636298a34(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h5018271a13d74dd4(arg0, arg1, addHeapObject(arg2)); } function __wbg_adapter_43(arg0, arg1, arg2) { - wasm.wasm_bindgen__convert__closures__invoke1_mut__ha14eccfabdcf55cc(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hd1581cd8a6cae8b0(arg0, arg1, addHeapObject(arg2)); } function __wbg_adapter_46(arg0, arg1) { - wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h3c0bb2d98c1bdc61(arg0, arg1); + wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha89374e8247c74d8(arg0, arg1); } function __wbg_adapter_49(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h362688a5e9153ef2(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he8512b5dc5406f70(arg0, arg1, addHeapObject(arg2)); } /** @@ -268,6 +268,12 @@ export function execute_remote_query(query, params) { return takeObject(ret); } +/** +*/ +export function initialize_embed() { + wasm.initialize_embed(); +} + /** * @param {any} details * @param {string} query @@ -495,9 +501,14 @@ export function validate_live_query(query) { } /** +* @param {string} value +* @returns {boolean} */ -export function initialize_embed() { - wasm.initialize_embed(); +export function validate_thing(value) { + const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.validate_thing(ptr0, len0); + return ret !== 0; } function handleError(f, args) { @@ -512,8 +523,8 @@ function getArrayU8FromWasm0(ptr, len) { ptr = ptr >>> 0; return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); } -function __wbg_adapter_180(arg0, arg1, arg2, arg3) { - wasm.wasm_bindgen__convert__closures__invoke2_mut__h522e75888bc4761a(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); +function __wbg_adapter_181(arg0, arg1, arg2, arg3) { + wasm.wasm_bindgen__convert__closures__invoke2_mut__haf794559bddae9e5(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); } async function __wbg_load(module, imports) { @@ -550,16 +561,16 @@ async function __wbg_load(module, imports) { function __wbg_get_imports() { const imports = {}; imports.wbg = {}; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; imports.wbg.__wbg_log_f1113a64955b3af4 = function(arg0, arg1) { console.log(getStringFromWasm0(arg0, arg1)); }; imports.wbg.__wbindgen_object_drop_ref = function(arg0) { takeObject(arg0); }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; imports.wbg.__wbindgen_is_object = function(arg0) { const val = getObject(arg0); const ret = typeof(val) === 'object' && val !== null; @@ -620,21 +631,6 @@ function __wbg_get_imports() { const ret = typeof(getObject(arg0)) === 'string'; return ret; }; - imports.wbg.__wbg_wasClean_74cf0c4d617e8bf5 = function(arg0) { - const ret = getObject(arg0).wasClean; - return ret; - }; - imports.wbg.__wbg_code_858da7147ef5fb52 = function(arg0) { - const ret = getObject(arg0).code; - return ret; - }; - imports.wbg.__wbg_reason_cab9df8d5ef57aa2 = function(arg0, arg1) { - const ret = getObject(arg1).reason; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; imports.wbg.__wbg_data_ab99ae4a2e1e8bc9 = function(arg0) { const ret = getObject(arg0).data; return addHeapObject(ret); @@ -657,6 +653,21 @@ function __wbg_get_imports() { const ret = getObject(arg0).code; return ret; }; + imports.wbg.__wbg_wasClean_74cf0c4d617e8bf5 = function(arg0) { + const ret = getObject(arg0).wasClean; + return ret; + }; + imports.wbg.__wbg_code_858da7147ef5fb52 = function(arg0) { + const ret = getObject(arg0).code; + return ret; + }; + imports.wbg.__wbg_reason_cab9df8d5ef57aa2 = function(arg0, arg1) { + const ret = getObject(arg1).reason; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; imports.wbg.__wbg_url_dd40dfd6f3dbe3f9 = function(arg0, arg1) { const ret = getObject(arg1).url; const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); @@ -700,10 +711,6 @@ function __wbg_get_imports() { imports.wbg.__wbg_send_1a008ea2eb3a1951 = function() { return handleError(function (arg0, arg1, arg2) { getObject(arg0).send(getArrayU8FromWasm0(arg1, arg2)); }, arguments) }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); - }; imports.wbg.__wbg_performance_1430613edb72ce03 = function(arg0) { const ret = getObject(arg0).performance; return addHeapObject(ret); @@ -716,6 +723,10 @@ function __wbg_get_imports() { const ret = getObject(arg0).setTimeout(getObject(arg1), arg2); return ret; }, arguments) }; + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; imports.wbg.__wbg_crypto_c48a774b022d20ac = function(arg0) { const ret = getObject(arg0).crypto; return addHeapObject(ret); @@ -896,7 +907,7 @@ function __wbg_get_imports() { const a = state0.a; state0.a = 0; try { - return __wbg_adapter_180(a, state0.b, arg0, arg1); + return __wbg_adapter_181(a, state0.b, arg0, arg1); } finally { state0.a = a; } @@ -966,20 +977,20 @@ function __wbg_get_imports() { const ret = wasm.memory; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper11804 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 444, __wbg_adapter_40); + imports.wbg.__wbindgen_closure_wrapper14944 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 785, __wbg_adapter_40); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper25586 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 2400, __wbg_adapter_43); + imports.wbg.__wbindgen_closure_wrapper25987 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 2498, __wbg_adapter_43); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper25993 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 2449, __wbg_adapter_46); + imports.wbg.__wbindgen_closure_wrapper26303 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 2527, __wbg_adapter_46); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper26040 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 2471, __wbg_adapter_49); + imports.wbg.__wbindgen_closure_wrapper26393 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 2551, __wbg_adapter_49); return addHeapObject(ret); }; diff --git a/src/generated/surrealist-embed_bg.wasm b/src/generated/surrealist-embed_bg.wasm index 76c40afd5..80bdee217 100644 Binary files a/src/generated/surrealist-embed_bg.wasm and b/src/generated/surrealist-embed_bg.wasm differ diff --git a/src/generated/surrealist-embed_bg.wasm.d.ts b/src/generated/surrealist-embed_bg.wasm.d.ts index ca0ab0f25..e5f83a9dd 100644 --- a/src/generated/surrealist-embed_bg.wasm.d.ts +++ b/src/generated/surrealist-embed_bg.wasm.d.ts @@ -5,6 +5,7 @@ export function open_connection(a: number): number; export function close_connection(): number; export function query_version(): number; export function execute_remote_query(a: number, b: number, c: number, d: number): number; +export function initialize_embed(): void; export function execute_local_query(a: number, b: number, c: number, d: number, e: number): number; export function extract_scope_definition(a: number, b: number, c: number): void; export function extract_table_definition(a: number, b: number, c: number): void; @@ -16,16 +17,16 @@ export function extract_user_definition(a: number, b: number, c: number): void; export function validate_query(a: number, b: number, c: number): void; export function validate_where_clause(a: number, b: number): number; export function validate_live_query(a: number, b: number, c: number): void; -export function initialize_embed(): void; +export function validate_thing(a: number, b: number): number; export function ring_core_0_17_5_bn_mul_mont(a: number, b: number, c: number, d: number, e: number, f: number): void; export function __wbindgen_malloc(a: number, b: number): number; export function __wbindgen_realloc(a: number, b: number, c: number, d: number): number; export const __wbindgen_export_2: WebAssembly.Table; -export function wasm_bindgen__convert__closures__invoke1_mut__h71dccea636298a34(a: number, b: number, c: number): void; -export function wasm_bindgen__convert__closures__invoke1_mut__ha14eccfabdcf55cc(a: number, b: number, c: number): void; -export function _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h3c0bb2d98c1bdc61(a: number, b: number): void; -export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h362688a5e9153ef2(a: number, b: number, c: number): void; +export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h5018271a13d74dd4(a: number, b: number, c: number): void; +export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hd1581cd8a6cae8b0(a: number, b: number, c: number): void; +export function _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha89374e8247c74d8(a: number, b: number): void; +export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he8512b5dc5406f70(a: number, b: number, c: number): void; export function __wbindgen_add_to_stack_pointer(a: number): number; export function __wbindgen_free(a: number, b: number, c: number): void; export function __wbindgen_exn_store(a: number): void; -export function wasm_bindgen__convert__closures__invoke2_mut__h522e75888bc4761a(a: number, b: number, c: number, d: number): void; +export function wasm_bindgen__convert__closures__invoke2_mut__haf794559bddae9e5(a: number, b: number, c: number, d: number): void;