Skip to content
This repository has been archived by the owner on Nov 5, 2020. It is now read-only.

Update dependency nanoid to v3 #94

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

renovate[bot]
Copy link

@renovate renovate bot commented Apr 29, 2020

This PR contains the following updates:

Package Type Update Change
nanoid dependencies major 2.0.3 -> 3.1.16

Release Notes

ai/nanoid

v3.1.16

Compare Source

  • Speeded up Nano ID 4 times (by Peter Boyer).

v3.1.15

Compare Source

  • Fixed package.types path.

v3.1.14

Compare Source

  • Added package.types.

v3.1.13

Compare Source

  • Removed Node.js 15.0.0 with randomFillSync regression from engines.node.

v3.1.12

Compare Source

  • Improved IE 11 docs.

v3.1.11

Compare Source

  • Fixed asynchronous customAlphabet in browser (by @​LoneRifle).

v3.1.10

Compare Source

  • Fix ES modules support.

v3.1.9

Compare Source

  • Try to fix React Native Expo support.

v3.1.8

Compare Source

  • Add React Native Expo support.

v3.1.7

Compare Source

  • Clean up code.

v3.1.6

Compare Source

  • Avoid self using.

v3.1.5

Compare Source

  • Improve IE docs and warning.

v3.1.4

  • Restrict old Node.js 13 by engines.node (by Cansin Yildiz).

v3.1.3

  • Fix ES modules issue with CLI.

v3.1.2

Compare Source

  • Add shebang to CLI.

v3.1.1

Compare Source

  • Speeded up Nano ID 4 times (by Peter Boyer).

v3.1.0

Compare Source

v3.0.2

Compare Source

  • Fix docs (by Dylan Irlbeck ).

v3.0.1

Compare Source

  • Fix React Native warning on non-secure import (by Jia Huang).

v3.0.0

Compare Source

Nano ID 3.0 is the biggest release in the project history. Unfortunately, you will need to change the code of your application. But the changes are very small in most cases. In return, you will have better performance, smaller size, ES modules and TypeScript support.

Known Issues

  • Only Create React App 4.0 supports dual ESM/CJS modules.

Simple Case

In simple cases, you just need to change default import to named import.

- import nanoid from 'nanoid'
+ import { nanoid } from 'nanoid'

nanoid() //=> "sSAi9F8yakJZPxOCr_WFb"
nanoid(5) //=> "ISe9l"

If you support IE, you need to transpile node_modules by Babel.

Non-secure and asynchronous Nano ID need only import changes as well.

- import nanoid from 'nanoid/non-secure'
+ import { nanoid } from 'nanoid/non-secure'

nanoid() //=> "sSAi9F8yakJZPxOCr_WFb"
- import nanoid from 'nanoid/async'
+ import { nanoid } from 'nanoid/async'

nanoid().then(id => {
  id //=> "sSAi9F8yakJZPxOCr_WFb"
})

TypeScript

Remove @types/nanoid if you have it. Nano ID now have built-in types.

npm uninstall @​types/nanoid

React Native

For Expo you need to load the file by direct path:

- import nanoid from "nanoid/async"
+ import { nanoid } from "nanoid/async/index.native.js"

For the non-Expo environment:

  1. Change polyfill for hardware random generator from expo-random to react-native-get-random-values.

  2. Use sync Nano ID instead of async.

    + import 'react-native-get-random-values'
    
    - import nanoid from 'nanoid/async'
    + import { nanoid } from 'nanoid'
    
      async function createUser () {
        const user = new User()
    -   user.id = await nanoid()
    +   user.id = nanoid()
        return await user.save()
      }
URL-Safe Alphabet

Our default URL-safe alphabet was moved as named export to nanoid path:

- import url from 'nanoid/url'
+ import { urlAlphabet } from 'nanoid'

Custom Alphabet

Now we use the currying API to change the alphabet. It improves performance by pre-calculating some caches for a new alphabet.

We hope the new API will be more readable compare to the old unclear “generate” word.

- import nanoidGenerate from 'nanoid/generate'
+ import { customAlphabet } from 'nanoid'

+ const nanoid = customAlphabet(alphabet, 10)

- nanoidGenerate(alphabet, 10) //=> "0476921501"
+ nanoid() //=> "0476921501"

Non-secure and asynchronous APIs were also changed:

- import nanoidGenerate from 'nanoid/async/generate'
+ import { customAlphabet } from 'nanoid/async'

+ const nanoid = customAlphabet(alphabet, 10)

Custom Random Generator

Custom random generator API now is based on currying as well.

- import nanoidFormat from 'nanoid/format'
- import url from 'nanoid/url'
+ import { customRandom, urlAlphabet } from 'nanoid'

+ const nanoid = customRandom(urlAlphabet, 10, seedRandom)

- nanoidGenerate(seedRandom, url, 10) //=> "sSAi9F8yak"
+ nanoid() //=> "sSAi9F8yak"

We removed a custom random generator from asynchronous API because we didn’t see that somebody used it.

New Features

A few good reasons, why you should migrate to Nano ID 3.0:

  • The size was decreased by 10% from 119 to 108 bytes.
  • We got full TypeScript support. We use check-dts to test out .d.ts files.
    id: number = nanoid() // throws Type 'string' is not assignable to type 'number'.
  • Nano ID now has out-of-the-box ES modules support and extra file to load Nano ID from jsDelivr (use it only for experiments, because of the bad loading performance). Dual ESM/CommonJS packaging is provided by dual-publish and will work in Node.js ≥12, webpack, Parcel, Rollup, and React Native.
    import { nanoid } from 'https://cdn.jsdelivr.net/npm/nanoid/nanoid.js'

v2.1.11

Compare Source

  • Reduce size (by Anton Evzhakov).

v2.1.10

Compare Source

  • Reduce size by 10% (by Anton Khlynovskiy).

v2.1.9

Compare Source

  • Reduce format and async/format size (by Dair Aidarkhanov).

v2.1.8

Compare Source

  • Improve React docs (by Nahum Zsilva).

v2.1.7

Compare Source

  • Reduce index, async and non-secure size (by @​polemius).

v2.1.6

Compare Source

  • Reduce size (by Stas Lashmanov).
  • Return fast mask for Node.js.

v2.1.5

Compare Source

  • Reduce size (by Max Graey).
  • Fix IE support.

v2.1.4

Compare Source

  • Reduce generate size (by Vsevolod Rodionov).
  • Reduce format and format size (by Victor).
  • Reduce async, non-secure and non-secure/generate size.
  • Speed up format and async/format (by Max Graey).
  • Improve development process on Windows (by Stanislav Lashmanov).

v2.1.3

Compare Source

  • Improve performance (by Stephen Richardson).
  • Reduce size (by Stephen Richardson).

v2.1.2

Compare Source

  • Improve docs.

v2.1.1

Compare Source

  • Reduce size (by Anton Evzhakov).

v2.1.0

Compare Source

v2.0.4

Compare Source

  • Improve error text for React Native (by Sebastian Werner).

Renovate configuration

📅 Schedule: At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻️ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by WhiteSource Renovate. View repository job log here.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants