Socket
Socket
Sign inDemoInstall

@miniflare/runner-vm

Package Overview
Dependencies
Maintainers
2
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@miniflare/runner-vm - npm Package Compare versions

Comparing version 2.11.0 to 2.12.0

3

dist/src/index.d.ts
/// <reference types="node" />
import { AdditionalModules } from '@miniflare/shared';
import { Compatibility } from '@miniflare/shared';
import { Context } from '@miniflare/shared';

@@ -19,3 +20,3 @@ import { MiniflareError } from '@miniflare/shared';

private runAsModule;
run(globalScope: Context, blueprint: ScriptBlueprint, modulesRules?: ProcessedModuleRule[], additionalModules?: AdditionalModules): Promise<ScriptRunnerResult>;
run(globalScope: Context, blueprint: ScriptBlueprint, modulesRules?: ProcessedModuleRule[], additionalModules?: AdditionalModules, compat?: Compatibility): Promise<ScriptRunnerResult>;
}

@@ -22,0 +23,0 @@

@@ -98,3 +98,2 @@ var __create = Object.create;

var import_fs = __toModule(require("fs"));
var import_promises = __toModule(require("fs/promises"));
var import_module = __toModule(require("module"));

@@ -106,7 +105,9 @@ var import_path = __toModule(require("path"));

var SUGGEST_NODE = "If you're trying to import a Node.js built-in module, or an npm package that uses Node.js built-ins, you'll either need to:\n- Bundle your Worker, configuring your bundler to polyfill Node.js built-ins\n- Configure your bundler to load Workers-compatible builds by changing the main fields/conditions\n- Find an alternative package that doesn't require Node.js built-ins";
var linkingPromises = new WeakMap();
var evaluatingPromises = new WeakMap();
var ModuleLinker = class {
constructor(moduleRules, additionalModules) {
constructor(moduleRules, additionalModules, compat) {
this.moduleRules = moduleRules;
this.additionalModules = additionalModules;
this.linker = this.linker.bind(this);
this.compat = compat;
}

@@ -116,2 +117,3 @@ #referencedPathSizes = new Map();

#cjsModuleCache = new Map();
#namespaceCache = new WeakMap();
get referencedPaths() {

@@ -124,3 +126,3 @@ return this.#referencedPathSizes.keys();

}
async linker(spec, referencing) {
linker = (spec, referencing) => {
const relative = import_path.default.relative("", referencing.identifier);

@@ -154,12 +156,15 @@ const errorBase = `Unable to resolve "${relative}" dependency "${spec}"`;

}
const data = await import_promises.default.readFile(identifier);
const data = (0, import_fs.readFileSync)(identifier);
this.#referencedPathSizes.set(identifier, data.byteLength);
switch (rule.type) {
case "ESModule":
module2 = new import_vm2.default.SourceTextModule(data.toString("utf8"), moduleOptions);
module2 = new import_vm2.default.SourceTextModule(data.toString("utf8"), {
...moduleOptions,
importModuleDynamically: this.importModuleDynamically
});
break;
case "CommonJS":
const exports = this.loadCommonJSModule(errorBase, identifier, spec, referencing.context);
const mod = this.loadCommonJSModule(errorBase, identifier, spec, referencing.context);
module2 = new import_vm2.default.SyntheticModule(["default"], function() {
this.setExport("default", exports);
this.setExport("default", mod.exports);
}, moduleOptions);

@@ -187,13 +192,25 @@ break;

return module2;
}
};
importModuleDynamically = async (spec, referencing) => {
const module2 = this.linker(spec, referencing);
if (module2.status === "unlinked") {
linkingPromises.set(module2, module2.link(this.linker));
}
await linkingPromises.get(module2);
if (module2.status === "linked") {
evaluatingPromises.set(module2, module2.evaluate());
}
await evaluatingPromises.get(module2);
return module2;
};
loadCommonJSModule(errorBase, identifier, spec, context) {
const cached = this.#cjsModuleCache.get(identifier);
if (cached)
return cached.exports;
return cached;
const additionalModule = this.additionalModules[spec];
const module2 = { exports: {} };
if (additionalModule) {
module2.exports.default = additionalModule.default;
module2.exports = additionalModule.default;
this.#cjsModuleCache.set(identifier, module2);
return module2.exports;
return module2;
}

@@ -227,9 +244,9 @@ const rule = this.moduleRules.find((rule2) => rule2.include.test(identifier));

case "Text":
module2.exports.default = data.toString("utf8");
module2.exports = data.toString("utf8");
break;
case "Data":
module2.exports.default = (0, import_shared2.viewToBuffer)(data);
module2.exports = (0, import_shared2.viewToBuffer)(data);
break;
case "CompiledWasm":
module2.exports.default = new WebAssembly.Module(data);
module2.exports = new WebAssembly.Module(data);
break;

@@ -239,3 +256,3 @@ default:

}
return module2.exports;
return module2;
}

@@ -248,3 +265,16 @@ createRequire(referencingIdentifier, context) {

const identifier = import_path.default.resolve(referencingDirname, spec);
return this.loadCommonJSModule(errorBase, identifier, spec, context);
const mod = this.loadCommonJSModule(errorBase, identifier, spec, context);
if (this.compat === void 0 || this.compat.isEnabled("export_commonjs_default")) {
return mod.exports;
} else {
let ns = this.#namespaceCache.get(mod);
if (ns !== void 0)
return ns;
ns = Object.defineProperty({}, "default", {
get: () => mod.exports,
enumerable: true
});
this.#namespaceCache.set(mod, ns);
return ns;
}
};

@@ -268,13 +298,14 @@ }

identifier: blueprint.filePath,
context
context,
importModuleDynamically: linker.importModuleDynamically
});
await module2.link(linker);
await module2.link(linker.linker);
await module2.evaluate();
return module2.namespace;
}
async run(globalScope, blueprint, modulesRules, additionalModules) {
async run(globalScope, blueprint, modulesRules, additionalModules, compat) {
if (modulesRules && !("SourceTextModule" in import_vm3.default)) {
throw new VMScriptRunnerError("ERR_MODULE_DISABLED", "Modules support requires the --experimental-vm-modules flag");
}
const linker = modulesRules && new ModuleLinker(modulesRules, additionalModules ?? {});
const linker = modulesRules && new ModuleLinker(modulesRules, additionalModules ?? {}, compat);
let context = this.context;

@@ -293,3 +324,3 @@ if (context) {

if (linker) {
exports = await this.runAsModule(context, blueprint, linker.linker);
exports = await this.runAsModule(context, blueprint, linker);
} else {

@@ -296,0 +327,0 @@ this.runAsScript(context, blueprint);

{
"name": "@miniflare/runner-vm",
"version": "2.11.0",
"version": "2.12.0",
"description": "VM script runner module for Miniflare: a fun, full-featured, fully-local simulator for Cloudflare Workers",

@@ -38,7 +38,7 @@ "keywords": [

"dependencies": {
"@miniflare/shared": "2.11.0"
"@miniflare/shared": "2.12.0"
},
"devDependencies": {
"@miniflare/shared-test": "2.11.0"
"@miniflare/shared-test": "2.12.0"
}
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc