Skip to content

Commit

Permalink
Merge pull request #1914 from LEGO/feature/msteams
Browse files Browse the repository at this point in the history
Feature/msteams
  • Loading branch information
hipstersmoothie committed May 21, 2021
2 parents 17423a4 + 5fa091a commit 1049d7c
Show file tree
Hide file tree
Showing 18 changed files with 3,180 additions and 4,408 deletions.
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -40,13 +40,14 @@
"postinstall": "patch-package"
},
"devDependencies": {
"@atomictech/rehype-toc": "^3.1.2",
"@atomictech/rehype-toc": "3.1.2",
"@fortawesome/fontawesome-svg-core": "^1.2.27",
"@fortawesome/free-solid-svg-icons": "^5.12.1",
"@fortawesome/react-fontawesome": "^0.1.9",
"@types/jest": "^26.0.0",
"@types/mock-fs": "^4.13.0",
"@types/parse-github-url": "1.0.0",
"@types/tapable": "2.2.2",
"@typescript-eslint/eslint-plugin": "^4.1.1",
"@typescript-eslint/parser": "^4.1.1",
"all-contributors-cli": "^6.4.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Expand Up @@ -68,7 +68,7 @@
"requireg": "^0.2.2",
"semver": "^7.0.0",
"signale": "^1.4.0",
"tapable": "^2.0.0-beta.2",
"tapable": "^2.2.0",
"terminal-link": "^2.1.1",
"tinycolor2": "^1.4.1",
"ts-node": "^9.1.1",
Expand Down
1 change: 1 addition & 0 deletions packages/core/src/__tests__/auto-env.test.ts
@@ -1,6 +1,7 @@
import { Auto } from "../auto";

jest.mock("fs", () => ({
read: () => undefined,
readFileSync: () => 'FOO="test value"',
closeSync: () => undefined,
existsSync: () => true,
Expand Down
4 changes: 4 additions & 0 deletions packages/core/src/__tests__/release.test.ts
Expand Up @@ -123,6 +123,10 @@ jest.mock("fs", () => ({
writeFile: (file, data, cb) => {
cb(undefined, writeSpy(file, data));
},
// @ts-ignore
read: (a, b, cb) => {
cb(undefined);
},
}));

const logParse = new LogParse();
Expand Down
7 changes: 5 additions & 2 deletions packages/core/src/git.ts
Expand Up @@ -164,8 +164,11 @@ export default class Git {
},
});
this.github.hook.error("request", (error) => {
if (error?.headers?.authorization) {
delete error.headers.authorization;
if (error) {
// narrow down the type
if ("headers" in error && error.headers.authorization) {
delete error.headers.authorization;
}
}

throw error;
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/log-parse.ts
Expand Up @@ -20,7 +20,7 @@ export interface IPullRequest {
/** The base branch the pull request is on */
base?: string;
/** The body of the PR (opening comment) */
body?: string;
body?: string | null;
}

export interface ICommit {
Expand Down
4 changes: 4 additions & 0 deletions plugins/brew/__tests__/brew.test.ts
Expand Up @@ -12,6 +12,10 @@ const readFileSync = jest.fn();
const writeFileSync = jest.fn();

jest.mock("fs", () => ({
// @ts-ignore
read: (a, b, cb) => {
cb(undefined);
},
// @ts-ignore
existsSync: (...args) => existsSync(...args),
// @ts-ignore
Expand Down
4 changes: 4 additions & 0 deletions plugins/crates/__tests__/crates.test.ts
Expand Up @@ -51,6 +51,10 @@ jest.mock("fs", () => ({
// @ts-ignore
existsSync: (...args) => existsSync(...args),
// @ts-ignore
read: (a, b, cb) => {
cb(undefined, readResult);
},
// @ts-ignore
readFile: (a, b, cb) => {
cb(undefined, readResult);
},
Expand Down
4 changes: 4 additions & 0 deletions plugins/maven/__tests__/maven.test.ts
Expand Up @@ -30,6 +30,10 @@ jest.mock("fs", () => ({
WriteStream: function () {},
// @ts-ignore
closeSync: () => undefined,
// @ts-ignore
read: (a, b, cb) => {
cb(undefined);
},
}));

jest.mock("child_process");
Expand Down
2 changes: 1 addition & 1 deletion plugins/microsoft-teams/README.md
Expand Up @@ -26,7 +26,7 @@ To generate incoming webhook in microsoft teams, checkout [this blog](https://me
// or
[
"microsoft-teams",
{ "url": "https://url-to-your--hook.com", "atTarget": "username" }
{ "url": "https://url-to-your--hook.com" }
]
// Below: Uses microsoft-teams hook set in process.env.MICROSOFT_TEAMS_WEBHOOK_URL
"microsoft-teams"
Expand Down
20 changes: 9 additions & 11 deletions plugins/microsoft-teams/__tests__/__snapshots__/index.test.ts.snap
@@ -1,21 +1,19 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`createPost should add more indents to nested lists - 2 spaces 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\\\n • Another note\\"}"`;
exports[`createPost should add more indents to nested lists - 2 spaces 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"# My Notes//n- PR [some link](google.com)//n - Another note\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;

exports[`createPost should add more indents to nested lists 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\\\n • Another note\\"}"`;
exports[`createPost should add more indents to nested lists 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"# My Notes//n- PR [some link](google.com)//n - Another note\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;

exports[`createPost should add title 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\"}"`;
exports[`createPost should add title 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"# My Notes//n- PR [some link](google.com)\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;

exports[`createPost should call slack api 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\"}"`;
exports[`createPost should call Microsoft Office Teams api 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"# My Notes//n- PR [some link](google.com)\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;

exports[`createPost should call slack api in env var 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\"}"`;
exports[`createPost should call Microsoft Office Teams api in env var 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"# My Notes//n- PR [some link](google.com)\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;

exports[`createPost should call slack api through http proxy 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\"}"`;
exports[`createPost should call Microsoft Office Teams api through http proxy 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"# My Notes//n- PR [some link](google.com)\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;

exports[`createPost should call slack api through https proxy 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\"}"`;
exports[`createPost should call Microsoft Office Teams api through https proxy 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"# My Notes//n- PR [some link](google.com)\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;

exports[`createPost should call slack api with custom atTarget 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@here: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\"}"`;
exports[`createPost should call Microsoft Office Teams api with minimal config 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"# My Notes//n- PR [some link](google.com)\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;

exports[`createPost should call slack api with minimal config 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\"}"`;

exports[`createPost should remove markdown code types from block 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n\`json\`:\\\\n\\\\n\`\`\`\\\\n{ \\\\\\"foo\\\\\\": \\\\\\"bar\\\\\\" }\`\`\`\\\\n• PR <google.com|some link>\\"}"`;
exports[`createPost should remove markdown code types from block 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"# My Notes//n\`\`\`json//n{ /\\"foo/\\": /\\"bar/\\" }\`\`\`//n- PR [some link](google.com)\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;
@@ -1,5 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`postToMicrosoftTeams should call microsoft-teams api through http proxy 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\"}"`;
exports[`postToMicrosoftTeams should call microsoft-teams api through http proxy 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"*My Notes*\\\\n• PR <google.com|some link>\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;

exports[`postToMicrosoftTeams should call microsoft-teams api with minimal config 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"@channel: New release *<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\\\n*My Notes*\\\\n• PR <google.com|some link>\\"}"`;
exports[`postToMicrosoftTeams should call microsoft-teams api with minimal config 1`] = `"{\\"@context\\":\\"http://schema.org/extensions\\",\\"@type\\":\\"MessageCard\\",\\"text\\":\\"*My Notes*\\\\n• PR <google.com|some link>\\",\\"potentialAction\\":[{\\"@type\\":\\"OpenUri\\",\\"name\\":\\"Learn More\\",\\"targets\\":[{\\"os\\":\\"default\\",\\"uri\\":\\"*<https://git.hub/some/project/releases/v1.0.0|v1.0.0>*\\"}]}]}"`;
59 changes: 30 additions & 29 deletions plugins/microsoft-teams/__tests__/index.test.ts
Expand Up @@ -199,7 +199,7 @@ describe("createPost", () => {
expect(plugin.createPost).toHaveBeenCalledTimes(1);
});

test("should call slack api with minimal config", async () => {
test("should call Microsoft Office Teams api with minimal config", async () => {
const plugin = new MicrosoftTeamsPlugin("https://custom-microsoft-url");

await plugin.createPost(
Expand Down Expand Up @@ -257,7 +257,7 @@ describe("createPost", () => {
expect(fetchSpy.mock.calls[0][1].body).toMatchSnapshot();
});

test("should call slack api through http proxy", async () => {
test("should call Microsoft Office Teams api through http proxy", async () => {
const plugin = new MicrosoftTeamsPlugin("https://custom-microsoft-url");
process.env.http_proxy = "http-proxy";

Expand Down Expand Up @@ -291,7 +291,7 @@ describe("createPost", () => {
expect(fetchSpy.mock.calls[0][1].body).toMatchSnapshot();
});

test("should call slack api through https proxy", async () => {
test("should call Microsoft Office Teams api through https proxy", async () => {
const plugin = new MicrosoftTeamsPlugin("https://custom-microsoft-url");
process.env.https_proxy = "https-proxy";

Expand All @@ -310,7 +310,7 @@ describe("createPost", () => {
expect(fetchSpy.mock.calls[0][1].body).toMatchSnapshot();
});

test("should call slack api", async () => {
test("should call Microsoft Office Teams api", async () => {
const plugin = new MicrosoftTeamsPlugin({ url: "https://custom-microsoft-url" });
const hooks = makeHooks();
plugin.apply({ hooks, options: {}, ...mockAuto } as Auto);
Expand All @@ -331,32 +331,33 @@ describe("createPost", () => {
expect(fetchSpy.mock.calls[0][1].body).toMatchSnapshot();
});

test("should call slack api with custom atTarget", async () => {
const plugin = new MicrosoftTeamsPlugin({
url: "https://custom-microsoft-url",
atTarget: "here",
});
const hooks = makeHooks();
plugin.apply({ hooks, options: {}, ...mockAuto } as Auto);

await hooks.afterRelease.promise({
newVersion: "1.0.0",
lastRelease: "0.1.0",
commits: [makeCommitFromMsg("a patch")],
releaseNotes: "# My Notes\n- PR [some link](google.com)",
// @ts-ignore
response: mockResponse,
});

expect(fetchSpy).toHaveBeenCalled();
expect(fetchSpy.mock.calls[0][0]).toBe(
"https://custom-microsoft-url"
);
expect(fetchSpy.mock.calls[0][1].body.includes("@here")).toBe(true);
expect(fetchSpy.mock.calls[0][1].body).toMatchSnapshot();
});

test("should call slack api in env var", async () => {
// test("should call Microsoft Office Teams api with custom atTarget", async () => {
// const plugin = new MicrosoftTeamsPlugin({
// url: "https://custom-microsoft-url",
// atTarget: "here",
// });
// const hooks = makeHooks();
// plugin.apply({ hooks, options: {}, ...mockAuto } as Auto);

// await hooks.afterRelease.promise({
// newVersion: "1.0.0",
// lastRelease: "0.1.0",
// commits: [makeCommitFromMsg("a patch")],
// releaseNotes: "# My Notes\n- PR [some link](google.com)",
// // @ts-ignore
// response: mockResponse,
// });

// expect(fetchSpy).toHaveBeenCalled();
// expect(fetchSpy.mock.calls[0][0]).toBe(
// "https://custom-microsoft-url"
// );
// expect(fetchSpy.mock.calls[0][1].body.includes("@here")).toBe(true);
// expect(fetchSpy.mock.calls[0][1].body).toMatchSnapshot();
// });

test("should call Microsoft Office Teams api in env var", async () => {
process.env.MICROSOFT_TEAMS_WEBHOOK_URL = "https://foo.bar";
const plugin = new MicrosoftTeamsPlugin();
const hooks = makeHooks();
Expand Down
5 changes: 4 additions & 1 deletion plugins/microsoft-teams/package.json
Expand Up @@ -37,12 +37,15 @@
"test": "jest --maxWorkers=2 --config ../../package.json"
},
"dependencies": {
"@atomist/slack-messages": "~1.2.0",
"@auto-it/core": "link:../../packages/core",
"fp-ts": "^2.5.3",
"https-proxy-agent": "^5.0.0",
"io-ts": "^2.1.2",
"jsesc": "^3.0.2",
"node-fetch": "2.6.1",
"tslib": "2.1.0"
},
"devDependencies": {
"@types/jsesc": "^2.5.1"
}
}
54 changes: 23 additions & 31 deletions plugins/microsoft-teams/src/index.ts
@@ -1,4 +1,4 @@
import { githubToSlack } from "@atomist/slack-messages";
import jsesc from "jsesc";
import createHttpsProxyAgent, { HttpsProxyAgent } from "https-proxy-agent";

import {
Expand All @@ -10,31 +10,8 @@ import {
import fetch from "node-fetch";
import * as t from "io-ts";

const MARKDOWN_LANGUAGE = /^(```)(\S+)$/m;

/** Transform markdown into slack friendly text */
export const sanitizeMarkdown = (markdown: string) =>
githubToSlack(markdown)
.split("\n")
.map((line) => {
// Strip out the ### prefix and replace it with *<word>* to make it bold
if (line.startsWith("#")) {
return `*${line.replace(/^[#]+/, "")}*`;
}

// Give extra padding to nested lists
if (line.match(/^\s+•/)) {
return line.replace(/^\s+•/, " •");
}

// Strip markdown code block type. Slack does not render them correctly.
if (line.match(MARKDOWN_LANGUAGE)) {
return line.replace(MARKDOWN_LANGUAGE, "`$2`:\n\n$1");
}

return line;
})
.join("\n");
/** Microsoft Teams accepts markdown, as long as the content was escaped/serialized to a JSON string first */
export const sanitizeMarkdown = (markdown: string) => jsesc(markdown);

const pluginOptions = t.partial({
/** URL of the mircosoft teams to post to */
Expand All @@ -49,7 +26,7 @@ const pluginOptions = t.partial({

export type IMicrosoftTeamsPluginOptions = t.TypeOf<typeof pluginOptions>;

/** Post your release notes to Slack during `auto release` */
/** Post your release notes to Microsoft Teams during `auto release` */
export default class MicrosoftTeamsPlugin {
/** The name of the plugin */
name = "microsoft-teams";
Expand All @@ -65,7 +42,7 @@ export default class MicrosoftTeamsPlugin {
this.options = {
...options,
url: process.env.MICROSOFT_TEAMS_WEBHOOK_URL || options.url || "",
atTarget: options.atTarget ? options.atTarget : "channel",
atTarget: options.atTarget,
publishPreRelease: options.publishPreRelease
? options.publishPreRelease
: false,
Expand Down Expand Up @@ -137,6 +114,7 @@ export default class MicrosoftTeamsPlugin {
(Array.isArray(response) && response) ||
(response && [response]) ||
[];

const urls = releases.map(
(release) =>
`*<${release.data.html_url}|${
Expand All @@ -157,7 +135,7 @@ export default class MicrosoftTeamsPlugin {
);
}

/** Post the release notes to slack */
/** Post the release notes to Microsoft Teams */
async createPost(
auto: Auto,
releaseNotes: string,
Expand All @@ -170,14 +148,28 @@ export default class MicrosoftTeamsPlugin {

auto.logger.verbose.info("Posting release notes to microsoft teams.");

const atTarget = this.options.atTarget ? `@${this.options.atTarget}: ` : "";
// TODO: @mentions don't work in teams - yet
// https://microsoftteams.uservoice.com/forums/555103-public/suggestions/17153099-webhook-needs-to-support-forced-notification-a-la
// const atTarget = this.options.atTarget ? `@${this.options.atTarget}: ` : "";

await fetch(`${this.options.url}`, {
method: "POST",
body: JSON.stringify({
"@context": "http://schema.org/extensions",
"@type": "MessageCard",
text: [`${atTarget}New release ${releaseUrl}`, releaseNotes].join("\n"),
text: releaseNotes,
potentialAction: [
{
"@type": "OpenUri",
name: "Learn More",
targets: [
{
os: "default",
uri: releaseUrl,
},
],
},
],
}),
headers: { "Content-Type": "application/json" },
agent,
Expand Down
4 changes: 4 additions & 0 deletions plugins/npm/__tests__/monorepo-log.test.ts
Expand Up @@ -34,6 +34,10 @@ jest.mock("fs", () => ({
readFile: jest.fn(),
// @ts-ignore
readFileSync: () => readFileSync(),
// @ts-ignore
read: (a, b, cb) => {
cb(undefined);
},
ReadStream: function () {},
WriteStream: function () {},
// @ts-ignore
Expand Down
2 changes: 1 addition & 1 deletion scripts/jest-setup.js
@@ -1,3 +1,3 @@
require("mock-fs");

jest.mock('requireg', () => require);
jest.mock('requireg', () => require);

0 comments on commit 1049d7c

Please sign in to comment.