From cde47783b93c195d7e1da16795dfe2161917a534 Mon Sep 17 00:00:00 2001 From: Robert Jackson Date: Sat, 7 Oct 2017 17:30:47 -0400 Subject: [PATCH] Remove functionality to defer to ember-qunit API. --- addon-test-support/ember-cli-qunit.js | 140 +--------------- config/ember-try.js | 36 ++-- index.js | 154 +----------------- package.json | 20 +-- templates/test-body.html | 6 - vendor/ember-cli-qunit/images/failed.png | Bin 26702 -> 0 bytes vendor/ember-cli-qunit/images/passed.png | Bin 16445 -> 0 bytes vendor/ember-cli-qunit/qunit-configuration.js | 20 --- .../ember-cli-qunit/test-container-styles.css | 34 ---- yarn.lock | 97 ++++++----- 10 files changed, 92 insertions(+), 415 deletions(-) delete mode 100644 templates/test-body.html delete mode 100644 vendor/ember-cli-qunit/images/failed.png delete mode 100644 vendor/ember-cli-qunit/images/passed.png delete mode 100644 vendor/ember-cli-qunit/qunit-configuration.js delete mode 100644 vendor/ember-cli-qunit/test-container-styles.css diff --git a/addon-test-support/ember-cli-qunit.js b/addon-test-support/ember-cli-qunit.js index 96848a6a..f8ef53fa 100644 --- a/addon-test-support/ember-cli-qunit.js +++ b/addon-test-support/ember-cli-qunit.js @@ -1,131 +1,9 @@ -import Ember from 'ember'; -import QUnit from 'qunit'; -import { QUnitAdapter } from 'ember-qunit'; -import AbstractTestLoader, { - addModuleExcludeMatcher, - addModuleIncludeMatcher -} from 'ember-cli-test-loader/test-support/index'; - - -addModuleExcludeMatcher(function(moduleName) { - return QUnit.urlParams.nolint && - moduleName.match(/\.(jshint|lint-test)$/); -}); - -addModuleIncludeMatcher(function(moduleName) { - return moduleName.match(/\.jshint$/); -}); - -let moduleLoadFailures = []; - -QUnit.done(function() { - if (moduleLoadFailures.length) { - throw new Error('\n' + moduleLoadFailures.join('\n')); - } -}); - -export class TestLoader extends AbstractTestLoader { - moduleLoadFailure(moduleName, error) { - moduleLoadFailures.push(error); - - QUnit.module('TestLoader Failures'); - QUnit.test(moduleName + ': could not be loaded', function() { - throw error; - }); - } -} -/** - Uses current URL configuration to setup the test container. - - * If `?nocontainer` is set, the test container will be hidden. - * If `?dockcontainer` or `?devmode` are set the test container will be - absolutely positioned. - * If `?devmode` is set, the test container will be made full screen. - - @method setupTestContainer - */ -export function setupTestContainer() { - let testContainer = document.getElementById('ember-testing-container'); - if (!testContainer) { return; } - - let params = QUnit.urlParams; - - let containerVisibility = params.nocontainer ? 'hidden' : 'visible'; - let containerPosition = (params.dockcontainer || params.devmode) ? 'fixed' : 'relative'; - - if (params.devmode) { - testContainer.className = ' full-screen'; - } - - testContainer.style.visibility = containerVisibility; - testContainer.style.position = containerPosition; - - let qunitContainer = document.getElementById('qunit'); - if (params.dockcontainer) { - qunitContainer.style.marginBottom = window.getComputedStyle(testContainer).height; - } -} - -/** - Load tests following the default patterns: - - * The module name ends with `-test` - * The module name ends with `.jshint` - - Excludes tests that match the following - patterns when `?nolint` URL param is set: - - * The module name ends with `.jshint` - * The module name ends with `-lint-test` - - @method loadTests - */ -export function loadTests() { - new TestLoader().loadModules(); -} - -/** - Instruct QUnit to start the tests. - @method startTests - */ -export function startTests() { - QUnit.start(); -} - -/** - Sets up the `Ember.Test` adapter for usage with QUnit 2.x. - - @method setupTestAdapter - */ -export function setupTestAdapter() { - Ember.Test.adapter = QUnitAdapter.create(); -} - -/** - @method start - @param {Object} [options] Options to be used for enabling/disabling behaviors - @param {Boolean} [options.loadTests] If `false` tests will not be loaded automatically. - @param {Boolean} [options.setupTestContainer] If `false` the test container will not - be setup based on `devmode`, `dockcontainer`, or `nocontainer` URL params. - @param {Boolean} [options.startTests] If `false` tests will not be automatically started - (you must run `QUnit.start()` to kick them off). - @param {Boolean} [options.setupTestAdapter] If `false` the default Ember.Test adapter will - not be updated. - */ -export function start(options = { }) { - if (options.loadTests !== false) { - loadTests(); - } - - if (options.setupTestContainer !== false) { - setupTestContainer(); - } - - if (options.setupTestAdapter !== false) { - setupTestAdapter(); - } - - if (options.startTests !== false) { - startTests(); - } -} +// reexporting for compatibility +export { + TestLoader, + setupTestContainer, + loadTests, + startTests, + setupTestAdapter, + start +} from 'ember-qunit'; diff --git a/config/ember-try.js b/config/ember-try.js index 157fd828..0bfa9fe2 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -1,27 +1,19 @@ /*jshint node:true*/ module.exports = { scenarios: [ - { - name: 'default', - bower: { - dependencies: { - 'ember-cli-test-loader': '0.2.2' - } - } - }, { name: 'old-test-loader', bower: { dependencies: { - 'ember-cli-test-loader': '0.2.0' + 'ember-cli-test-loader': '0.2.2' } } }, { - name: 'npm-test-loader', + name: 'default', npm: { devDependencies: { - 'ember-cli-test-loader': '^1.1.0' + 'ember-cli-test-loader': '^2.2.0' } } }, @@ -30,11 +22,15 @@ module.exports = { bower: { dependencies: { 'ember': 'components/ember#release', - 'ember-cli-test-loader': '0.2.2' }, resolutions: { 'ember': 'release' } + }, + npm: { + devDependencies: { + 'ember-cli-test-loader': '^2.2.0' + } } }, { @@ -42,10 +38,14 @@ module.exports = { bower: { dependencies: { 'ember': 'components/ember#beta', - 'ember-cli-test-loader': '0.2.2' }, resolutions: { - 'ember': 'beta' + 'ember': 'beta', + } + }, + npm: { + devDependencies: { + 'ember-cli-test-loader': '^2.2.0', } } }, @@ -54,10 +54,14 @@ module.exports = { bower: { dependencies: { 'ember': 'components/ember#canary', - 'ember-cli-test-loader': '0.2.2' }, resolutions: { - 'ember': 'canary' + 'ember': 'canary', + } + }, + npm: { + devDependencies: { + 'ember-cli-test-loader': '^2.2.0', } } } diff --git a/index.js b/index.js index 1abd34b8..a521ccb8 100644 --- a/index.js +++ b/index.js @@ -1,162 +1,14 @@ 'use strict'; -const path = require('path'); -const fs = require('fs'); -const resolve = require('resolve'); - module.exports = { name: 'ember-cli-qunit', - _getDependencyTrees: function() { - if (this._dependencyTrees) { - return this._dependencyTrees; - } - - let emberQUnitPath = path.dirname(resolve.sync('ember-qunit')); - let emberTestHelpersPath = path.dirname(resolve.sync('ember-test-helpers', { basedir: emberQUnitPath })); - - this._dependencyTrees = [ - this.treeGenerator(emberQUnitPath), - this.treeGenerator(emberTestHelpersPath), - ]; - - return this._dependencyTrees; - }, - - init: function() { - this._super.init && this._super.init.apply(this, arguments); - - const VersionChecker = require('ember-cli-version-checker'); - let checker = new VersionChecker(this); - let dep = checker.for('ember-cli', 'npm'); - - if (!dep.gt('2.2.0-beta.2')) { - const SilentError = require('silent-error'); - throw new SilentError('ember-cli-qunit@3.0.0 and higher requires at least ember-cli@2.2.0. Please downgrade to ember-cli-qunit@2 for older ember-cli version support.'); - } - - this._shouldPreprocessAddonTestSupport = !!this.options && !!this.options.babel; - - this.setTestGenerator(); - }, - - blueprintsPath: function() { - return path.join(__dirname, 'blueprints'); - }, - // intentionally not calling _super here // to avoid these trees being namespaced into // `ember-cli-qunit/test-support/` - treeForAddonTestSupport: function(onDiskAddonTestSupportTree) { - const MergeTrees = require('broccoli-merge-trees'); - let trees = [].concat( - this._getDependencyTrees(), - onDiskAddonTestSupportTree - ); - let tree = new MergeTrees(trees); - - if (this._shouldPreprocessAddonTestSupport) { - return this.preprocessJs(tree, { - registry: this.registry - }); - } else { - return tree; - } - }, - - treeForVendor: function(tree) { - const MergeTrees = require('broccoli-merge-trees'); - let qunitPath = path.join(path.dirname(resolve.sync('qunitjs')), '..'); - - let trees = [ - tree, - this._notificationsTree(), - this.treeGenerator(qunitPath) - ]; - - return new MergeTrees(trees, { - annotation: 'ember-cli-qunit: treeForVendor' + treeForAddonTestSupport: function(tree) { + return this.preprocessJs(tree, { + registry: this.registry }); }, - - included: function included(app, parentAddon) { - let target = (parentAddon || app); - this._super.included.call(this, target); - - this.targetOptions = target.options; - - let testSupportPath = target.options.outputPaths.testSupport.js; - testSupportPath = testSupportPath.testSupport || testSupportPath; - testSupportPath = path.dirname(testSupportPath) || 'assets'; - - if (app.tests) { - let fileAssets = [ - 'vendor/qunit/qunit.js', - 'vendor/qunit/qunit.css', - 'vendor/qunit-notifications/index.js', - 'vendor/ember-cli-qunit/qunit-configuration.js', - ]; - - let addonOptions = target.options['ember-cli-qunit']; - let hasAddonOptions = !!addonOptions; - let explicitlyDisabledContainerStyles = hasAddonOptions && addonOptions.disableContainerStyles === true; - if (!explicitlyDisabledContainerStyles) { - fileAssets.push('vendor/ember-cli-qunit/test-container-styles.css'); - } - - fileAssets.forEach(function(file){ - app.import(file, { - type: 'test' - }); - }); - - let imgAssets = [ - 'vendor/ember-cli-qunit/images/passed.png', - 'vendor/ember-cli-qunit/images/failed.png' - ]; - - imgAssets.forEach(function(img) { - app.import(img, { - type: 'test', - destDir: testSupportPath - }); - }); - } - }, - - _notificationsTree: function() { - const Funnel = require('broccoli-funnel'); - let notificationsPath = path.dirname(resolve.sync('qunit-notifications')); - return new Funnel(notificationsPath, { - include: [ 'index.js' ], - destDir: 'qunit-notifications', - annotation: 'qunit-notifications' - }); - }, - - contentFor: function(type) { - // Skip if insertContentForTestBody === false. - if (type === 'test-body' && !(this.targetOptions['ember-cli-qunit'] && this.targetOptions['ember-cli-qunit'].insertContentForTestBody === false)) { - return this._readTemplate('test-body'); - } - }, - - _readTemplate: function(name) { - return fs.readFileSync(path.join(__dirname, 'templates', name + '.html')); - }, - - setTestGenerator: function() { - this.project.generateTestFile = function(moduleName, tests) { - let output = "QUnit.module('" + moduleName + "');\n"; - - tests.forEach(function(test) { - output += "QUnit.test('" + test.name + "', function(assert) {\n"; - output += " assert.expect(1);\n"; - output += " assert.ok(" + test.passed + ", '" + test.errorMessage + "');\n"; - output += "});\n"; - }); - - return output; - }; - } }; diff --git a/package.json b/package.json index 3227a564..26a68d0d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ember-cli-qunit", - "version": "4.0.1", + "version": "4.1.0-beta.0", "description": "QUnit testing package for ember-cli applications", "main": "index.js", "engines": { @@ -22,30 +22,26 @@ "ember", "qunit" ], - "author": "Jake Craige ", + "contributors": [ + "Jake Craige", + "Stefan Penner", + "Robert Jackson" + ], "license": "MIT", "bugs": { "url": "https://github.com/ember-cli/ember-cli-qunit/issues" }, "homepage": "https://github.com/ember-cli/ember-cli-qunit", "dependencies": { - "broccoli-funnel": "^2.0.0", - "broccoli-merge-trees": "^2.0.0", "ember-cli-babel": "^6.8.1", - "ember-cli-test-loader": "^2.2.0", - "ember-cli-version-checker": "^2.0.0", - "ember-qunit": "^2.2.0", - "qunit-notifications": "^0.1.1", - "qunitjs": "^2.4.0", - "resolve": "^1.4.0", - "silent-error": "^1.1.0" + "ember-qunit": "^3.0.0-beta.2" }, "devDependencies": { "ember-cli": "^2.4.2", "ember-cli-htmlbars": "^2.0.3", + "ember-cli-test-loader": "^2.2.0", "ember-load-initializers": "^1.0.0", "ember-resolver": "^4.4.0", - "ember-try": "^0.2.16", "loader.js": "^4.6.0" } } diff --git a/templates/test-body.html b/templates/test-body.html deleted file mode 100644 index 7c4ab02d..00000000 --- a/templates/test-body.html +++ /dev/null @@ -1,6 +0,0 @@ -
-
- -
-
-
diff --git a/vendor/ember-cli-qunit/images/failed.png b/vendor/ember-cli-qunit/images/failed.png deleted file mode 100644 index 37e8870e5041bce2f519726d29abb8f45af9d248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26702 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 Wh8uBmV(_nTvZTc1MQel&1OE>xf6s{k diff --git a/vendor/ember-cli-qunit/qunit-configuration.js b/vendor/ember-cli-qunit/qunit-configuration.js deleted file mode 100644 index f21cb650..00000000 --- a/vendor/ember-cli-qunit/qunit-configuration.js +++ /dev/null @@ -1,20 +0,0 @@ -/* globals QUnit */ - -(function() { - QUnit.config.autostart = false; - QUnit.config.urlConfig.push({ id: 'nocontainer', label: 'Hide container'}); - QUnit.config.urlConfig.push({ id: 'nolint', label: 'Disable Linting'}); - QUnit.config.urlConfig.push({ id: 'dockcontainer', label: 'Dock container'}); - QUnit.config.urlConfig.push({ id: 'devmode', label: 'Development mode' }); - - QUnit.config.testTimeout = QUnit.urlParams.devmode ? null : 60000; //Default Test Timeout 60 Seconds - - if (QUnit.notifications) { - QUnit.notifications({ - icons: { - passed: '/assets/passed.png', - failed: '/assets/failed.png' - } - }); - } -})(); diff --git a/vendor/ember-cli-qunit/test-container-styles.css b/vendor/ember-cli-qunit/test-container-styles.css deleted file mode 100644 index 99c42a36..00000000 --- a/vendor/ember-cli-qunit/test-container-styles.css +++ /dev/null @@ -1,34 +0,0 @@ -#ember-testing-container { - position: relative; - background: white; - bottom: 0; - right: 0; - width: 640px; - height: 384px; - overflow: auto; - z-index: 98; - border: 1px solid #ccc; - margin: 0 auto; -} - -#ember-testing-container.full-screen { - width: 100%; - height: 100%; - overflow: auto; - z-index: 98; - border: none; -} - -#ember-testing { - width: 200%; - height: 200%; - transform: scale(0.5); - transform-origin: top left; -} - -.full-screen #ember-testing { - position: absolute; - width: 100%; - height: 100%; - transform: scale(1); -} diff --git a/yarn.lock b/yarn.lock index e771d89a..a3a54ab9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -469,6 +469,12 @@ babel-plugin-ember-modules-api-polyfill@^1.5.1: dependencies: ember-rfc176-data "^0.2.0" +babel-plugin-ember-modules-api-polyfill@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-2.1.0.tgz#78848cc4fcc2274882a6c15cbb23fefcdc771301" + dependencies: + ember-rfc176-data "^0.3.0" + babel-plugin-eval@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz#a2faed25ce6be69ade4bfec263f70169195950da" @@ -1150,15 +1156,14 @@ broccoli-funnel@^1.1.0: symlink-or-copy "^1.0.0" walk-sync "^0.3.1" -broccoli-funnel@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-2.0.0.tgz#12bec71c34118eedb0cc1d9a3a41df97b6b0c73b" +broccoli-funnel@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-2.0.1.tgz#6823c73b675ef78fffa7ab800f083e768b51d449" dependencies: array-equal "^1.0.0" blank-object "^1.0.1" broccoli-plugin "^1.3.0" debug "^2.2.0" - exists-sync "0.0.4" fast-ordered-set "^1.0.0" fs-tree-diff "^0.5.3" heimdalljs "^0.2.0" @@ -1513,6 +1518,12 @@ commander@2.9.0, commander@^2.5.0, commander@^2.6.0: dependencies: graceful-readlink ">= 1.0.0" +common-tags@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0" + dependencies: + babel-runtime "^6.18.0" + commoner@~0.10.3: version "0.10.8" resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" @@ -1827,6 +1838,23 @@ ember-cli-babel@^6.0.0-beta.7: clone "^2.0.0" ember-cli-version-checker "^1.2.0" +ember-cli-babel@^6.3.0: + version "6.8.2" + resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.8.2.tgz#eac2785964f4743f4c815cd53c6288f00cc087d7" + dependencies: + amd-name-resolver "0.0.7" + babel-plugin-debug-macros "^0.1.11" + babel-plugin-ember-modules-api-polyfill "^2.0.1" + babel-plugin-transform-es2015-modules-amd "^6.24.0" + babel-polyfill "^6.16.0" + babel-preset-env "^1.5.1" + broccoli-babel-transpiler "^6.1.2" + broccoli-debug "^0.6.2" + broccoli-funnel "^1.0.0" + broccoli-source "^1.1.0" + clone "^2.0.0" + ember-cli-version-checker "^2.0.0" + ember-cli-babel@^6.8.1: version "6.8.1" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.8.1.tgz#695f94c57a9375c2a0e219306a41105d6b937991" @@ -2052,11 +2080,17 @@ ember-load-initializers@^1.0.0: dependencies: ember-cli-babel "^6.0.0-beta.7" -ember-qunit@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-2.2.0.tgz#3cdf400031c93a38de781a7304819738753b7f99" +ember-qunit@^3.0.0-beta.2: + version "3.0.0-beta.2" + resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-3.0.0-beta.2.tgz#e6ab5872f6d37456d80405c8c42ac4fb528e5b84" dependencies: - ember-test-helpers "^0.6.3" + broccoli-funnel "^2.0.1" + broccoli-merge-trees "^2.0.0" + common-tags "^1.4.0" + ember-cli-babel "^6.3.0" + ember-cli-test-loader "^2.2.0" + ember-test-helpers "^0.7.0-beta.2" + qunitjs "^2.4.0" ember-resolver@^4.4.0: version "4.4.0" @@ -2074,15 +2108,22 @@ ember-rfc176-data@^0.2.0: version "0.2.5" resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.2.5.tgz#b26f62d9c03d3b02485153cf31137e089299839a" +ember-rfc176-data@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.0.tgz#6aee728cb521c5f80710990965027b9c320f6f08" + ember-router-generator@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/ember-router-generator/-/ember-router-generator-1.2.3.tgz#8ed2ca86ff323363120fc14278191e9e8f1315ee" dependencies: recast "^0.11.3" -ember-test-helpers@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/ember-test-helpers/-/ember-test-helpers-0.6.3.tgz#f864cdf6f4e75f3f8768d6537785b5ab6e82d907" +ember-test-helpers@^0.7.0-beta.2: + version "0.7.0-beta.2" + resolved "https://registry.yarnpkg.com/ember-test-helpers/-/ember-test-helpers-0.7.0-beta.2.tgz#da3716c4149ee0693cab50f91491c8200c98d33c" + dependencies: + broccoli-funnel "^2.0.1" + ember-cli-babel "^6.8.1" ember-try-config@^2.0.1: version "2.1.0" @@ -2093,24 +2134,6 @@ ember-try-config@^2.0.1: rsvp "^3.2.1" semver "^5.1.0" -ember-try@^0.2.16: - version "0.2.16" - resolved "https://registry.yarnpkg.com/ember-try/-/ember-try-0.2.16.tgz#cf7092d8a8fea9701d7faa73cbdbff37a8ada330" - dependencies: - chalk "^1.0.0" - cli-table2 "^0.2.0" - core-object "^1.1.0" - debug "^2.2.0" - ember-cli-version-checker "^1.1.6" - ember-try-config "^2.0.1" - extend "^3.0.0" - fs-extra "^0.26.0" - promise-map-series "^0.2.1" - resolve "^1.1.6" - rimraf "^2.3.2" - rsvp "^3.0.17" - semver "^5.1.0" - ember-try@^0.2.9: version "0.2.12" resolved "https://registry.yarnpkg.com/ember-try/-/ember-try-0.2.12.tgz#27ea2305ca097b9e0884565c96da2402d6e841aa" @@ -3912,10 +3935,6 @@ quick-temp@0.1.6, quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5: rimraf "~2.2.6" underscore.string "~2.3.3" -qunit-notifications@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/qunit-notifications/-/qunit-notifications-0.1.1.tgz#3001afc6a6a77dfbd962ccbcddde12dec5286c09" - qunitjs@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/qunitjs/-/qunitjs-2.4.0.tgz#58f3a81e846687f2e7f637c5bedc9c267f887261" @@ -4153,12 +4172,6 @@ resolve@^1.3.3: dependencies: path-parse "^1.0.5" -resolve@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" - dependencies: - path-parse "^1.0.5" - restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -4291,12 +4304,6 @@ silent-error@^1.0.0, silent-error@^1.0.1: dependencies: debug "^2.2.0" -silent-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.0.tgz#2209706f1c850a9f1d10d0d840918b46f26e1bc9" - dependencies: - debug "^2.2.0" - simple-fmt@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz#191bf566a59e6530482cb25ab53b4a8dc85c3a6b"