Buckets:
| const readWasm = require("../lib/read-wasm"); | |
| /** | |
| * Provide the JIT with a nice shape / hidden class. | |
| */ | |
| function Mapping() { | |
| this.generatedLine = 0; | |
| this.generatedColumn = 0; | |
| this.lastGeneratedColumn = null; | |
| this.source = null; | |
| this.originalLine = null; | |
| this.originalColumn = null; | |
| this.name = null; | |
| } | |
| let cachedWasm = null; | |
| module.exports = function wasm() { | |
| if (cachedWasm) { | |
| return cachedWasm; | |
| } | |
| const callbackStack = []; | |
| cachedWasm = readWasm().then(buffer => { | |
| return WebAssembly.instantiate(buffer, { | |
| env: { | |
| mapping_callback( | |
| generatedLine, | |
| generatedColumn, | |
| hasLastGeneratedColumn, | |
| lastGeneratedColumn, | |
| hasOriginal, | |
| source, | |
| originalLine, | |
| originalColumn, | |
| hasName, | |
| name | |
| ) { | |
| const mapping = new Mapping(); | |
| // JS uses 1-based line numbers, wasm uses 0-based. | |
| mapping.generatedLine = generatedLine + 1; | |
| mapping.generatedColumn = generatedColumn; | |
| if (hasLastGeneratedColumn) { | |
| // JS uses inclusive last generated column, wasm uses exclusive. | |
| mapping.lastGeneratedColumn = lastGeneratedColumn - 1; | |
| } | |
| if (hasOriginal) { | |
| mapping.source = source; | |
| // JS uses 1-based line numbers, wasm uses 0-based. | |
| mapping.originalLine = originalLine + 1; | |
| mapping.originalColumn = originalColumn; | |
| if (hasName) { | |
| mapping.name = name; | |
| } | |
| } | |
| callbackStack[callbackStack.length - 1](mapping); | |
| }, | |
| start_all_generated_locations_for() { console.time("all_generated_locations_for"); }, | |
| end_all_generated_locations_for() { console.timeEnd("all_generated_locations_for"); }, | |
| start_compute_column_spans() { console.time("compute_column_spans"); }, | |
| end_compute_column_spans() { console.timeEnd("compute_column_spans"); }, | |
| start_generated_location_for() { console.time("generated_location_for"); }, | |
| end_generated_location_for() { console.timeEnd("generated_location_for"); }, | |
| start_original_location_for() { console.time("original_location_for"); }, | |
| end_original_location_for() { console.timeEnd("original_location_for"); }, | |
| start_parse_mappings() { console.time("parse_mappings"); }, | |
| end_parse_mappings() { console.timeEnd("parse_mappings"); }, | |
| start_sort_by_generated_location() { console.time("sort_by_generated_location"); }, | |
| end_sort_by_generated_location() { console.timeEnd("sort_by_generated_location"); }, | |
| start_sort_by_original_location() { console.time("sort_by_original_location"); }, | |
| end_sort_by_original_location() { console.timeEnd("sort_by_original_location"); }, | |
| } | |
| }); | |
| }).then(Wasm => { | |
| return { | |
| exports: Wasm.instance.exports, | |
| withMappingCallback: (mappingCallback, f) => { | |
| callbackStack.push(mappingCallback); | |
| try { | |
| f(); | |
| } finally { | |
| callbackStack.pop(); | |
| } | |
| } | |
| }; | |
| }).then(null, e => { | |
| cachedWasm = null; | |
| throw e; | |
| }); | |
| return cachedWasm; | |
| }; | |
Xet Storage Details
- Size:
- 3.32 kB
- Xet hash:
- 452d5ba0121e97f46825b3ba117a2f920e71bde83928add9a1f0dca11f105751
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.