Skip to content

Commit

Permalink
feat: use deno_cache
Browse files Browse the repository at this point in the history
  • Loading branch information
dsherret committed Oct 12, 2021
1 parent f855a14 commit 18ea3d3
Show file tree
Hide file tree
Showing 14 changed files with 176 additions and 266 deletions.
5 changes: 4 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
{
"deno.enable": true,
"deno.lint": false,
"deno.unstable": false
"deno.unstable": false,
"deno.suggest.imports.hosts": {
"https://deno.land": false
}
}
218 changes: 72 additions & 146 deletions lib/pkg/dnt_wasm.js
Original file line number Diff line number Diff line change
@@ -1,36 +1,41 @@
import { read_file_sync } from './snippets/dnt-wasm-2cfe58fb53074cc7/helpers.js';
import { fetch_specifier } from './snippets/dnt-wasm-2cfe58fb53074cc7/helpers.js';

let wasm;

let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });

cachedTextDecoder.decode();

let cachegetUint8Memory0 = null;
function getUint8Memory0() {
if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {
cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);
}
return cachegetUint8Memory0;
}

function getStringFromWasm0(ptr, len) {
return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
}

const heap = new Array(32).fill(undefined);

heap.push(undefined, null, true, false);

function getObject(idx) { return heap[idx]; }

let heap_next = heap.length;

function dropObject(idx) {
if (idx < 36) return;
heap[idx] = heap_next;
heap_next = idx;
}
function addHeapObject(obj) {
if (heap_next === heap.length) heap.push(heap.length + 1);
const idx = heap_next;
heap_next = heap[idx];

function takeObject(idx) {
const ret = getObject(idx);
dropObject(idx);
return ret;
heap[idx] = obj;
return idx;
}

let WASM_VECTOR_LEN = 0;
function getObject(idx) { return heap[idx]; }

let cachegetUint8Memory0 = null;
function getUint8Memory0() {
if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {
cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);
}
return cachegetUint8Memory0;
}
let WASM_VECTOR_LEN = 0;

let cachedTextEncoder = new TextEncoder('utf-8');

Expand Down Expand Up @@ -93,25 +98,16 @@ function getInt32Memory0() {
return cachegetInt32Memory0;
}

function isLikeNone(x) {
return x === undefined || x === null;
}

let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });

cachedTextDecoder.decode();

