Skip to content

Instantly share code, notes, and snippets.

@ArtemAvramenko
Last active December 30, 2024 14:39
Show Gist options
  • Save ArtemAvramenko/aafa156df5a2f8956245 to your computer and use it in GitHub Desktop.
Save ArtemAvramenko/aafa156df5a2f8956245 to your computer and use it in GitHub Desktop.

Revisions

  1. ArtemAvramenko revised this gist Dec 30, 2024. 1 changed file with 9 additions and 7 deletions.
    16 changes: 9 additions & 7 deletions shamExports.ts
    Original file line number Diff line number Diff line change
    @@ -1,18 +1,20 @@
    var module: { exports };
    // https://stackoverflow.com/a/31930918/5171110

    var module: { exports: any };
    var exports = {
    sham: (() => {
    var sham = <{
    (moduleName: string): void;
    modules: { [moduleName: string]: { exports } };
    }>(moduleName => {
    var sham = ((moduleName: string) => {
    exports = { sham };
    module = sham.modules[moduleName] = { exports };
    });
    }) as {
    (moduleName: string): void;
    modules: { [moduleName: string]: { exports: any } };
    };
    sham.modules = {};
    return sham;
    })()
    };
    var require = function (oldRequire: (moduleName: string) => any) {
    return (moduleName: string) =>
    exports.sham.modules[moduleName].exports || oldRequire(moduleName);
    } (require);
    } (require!);
  2. ArtemAvramenko revised this gist Aug 10, 2015. 1 changed file with 2 additions and 3 deletions.
    5 changes: 2 additions & 3 deletions shamExports.ts
    Original file line number Diff line number Diff line change
    @@ -13,7 +13,6 @@ var exports = {
    })()
    };
    var require = function (oldRequire: (moduleName: string) => any) {
    return (moduleName: string) => {
    return exports.sham.modules[moduleName].exports || oldRequire(moduleName);
    }
    return (moduleName: string) =>
    exports.sham.modules[moduleName].exports || oldRequire(moduleName);
    } (require);
  3. ArtemAvramenko revised this gist Aug 10, 2015. 1 changed file with 5 additions and 3 deletions.
    8 changes: 5 additions & 3 deletions shamExports.ts
    Original file line number Diff line number Diff line change
    @@ -12,6 +12,8 @@ var exports = {
    return sham;
    })()
    };
    function require(moduleName: string) {
    return exports.sham.modules[moduleName].exports;
    }
    var require = function (oldRequire: (moduleName: string) => any) {
    return (moduleName: string) => {
    return exports.sham.modules[moduleName].exports || oldRequire(moduleName);
    }
    } (require);
  4. ArtemAvramenko revised this gist Aug 2, 2015. No changes.
  5. ArtemAvramenko revised this gist Jul 29, 2015. 1 changed file with 3 additions and 4 deletions.
    7 changes: 3 additions & 4 deletions shamExports.ts
    Original file line number Diff line number Diff line change
    @@ -1,13 +1,12 @@
    var module: (...any) => any;
    var module: { exports };
    var exports = {
    sham: (() => {
    var sham = <{
    (moduleName: string): void;
    modules: { [mouduleName: string]: { exports: any } };
    modules: { [moduleName: string]: { exports } };
    }>(moduleName => {
    exports = { sham };
    var m = sham.modules[moduleName] = { exports };
    module = <any>m;
    module = sham.modules[moduleName] = { exports };
    });
    sham.modules = {};
    return sham;
  6. ArtemAvramenko created this gist Jul 28, 2015.
    18 changes: 18 additions & 0 deletions shamExports.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    var module: (...any) => any;
    var exports = {
    sham: (() => {
    var sham = <{
    (moduleName: string): void;
    modules: { [mouduleName: string]: { exports: any } };
    }>(moduleName => {
    exports = { sham };
    var m = sham.modules[moduleName] = { exports };
    module = <any>m;
    });
    sham.modules = {};
    return sham;
    })()
    };
    function require(moduleName: string) {
    return exports.sham.modules[moduleName].exports;
    }