From e5608be1e6c2cb7d76c84fe02cd7ce83aabb93df Mon Sep 17 00:00:00 2001 From: Bret Comnes Date: Fri, 8 Sep 2017 16:54:06 -0700 Subject: [PATCH 1/5] Fix module export --- README.md | 22 ++++++++++------------ package.json | 15 +++++---------- script/release.js | 3 +-- src/netlify-identity.js | 4 +++- webpack.config.babel.js | 4 +++- 5 files changed, 22 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index aa86d2dee..55ed30fac 100644 --- a/README.md +++ b/README.md @@ -71,33 +71,31 @@ yarn add netlify-identity-widget Import or require as usual: ```js -import NetlifyIdentity from "netlify-identity-widget" -// or -const netlifyIdentity = require("netlify-identity-widget"); +import netlifyIdentity from "netlify-identity-widget" netlifyIdentity.init({ container: "#netlify-modal" // defaults to document.body }); -identity.open() // open the modal +netlifyIdentity.open() // open the modal -identity.on('init', user => console.log(user)) -identity.on('login', login => console.log(user)) -identity.on('logout', () => console.log("Logged out")) -identity.on('error', err => console.error("Logged out")) -identity.on('open', () => console.log("Widget opened")) -identity.on('close', () => console.log("Widget closed")) +netlifyIdentity.on('init', user => console.log(user)) +netlifyIdentity.on('login', login => console.log(user)) +netlifyIdentity.on('logout', () => console.log("Logged out")) +netlifyIdentity.on('error', err => console.error("Logged out")) +netlifyIdentity.on('open', () => console.log("Widget opened")) +netlifyIdentity.on('close', () => console.log("Widget closed")) // Close the modal identity.close() // Logout the user -loginModal.logout(); +netlifyIdentity.logout(); // Access the underlying gotrue instance. // Note that doing things directly through gotrue brings a risk of getting out of // sync between your state and the widgets state. -identity.gotrue +netlifyIdentity.gotrue ``` ## Localhost diff --git a/package.json b/package.json index c2086718e..842009f1f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "netlify-identity-widget", "version": "1.0.0", + "releaseVersion": "v1", "description": "Netlify Identity widget for easy integration", "scripts": { "dev": "cross-env NODE_ENV=development webpack-dev-server --inline --progress", @@ -16,11 +17,7 @@ "format-preview": "prettier --list-different 'src/**/*.js'" }, "main": "./build/netlify-identity", - "keywords": [ - "netlify", - "identity", - "authentication" - ], + "keywords": ["netlify", "identity", "authentication"], "license": "MIT", "author": "Matt Biilmann ", "devDependencies": { @@ -48,13 +45,10 @@ "postcss-loader": "^2.0.3", "prettier": "^1.6.1", "raw-loader": "^0.5.1", - "semver": "^5.4.1", "source-map-loader": "^0.2.1", "url-loader": "^0.5.8", "webpack": "^3.0.0", - "webpack-dev-server": "^2.4.4" - }, - "dependencies": { + "webpack-dev-server": "^2.4.4", "gotrue-js": "^0.9.8", "mobx": "^3.2.2", "mobx-preact": "^0.3.1", @@ -64,5 +58,6 @@ "preact": "^8.1.0", "preact-compat": "^3.15.0", "serve": "^6.0.0" - } + }, + "dependencies": {} } diff --git a/script/release.js b/script/release.js index 53f2f80a3..c682246c4 100644 --- a/script/release.js +++ b/script/release.js @@ -1,7 +1,6 @@ /* eslint no-console: "off" */ const exec = require("child_process").execSync; -const semver = require("semver"); -const version = "v" + semver(require("../package.json").version).major; +const version = require("../package.json").releaseVersion; console.log("Building new release for ", version); diff --git a/src/netlify-identity.js b/src/netlify-identity.js index 355f6c0ef..71344be5b 100644 --- a/src/netlify-identity.js +++ b/src/netlify-identity.js @@ -212,7 +212,9 @@ function init(options) { }; setStyle(iframe, iframeStyle); iframe.src = "about:blank"; - const container = options.container ? document.querySelector : document.body; + const container = options.container + ? document.querySelector(options.container) + : document.body; container.appendChild(iframe); /* There's a certain case where we might have called setStyle before the iframe was ready. Make sure we take the last style and apply it */ diff --git a/webpack.config.babel.js b/webpack.config.babel.js index abd28401a..1520f60dc 100644 --- a/webpack.config.babel.js +++ b/webpack.config.babel.js @@ -18,7 +18,9 @@ module.exports = { output: { path: path.resolve(__dirname, "build"), publicPath: "/", - filename: "[name].js" + filename: "[name].js", + library: "netlifyIdentity", + libraryTarget: "umd" }, resolve: { From 8f1778c2656bd86705af2febf8ffa59841a91631 Mon Sep 17 00:00:00 2001 From: Bret Comnes Date: Fri, 8 Sep 2017 17:02:17 -0700 Subject: [PATCH 2/5] Note the intention behind the URL version --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 55ed30fac..d1b2f4793 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,11 @@ loginModal.close() loginModal.logout(); ``` +#### A note on script tag versioning + +The `v1` in the above URL is not pinned to the major version of the module API, and will only reflect breaking changes in the +markup API. + ### Module API Netlify Identity Widget also has a module api: From 48cb8cf7be8fa15a3dfe527d14ab24a73f60e5b0 Mon Sep 17 00:00:00 2001 From: Bret Comnes Date: Fri, 8 Sep 2017 17:02:46 -0700 Subject: [PATCH 3/5] Validate script tag global variable API --- src/index.ejs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/index.ejs b/src/index.ejs index e440df4b9..13e6b2982 100644 --- a/src/index.ejs +++ b/src/index.ejs @@ -206,6 +206,16 @@ } + +
From 54c3cb5e064033e701c0330ecce43ccd3c77a1c7 Mon Sep 17 00:00:00 2001 From: Bret Comnes Date: Fri, 8 Sep 2017 17:39:28 -0700 Subject: [PATCH 4/5] Fix default export --- README.md | 2 +- webpack.config.babel.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d1b2f4793..5ccdef4fd 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ yarn add netlify-identity-widget Import or require as usual: ```js -import netlifyIdentity from "netlify-identity-widget" +const netlifyIdentity = require("netlify-identity-widget") netlifyIdentity.init({ container: "#netlify-modal" // defaults to document.body diff --git a/webpack.config.babel.js b/webpack.config.babel.js index 1520f60dc..6905a37cd 100644 --- a/webpack.config.babel.js +++ b/webpack.config.babel.js @@ -20,7 +20,8 @@ module.exports = { publicPath: "/", filename: "[name].js", library: "netlifyIdentity", - libraryTarget: "umd" + libraryTarget: "umd", + libraryExport: "default" }, resolve: { From cd2eb1bb95e841775b6738246b09392ee102bbf2 Mon Sep 17 00:00:00 2001 From: Bret Comnes Date: Sat, 9 Sep 2017 10:09:21 -0700 Subject: [PATCH 5/5] Fix module build --- package.json | 37 ++++++++----- webpack.config.babel.js | 6 +- webpack.umd.config.babel.js | 21 +++++++ yarn.lock | 107 ++++++++++++++++++++++++++++++++++-- 4 files changed, 146 insertions(+), 25 deletions(-) create mode 100644 webpack.umd.config.babel.js diff --git a/package.json b/package.json index 842009f1f..f364dc6e7 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,14 @@ "releaseVersion": "v1", "description": "Netlify Identity widget for easy integration", "scripts": { - "dev": "cross-env NODE_ENV=development webpack-dev-server --inline --progress", + "dev": "cross-env NODE_ENV=development webpack-dev-server --inline --progress --config webpack.config.babel.js", "start": "serve build -s -c 1", - "prestart": "npm run build", - "version": "npm run release", - "prepublish": "npm run build", - "build": "cross-env NODE_ENV=production webpack --progress", + "prestart": "run-s build", + "version": "run-s release", + "prepublish": "run-s build", + "build": "run-p build:*", + "build:bundle": "cross-env NODE_ENV=production webpack --progress --config webpack.config.babel.js", + "build:umd": "cross-env NODE_ENV=production webpack --progress --config webpack.umd.config.babel.js", "prebuild": "mkdirp build", "test": "eslint src", "release": "node ./script/release.js", @@ -17,7 +19,11 @@ "format-preview": "prettier --list-different 'src/**/*.js'" }, "main": "./build/netlify-identity", - "keywords": ["netlify", "identity", "authentication"], + "keywords": [ + "netlify", + "identity", + "authentication" + ], "license": "MIT", "author": "Matt Biilmann ", "devDependencies": { @@ -39,25 +45,26 @@ "eslint-plugin-prettier": "^2.2.0", "eslint-plugin-react": "^7.0.0", "file-loader": "^0.11.1", + "gotrue-js": "^0.9.8", "html-webpack-plugin": "^2.28.0", "json-loader": "^0.5.4", "mkdirp": "^0.5.1", - "postcss-loader": "^2.0.3", - "prettier": "^1.6.1", - "raw-loader": "^0.5.1", - "source-map-loader": "^0.2.1", - "url-loader": "^0.5.8", - "webpack": "^3.0.0", - "webpack-dev-server": "^2.4.4", - "gotrue-js": "^0.9.8", "mobx": "^3.2.2", "mobx-preact": "^0.3.1", + "npm-run-all": "^4.1.1", "postcss-cssnext": "^3.0.2", "postcss-import": "^10.0.0", + "postcss-loader": "^2.0.3", "postcss-nested": "^2.1.2", "preact": "^8.1.0", "preact-compat": "^3.15.0", - "serve": "^6.0.0" + "prettier": "^1.6.1", + "raw-loader": "^0.5.1", + "serve": "^6.0.0", + "source-map-loader": "^0.2.1", + "url-loader": "^0.5.8", + "webpack": "^3.0.0", + "webpack-dev-server": "^2.4.4" }, "dependencies": {} } diff --git a/webpack.config.babel.js b/webpack.config.babel.js index 6905a37cd..116f83554 100644 --- a/webpack.config.babel.js +++ b/webpack.config.babel.js @@ -12,16 +12,12 @@ module.exports = { context: path.resolve(__dirname, "src"), entry: { "netlify-identity-widget": "./index.js", - "netlify-identity": "./netlify-identity.js" }, output: { path: path.resolve(__dirname, "build"), publicPath: "/", - filename: "[name].js", - library: "netlifyIdentity", - libraryTarget: "umd", - libraryExport: "default" + filename: "[name].js" }, resolve: { diff --git a/webpack.umd.config.babel.js b/webpack.umd.config.babel.js new file mode 100644 index 000000000..001dda42b --- /dev/null +++ b/webpack.umd.config.babel.js @@ -0,0 +1,21 @@ +import baseConfig from "./webpack.config.babel.js"; +import path from "path"; + +const umdConfig = Object.assign({}, baseConfig, { + entry: { + "netlify-identity": "./netlify-identity.js" + }, + + output: { + path: path.resolve(__dirname, "build"), + publicPath: "/", + filename: "[name].js", + library: "netlifyIdentity", + libraryTarget: "umd", + libraryExport: "default" + } +}) + +umdConfig.plugins.splice(2,1) // Remove html plugin + +module.exports = umdConfig diff --git a/yarn.lock b/yarn.lock index bbc5cf7c5..7b5824bdc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -107,7 +107,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0: +ansi-styles@^3.1.0, ansi-styles@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: @@ -157,6 +157,10 @@ arr-flatten@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -176,6 +180,14 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -1928,6 +1940,10 @@ duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -1993,7 +2009,7 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.7.0: +es-abstract@^1.4.3, es-abstract@^1.7.0: version "1.8.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" dependencies: @@ -2227,6 +2243,18 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" +event-stream@~3.3.0: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" @@ -2496,6 +2524,10 @@ fresh@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + fs-extra@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.1.tgz#7fc0c6c8957f983f57f306a24e5b9ddd8d0dd880" @@ -3465,6 +3497,10 @@ map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + math-expression-evaluator@^1.2.14: version "1.2.17" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" @@ -3493,6 +3529,12 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +memory-streams@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/memory-streams/-/memory-streams-0.1.2.tgz#273ff777ab60fec599b116355255282cca2c50c2" + dependencies: + readable-stream "~1.0.2" + meow@^3.3.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -3760,6 +3802,20 @@ normalize-url@^1.4.0: query-string "^4.1.0" sort-keys "^1.0.0" +npm-run-all@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.1.tgz#3095cf3f3cacf57fcb662b210ab10c609af6ddbb" + dependencies: + ansi-styles "^3.2.0" + chalk "^2.1.0" + cross-spawn "^5.1.0" + memory-streams "^0.1.2" + minimatch "^3.0.4" + ps-tree "^1.1.0" + read-pkg "^2.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -4036,6 +4092,12 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + pbkdf2@^3.0.3: version "3.0.13" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.13.tgz#c37d295531e786b1da3e3eadc840426accb0ae25" @@ -4725,6 +4787,12 @@ prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" +ps-tree@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" + dependencies: + event-stream "~3.3.0" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -4856,7 +4924,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@1.0: +readable-stream@1.0, readable-stream@~1.0.2: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: @@ -5151,7 +5219,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -5269,6 +5337,15 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -5388,6 +5465,12 @@ spdy@^3.4.1: select-hose "^2.0.0" spdy-transport "^2.0.18" +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -5421,6 +5504,12 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + stream-http@^2.3.1: version "2.7.2" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" @@ -5456,6 +5545,14 @@ string-width@^2.0.0, string-width@^2.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string.prototype.padend@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.4.3" + function-bind "^1.0.2" + string_decoder@^0.10.25, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -5580,7 +5677,7 @@ text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" -through@^2.3.6: +through@2, through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"