function getStringFromWasm0(ptr, len) {
return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
function dropObject(idx) {
if (idx < 36) return;
heap[idx] = heap_next;
heap_next = idx;
}

function addHeapObject(obj) {
if (heap_next === heap.length) heap.push(heap.length + 1);
const idx = heap_next;
heap_next = heap[idx];

heap[idx] = obj;
return idx;
function takeObject(idx) {
const ret = getObject(idx);
dropObject(idx);
return ret;
}

function debugString(val) {
Expand Down Expand Up @@ -203,7 +199,7 @@ function makeMutClosure(arg0, arg1, dtor, f) {

return real;
}
function __wbg_adapter_22(arg0, arg1, arg2) {
function __wbg_adapter_16(arg0, arg1, arg2) {
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h088415f84ea54e0b(arg0, arg1, addHeapObject(arg2));
}

Expand All @@ -223,7 +219,7 @@ function handleError(f, args) {
wasm.__wbindgen_exn_store(addHeapObject(e));
}
}
function __wbg_adapter_50(arg0, arg1, arg2, arg3) {
function __wbg_adapter_22(arg0, arg1, arg2, arg3) {
wasm.wasm_bindgen__convert__closures__invoke2_mut__h9820aa2e71bc287b(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
}

Expand Down Expand Up @@ -264,6 +260,18 @@ async function init(input) {
}
const imports = {};
imports.wbg = {};
imports.wbg.__wbindgen_json_parse = function(arg0, arg1) {
var ret = JSON.parse(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
};
imports.wbg.__wbindgen_json_serialize = function(arg0, arg1) {
const obj = getObject(arg1);
var ret = JSON.stringify(obj === undefined ? null : obj);
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
var len0 = WASM_VECTOR_LEN;
getInt32Memory0()[arg0 / 4 + 1] = len0;
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
};
imports.wbg.__wbindgen_cb_drop = function(arg0) {
const obj = takeObject(arg0).original;
if (obj.cnt-- == 1) {
Expand All @@ -276,95 +284,19 @@ async function init(input) {
imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
takeObject(arg0);
};
imports.wbg.__wbg_readfilesync_dd9f6e61a7bab0ec = function(arg0, arg1, arg2) {
imports.wbg.__wbg_fetchspecifier_b9ba393a3532ceca = function(arg0, arg1) {
try {
var ret = read_file_sync(getStringFromWasm0(arg1, arg2));
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
var len0 = WASM_VECTOR_LEN;
getInt32Memory0()[arg0 / 4 + 1] = len0;
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
} finally {
wasm.__wbindgen_free(arg1, arg2);
}
};
imports.wbg.__wbindgen_json_serialize = function(arg0, arg1) {
const obj = getObject(arg1);
var ret = JSON.stringify(obj === undefined ? null : obj);
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
var len0 = WASM_VECTOR_LEN;
getInt32Memory0()[arg0 / 4 + 1] = len0;
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
};
imports.wbg.__wbindgen_string_get = function(arg0, arg1) {
const obj = getObject(arg1);
var ret = typeof(obj) === 'string' ? obj : undefined;
var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
var len0 = WASM_VECTOR_LEN;
getInt32Memory0()[arg0 / 4 + 1] = len0;
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
};
imports.wbg.__wbindgen_json_parse = function(arg0, arg1) {
var ret = JSON.parse(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
};
imports.wbg.__wbg_new_59cb74e423758ede = function() {
var ret = new Error();
return addHeapObject(ret);
};
imports.wbg.__wbg_stack_558ba5917b466edd = function(arg0, arg1) {
var ret = getObject(arg1).stack;
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
var len0 = WASM_VECTOR_LEN;
getInt32Memory0()[arg0 / 4 + 1] = len0;
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
};
imports.wbg.__wbg_error_4bb6c2a97407129a = function(arg0, arg1) {
try {
console.error(getStringFromWasm0(arg0, arg1));
var ret = fetch_specifier(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
} finally {
wasm.__wbindgen_free(arg0, arg1);
}
};
imports.wbg.__wbg_instanceof_Window_5993230e7331f098 = function(arg0) {
var ret = getObject(arg0) instanceof Window;
imports.wbg.__wbindgen_is_object = function(arg0) {
const val = getObject(arg0);
var ret = typeof(val) === 'object' && val !== null;
return ret;
};
imports.wbg.__wbg_fetch_d2665d527f7f4a02 = function(arg0, arg1) {
var ret = getObject(arg0).fetch(getObject(arg1));
return addHeapObject(ret);
};
imports.wbg.__wbg_instanceof_Response_5a8048ec57ecf2d5 = function(arg0) {
var ret = getObject(arg0) instanceof Response;
return ret;
};
imports.wbg.__wbg_text_4b57f36d42790087 = function() { return handleError(function (arg0) {
var ret = getObject(arg0).text();
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
var ret = getObject(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
var ret = getStringFromWasm0(arg0, arg1);
return addHeapObject(ret);
};
imports.wbg.__wbg_newwithstrandinit_814c15649f6924a8 = function() { return handleError(function (arg0, arg1, arg2) {
var ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_newnoargs_be86524d73f67598 = function(arg0, arg1) {
var ret = new Function(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
};
imports.wbg.__wbg_call_888d259a5fefc347 = function() { return handleError(function (arg0, arg1) {
var ret = getObject(arg0).call(getObject(arg1));
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_new_0b83d3df67ecb33e = function() {
var ret = new Object();
return addHeapObject(ret);
};
imports.wbg.__wbg_call_346669c262382ad7 = function() { return handleError(function (arg0, arg1, arg2) {
var ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
return addHeapObject(ret);
Expand All @@ -376,7 +308,7 @@ async function init(input) {
const a = state0.a;
state0.a = 0;
try {
return __wbg_adapter_50(a, state0.b, arg0, arg1);
return __wbg_adapter_22(a, state0.b, arg0, arg1);
} finally {
state0.a = a;
}
Expand All @@ -399,30 +331,24 @@ async function init(input) {
var ret = getObject(arg0).then(getObject(arg1), getObject(arg2));
return addHeapObject(ret);
};
imports.wbg.__wbg_self_c6fbdfc2918d5e58 = function() { return handleError(function () {
var ret = self.self;
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_window_baec038b5ab35c54 = function() { return handleError(function () {
var ret = window.window;
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_globalThis_3f735a5746d41fbd = function() { return handleError(function () {
var ret = globalThis.globalThis;
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_global_1bc0b39582740e95 = function() { return handleError(function () {
var ret = global.global;
imports.wbg.__wbg_new_59cb74e423758ede = function() {
var ret = new Error();
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbindgen_is_undefined = function(arg0) {
var ret = getObject(arg0) === undefined;
return ret;
};
imports.wbg.__wbg_set_82a4e8a85e31ac42 = function() { return handleError(function (arg0, arg1, arg2) {
var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));
return ret;
}, arguments) };
imports.wbg.__wbg_stack_558ba5917b466edd = function(arg0, arg1) {
var ret = getObject(arg1).stack;
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
var len0 = WASM_VECTOR_LEN;
getInt32Memory0()[arg0 / 4 + 1] = len0;
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
};
imports.wbg.__wbg_error_4bb6c2a97407129a = function(arg0, arg1) {
try {
console.error(getStringFromWasm0(arg0, arg1));
} finally {
wasm.__wbindgen_free(arg0, arg1);
}
};
imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {
var ret = debugString(getObject(arg1));
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
Expand All @@ -433,8 +359,8 @@ async function init(input) {
imports.wbg.__wbindgen_throw = function(arg0, arg1) {
throw new Error(getStringFromWasm0(arg0, arg1));
};
imports.wbg.__wbindgen_closure_wrapper394 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 126, __wbg_adapter_22);
imports.wbg.__wbindgen_closure_wrapper300 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 130, __wbg_adapter_16);
return addHeapObject(ret);
};

Expand Down
2 changes: 1 addition & 1 deletion lib/pkg/dnt_wasm_bg.ts

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions lib/pkg/snippets/dnt-wasm-2cfe58fb53074cc7/helpers.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
export function read_file_sync(file_path) {
return Deno.readTextFileSync(file_path);
import { DenoDir, FileFetcher } from "https://deno.land/x/[email protected]/mod.ts";

const denoDir = new DenoDir();
const fileFetcher = new FileFetcher(denoDir.deps);

export function fetch_specifier(specifier) {
return fileFetcher.fetch(new URL(specifier));
}
20 changes: 14 additions & 6 deletions mod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ export async function build(options: BuildOptions): Promise<void> {
return [key, value];
}),
);

console.log("Transforming...");
const transformOutput = await transform({
entryPoint: options.entryPoint,
shimPackageName: shimPackage.name,
Expand All @@ -69,11 +71,13 @@ export async function build(options: BuildOptions): Promise<void> {
Deno.writeTextFileSync(filePath, fileText);
});

console.log("Running npm install...");
createPackageJson();
// npm install in order to prepare for checking TS diagnostics
await npmInstall();

const mjsOutDir = path.join(options.outDir, "mjs");
console.log("Building TypeScript project...");
const esmOutDir = path.join(options.outDir, "esm");
const cjsOutDir = path.join(options.outDir, "cjs");
const typesOutDir = path.join(options.outDir, "types");
const project = createProjectSync({
Expand Down Expand Up @@ -107,6 +111,7 @@ export async function build(options: BuildOptions): Promise<void> {
let program = project.createProgram();

if (options.typeCheck) {
console.log("Type checking...");
const diagnostics = ts.getPreEmitDiagnostics(program);
if (diagnostics.length > 0) {
outputDiagnostics(diagnostics);
Expand All @@ -115,21 +120,24 @@ export async function build(options: BuildOptions): Promise<void> {
}

// emit only the .d.ts files
console.log("Emitting declaration files...");
emit({ onlyDtsFiles: true });

// emit the mjs files
// emit the esm files
console.log("Emitting esm module...");
project.compilerOptions.set({
declaration: false,
outDir: mjsOutDir,
outDir: esmOutDir,
});
program = project.createProgram();
emit();
writeFile(
path.join(mjsOutDir, "package.json"),
path.join(esmOutDir, "package.json"),
`{\n "type": "module"\n}\n`,
);

// emit the cjs files
console.log("Emitting cjs module...");
project.compilerOptions.set({
declaration: false,
esModuleInterop: true,
Expand Down Expand Up @@ -191,13 +199,13 @@ export async function build(options: BuildOptions): Promise<void> {
// override with specified dependencies
...(options.package.dependencies ?? {}),
},
module: options.package.module ?? `./esm/${entryPointPath}`,
main: options.package.main ?? `./cjs/${entryPointPath}`,
module: options.package.module ?? `./mjs/${entryPointPath}`,
types: options.package.types ?? `./types/${entryPointDtsFilePath}`,
exports: {
...(options.package.exports ?? {}),
".": {
import: `./mjs/${entryPointPath}`,
import: `./esm/${entryPointPath}`,
require: `./cjs/${entryPointPath}`,
types: options.package.types ?? `./types/${entryPointDtsFilePath}`,
...(options.package.exports?.["."] ?? {}),
Expand Down
Loading

0 comments on commit 18ea3d3

Please sign in to comment.