From 39e6466ea2c5f0658728968c9364013481e2a867 Mon Sep 17 00:00:00 2001 From: freestrings Date: Mon, 4 Mar 2019 23:07:09 +0900 Subject: [PATCH] =?UTF-8?q?JsonPath=20evaluator=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EA=B8=B0=EB=B3=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/0.bootstrap.js | 34 +++++++---- docs/1.bootstrap.js | 15 ----- ....wasm => 71d16e2ce98524a4b795.module.wasm} | Bin 285893 -> 286046 bytes docs/bootstrap.js | 48 ++++++++-------- docs/data/example.json | 37 ++++++++++++ docs/index.html | 42 ++++++++++++-- wasm/Cargo.toml | 2 +- wasm/build.sh | 5 +- wasm/www/data/example.json | 37 ++++++++++++ wasm/www/index.html | 42 ++++++++++++-- wasm/www/index.js | 54 ++++++++++++++---- 11 files changed, 240 insertions(+), 76 deletions(-) delete mode 100644 docs/1.bootstrap.js rename docs/{688f272634d1f6200fbb.module.wasm => 71d16e2ce98524a4b795.module.wasm} (82%) create mode 100644 docs/data/example.json create mode 100644 wasm/www/data/example.json diff --git a/docs/0.bootstrap.js b/docs/0.bootstrap.js index ec6a2be..1287d89 100644 --- a/docs/0.bootstrap.js +++ b/docs/0.bootstrap.js @@ -1,25 +1,37 @@ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{ -/***/ "./node_modules/rs-jsonpath/wasm.js": -/*!******************************************!*\ - !*** ./node_modules/rs-jsonpath/wasm.js ***! - \******************************************/ -/*! exports provided: compile, reader, read, __wbindgen_object_clone_ref, __wbindgen_object_drop_ref, __wbindgen_string_new, __wbindgen_is_string, __wbindgen_string_get, __wbindgen_cb_forget, __wbindgen_json_parse, __wbindgen_json_serialize, __wbindgen_closure_wrapper56, __wbindgen_closure_wrapper58, __wbindgen_throw */ +/***/ "../pkg/jsonpath_wasm.js": +/*!*******************************!*\ + !*** ../pkg/jsonpath_wasm.js ***! + \*******************************/ +/*! exports provided: compile, reader, read, __wbindgen_object_clone_ref, __wbindgen_object_drop_ref, __wbindgen_string_new, __wbindgen_is_string, __wbindgen_string_get, __wbindgen_cb_forget, __wbindgen_json_parse, __wbindgen_json_serialize, __wbindgen_closure_wrapper61, __wbindgen_closure_wrapper63, __wbindgen_throw */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compile\", function() { return compile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reader\", function() { return reader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"read\", function() { return read; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_object_clone_ref\", function() { return __wbindgen_object_clone_ref; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_object_drop_ref\", function() { return __wbindgen_object_drop_ref; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_string_new\", function() { return __wbindgen_string_new; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_is_string\", function() { return __wbindgen_is_string; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_string_get\", function() { return __wbindgen_string_get; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_cb_forget\", function() { return __wbindgen_cb_forget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_json_parse\", function() { return __wbindgen_json_parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_json_serialize\", function() { return __wbindgen_json_serialize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_closure_wrapper56\", function() { return __wbindgen_closure_wrapper56; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_closure_wrapper58\", function() { return __wbindgen_closure_wrapper58; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_throw\", function() { return __wbindgen_throw; });\n/* harmony import */ var _wasm_bg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wasm_bg */ \"./node_modules/rs-jsonpath/wasm_bg.wasm\");\n/* tslint:disable */\n\n\nlet cachedTextEncoder = new TextEncoder('utf-8');\n\nlet cachegetUint8Memory = null;\nfunction getUint8Memory() {\n if (cachegetUint8Memory === null || cachegetUint8Memory.buffer !== _wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"memory\"].buffer) {\n cachegetUint8Memory = new Uint8Array(_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"memory\"].buffer);\n }\n return cachegetUint8Memory;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passStringToWasm(arg) {\n\n const buf = cachedTextEncoder.encode(arg);\n const ptr = _wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbindgen_malloc\"](buf.length);\n getUint8Memory().set(buf, ptr);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n}\n\nconst heap = new Array(32);\n\nheap.fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n/**\n* @param {string} arg0\n* @returns {any}\n*/\nfunction compile(arg0) {\n const ptr0 = passStringToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n try {\n return takeObject(_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"compile\"](ptr0, len0));\n\n } finally {\n _wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbindgen_free\"](ptr0, len0 * 1);\n\n }\n\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n/**\n* @param {any} arg0\n* @returns {any}\n*/\nfunction reader(arg0) {\n return takeObject(_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"reader\"](addHeapObject(arg0)));\n}\n\n/**\n* @param {any} arg0\n* @param {string} arg1\n* @returns {any}\n*/\nfunction read(arg0, arg1) {\n const ptr1 = passStringToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n try {\n return takeObject(_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"read\"](addHeapObject(arg0), ptr1, len1));\n\n } finally {\n _wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbindgen_free\"](ptr1, len1 * 1);\n\n }\n\n}\n\nfunction __wbindgen_object_clone_ref(idx) {\n return addHeapObject(getObject(idx));\n}\n\nfunction __wbindgen_object_drop_ref(i) { dropObject(i); }\n\nlet cachedTextDecoder = new TextDecoder('utf-8');\n\nfunction getStringFromWasm(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory().subarray(ptr, ptr + len));\n}\n\nfunction __wbindgen_string_new(p, l) {\n return addHeapObject(getStringFromWasm(p, l));\n}\n\nfunction __wbindgen_is_string(i) {\n return typeof(getObject(i)) === 'string' ? 1 : 0;\n}\n\nlet cachegetUint32Memory = null;\nfunction getUint32Memory() {\n if (cachegetUint32Memory === null || cachegetUint32Memory.buffer !== _wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"memory\"].buffer) {\n cachegetUint32Memory = new Uint32Array(_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"memory\"].buffer);\n }\n return cachegetUint32Memory;\n}\n\nfunction __wbindgen_string_get(i, len_ptr) {\n let obj = getObject(i);\n if (typeof(obj) !== 'string') return 0;\n const ptr = passStringToWasm(obj);\n getUint32Memory()[len_ptr / 4] = WASM_VECTOR_LEN;\n return ptr;\n}\n\nconst __wbindgen_cb_forget = dropObject;\n\nfunction __wbindgen_json_parse(ptr, len) {\n return addHeapObject(JSON.parse(getStringFromWasm(ptr, len)));\n}\n\nfunction __wbindgen_json_serialize(idx, ptrptr) {\n const ptr = passStringToWasm(JSON.stringify(getObject(idx)));\n getUint32Memory()[ptrptr / 4] = ptr;\n return WASM_VECTOR_LEN;\n}\n\nfunction __wbindgen_closure_wrapper56(a, b, _ignored) {\n const f = _wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbg_function_table\"].get(20);\n const d = _wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbg_function_table\"].get(21);\n const cb = function(arg0) {\n this.cnt++;\n const ptr0 = passStringToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n try {\n return takeObject(f(this.a, b, ptr0, len0));\n\n } finally {\n if (this.cnt-- == 1) d(this.a, b);\n\n }\n\n };\n cb.a = a;\n cb.cnt = 1;\n let real = cb.bind(cb);\n real.original = cb;\n return addHeapObject(real);\n}\n\nfunction __wbindgen_closure_wrapper58(a, b, _ignored) {\n const f = _wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbg_function_table\"].get(22);\n const d = _wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbg_function_table\"].get(23);\n const cb = function(arg0) {\n this.cnt++;\n try {\n return takeObject(f(this.a, b, addHeapObject(arg0)));\n\n } finally {\n if (this.cnt-- == 1) d(this.a, b);\n\n }\n\n };\n cb.a = a;\n cb.cnt = 1;\n let real = cb.bind(cb);\n real.original = cb;\n return addHeapObject(real);\n}\n\nfunction __wbindgen_throw(ptr, len) {\n throw new Error(getStringFromWasm(ptr, len));\n}\n\n\n\n//# sourceURL=webpack:///./node_modules/rs-jsonpath/wasm.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compile\", function() { return compile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reader\", function() { return reader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"read\", function() { return read; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_object_clone_ref\", function() { return __wbindgen_object_clone_ref; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_object_drop_ref\", function() { return __wbindgen_object_drop_ref; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_string_new\", function() { return __wbindgen_string_new; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_is_string\", function() { return __wbindgen_is_string; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_string_get\", function() { return __wbindgen_string_get; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_cb_forget\", function() { return __wbindgen_cb_forget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_json_parse\", function() { return __wbindgen_json_parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_json_serialize\", function() { return __wbindgen_json_serialize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_closure_wrapper61\", function() { return __wbindgen_closure_wrapper61; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_closure_wrapper63\", function() { return __wbindgen_closure_wrapper63; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_throw\", function() { return __wbindgen_throw; });\n/* harmony import */ var _jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsonpath_wasm_bg */ \"../pkg/jsonpath_wasm_bg.wasm\");\n/* tslint:disable */\n\n\nlet cachedTextEncoder = new TextEncoder('utf-8');\n\nlet cachegetUint8Memory = null;\nfunction getUint8Memory() {\n if (cachegetUint8Memory === null || cachegetUint8Memory.buffer !== _jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"memory\"].buffer) {\n cachegetUint8Memory = new Uint8Array(_jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"memory\"].buffer);\n }\n return cachegetUint8Memory;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passStringToWasm(arg) {\n\n const buf = cachedTextEncoder.encode(arg);\n const ptr = _jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbindgen_malloc\"](buf.length);\n getUint8Memory().set(buf, ptr);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n}\n\nconst heap = new Array(32);\n\nheap.fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n/**\n* @param {string} arg0\n* @returns {any}\n*/\nfunction compile(arg0) {\n const ptr0 = passStringToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n try {\n return takeObject(_jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"compile\"](ptr0, len0));\n\n } finally {\n _jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbindgen_free\"](ptr0, len0 * 1);\n\n }\n\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n/**\n* @param {any} arg0\n* @returns {any}\n*/\nfunction reader(arg0) {\n return takeObject(_jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"reader\"](addHeapObject(arg0)));\n}\n\n/**\n* @param {any} arg0\n* @param {string} arg1\n* @returns {any}\n*/\nfunction read(arg0, arg1) {\n const ptr1 = passStringToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n try {\n return takeObject(_jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"read\"](addHeapObject(arg0), ptr1, len1));\n\n } finally {\n _jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbindgen_free\"](ptr1, len1 * 1);\n\n }\n\n}\n\nfunction __wbindgen_object_clone_ref(idx) {\n return addHeapObject(getObject(idx));\n}\n\nfunction __wbindgen_object_drop_ref(i) { dropObject(i); }\n\nlet cachedTextDecoder = new TextDecoder('utf-8');\n\nfunction getStringFromWasm(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory().subarray(ptr, ptr + len));\n}\n\nfunction __wbindgen_string_new(p, l) {\n return addHeapObject(getStringFromWasm(p, l));\n}\n\nfunction __wbindgen_is_string(i) {\n return typeof(getObject(i)) === 'string' ? 1 : 0;\n}\n\nlet cachegetUint32Memory = null;\nfunction getUint32Memory() {\n if (cachegetUint32Memory === null || cachegetUint32Memory.buffer !== _jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"memory\"].buffer) {\n cachegetUint32Memory = new Uint32Array(_jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"memory\"].buffer);\n }\n return cachegetUint32Memory;\n}\n\nfunction __wbindgen_string_get(i, len_ptr) {\n let obj = getObject(i);\n if (typeof(obj) !== 'string') return 0;\n const ptr = passStringToWasm(obj);\n getUint32Memory()[len_ptr / 4] = WASM_VECTOR_LEN;\n return ptr;\n}\n\nconst __wbindgen_cb_forget = dropObject;\n\nfunction __wbindgen_json_parse(ptr, len) {\n return addHeapObject(JSON.parse(getStringFromWasm(ptr, len)));\n}\n\nfunction __wbindgen_json_serialize(idx, ptrptr) {\n const ptr = passStringToWasm(JSON.stringify(getObject(idx)));\n getUint32Memory()[ptrptr / 4] = ptr;\n return WASM_VECTOR_LEN;\n}\n\nfunction __wbindgen_closure_wrapper61(a, b, _ignored) {\n const f = _jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbg_function_table\"].get(5);\n const d = _jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbg_function_table\"].get(6);\n const cb = function(arg0) {\n this.cnt++;\n const ptr0 = passStringToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n try {\n return takeObject(f(this.a, b, ptr0, len0));\n\n } finally {\n if (this.cnt-- == 1) d(this.a, b);\n\n }\n\n };\n cb.a = a;\n cb.cnt = 1;\n let real = cb.bind(cb);\n real.original = cb;\n return addHeapObject(real);\n}\n\nfunction __wbindgen_closure_wrapper63(a, b, _ignored) {\n const f = _jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbg_function_table\"].get(7);\n const d = _jsonpath_wasm_bg__WEBPACK_IMPORTED_MODULE_0__[\"__wbg_function_table\"].get(8);\n const cb = function(arg0) {\n this.cnt++;\n try {\n return takeObject(f(this.a, b, addHeapObject(arg0)));\n\n } finally {\n if (this.cnt-- == 1) d(this.a, b);\n\n }\n\n };\n cb.a = a;\n cb.cnt = 1;\n let real = cb.bind(cb);\n real.original = cb;\n return addHeapObject(real);\n}\n\nfunction __wbindgen_throw(ptr, len) {\n throw new Error(getStringFromWasm(ptr, len));\n}\n\n\n\n//# sourceURL=webpack:///../pkg/jsonpath_wasm.js?"); /***/ }), -/***/ "./node_modules/rs-jsonpath/wasm_bg.wasm": -/*!***********************************************!*\ - !*** ./node_modules/rs-jsonpath/wasm_bg.wasm ***! - \***********************************************/ +/***/ "../pkg/jsonpath_wasm_bg.wasm": +/*!************************************!*\ + !*** ../pkg/jsonpath_wasm_bg.wasm ***! + \************************************/ /*! exports provided: memory, compile, reader, read, __wbindgen_malloc, __wbindgen_free, __wbg_function_table */ /***/ (function(module, exports, __webpack_require__) { -eval("\"use strict\";\n// Instantiate WebAssembly module\nvar wasmExports = __webpack_require__.w[module.i];\n__webpack_require__.r(exports);\n// export exports from WebAssembly module\nfor(var name in wasmExports) if(name != \"__webpack_init__\") exports[name] = wasmExports[name];\n// exec imports from WebAssembly module (for esm order)\n/* harmony import */ var m0 = __webpack_require__(/*! ./wasm */ \"./node_modules/rs-jsonpath/wasm.js\");\n\n\n// exec wasm module\nwasmExports[\"__webpack_init__\"]()\n\n//# sourceURL=webpack:///./node_modules/rs-jsonpath/wasm_bg.wasm?"); +eval("\"use strict\";\n// Instantiate WebAssembly module\nvar wasmExports = __webpack_require__.w[module.i];\n__webpack_require__.r(exports);\n// export exports from WebAssembly module\nfor(var name in wasmExports) if(name != \"__webpack_init__\") exports[name] = wasmExports[name];\n// exec imports from WebAssembly module (for esm order)\n/* harmony import */ var m0 = __webpack_require__(/*! ./jsonpath_wasm */ \"../pkg/jsonpath_wasm.js\");\n\n\n// exec wasm module\nwasmExports[\"__webpack_init__\"]()\n\n//# sourceURL=webpack:///../pkg/jsonpath_wasm_bg.wasm?"); + +/***/ }), + +/***/ "./index.js": +/*!******************!*\ + !*** ./index.js ***! + \******************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jsonpath_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jsonpath-wasm */ \"../pkg/jsonpath_wasm.js\");\n\n\nfunction getTextarea() {\n return document.querySelector('#json-example');\n}\n\nfunction getJsonpathInput() {\n return document.querySelector('#jsonpath-input');\n}\n\nfunction getReadBtn() {\n return document.querySelector('#read-json');\n}\n\nfunction getReadResult() {\n return document.querySelector('#read-result');\n}\n\nfunction initData(url) {\n return fetch(url)\n .then((res) => res.text())\n .then((jsonStr) => getTextarea().value = jsonStr)\n .catch(console.error);\n}\n\nfunction initEvent() {\n getJsonpathInput().onkeyup = function(e) {\n var charCode = (typeof e.which === \"number\") ? e.which : e.keyCode;\n if(charCode == 13) {\n read();\n }\n }\n\n getReadBtn().onclick = function() {\n read();\n }\n\n function read() {\n let ret = jsonpath_wasm__WEBPACK_IMPORTED_MODULE_0__[\"read\"](getTextarea().value, getJsonpathInput().value);\n if(typeof ret === 'string') {\n getReadResult().innerText = ret;\n } else {\n getReadResult().innerText = JSON.stringify(ret, null, 2);\n }\n }\n}\n\ninitData('data/example.json').then(initEvent)\n\n//# sourceURL=webpack:///./index.js?"); /***/ }) diff --git a/docs/1.bootstrap.js b/docs/1.bootstrap.js deleted file mode 100644 index 4fb3730..0000000 --- a/docs/1.bootstrap.js +++ /dev/null @@ -1,15 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[1],{ - -/***/ "./index.js": -/*!******************!*\ - !*** ./index.js ***! - \******************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rs_jsonpath__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rs-jsonpath */ \"./node_modules/rs-jsonpath/wasm.js\");\n\n\nlet jsonString = \"{\\\"a\\\" : 1}\";\n\nlet template = rs_jsonpath__WEBPACK_IMPORTED_MODULE_0__[\"compile\"](\"$.a\");\nconsole.log(template(jsonString));\nconsole.log(template(JSON.parse(jsonString)));\n\nlet reader1 = rs_jsonpath__WEBPACK_IMPORTED_MODULE_0__[\"reader\"](jsonString);\nconsole.log(reader1(\"$.a\"));\n\nlet reader2 = rs_jsonpath__WEBPACK_IMPORTED_MODULE_0__[\"reader\"](JSON.parse(jsonString));\nconsole.log(reader2(\"$.a\"));\n\nconsole.log(rs_jsonpath__WEBPACK_IMPORTED_MODULE_0__[\"read\"](JSON.parse(jsonString), \"$.a\"));\nconsole.log(rs_jsonpath__WEBPACK_IMPORTED_MODULE_0__[\"read\"](jsonString, \"$.a\"));\n\n//# sourceURL=webpack:///./index.js?"); - -/***/ }) - -}]); \ No newline at end of file diff --git a/docs/688f272634d1f6200fbb.module.wasm b/docs/71d16e2ce98524a4b795.module.wasm similarity index 82% rename from docs/688f272634d1f6200fbb.module.wasm rename to docs/71d16e2ce98524a4b795.module.wasm index 1435aaa3843e515b67729c9031eef79e26853cc2..293d4f567d9dc4ff544e01904d506467cef0a052 100644 GIT binary patch delta 3759 zcmZuz3vg7`89uMOdv`YpyLk|j5KKTJD1>|W?!9;K3M9+JM@L7fifA9)2%N5!dt{m%w9pl9ct|D6B) z|M$PnxqDvPmOAoW>fT9}tQQ*YokxM7d4(04C-ttm>iyi_<;#|##IVLmZQY$6i|n2S zElcd~g%vF=OPtmYZ@%BrA~sqU*Hx8S5H`{&}3y+av7 zuzZLG*J%klyXN~n7wTOs*4o|D-P6_DF&{}6qYd?UP^Lw|ed}-Zd|=$ZhmKUg3y>V* zPS1j_&LxNpwbB0za!Jxq5xbb#YiNkk7b1U)5G2d7I6*N&a9l=F28<+&$}xfvlSzCW zPO%t?$+1`*AsIm<1TiGXNfiRNEQ6Fx2myuiN`NXf!7c_SG)ZOzmX#6=skfAs$0({Vhm=H^10#-yLj71q^C=M=0p*~=^7B-;_7=xq2SA^wDBndM}Uct01 zmk1A_3H#?M5-PEn7@}B|kuf>OBqH}e&l*}G>ctH3)v>N zoP9;!XZPWi>aEFFpmZLB9!Se5YJl}+C$(}wwuL(~U^iNH= zj>}VU7N6kxDR^Y%KZPJpE|W-e9V}HX6h6vZn(!1L4>jRi&!Y}MCIl`<-OtB2;~$ZMD*o!!(>BlV>d+nNGaRcK&K7GRT5D zCd&2WI+p*<*NF9T%gRm9n&rK%{4X4fs zr8>bLPmxKlDF|fS45ENwU0eQMKusQ^{C|0JZSDI*g2H)xHDrrIMsh3m*0G`;K`Ks+JULurM&SQ-Qtb;KYH$lxmZs#H%3#ZR)Z`$^J6 z$`7#woC%0-wnQ26CW@}P{5^R-*aNPK`lvz1(d4}?dzk|)c^z5L)U2%jRJZjzuBkbY8S&&`1df-q5eGs z>tXz;Piw+0KJB5Y1PG0V{0z?1nd%*xiC_#KUu zrft>HJUwk@Y}Io!X=5^yNwX{53v4@6{GT&9bv=XSklF1m3pXTIRj@Q#k;nKadnxu3siVUMG2e`yM#)?;fGg(lP_Gk~U08re)}g7Q935=5`fxN49p{(fKpsQd&2Iz}2&9 z+sdeZ+I^S&P<%V;!t39qe_$!o%le9@=-D8xc&ev<&YvEjM%Z|qHqz3-bbL)udu}#k zr=jHcP`>jadU?3^19}oqXt*d1;*f|^FHlVgQFnAJP)yI!+|{&^+uP{~eyWj4;qL#? z+i=n}UCUDfU-3LeGYvDG@G;#lmD#Rps1KkAs_5(aYZYv4=#5})IOXb& zqeF2N9c~BIY7=j%Vx1{JuuRhqf^1-znqnAFb6mr8et$LlAZa>|k=FdIr$Y)gSLds1 zSWn7Qd~h{LJD%+;ZlG=DHMML>nG0gNVi}(5q#f0FLpE5Es&6XdWi$Y>12qF@)3dy= zx|Z#b;V#3O2Q|fUOwTinL#%MQO5KcVYqp)S;og~w>K-2Chf~M0WHjk`ieb45Bsy!R zGrk@EbRzp@Q8Mjm86yp4a9kx5SO)*lV$+fu94=3X1LFmbr3F?vHOGD%OBpW2<>-O# zWGvg%yuJp6iQg*hhwU@iKqBQi3Y5wTAbXHe*ImU^ cH?lFM7jaiduHyOQw3c5lv#N0KEcSWg|3#g*P5=M^ delta 3376 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 O4f>WiX}O7MW&Z)rbSLuw diff --git a/docs/bootstrap.js b/docs/bootstrap.js index 2999d16..f413708 100644 --- a/docs/bootstrap.js +++ b/docs/bootstrap.js @@ -52,41 +52,41 @@ /******/ function promiseResolve() { return Promise.resolve(); } /******/ /******/ var wasmImportObjects = { -/******/ "./node_modules/rs-jsonpath/wasm_bg.wasm": function() { +/******/ "../pkg/jsonpath_wasm_bg.wasm": function() { /******/ return { -/******/ "./wasm": { -/******/ "__wbindgen_object_drop_ref": function(p0i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_object_drop_ref"](p0i32); -/******/ }, -/******/ "__wbindgen_string_new": function(p0i32,p1i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_string_new"](p0i32,p1i32); -/******/ }, -/******/ "__wbindgen_cb_forget": function(p0i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_cb_forget"](p0i32); -/******/ }, +/******/ "./jsonpath_wasm": { /******/ "__wbindgen_json_parse": function(p0i32,p1i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_json_parse"](p0i32,p1i32); +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_json_parse"](p0i32,p1i32); /******/ }, /******/ "__wbindgen_json_serialize": function(p0i32,p1i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_json_serialize"](p0i32,p1i32); +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_json_serialize"](p0i32,p1i32); +/******/ }, +/******/ "__wbindgen_object_drop_ref": function(p0i32) { +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_object_drop_ref"](p0i32); +/******/ }, +/******/ "__wbindgen_string_new": function(p0i32,p1i32) { +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_string_new"](p0i32,p1i32); +/******/ }, +/******/ "__wbindgen_cb_forget": function(p0i32) { +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_cb_forget"](p0i32); /******/ }, /******/ "__wbindgen_is_string": function(p0i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_is_string"](p0i32); +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_is_string"](p0i32); /******/ }, /******/ "__wbindgen_string_get": function(p0i32,p1i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_string_get"](p0i32,p1i32); +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_string_get"](p0i32,p1i32); /******/ }, /******/ "__wbindgen_object_clone_ref": function(p0i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_object_clone_ref"](p0i32); +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_object_clone_ref"](p0i32); /******/ }, /******/ "__wbindgen_throw": function(p0i32,p1i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_throw"](p0i32,p1i32); +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_throw"](p0i32,p1i32); /******/ }, -/******/ "__wbindgen_closure_wrapper56": function(p0i32,p1i32,p2i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_closure_wrapper56"](p0i32,p1i32,p2i32); +/******/ "__wbindgen_closure_wrapper61": function(p0i32,p1i32,p2i32) { +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_closure_wrapper61"](p0i32,p1i32,p2i32); /******/ }, -/******/ "__wbindgen_closure_wrapper58": function(p0i32,p1i32,p2i32) { -/******/ return installedModules["./node_modules/rs-jsonpath/wasm.js"].exports["__wbindgen_closure_wrapper58"](p0i32,p1i32,p2i32); +/******/ "__wbindgen_closure_wrapper63": function(p0i32,p1i32,p2i32) { +/******/ return installedModules["../pkg/jsonpath_wasm.js"].exports["__wbindgen_closure_wrapper63"](p0i32,p1i32,p2i32); /******/ } /******/ } /******/ }; @@ -176,7 +176,7 @@ /******/ /******/ // Fetch + compile chunk loading for webassembly /******/ -/******/ var wasmModules = {"0":["./node_modules/rs-jsonpath/wasm_bg.wasm"]}[chunkId] || []; +/******/ var wasmModules = {"0":["../pkg/jsonpath_wasm_bg.wasm"]}[chunkId] || []; /******/ /******/ wasmModules.forEach(function(wasmModuleId) { /******/ var installedWasmModuleData = installedWasmModules[wasmModuleId]; @@ -186,7 +186,7 @@ /******/ promises.push(installedWasmModuleData); /******/ else { /******/ var importObject = wasmImportObjects[wasmModuleId](); -/******/ var req = fetch(__webpack_require__.p + "" + {"./node_modules/rs-jsonpath/wasm_bg.wasm":"688f272634d1f6200fbb"}[wasmModuleId] + ".module.wasm"); +/******/ var req = fetch(__webpack_require__.p + "" + {"../pkg/jsonpath_wasm_bg.wasm":"71d16e2ce98524a4b795"}[wasmModuleId] + ".module.wasm"); /******/ var promise; /******/ if(importObject instanceof Promise && typeof WebAssembly.compileStreaming === 'function') { /******/ promise = Promise.all([WebAssembly.compileStreaming(req), importObject]).then(function(items) { @@ -287,7 +287,7 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// A dependency graph that contains any wasm must all be imported\n// asynchronously. This `bootstrap.js` file does the single async import, so\n// that no one else needs to worry about it again.\nPromise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(1)]).then(__webpack_require__.bind(null, /*! ./index.js */ \"./index.js\"))\n .catch(e => console.error(\"Error importing `index.js`:\", e));\n\n\n//# sourceURL=webpack:///./bootstrap.js?"); +eval("// A dependency graph that contains any wasm must all be imported\n// asynchronously. This `bootstrap.js` file does the single async import, so\n// that no one else needs to worry about it again.\n__webpack_require__.e(/*! import() */ 0).then(__webpack_require__.bind(null, /*! ./index.js */ \"./index.js\"))\n .catch(e => console.error(\"Error importing `index.js`:\", e));\n\n\n//# sourceURL=webpack:///./bootstrap.js?"); /***/ }) diff --git a/docs/data/example.json b/docs/data/example.json new file mode 100644 index 0000000..cb88a7b --- /dev/null +++ b/docs/data/example.json @@ -0,0 +1,37 @@ +{ + "store": { + "book": [ + { + "category": "reference", + "author": "Nigel Rees", + "title": "Sayings of the Century", + "price": 8.95 + }, + { + "category": "fiction", + "author": "Evelyn Waugh", + "title": "Sword of Honour", + "price": 12.99 + }, + { + "category": "fiction", + "author": "Herman Melville", + "title": "Moby Dick", + "isbn": "0-553-21311-3", + "price": 8.99 + }, + { + "category": "fiction", + "author": "J. R. R. Tolkien", + "title": "The Lord of the Rings", + "isbn": "0-395-19395-8", + "price": 22.99 + } + ], + "bicycle": { + "color": "red", + "price": 19.95 + } + }, + "expensive": 10 +} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 1863cc6..6fa4fe7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,10 +1,40 @@ - + - JsonPath App - Webassembly - - - - + JsonPath evaluator - Webassembly via Rust + + + +
+

JsonPath evaluator - Webassembly via Rust

+ +
+
+ Evaluator +
+ +
+
+
+ +
+ Go! +
+
+
+
+
+ Result +

+        
+
+
+ + diff --git a/wasm/Cargo.toml b/wasm/Cargo.toml index 43a160d..a0dd51a 100644 --- a/wasm/Cargo.toml +++ b/wasm/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "wasm" +name = "jsonpath-wasm" version = "0.1.0" authors = ["freestrings "] diff --git a/wasm/build.sh b/wasm/build.sh index 6faa174..6d0abf6 100755 --- a/wasm/build.sh +++ b/wasm/build.sh @@ -7,5 +7,6 @@ cd ./www && \ rm -rf node_modules && \ npm install && \ cd .. && \ - wasm-pack build --target=$1 --out-dir=www/node_modules/rs-jsonpath - + wasm-pack build --target=$1 && \ + cd pkg && npm link && \ + cd ../www && npm link jsonpath-wasm \ No newline at end of file diff --git a/wasm/www/data/example.json b/wasm/www/data/example.json new file mode 100644 index 0000000..cb88a7b --- /dev/null +++ b/wasm/www/data/example.json @@ -0,0 +1,37 @@ +{ + "store": { + "book": [ + { + "category": "reference", + "author": "Nigel Rees", + "title": "Sayings of the Century", + "price": 8.95 + }, + { + "category": "fiction", + "author": "Evelyn Waugh", + "title": "Sword of Honour", + "price": 12.99 + }, + { + "category": "fiction", + "author": "Herman Melville", + "title": "Moby Dick", + "isbn": "0-553-21311-3", + "price": 8.99 + }, + { + "category": "fiction", + "author": "J. R. R. Tolkien", + "title": "The Lord of the Rings", + "isbn": "0-395-19395-8", + "price": 22.99 + } + ], + "bicycle": { + "color": "red", + "price": 19.95 + } + }, + "expensive": 10 +} \ No newline at end of file diff --git a/wasm/www/index.html b/wasm/www/index.html index eadfc77..6fa4fe7 100644 --- a/wasm/www/index.html +++ b/wasm/www/index.html @@ -1,10 +1,40 @@ - + - JsonPath Evaluator - - - - + JsonPath evaluator - Webassembly via Rust + + + +
+

JsonPath evaluator - Webassembly via Rust

+ +
+
+ Evaluator +
+ +
+
+
+ +
+ Go! +
+
+
+
+
+ Result +

+        
+
+
+ + diff --git a/wasm/www/index.js b/wasm/www/index.js index 5d19aee..3f23bfe 100644 --- a/wasm/www/index.js +++ b/wasm/www/index.js @@ -1,16 +1,48 @@ -import * as jsonpath from "rs-jsonpath"; +import * as jsonpath from "jsonpath-wasm"; -let jsonString = "{\"a\" : 1}"; +function getTextarea() { + return document.querySelector('#json-example'); +} -let template = jsonpath.compile("$.a"); -console.log(template(jsonString)); -console.log(template(JSON.parse(jsonString))); +function getJsonpathInput() { + return document.querySelector('#jsonpath-input'); +} -let reader1 = jsonpath.reader(jsonString); -console.log(reader1("$.a")); +function getReadBtn() { + return document.querySelector('#read-json'); +} -let reader2 = jsonpath.reader(JSON.parse(jsonString)); -console.log(reader2("$.a")); +function getReadResult() { + return document.querySelector('#read-result'); +} -console.log(jsonpath.read(JSON.parse(jsonString), "$.a")); -console.log(jsonpath.read(jsonString, "$.a")); \ No newline at end of file +function initData(url) { + return fetch(url) + .then((res) => res.text()) + .then((jsonStr) => getTextarea().value = jsonStr) + .catch(console.error); +} + +function initEvent() { + getJsonpathInput().onkeyup = function(e) { + var charCode = (typeof e.which === "number") ? e.which : e.keyCode; + if(charCode == 13) { + read(); + } + } + + getReadBtn().onclick = function() { + read(); + } + + function read() { + let ret = jsonpath.read(getTextarea().value, getJsonpathInput().value); + if(typeof ret === 'string') { + getReadResult().innerText = ret; + } else { + getReadResult().innerText = JSON.stringify(ret, null, 2); + } + } +} + +initData('data/example.json').then(initEvent) \ No newline at end of file