Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bugfix: iife is 100% backwards compatible #255

Merged
merged 4 commits into from
Apr 5, 2019
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ bower_components
node_modules
coverage*
dist
src/pretender.es.js
dist/pretender.es.js
6 changes: 0 additions & 6 deletions .npmignore

This file was deleted.

12 changes: 8 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "pretender",
"version": "2.1.0",
"main": "./dist/pretender.js",
"module": "./src/pretender.es.js",
"module": "./dist/pretender.es.js",
"types": "index.d.ts",
"description": "Pretender is a mock server library for XMLHttpRequest and Fetch, that comes with an express/sinatra style syntax for defining routes and their handlers.",
"license": "MIT",
Expand Down Expand Up @@ -40,7 +40,7 @@
"karma-sinon": "^1.0.5",
"phantomjs": "^2.1.7",
"qunit": "^2.6.1",
"rollup": "0.68.2",
"rollup": "^1.1.2",
"rollup-plugin-commonjs": "^9.2.0",
"rollup-plugin-multi-entry": "^2.1.0",
"rollup-plugin-node-resolve": "^4.0.0",
Expand All @@ -50,10 +50,14 @@
"typescript": "~3.1.1"
},
"dependencies": {
"whatwg-fetch": "^3.0.0",
"fake-xml-http-request": "^2.0.0",
"route-recognizer": "^0.3.3"
"route-recognizer": "^0.3.3",
"whatwg-fetch": "^3.0.0"
},
"files": [
"dist",
"index.d.ts"
],
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

npm publish --dry-run

npm notice 📦  [email protected]
npm notice === Tarball Contents === 
npm notice 2.1kB  package.json        
npm notice 2.6kB  CHANGELOG.md        
npm notice 1.0kB  index.d.ts          
npm notice 1.1kB  LICENSE             
npm notice 13.0kB README.md           
npm notice 16.4kB dist/pretender.es.js
npm notice 18.5kB dist/pretender.js

"jspm": {
"shim": {
"pretender": {
Expand Down
65 changes: 47 additions & 18 deletions rollup.config.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,66 @@
const commonjs = require('rollup-plugin-commonjs');
const path = require('path');
const resolve = require('rollup-plugin-node-resolve');
const typescript = require('rollup-plugin-typescript');
const pkg = require('./package.json');

const selfId = path.resolve(__dirname, 'src/iife-self-placeholder.js');
const globals = {
'whatwg-fetch': 'FakeFetch',
'fake-xml-http-request': 'FakeXMLHttpRequest',
'route-recognizer': 'RouteRecognizer',
};

const iife = {
banner:
`var Pretender = (function (self) {

function getModuleDefault(module) {
return module.default || module;
}

var appearsBrowserified = typeof self !== 'undefined' &&
typeof process !== 'undefined' &&
(Object.prototype.toString.call(process) === '[object Object]' ||
Object.prototype.toString.call(process) === '[object process]');

var RouteRecognizer = appearsBrowserified ? getModuleDefault(require('route-recognizer')) : self.RouteRecognizer;
var FakeXMLHttpRequest = appearsBrowserified ? getModuleDefault(require('fake-xml-http-request')) :
self.FakeXMLHttpRequest;

// fetch related ponyfills
var FakeFetch = appearsBrowserified ? getModuleDefault(require('whatwg-fetch')) : self.WHATWGFetch;
`,
footer:
`
if (typeof module === 'object') {
module.exports = Pretender;
} else if (typeof define !== 'undefined') {
define('pretender', [], function() {
return Pretender;
});
givanse marked this conversation as resolved.
Show resolved Hide resolved
}

self.Pretender = Pretender;

return Pretender;

}(self));`,
};

module.exports = {
input: 'src/index.ts',
external: [
selfId,
'whatwg-fetch',
'fake-xml-http-request',
'route-recognizer',
],
external: Object.keys(pkg.dependencies),
output: [
{
name: 'Pretender',
file: pkg.main,
format: 'iife',
globals: {
[selfId]: 'self',
'whatwg-fetch': 'FakeFetch',
'fake-xml-http-request': 'FakeXMLHttpRequest',
'route-recognizer': 'RouteRecognizer',
},
banner: 'var FakeFetch = self.WHATWGFetch;\n' +
'var FakeXMLHttpRequest = self.FakeXMLHttpRequest;\n' +
'var RouteRecognizer = self.RouteRecognizer;\n',
globals: globals,
banner: iife.banner,
footer: iife.footer,
givanse marked this conversation as resolved.
Show resolved Hide resolved
},
{
file: pkg.module,
format: 'es'
format: 'es',
},
],
plugins: [
Expand Down
3 changes: 0 additions & 3 deletions src/iife-self-placeholder.js

This file was deleted.

1 change: 0 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import self from './iife-self-placeholder';
import RouteRecognizer from 'route-recognizer';
import FakeXMLHttpRequest from 'fake-xml-http-request';
import * as FakeFetch from 'whatwg-fetch';
Expand Down
14 changes: 10 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ [email protected]:
mime-types "~2.1.11"
negotiator "0.6.1"

acorn@^6.0.5:
version "6.1.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818"
integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw==

[email protected]:
version "0.8.2"
resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
Expand Down Expand Up @@ -3769,13 +3774,14 @@ rollup-pluginutils@^2.3.1, rollup-pluginutils@^2.3.3:
estree-walker "^0.5.2"
micromatch "^2.3.11"

rollup@0.68.2:
version "0.68.2"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.68.2.tgz#c26afb5d981ca7a1a32f76087dbde9dad4fcc653"
integrity sha512-WgjNCXYv7ZbtStIap1+tz4pd2zwz0XYN//OILwEY6dINIFLVizK1iWdu+ZtUURL/OKnp8Lv2w8FBds8YihzX7Q==
rollup@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.1.2.tgz#8d094b85683b810d0c05a16bd7618cf70d48eba7"
integrity sha512-OkdMxqMl8pWoQc5D8y1cIinYQPPLV8ZkfLgCzL6SytXeNA2P7UHynEQXI9tYxuAjAMsSyvRaWnyJDLHMxq0XAg==
dependencies:
"@types/estree" "0.0.39"
"@types/node" "*"
acorn "^6.0.5"

route-recognizer@^0.3.3:
version "0.3.4"
Expand Down