Skip to content

Commit

Permalink
fix(build): add imports update into marine-js bindgen glue code patch…
Browse files Browse the repository at this point in the history
…er (#348)

* add imports update into marine-js bindgen glue code patcher

* return copyright
  • Loading branch information
ValeryAntopol authored Jul 25, 2023
1 parent a61ddfc commit 08508ac
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 75 deletions.
150 changes: 75 additions & 75 deletions marine-js/npm-package/src/marine_js.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

// This is patched generated by wasm-pack file

import { create_wasi, generate_wasi_imports, bind_to_instance } from './snippets/marine-js-backend-8985bcc66aeb2a35/js/wasi_bindings.js';
import { create_wasi, generate_wasi_imports, bind_to_instance } from "./snippets/marine-js-backend-8985bcc66aeb2a35/js/wasi_bindings.js";

export async function init(module) {
let wasm;
Expand Down Expand Up @@ -261,7 +261,7 @@ export async function init(module) {

function __wbg_adapter_40(arg0, arg1, arg2) {
try {
const ret = wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hb9053ca9823a678d(arg0, arg1, addBorrowedObject(arg2));
const ret = wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h722d7f4562e11b14(arg0, arg1, addBorrowedObject(arg2));
return takeObject(ret);
} finally {
heap[stack_pointer++] = undefined;
Expand Down Expand Up @@ -412,23 +412,24 @@ export async function init(module) {
const imports = {};
imports.wbg = {};

imports.wbg.__wbg_newwithargs_a0432b7780c1dfa1 = function(arg0, arg1, arg2, arg3) {
const ret = new Function(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));
return addHeapObject(ret);
imports.wbg.__wbg_apply_f9ecfcbfefaf7349 = function() {
return handleError(function(arg0, arg1, arg2) {
const ret = Reflect.apply(getObject(arg0), getObject(arg1), getObject(arg2));
return addHeapObject(ret);
}, arguments);
};

imports.wbg.__wbg_bind_f9d2c8ec337bbbe7 = function(arg0, arg1, arg2) {
const ret = getObject(arg0).bind(getObject(arg1), getObject(arg2));
imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
const ret = getStringFromWasm0(arg0, arg1);
return addHeapObject(ret);
};

imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
takeObject(arg0);
imports.wbg.__wbg_log_576ca876af0d4a77 = function(arg0, arg1) {
console.log(getObject(arg0), getObject(arg1));
};

imports.wbg.__wbg_get_44be0491f933a435 = function(arg0, arg1) {
const ret = getObject(arg0)[arg1 >>> 0];
return addHeapObject(ret);
imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
takeObject(arg0);
};

imports.wbg.__wbg_iterator_97f0c81209c6c35a = function() {
Expand Down Expand Up @@ -495,18 +496,21 @@ export async function init(module) {
return addHeapObject(ret);
};

imports.wbg.__wbindgen_error_new = function(arg0, arg1) {
const ret = new Error(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
imports.wbg.__wbindgen_jsval_loose_eq = function(arg0, arg1) {
const ret = getObject(arg0) == getObject(arg1);
return ret;
};

imports.wbg.__wbg_setindex_24de8908d99d47eb = function(arg0, arg1, arg2) {
getObject(arg0)[arg1 >>> 0] = arg2;
imports.wbg.__wbindgen_number_get = function(arg0, arg1) {
const obj = getObject(arg1);
const ret = typeof obj === "number" ? obj : undefined;
getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;
getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);
};

imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
const ret = getObject(arg0);
return addHeapObject(ret);
imports.wbg.__wbg_isSafeInteger_bb8e18dd21c97288 = function(arg0) {
const ret = Number.isSafeInteger(getObject(arg0));
return ret;
};

imports.wbg.__wbg_getwithrefkey_5e6d9547403deab8 = function(arg0, arg1) {
Expand Down Expand Up @@ -534,16 +538,9 @@ export async function init(module) {
return ret;
};

imports.wbg.__wbindgen_number_get = function(arg0, arg1) {
const obj = getObject(arg1);
const ret = typeof obj === "number" ? obj : undefined;
getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;
getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);
};

imports.wbg.__wbg_isSafeInteger_bb8e18dd21c97288 = function(arg0) {
const ret = Number.isSafeInteger(getObject(arg0));
return ret;
imports.wbg.__wbg_get_44be0491f933a435 = function(arg0, arg1) {
const ret = getObject(arg0)[arg1 >>> 0];
return addHeapObject(ret);
};

imports.wbg.__wbg_next_ddb3312ca1c4e32a = function() {
Expand All @@ -563,6 +560,26 @@ export async function init(module) {
return addHeapObject(ret);
};

imports.wbg.__wbindgen_boolean_get = function(arg0) {
const v = getObject(arg0);
const ret = typeof v === "boolean" ? (v ? 1 : 0) : 2;
return ret;
};

imports.wbg.__wbindgen_error_new = function(arg0, arg1) {
const ret = new Error(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
};

imports.wbg.__wbg_setindex_24de8908d99d47eb = function(arg0, arg1, arg2) {
getObject(arg0)[arg1 >>> 0] = arg2;
};

imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
const ret = getObject(arg0);
return addHeapObject(ret);
};

imports.wbg.__wbg_newwithlength_e5d69174d6984cd7 = function(arg0) {
const ret = new Uint8Array(arg0 >>> 0);
return addHeapObject(ret);
Expand All @@ -580,11 +597,6 @@ export async function init(module) {
return addHeapObject(ret);
};

imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
const ret = getStringFromWasm0(arg0, arg1);
return addHeapObject(ret);
};

imports.wbg.__wbg_set_bedc3d02d0f05eb0 = function(arg0, arg1, arg2) {
const ret = getObject(arg0).set(getObject(arg1), getObject(arg2));
return addHeapObject(ret);
Expand All @@ -595,22 +607,6 @@ export async function init(module) {
return addHeapObject(ret);
};

imports.wbg.__wbg_new_898a68150f225f2e = function() {
const ret = new Array();
return addHeapObject(ret);
};

imports.wbg.__wbg_apply_f9ecfcbfefaf7349 = function() {
return handleError(function(arg0, arg1, arg2) {
const ret = Reflect.apply(getObject(arg0), getObject(arg1), getObject(arg2));
return addHeapObject(ret);
}, arguments);
};

imports.wbg.__wbg_log_576ca876af0d4a77 = function(arg0, arg1) {
console.log(getObject(arg0), getObject(arg1));
};

imports.wbg.__wbg_byteLength_0488a7a303dccf40 = function(arg0) {
const ret = getObject(arg0).byteLength;
return ret;
Expand All @@ -635,6 +631,11 @@ export async function init(module) {
getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
};

imports.wbg.__wbg_new_898a68150f225f2e = function() {
const ret = new Array();
return addHeapObject(ret);
};

imports.wbg.__wbg_push_ca1c26067ef907ac = function(arg0, arg1) {
const ret = getObject(arg0).push(getObject(arg1));
return ret;
Expand Down Expand Up @@ -665,14 +666,25 @@ export async function init(module) {
getInt32Memory0()[arg0 / 4 + 0] = ptr1;
};

imports.wbg.__wbindgen_jsval_loose_eq = function(arg0, arg1) {
const ret = getObject(arg0) == getObject(arg1);
return ret;
imports.wbg.__wbindgen_number_new = function(arg0) {
const ret = arg0;
return addHeapObject(ret);
};

imports.wbg.__wbindgen_boolean_get = function(arg0) {
const v = getObject(arg0);
const ret = typeof v === "boolean" ? (v ? 1 : 0) : 2;
imports.wbg.__wbindgen_bigint_from_i64 = function(arg0) {
const ret = arg0;
return addHeapObject(ret);
};

imports.wbg.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) {
const v = getObject(arg1);
const ret = typeof v === "bigint" ? v : undefined;
getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;
getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);
};

imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) {
const ret = getObject(arg0) === getObject(arg1);
return ret;
};

Expand Down Expand Up @@ -713,25 +725,13 @@ export async function init(module) {
return addHeapObject(ret);
};

imports.wbg.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) {
const v = getObject(arg1);
const ret = typeof v === "bigint" ? v : undefined;
getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;
getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);
};

imports.wbg.__wbindgen_bigint_from_i64 = function(arg0) {
const ret = arg0;
imports.wbg.__wbg_newwithargs_a0432b7780c1dfa1 = function(arg0, arg1, arg2, arg3) {
const ret = new Function(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));
return addHeapObject(ret);
};

imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) {
const ret = getObject(arg0) === getObject(arg1);
return ret;
};

imports.wbg.__wbindgen_number_new = function(arg0) {
const ret = arg0;
imports.wbg.__wbg_bind_f9d2c8ec337bbbe7 = function(arg0, arg1, arg2) {
const ret = getObject(arg0).bind(getObject(arg1), getObject(arg2));
return addHeapObject(ret);
};

Expand Down Expand Up @@ -781,8 +781,8 @@ export async function init(module) {
throw new Error(getStringFromWasm0(arg0, arg1));
};

imports.wbg.__wbindgen_closure_wrapper105 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 115, __wbg_adapter_40);
imports.wbg.__wbindgen_closure_wrapper1354 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 130, __wbg_adapter_40);
return addHeapObject(ret);
};

Expand Down
18 changes: 18 additions & 0 deletions marine-js/npm-package/update-imports.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ fs.readFile(sourceFilePath, "utf8", (err, sourceData) => {
const sourceAst = parser.parse(sourceData, { sourceType: "module" });
let sourceFunction = null;
let wbgAdapterFunc = null;
let imports = []
traverse(sourceAst, {
FunctionDeclaration(path) {
if (path.node.id.name === GET_IMPORTTS_FN_NAME) {
Expand All @@ -27,6 +28,9 @@ fs.readFile(sourceFilePath, "utf8", (err, sourceData) => {
wbgAdapterFunc = path.node;
}
},
ImportDeclaration(path) {
imports.push(path.node)
}
});

if (!sourceFunction) {
Expand All @@ -48,6 +52,7 @@ fs.readFile(sourceFilePath, "utf8", (err, sourceData) => {

let targetFunctionPath = null;
let wbgAdapderPath = null;
let importsPaths = []

recast.visit(targetAst, {
visitFunctionDeclaration(path) {
Expand All @@ -59,13 +64,26 @@ fs.readFile(sourceFilePath, "utf8", (err, sourceData) => {

this.traverse(path);
},
visitImportDeclaration(path) {
importsPaths.push(path)
this.traverse(path);
}
});

if (!targetFunctionPath) {
console.error(`Error: ${GET_IMPORTTS_FN_NAME} function not found in target file`);
process.exit(1);
}

if (importsPaths.length !== imports.length) {
console.error(`Error: source and destination have different number of import statements. Please update imports in destination manually.`);
process.exit(1);
}

for(let importIndex = 0; importIndex < importsPaths.length; importIndex++) {
importsPaths[importIndex].replace(imports[importIndex])
}

targetFunctionPath.replace(sourceFunction);
wbgAdapderPath.replace(wbgAdapterFunc);
const output = recast.print(targetAst).code;
Expand Down

0 comments on commit 08508ac

Please sign in to comment.