edge-mock
Version:
types for testing an developer edge applications
70 lines • 3.26 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeEdgeEnv = exports.EdgeEnv = exports.EdgeKVNamespace = exports.stub_fetch = exports.EdgeReadableStream = exports.EdgeHeaders = exports.EdgeFetchEvent = exports.EdgeResponse = exports.EdgeFormData = exports.EdgeFile = exports.EdgeBlob = exports.EdgeRequest = void 0;
const models_1 = require("./models");
Object.defineProperty(exports, "EdgeRequest", { enumerable: true, get: function () { return models_1.EdgeRequest; } });
Object.defineProperty(exports, "EdgeBlob", { enumerable: true, get: function () { return models_1.EdgeBlob; } });
Object.defineProperty(exports, "EdgeFile", { enumerable: true, get: function () { return models_1.EdgeFile; } });
Object.defineProperty(exports, "EdgeFormData", { enumerable: true, get: function () { return models_1.EdgeFormData; } });
Object.defineProperty(exports, "EdgeResponse", { enumerable: true, get: function () { return models_1.EdgeResponse; } });
Object.defineProperty(exports, "EdgeFetchEvent", { enumerable: true, get: function () { return models_1.EdgeFetchEvent; } });
Object.defineProperty(exports, "EdgeHeaders", { enumerable: true, get: function () { return models_1.EdgeHeaders; } });
Object.defineProperty(exports, "EdgeReadableStream", { enumerable: true, get: function () { return models_1.EdgeReadableStream; } });
const stub_fetch_1 = __importDefault(require("./stub_fetch"));
exports.stub_fetch = stub_fetch_1.default;
var kv_namespace_1 = require("./kv_namespace");
Object.defineProperty(exports, "EdgeKVNamespace", { enumerable: true, get: function () { return kv_namespace_1.EdgeKVNamespace; } });
class EdgeEnv {
listener = null;
constructor() {
this.addEventListener = this.addEventListener.bind(this);
this.getListener = this.getListener.bind(this);
}
getListener() {
if (this.listener) {
return this.listener;
}
else {
throw new Error('FetchEvent listener not yet added via addEventListener');
}
}
addEventListener(type, listener) {
if (type != 'fetch') {
throw new Error(`only "fetch" events are supported, not "${type}"`);
}
this.listener = listener;
}
clearEventListener() {
this.listener = null;
}
dispatchEvent(event) {
if (this.listener) {
this.listener(event);
}
else {
throw new Error('no event listener added');
}
}
}
exports.EdgeEnv = EdgeEnv;
const mock_types = {
Request: models_1.EdgeRequest,
Response: models_1.EdgeResponse,
FetchEvent: models_1.EdgeFetchEvent,
Headers: models_1.EdgeHeaders,
Blob: models_1.EdgeBlob,
File: models_1.EdgeFile,
FormData: models_1.EdgeFormData,
ReadableStream: models_1.EdgeReadableStream,
fetch: stub_fetch_1.default,
};
function makeEdgeEnv(extra = {}) {
const env = new EdgeEnv();
Object.assign(global, mock_types, { addEventListener: env.addEventListener }, extra);
return env;
}
exports.makeEdgeEnv = makeEdgeEnv;
//# sourceMappingURL=index.js.map