Compare commits

..
Author SHA1 Message Date
semantic-release-bot 9c79b293d8 chore: 2.0.0
## @config-plugins/ffmpeg-kit-react-native [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-30)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-05-30 21:27:42 +00:00
evanbacon 77eb67c5b6 Publish @config-plugins/[email protected] 2022-05-30 16:24:03 -05:00
Evan Bacon 190c489b76 fix(ios-stickers): fix app icon generation (#82) 2022-05-27 16:46:49 -05:00
semantic-release-bot 6c898afd0e chore: 2.0.0
## @config-plugins/react-native-ble-plx [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-27)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-05-27 15:20:49 +00:00
evanbacon b55b04d5fd Update issue template with branch 2022-05-27 10:17:47 -05:00
evanbacon 0c7b413a76 chore: publish packages [no-ci] 2022-05-13 12:10:38 -05:00
29 changed files with 243 additions and 199 deletions

No files matched your search

+2 -1
View File
@@ -1,4 +1,4 @@
name: "\U0001F41B Expo Config Plugin Bug Report"
name: 🐛 Expo Config Plugin Bug Report
description: Report a reproducible bug with one of the Expo Config Plugins.
labels: bug
body:
@@ -36,6 +36,7 @@ body:
- '@config-plugins/react-native-adjust'
- '@config-plugins/react-native-ble-plx'
- '@config-plugins/react-native-blob-util'
- '@config-plugins/react-native-branch'
- '@config-plugins/react-native-callkeep'
- '@config-plugins/react-native-dynamic-app-icon'
- '@config-plugins/react-native-google-cast'
+24 -24
View File
@@ -1,44 +1,44 @@
---
blank_issues_enabled: false
contact_links:
- name: "\U0001F914 Question about an Expo Config Plugin"
- name: 🤔 Question about an Expo Config Plugin
about: >-
If you have a question about an Expo Config Plugin, please ask it on the
forums, discord, Twitter, or Stack Overflow.
url: 'https://forums.expo.io/'
url: https://forums.expo.io/
- about: E2E tests and automation for mobile
name: "\U0001F4E6 detox issues"
url: 'https://github.com/wix/Detox/issues'
name: 📦 detox issues
url: https://github.com/wix/Detox/issues
- about: FFmpeg Kit for React Native
name: "\U0001F4E6 ffmpeg-kit-react-native issues"
url: 'https://github.com/tanersener/ffmpeg-kit/issues'
name: 📦 ffmpeg-kit-react-native issues
url: https://github.com/tanersener/ffmpeg-kit/issues
- about: Adjust React Native SDK
name: "\U0001F4E6 react-native-adjust issues"
url: 'https://github.com/adjust/react_native_sdk/issues'
name: 📦 react-native-adjust issues
url: https://github.com/adjust/react_native_sdk/issues
- about: React Native Bluetooth Low Energy library
name: "\U0001F4E6 react-native-ble-plx issues"
url: 'https://github.com/Polidea/react-native-ble-plx/issues'
name: 📦 react-native-ble-plx issues
url: https://github.com/Polidea/react-native-ble-plx/issues
- about: >-
A module provides upload, download, and files access API. Supports file
stream read/write for process large files.
name: "\U0001F4E6 react-native-blob-util issues"
url: 'https://github.com/RonRadtke/react-native-blob-util/issues'
name: 📦 react-native-blob-util issues
url: https://github.com/RonRadtke/react-native-blob-util/issues
- about: iOS 10 CallKit and Android ConnectionService Framework For React Native
name: "\U0001F4E6 react-native-callkeep issues"
url: 'https://github.com/react-native-webrtc/react-native-callkeep/issues'
name: 📦 react-native-callkeep issues
url: https://github.com/react-native-webrtc/react-native-callkeep/issues
- about: Programmatically change the app icon in React Native.
name: "\U0001F4E6 react-native-dynamic-app-icon issues"
url: 'https://github.com/idearockers/react-native-dynamic-app-icon/issues'
name: 📦 react-native-dynamic-app-icon issues
url: https://github.com/idearockers/react-native-dynamic-app-icon/issues
- about: React Native wrapper for the Google Cast SDK for iOS and Android
name: "\U0001F4E6 react-native-google-cast issues"
name: 📦 react-native-google-cast issues
url: >-
https://github.com/react-native-google-cast/react-native-google-cast/issues
- about: 'A react native PDF view component, support ios and android platform'
name: "\U0001F4E6 react-native-pdf issues"
url: 'https://github.com/wonday/react-native-pdf/issues'
- about: A react native PDF view component, support ios and android platform
name: 📦 react-native-pdf issues
url: https://github.com/wonday/react-native-pdf/issues
- about: A react-native interface for Touch 3D home screen quick actions
name: "\U0001F4E6 react-native-quick-actions issues"
url: 'https://github.com/jordanbyron/react-native-quick-actions/issues'
name: 📦 react-native-quick-actions issues
url: https://github.com/jordanbyron/react-native-quick-actions/issues
- about: WebRTC for React Native
name: "\U0001F4E6 react-native-webrtc issues"
url: 'https://github.com/react-native-webrtc/react-native-webrtc/issues'
name: 📦 react-native-webrtc issues
url: https://github.com/react-native-webrtc/react-native-webrtc/issues
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/detox",
"version": "1.2.3",
"version": "2.0.0",
"description": "Config plugin to auto configure detox on prebuild",
"main": "build/withDetox.js",
"types": "build/withDetox.d.ts",
@@ -1,3 +1,19 @@
## @config-plugins/ffmpeg-kit-react-native [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-30)
### ⚠ BREAKING CHANGES
* add SDK 45 support (#79)
### Features
* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))
### Other chores
* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
### @config-plugins/ffmpeg-kit-react-native [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/ffmpeg-kit-react-native",
"version": "1.0.3",
"version": "2.0.0",
"description": "Config plugin to auto configure FFMPEG on prebuild",
"main": "build/withFFMPEG.js",
"types": "build/withFFMPEG.d.ts",
@@ -0,0 +1,8 @@
export const generateImageAsync = jest.fn(async (input: any, { src }) => {
const fs = require("fs");
return { source: fs.readFileSync(src) };
});
export const compositeImagesAsync = jest.fn(async ({ foreground }) => {
return foreground;
});
+2
View File
@@ -0,0 +1,2 @@
import { fs } from 'memfs';
module.exports = fs;
+3 -3
View File
@@ -8,7 +8,7 @@ const config_plugins_1 = require("@expo/config-plugins");
const image_utils_1 = require("@expo/image-utils");
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const withStickerIcon_1 = require("./withStickerIcon");
const generateImessageIconsAsync_1 = require("./generateImessageIconsAsync");
const withStickerXcodeTarget_1 = require("./withStickerXcodeTarget");
const STICKERS_ROOT_PATH = "Stickers.xcassets";
const IMESSAGE_APP_ICON_PATH = "Stickers.xcassets/iMessage App Icon.stickersiconset";
@@ -70,13 +70,13 @@ const withStickerAssets = (config, { stickers, icon, size }) => {
const iMessageAppIconsPath = path_1.default.join(stickerRootPath, IMESSAGE_APP_ICON_PATH);
// Only generate icons if an icon is defined
const imessageIconContents = icon
? await withStickerIcon_1.generateImessageIconsAsync(config.modRequest.projectRoot, icon, iMessageAppIconsPath)
? await generateImessageIconsAsync_1.generateImessageIconsAsync(config.modRequest.projectRoot, icon, iMessageAppIconsPath)
: [];
const iMessageAppIconContentsJsonPath = path_1.default.join(iMessageAppIconsPath, "Contents.json");
fs_1.default.mkdirSync(iMessageAppIconsPath, {
recursive: true,
});
fs_1.default.writeFileSync(iMessageAppIconContentsJsonPath, JSON.stringify({ info: defaultInfo, images: imessageIconContents }, null, 2));
fs_1.default.writeFileSync(iMessageAppIconContentsJsonPath, JSON.stringify({ images: imessageIconContents, info: defaultInfo }, null, 2));
const stickerPackContentsPath = path_1.default.join(stickerRootPath, STICKER_PACK_PATH);
const stickersContents = {
info: defaultInfo,
-15
View File
@@ -1,15 +0,0 @@
export declare type ContentsJsonImageIdiom = "iphone" | "ipad" | "ios-marketing" | "universal";
export declare type ContentsJsonImageAppearance = {
appearance: "luminosity";
value: "dark";
};
export declare type ContentsJsonImageScale = "1x" | "2x" | "3x";
export interface ContentsJsonImage {
appearances?: ContentsJsonImageAppearance[];
idiom: ContentsJsonImageIdiom;
size?: string;
scale: ContentsJsonImageScale;
filename?: string;
platform?: string;
}
export declare function generateImessageIconsAsync(projectRoot: string, icon: string, iconsPath: string): Promise<ContentsJsonImage[]>;
-130
View File
@@ -1,130 +0,0 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateImessageIconsAsync = void 0;
const image_utils_1 = require("@expo/image-utils");
const fs_1 = __importDefault(require("fs"));
const path_1 = require("path");
const IMAGE_CACHE_NAME = "ios-stickers-icons";
// Hard-coding seemed like the clearest and safest way to implement the sizes.
const ICON_CONTENTS = [
{
idiom: "iphone",
sizes: [
{
size: 29,
scales: [2, 3],
},
{
size: [60, 45],
scales: [2, 3],
},
],
},
{
idiom: "ipad",
sizes: [
{
size: 29,
scales: [2],
},
{
size: [67, 50],
scales: [2],
},
{
size: [74, 55],
scales: [2],
},
],
},
{
idiom: "universal",
sizes: [
{
platform: "ios",
size: [27, 20],
scales: [2, 3],
},
{
platform: "ios",
size: [32, 24],
scales: [2, 3],
},
],
},
{
idiom: "ios-marketing",
sizes: [
{
platform: "ios",
size: 1024,
scales: [1],
},
{
size: [1024, 768],
scales: [1],
},
],
},
];
async function generateImessageIconsAsync(projectRoot, icon, iconsPath) {
// Ensure the Images.xcassets/AppIcon.appiconset path exists
fs_1.default.mkdirSync(iconsPath, { recursive: true });
// Store the image JSON data for assigning via the Contents.json
const imagesJson = [];
// keep track of icons that have been generated so we can reuse them in the Contents.json
const generatedIcons = {};
for (const platform of ICON_CONTENTS) {
// const isMarketing = platform.idiom === 'ios-marketing';
for (const { size, scales, ...rest } of platform.sizes) {
for (const scale of scales) {
// The marketing icon is special because it makes no sense.
const filename = getAppleIconName(size, scale, platform.idiom);
// Only create an image that hasn't already been generated.
const [width, height] = Array.isArray(size) ? size : [size, size];
if (!(filename in generatedIcons)) {
const iconWSizePx = width * scale;
const iconHSizePx = height * scale;
// Using this method will cache the images in `.expo` based on the properties used to generate them.
// this method also supports remote URLs and using the global sharp instance.
const { source } = await image_utils_1.generateImageAsync({ projectRoot, cacheType: IMAGE_CACHE_NAME }, {
src: icon,
name: filename,
width: iconWSizePx,
height: iconHSizePx,
removeTransparency: true,
// The icon should be square, but if it's not then it will be cropped.
resizeMode: "cover",
// Force the background color to solid white to prevent any transparency.
// TODO: Maybe use a more adaptive option based on the icon color?
backgroundColor: "#ffffff",
});
// Write image buffer to the file system.
const assetPath = path_1.join(iconsPath, filename);
await fs_1.default.promises.writeFile(assetPath, source);
// Save a reference to the generated image so we don't create a duplicate.
generatedIcons[filename] = true;
}
imagesJson.push({
idiom: platform.idiom,
size: `${width}x${height}`,
// @ts-ignore: template types not supported in TS yet
scale: `${scale}x`,
filename,
});
if (rest.platform) {
imagesJson[imagesJson.length - 1].platform = rest.platform;
}
}
}
}
return imagesJson;
}
exports.generateImessageIconsAsync = generateImessageIconsAsync;
function getAppleIconName(size, scale, idiom) {
const [width, height] = Array.isArray(size) ? size : [size, size];
return `App-Icon-${idiom}-${width}x${height}@${scale}x.png`;
}
+12 -1
View File
@@ -1 +1,12 @@
module.exports = require('expo-module-scripts/jest-preset-plugin');
const path = require("path");
const roots = ["__mocks__", "src"];
module.exports = {
...require("expo-module-scripts/jest-preset-plugin"),
rootDir: path.resolve(__dirname),
displayName: require("./package").name,
roots,
setupFiles: ["<rootDir>/jest/setup.js"],
clearMocks: true,
};
+2
View File
@@ -0,0 +1,2 @@
jest.mock("@expo/image-utils");
jest.mock("fs");
+6 -2
View File
@@ -1,10 +1,13 @@
{
"name": "@config-plugins/ios-stickers",
"version": "2.0.0",
"version": "2.0.1",
"description": "Config plugin to auto configure iOS iMessage stickers",
"main": "build/withStickerPack.js",
"types": "build/withStickerPack.d.ts",
"sideEffects": false,
"files": [
"build"
],
"repository": {
"type": "git",
"url": "https://github.com/expo/config-plugins.git",
@@ -30,6 +33,7 @@
"xcode": "^3.0.1"
},
"devDependencies": {
"expo-module-scripts": "^2.0.0"
"expo-module-scripts": "^2.0.0",
"memfs": "^2.15.5"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 80 B

@@ -0,0 +1,111 @@
import { generateImageAsync } from "@expo/image-utils";
import fs from "fs";
import { vol } from "memfs";
import path from "path";
import { generateImessageIconsAsync } from "../generateImessageIconsAsync";
const fsReal = jest.requireActual("fs") as typeof fs;
describe(generateImessageIconsAsync, () => {
it(`should generate imessage icons`, async () => {
vol.fromJSON({}, "/");
await fs.promises.writeFile(
"/icon.png",
await fsReal.promises.readFile(path.join(__dirname, "fixtures/icon.png"))
);
const contents = await generateImessageIconsAsync(
"/",
"/icon.png",
"/output"
);
expect(generateImageAsync).toHaveBeenCalledTimes(13);
expect(contents).toEqual([
{
filename: "[email protected]",
idiom: "iphone",
scale: "2x",
size: "29x29",
},
{
filename: "[email protected]",
idiom: "iphone",
scale: "3x",
size: "29x29",
},
{
filename: "[email protected]",
idiom: "iphone",
scale: "2x",
size: "60x45",
},
{
filename: "[email protected]",
idiom: "iphone",
scale: "3x",
size: "60x45",
},
{
filename: "[email protected]",
idiom: "ipad",
scale: "2x",
size: "29x29",
},
{
filename: "[email protected]",
idiom: "ipad",
scale: "2x",
size: "67x50",
},
{
filename: "[email protected]",
idiom: "ipad",
scale: "2x",
size: "74x55",
},
{
filename: "[email protected]",
idiom: "universal",
platform: "ios",
scale: "2x",
size: "27x20",
},
{
filename: "[email protected]",
idiom: "universal",
platform: "ios",
scale: "3x",
size: "27x20",
},
{
filename: "[email protected]",
idiom: "universal",
platform: "ios",
scale: "2x",
size: "32x24",
},
{
filename: "[email protected]",
idiom: "universal",
platform: "ios",
scale: "3x",
size: "32x24",
},
{
filename: "[email protected]",
idiom: "ios-marketing",
scale: "1x",
size: "1024x1024",
},
{
filename: "[email protected]",
idiom: "ios-marketing",
platform: "ios",
scale: "1x",
size: "1024x768",
},
]);
});
});
@@ -86,12 +86,11 @@ const ICON_CONTENTS: {
idiom: "ios-marketing",
sizes: [
{
platform: "ios",
size: 1024,
scales: [1],
},
{
platform: "ios",
size: [1024, 768],
scales: [1],
},
@@ -148,15 +147,16 @@ export async function generateImessageIconsAsync(
// Save a reference to the generated image so we don't create a duplicate.
generatedIcons[filename] = true;
}
imagesJson.push({
idiom: platform.idiom as ContentsJsonImageIdiom,
size: `${width}x${height}`,
// @ts-ignore: template types not supported in TS yet
scale: `${scale}x`,
const imgJson: ContentsJsonImage = {
filename,
});
idiom: platform.idiom as ContentsJsonImageIdiom,
scale: `${scale}x`,
size: `${width}x${height}`,
};
// This order closely matches Xcode formatting.
imagesJson.push(imgJson);
if (rest.platform) {
imagesJson[imagesJson.length - 1].platform = rest.platform;
imgJson.platform = rest.platform;
}
}
}
@@ -3,7 +3,7 @@ import { generateImageAsync } from "@expo/image-utils";
import fs from "fs";
import path from "path";
import { generateImessageIconsAsync } from "./withStickerIcon";
import { generateImessageIconsAsync } from "./generateImessageIconsAsync";
import { getProjectStickersName } from "./withStickerXcodeTarget";
const STICKERS_ROOT_PATH = "Stickers.xcassets";
@@ -136,7 +136,7 @@ export const withStickerAssets: ConfigPlugin<{
fs.writeFileSync(
iMessageAppIconContentsJsonPath,
JSON.stringify(
{ info: defaultInfo, images: imessageIconContents },
{ images: imessageIconContents, info: defaultInfo },
null,
2
)
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-adjust",
"version": "1.0.3",
"version": "2.0.0",
"description": "Config plugin to auto configure Adjust SDK on prebuild",
"main": "build/withReactNativeAdjust.js",
"types": "build/withReactNativeAdjust.d.ts",
@@ -1,3 +1,19 @@
## @config-plugins/react-native-ble-plx [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-27)
### ⚠ BREAKING CHANGES
* add SDK 45 support (#79)
### Features
* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))
### Other chores
* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
### @config-plugins/react-native-ble-plx [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-09)
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-ble-plx",
"version": "1.0.3",
"version": "2.0.0",
"description": "Config plugin to auto configure react-native-ble-plx on prebuild",
"main": "build/withBLE.js",
"types": "build/withBLE.d.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-blob-util",
"version": "1.0.3",
"version": "2.0.0",
"description": "Config plugin to auto configure react-native-blob-util on prebuild",
"main": "build/withReactNativeBlobUtil.js",
"types": "build/withReactNativeBlobUtil.d.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-branch",
"version": "1.0.2",
"version": "2.0.0",
"description": "Config plugin to auto configure react-native-branch on prebuild",
"author": "650 Industries, Inc.",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-callkeep",
"version": "1.0.3",
"version": "2.0.0",
"description": "Config plugin to auto configure callkeep on prebuild",
"main": "build/withCallkeep.js",
"types": "build/withCallkeep.d.ts",
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-dynamic-app-icon",
"version": "1.0.3",
"version": "2.0.0",
"description": "Config plugin to auto configure react-native-dynamic-app-icon",
"main": "build/index.js",
"types": "build/index.d.ts",
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-google-cast",
"version": "1.0.3",
"version": "2.0.0",
"description": "Config plugin to auto configure Google Cast on prebuild",
"main": "build/withGoogleCast.js",
"types": "build/withGoogleCast.d.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-pdf",
"version": "1.0.2",
"version": "2.0.0",
"description": "Config plugin to auto configure react-native-pdf on prebuild",
"main": "build/withPdf.js",
"types": "build/withPdf.d.ts",
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-quick-actions",
"version": "1.0.2",
"version": "2.0.0",
"description": "Config plugin for react-native-quick-actions package",
"main": "build/withReactNativeQuickActions.js",
"types": "build/withReactNativeQuickActions.d.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-webrtc",
"version": "2.1.1",
"version": "3.0.0",
"description": "Config plugin to setup react-native-webrtc on prebuild",
"main": "build/withWebRTC.js",
"types": "build/withWebRTC.d.ts",
+18
View File
@@ -9060,6 +9060,11 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
[email protected]:
version "0.0.2"
resolved "https://registry.yarnpkg.com/fast-extend/-/fast-extend-0.0.2.tgz#f5ec42cf40b9460f521a6387dfb52deeed671dbd"
integrity sha1-9exCz0C5Rg9SGmOH37Ut7u1nHb0=
fast-glob@^2.2.6:
version "2.2.7"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
@@ -9532,6 +9537,11 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0:
dependencies:
minipass "^3.0.0"
fs-monkey@^0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-0.3.3.tgz#7960bb2b1fa2653731b9d0e2e84812a7e8b3664a"
integrity sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw==
fs-readdir-recursive@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
@@ -13566,6 +13576,14 @@ [email protected]:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
memfs@^2.15.5:
version "2.17.1"
resolved "https://registry.yarnpkg.com/memfs/-/memfs-2.17.1.tgz#bfcc11b6308214b4fb33eaca101132722d22e103"
integrity sha512-4kAcqibPAd8DN8/UIW/6OwvbhNq6MqwsQ0pxjo+2ZmxPlQAbn9TAepnRpdeYfw4Qq0Y+QqwE6wngLUowo2fcjg==
dependencies:
fast-extend "0.0.2"
fs-monkey "^0.3.3"
memory-cache@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/memory-cache/-/memory-cache-0.2.0.tgz#7890b01d52c00c8ebc9d533e1f8eb17e3034871a"