From bc7fe9023d13510dbf61348b5793436c24a19b29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Fri, 17 May 2019 23:26:42 +0200 Subject: [PATCH] [REM] utils: remove patch/unpatch They are out of the scope for Owl. --- src/utils.ts | 53 --------------------------------------- tests/utils.test.ts | 60 +-------------------------------------------- 2 files changed, 1 insertion(+), 112 deletions(-) diff --git a/src/utils.ts b/src/utils.ts index 2f4567fc..fdb9d01a 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -8,8 +8,6 @@ * - loadTemplates * - escape * - debounce - * - patch - * - unpatch */ export function whenReady(fn) { @@ -99,54 +97,3 @@ export function debounce( } }; } - -export function patch(C: any, patchName: string, patch: any) { - const proto = C.prototype; - if (!proto.__patches) { - proto.__patches = { - origMethods: {}, - patches: {}, - current: [] - }; - } - if (proto.__patches.patches[patchName]) { - throw new Error(`Patch [${patchName}] already exists`); - } - proto.__patches.patches[patchName] = patch; - applyPatch(proto, patch); - proto.__patches.current.push(patchName); - - function applyPatch(proto, patch) { - Object.keys(patch).forEach(function(methodName) { - const method = patch[methodName]; - if (typeof method === "function") { - const original = proto[methodName]; - if (!(methodName in proto.__patches.origMethods)) { - proto.__patches.origMethods[methodName] = original; - } - proto[methodName] = function(...args) { - this._super = original; - return method.call(this, ...args); - }; - } - }); - } -} - -export function unpatch(C: any, patchName: string) { - const proto = C.prototype; - const patchInfo = proto.__patches; - delete proto.__patches; - - // reset to original - for (let k in patchInfo.origMethods) { - proto[k] = patchInfo.origMethods[k]; - } - - // apply other patches - for (let name of patchInfo.current) { - if (name !== patchName) { - patch(C, name, patchInfo.patches[name]); - } - } -} diff --git a/tests/utils.test.ts b/tests/utils.test.ts index 9515d6c4..4542d9e7 100644 --- a/tests/utils.test.ts +++ b/tests/utils.test.ts @@ -1,9 +1,4 @@ -import { - escape, - debounce, - patch, - unpatch -} from "../src/utils"; +import { escape, debounce } from "../src/utils"; describe("escape", () => { test("normal strings", () => { @@ -33,56 +28,3 @@ describe("debounce", () => { expect(n).toBe(1); }); }); - -describe("patch/unpatch", () => { - test("can monkey patch a class", () => { - class Test { - n = 1; - - doSomething(): string { - return "hey"; - } - } - - patch(Test, "some_custo", { - doSomething(): string { - this.n = this.n + 1; - return this._super(); - } - }); - - const t = new Test(); - expect(t.n).toBe(1); - expect(t.doSomething()).toBe("hey"); - expect(t.n).toBe(2); - }); - - test("cannot patch a class twice with same patch name", () => { - class Test {} - - patch(Test, "some_custo", {}); - expect(() => { - patch(Test, "some_custo", {}); - }).toThrow(); - }); - - test("can unpatch a class", () => { - class Test { - doSomething(): number { - return 1; - } - } - - patch(Test, "some_custo", { - doSomething(): number { - return this._super() + 2; - } - }); - - const t = new Test(); - expect(t.doSomething()).toBe(3); - - unpatch(Test, "some_custo"); - expect(t.doSomething()).toBe(1); - }); -});