diff options
author | akanass <akanass@icloud.com> | 2021-06-17 17:34:59 +0200 |
---|---|---|
committer | akanass <akanass@icloud.com> | 2021-06-17 17:34:59 +0200 |
commit | f93dc50ffdb5e65c404ca093f45d3c79833f1627 (patch) | |
tree | 2b5632eba893e107dd913c446d722166314814d2 /packages/browser | |
parent | 27a91965f059b3ee193f944736c03192fafef262 (diff) |
get back ES5 UMD bundle
Diffstat (limited to 'packages/browser')
-rw-r--r-- | packages/browser/README.md | 17 | ||||
-rw-r--r-- | packages/browser/rollup.config.js | 39 | ||||
-rw-r--r-- | packages/browser/tsconfig.es5.json | 29 |
3 files changed, 85 insertions, 0 deletions
diff --git a/packages/browser/README.md b/packages/browser/README.md index f281493..d94700b 100644 --- a/packages/browser/README.md +++ b/packages/browser/README.md @@ -9,6 +9,8 @@ - [@simplewebauthn/browser](#simplewebauthnbrowser) - [Installation](#installation) - [UMD](#umd) + - [ES5](#es5) + - [ES2018](#es2018) - [Usage](#usage) ## Installation @@ -23,6 +25,21 @@ npm install @simplewebauthn/browser This package can also be installed via **unpkg** by including the following script in your page's `<head>` element. The library's methods will be available on the global **`SimpleWebAuthnBrowser`** object. +> NOTE: The only difference between the two packages below is that the ES5 bundle includes TypeScript's `tslib` runtime code. This adds some bundle size overhead, but _does_ enable use of `supportsWebAuthn()` in older browsers to show appropriate UI when WebAuthn is unavailable. + +#### ES5 + +If you need to support WebAuthn feature detection in deprecated browsers like IE11 and Edge Legacy, include the `ES5` version: + +```html + +<script src="https://unpkg.com/@simplewebauthn/browser/dist/bundle/index.es5.umd.min.js"></script> +``` + +#### ES2018 + +If you only need to support modern browsers, include the `ES2018` version: + ```html <script src="https://unpkg.com/@simplewebauthn/browser"></script> diff --git a/packages/browser/rollup.config.js b/packages/browser/rollup.config.js index 15a0b88..0c5ab8d 100644 --- a/packages/browser/rollup.config.js +++ b/packages/browser/rollup.config.js @@ -3,6 +3,33 @@ import nodeResolve from '@rollup/plugin-node-resolve'; import { terser } from 'rollup-plugin-terser'; import versionInjector from 'rollup-plugin-version-injector'; +/** + * Rollup plugin to clean `tslib` comment in `UMD` bundle targeting `ES5` + */ +const cleanTslibCommentInUMDBundleTargetingES5 = () => { + return { + name: 'cleanTslibCommentInUMDBundleTargetingES5', + renderChunk: async code => { + const comment = ` +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */`; + return code.indexOf(comment) > -1 ? code.replace(comment, '') : null; + }, + }; +}; + const swanVersionInjector = versionInjector({ injectInComments: { fileRegexp: /\.(js)$/, @@ -15,6 +42,7 @@ const swanVersionInjector = versionInjector({ /** * Rollup configuration to generate the following: * - ES2018 bundle + * - ES5 bundle * - Type declarations */ export default [ @@ -37,4 +65,15 @@ export default [ ], plugins: [typescript({ tsconfig: './tsconfig.json' }), nodeResolve(), swanVersionInjector], }, + { + input: 'src/index.ts', + output: { + dir: 'dist', + format: 'umd', + name: 'SimpleWebAuthnBrowser', + entryFileNames: 'bundle/[name].es5.umd.min.js', + plugins: [terser(), cleanTslibCommentInUMDBundleTargetingES5()], + }, + plugins: [typescript({ tsconfig: './tsconfig.es5.json' }), nodeResolve(), swanVersionInjector], + }, ]; diff --git a/packages/browser/tsconfig.es5.json b/packages/browser/tsconfig.es5.json new file mode 100644 index 0000000..b652f4b --- /dev/null +++ b/packages/browser/tsconfig.es5.json @@ -0,0 +1,29 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "target": "ES5", + "module": "ES2020", + "moduleResolution": "node", + "lib": [ + "ES5", + "DOM" + ], + "baseUrl": "./src", + "declaration": false, + "declarationDir": null, + "declarationMap": false, + "downlevelIteration": true, + "removeComments": true, + "sourceMap": false, + "importHelpers": true, + "noEmit": true + }, + "include": [ + "./src/**/*.ts" + ], + "exclude": [ + "./src/**/*.test.ts", + "./src/setupTests.ts", + "./src/**/__mocks__" + ] +} |