From 352ddc5f657ff76e0b680c67c796369019ceef09 Mon Sep 17 00:00:00 2001 From: Thomas Jahoda Date: Mon, 16 Dec 2024 16:52:12 +0100 Subject: [PATCH 1/3] feat(set-map): introduce MutativeMap to optimize for common scenarios (lots of data, little change) --- .gitignore | 3 + benchmark.jpg | Bin 46365 -> 46334 bytes global.d.ts | 15 +- jest.config.ts | 27 ++ package.json | 35 +- rollup.config.js | 4 +- src/MutativeMap.ts | 261 +++++++++++ src/apply.ts | 3 + src/current.ts | 15 +- src/draft.ts | 37 +- src/generic-utils/equality.ts | 15 + src/index.ts | 1 + src/interface.ts | 7 + src/makeCreator.ts | 4 +- src/map.ts | 9 +- src/mutativeMapHandlers.ts | 135 ++++++ src/patch.ts | 5 +- src/set.ts | 2 +- src/utils/copy.ts | 20 + src/utils/deepFreeze.ts | 12 +- src/utils/draft.ts | 19 +- src/utils/finalize.ts | 6 +- src/utils/forEach.ts | 3 +- src/utils/proto.ts | 4 +- test/__immer_performance_tests__/add-data.ts | 1 + .../incremental.ts | 1 + test/__immer_performance_tests__/large-obj.ts | 1 + test/__immer_performance_tests__/measure.ts | 1 + test/__immer_performance_tests__/todo.ts | 1 + test/benchmark/array-batch-getter.ts | 1 + test/benchmark/array-batch.ts | 1 + test/benchmark/array-single-push.ts | 1 + test/benchmark/array.ts | 1 + test/benchmark/class.ts | 1 + test/benchmark/index.ts | 1 + test/benchmark/map-batch.ts | 28 +- test/benchmark/map.ts | 33 +- test/benchmark/object-batch-getter.ts | 1 + test/benchmark/object-batch.ts | 1 + test/benchmark/object.ts | 1 + test/benchmark/results/map-batch.jpg | Bin 103005 -> 112176 bytes test/benchmark/results/map.jpg | Bin 98320 -> 94572 bytes test/benchmark/results/result.json | 4 +- test/benchmark/set-batch.ts | 1 + test/benchmark/set.ts | 1 + test/create.test.ts | 177 ++++++- test/generic-utils/assertAlways.ts | 14 + test/generic-utils/recordUtil.ts | 165 +++++++ test/immer/__tests__/map-set.ts | 2 +- test/immer/src/immer.ts | 2 +- test/performance/array-object-first-time.ts | 1 + test/performance/array-object.ts | 1 + test/performance/benchmark-array.ts | 1 + test/performance/benchmark-class.ts | 1 + test/performance/benchmark-object.ts | 1 + test/performance/benchmark.ts | 1 + test/performance/benchmarks/forEach.ts | 1 + test/performance/benchmarks/rawReturn.ts | 1 + .../performance/benchmarks/returnWithDraft.ts | 1 + test/performance/big-object.ts | 1 + test/performance/index.ts | 1 + test/performance/mutative-set-map.ts | 95 ++++ test/performance/read-draft/index.ts | 1 + test/performance/sample.ts | 1 + test/performance/set-map.ts | 2 + test/utils/assertHasNoDrafts.ts | 28 ++ test/utils/identityChecking.ts | 26 ++ yarn.lock | 431 +++++++++++++----- 68 files changed, 1490 insertions(+), 188 deletions(-) create mode 100644 jest.config.ts create mode 100644 src/MutativeMap.ts create mode 100644 src/generic-utils/equality.ts create mode 100644 src/mutativeMapHandlers.ts create mode 100644 test/generic-utils/assertAlways.ts create mode 100644 test/generic-utils/recordUtil.ts create mode 100644 test/performance/mutative-set-map.ts create mode 100644 test/utils/assertHasNoDrafts.ts create mode 100644 test/utils/identityChecking.ts diff --git a/.gitignore b/.gitignore index cff47f7e..457de7e8 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,6 @@ dist .tern-port benchmark.csv + +# IntelliJ +/.idea diff --git a/benchmark.jpg b/benchmark.jpg index d33eb8a0e73d5ebbf7aa967e00f46d55415f2d9d..4da51b294e81330f15b165af19f8b42b856e6f96 100644 GIT binary patch literal 46334 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/test/" + ], + "transform": { + "\\.[jt]sx?$": [ + "ts-jest", + { + "tsconfig": { + "noImplicitReturns": false, + "noFallthroughCasesInSwitch": false, + "noUnusedLocals": false, + "noUnusedParameters": false + } + } + ] + }, + "globals": { + "__DEV__": true + }, + prettierPath: require.resolve('prettier-2'), +}; + +export default config; diff --git a/package.json b/package.json index 113358b1..0f87ab3c 100644 --- a/package.json +++ b/package.json @@ -34,14 +34,17 @@ "benchmark:object": "NODE_ENV='production' ts-node test/performance/benchmark-object.ts", "benchmark:array": "NODE_ENV='production' ts-node test/performance/benchmark-array.ts", "benchmark:class": "NODE_ENV='production' ts-node test/performance/benchmark-class.ts", + "benchmark:map": "NODE_ENV='production' ts-node test/benchmark/map.ts", + "benchmark:map-batch": "NODE_ENV='production' ts-node test/benchmark/map-batch.ts", "performance:read-only": "yarn build && NODE_ENV='production' ts-node test/performance/read-draft/index.ts", "performance:immer": "cd test/__immer_performance_tests__ && NODE_ENV='production' ts-node add-data.ts && NODE_ENV='production' ts-node todo.ts && NODE_ENV='production' ts-node incremental.ts", "performance:basic": "cd test/performance && NODE_ENV='production' ts-node index.ts", "performance:set-map": "cd test/performance && NODE_ENV='production' ts-node set-map.ts", + "performance:mutative-set-map": "cd test/performance && NODE_ENV='production' ts-node mutative-set-map.ts", "performance:big-object": "cd test/performance && NODE_ENV='production' ts-node big-object.ts", "performance:sample": "cd test/performance && NODE_ENV='production' ts-node sample.ts", "performance:array-object": "cd test/performance && NODE_ENV='production' ts-node array-object.ts", - "performance": "yarn build && yarn performance:immer && yarn performance:basic && yarn performance:set-map && yarn performance:big-object && yarn performance:sample && yarn performance:array-object", + "performance": "yarn build && yarn performance:immer && yarn performance:basic && yarn performance:set-map && yarn performance:mutative-set-map && yarn performance:big-object && yarn performance:sample && yarn performance:array-object", "build": "yarn clean && rollup --config --bundleConfigAsCjs", "build:doc": "rimraf docs && typedoc --plugin typedoc-plugin-markdown --out docs src/index.ts --readme none", "commit": "yarn git-cz", @@ -85,7 +88,7 @@ "devDependencies": { "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.5", + "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^12.1.1", "@size-limit/esbuild": "^11.1.6", @@ -117,12 +120,15 @@ "lodash": "^4.17.21", "lodash.clonedeep": "^4.5.0", "prettier": "^3.3.3", + "prettier-2": "npm:prettier@^2", + "pretty-format": "^29.7.0", "quickchart-js": "^3.1.2", "redux": "^5.0.1", "rimraf": "^3.0.2", - "rollup": "^4.9.0", + "rollup": "^4.28.1", "seamless-immutable": "^7.1.4", "size-limit": "^11.1.6", + "superjson": "^2.2.2", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", "tslib": "^2.8.1", @@ -136,26 +142,5 @@ "path": "cz-conventional-changelog" } }, - "jest": { - "preset": "ts-jest", - "coveragePathIgnorePatterns": [ - "/test/" - ], - "transform": { - "\\.[jt]sx?$": [ - "ts-jest", - { - "tsconfig": { - "noImplicitReturns": false, - "noFallthroughCasesInSwitch": false, - "noUnusedLocals": false, - "noUnusedParameters": false - } - } - ] - }, - "globals": { - "__DEV__": true - } - } + "packageManager": "yarn@1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" } diff --git a/rollup.config.js b/rollup.config.js index 454d9474..b797b551 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -35,7 +35,7 @@ export default [ declarationDir: 'dist', }), replace({ - __DEV__: 'false', + "__DEV__": 'false', preventAssignment: true, }), ], @@ -76,7 +76,7 @@ export default [ declarationDir: 'dist', }), replace({ - __DEV__: 'true', + "__DEV__": 'true', preventAssignment: true, }), { diff --git a/src/MutativeMap.ts b/src/MutativeMap.ts new file mode 100644 index 00000000..74599f3c --- /dev/null +++ b/src/MutativeMap.ts @@ -0,0 +1,261 @@ +const removedValueSymbol = Symbol('MutativeMap-removedValue'); + +/** + * More efficient version of Map for use with 'mutative' mutations, especially when a lot of entries exist and only a few are changed at a time. (it already is much faster at just a hundred entries though) + * WARNING: does not guarantee iteration order to be the same as the original map (i.e. not insertion order). + * TODO [bug] I think mutative already violates iteration-order contract anyhow? I think updated entries are treated as if they were inserted? or at least read objects are set with draft value and then set to final value, which might impact order. Write test for that + * TODO [MutativeMap] test/implement patch support + * TODO [MutativeMap] MutativeMap does not extend Map. Reasons were: + * 1. reduce the initial complexity/effort of having to implement and test all Map methods; + * 2. prevent external business-logic written to handle Maps to do unsupported stuff with MutativeMap; + * 3. because MutativeMap does not adhere to the contract of insertion-order during iteration, it should not extend Map. + * But maybe all this does not matter and MutativeMap should extend Map. + * + * Background/Details: + * Mutative and especially Immer do not work well for scenarios where a lot of entries exist and only a fraction of the data is accessed/changed per mutation. It has to shallow-copy the whole Map on each mutation, which has significant performance impact compared to directly mutating a Map. + * Compared to immer, mutative is already much faster/better for such scenarios, but using MutativeMap basically reduces the cost to 0. See performance test in test/performance/mutative-set-map.ts. + * This class enables mutative from needing to copy the entire map when a single value is changed. Instead, it stores the original entries separately and only copies the changed data during drafting. + * E.g. if there are 50k entries and only 1 is changed or was recently changed, this class will only copy the map with that 1 changed entry. + * With N=total_count, M=changed_count, this changes the complexity from O(N) to O(M) for drafting. + * Other operations will become slightly more expensive due to having to lookup two Maps in many scenarios, but they have the same asymptotic complexity as a regular Map. + */ +export class MutativeMap { + /** + * The original data that is never changed. + * This may be replaced by {@link compact}-ing the MutativeMap again. + * @private + */ + private immutableData: Map; + /** + * The difference to {@link immutableData}. + * If a key was removed, the value is {@link removedValueSymbol}. + * @private + */ + private patchData: Map; + private _size: number; + + get size() { + return this._size; + } + + constructor( + data?: Map | MutativeMap | Iterable + ) { + // TODO [MutativeMap] [unimportant] copy provided data map except in private constructor call to guarantee isolation? but probably unnecessary performance loss. Maybe freeze on auto-freeze mode, just to make sure. + if (data instanceof MutativeMap) { + this.immutableData = data.immutableData; + this.patchData = new Map(data.patchData); + this._size = data._size; + // TODO [MutativeMap] [performance] compact here if patchData size threshold reached? + } else if (data === undefined) { + this.immutableData = new Map(); + this.patchData = new Map(); + this._size = 0; + } else if (data instanceof Map) { + this.immutableData = data; + this.patchData = new Map(); + this._size = data.size; + } else { + this.immutableData = new Map(data); + this.patchData = new Map(); + this._size = this.immutableData.size; + } + } + + set(key: K, value: V) { + // const immutableMap = getImmutableData(this.mutableData.immutableDataKey); + // const isInImmutable = immutableMap.has(key); + // let isInPatch = this.patchData.has(key); + // if (isInPatch) { + // if (this.patchData.get(key) === removedValueSymbol) { + // isInPatch = false; + // } + // } + // if (!isInImmutable && !isInPatch) { + // this._size++; + // } + + // TODO [MutativeMap] [performance] [unimportant] could slightly optimize to minimize lookups / changes (i.e. not calling immutableData#has twice and not calling this.patchData.delete(key) if patchData#has is false) + if (!this.has(key)) { + this._size++; + } + if (this.immutableData.has(key) && this.immutableData.get(key) === value) { + // re-use immutableData value if it's the same as the new value to minimize size of patchData + // TODO [MutativeMap] [performance] could store drafts somewhere else to avoid setting drafts as values in patchData and then removing them again if they did not change? + this.patchData.delete(key); + }else { + this.patchData.set(key, value as any); + } + } + + delete(key: K) { + if (this.patchData.has(key)) { + if (this.patchData.get(key) !== removedValueSymbol) { + this.patchData.set(key, removedValueSymbol); + this._size--; + } + } else { + const immutableMap = this.immutableData; + if (immutableMap.has(key)) { + this.patchData.set(key, removedValueSymbol); + this._size--; + } + } + } + + get(key: K): V | undefined { + if (this.patchData.has(key)) { + const value = this.patchData.get(key); + if (value === removedValueSymbol) { + return undefined; + } + return value as V; + } + return this.immutableData.get(key); + } + + has(key: K) { + if (this.patchData.has(key)) { + return this.patchData.get(key) !== removedValueSymbol; + } + const immutableMap = this.immutableData; + return immutableMap.has(key); + } + + forEach(callbackfn: (value: V, key: K, map: MutativeMap) => void, thisArg?: any): void { + for (const [key, value] of this.entries()) { + callbackfn.call(thisArg, value, key, this); + } + } + + entriesArray(): [K, V][] { + const entries: [K, V][] = Array.from({ length: this._size }); + let currentEntryIndex = 0; + for (const [key, value] of this.immutableData.entries()) { + if (!this.patchData.has(key)) { + entries[currentEntryIndex++] = [key, value]; + } + } + for (const [key, value] of this.patchData.entries()) { + if (value !== removedValueSymbol) { + entries[currentEntryIndex++] = [key, value as V]; + } + } + return entries; + } + + *entries(): IterableIterator<[K, V]> { + for (const [key, value] of this.immutableData.entries()) { + if (!this.patchData.has(key)) { + yield [key, value]; + } + } + for (const [key, value] of this.patchData.entries()) { + if (value !== removedValueSymbol) { + yield [key, value as V]; + } + } + } + + valuesArray(): V[] { + const values: V[] = Array.from({ length: this._size }); + let currentValueIndex = 0; + for (const [key, value] of this.immutableData.entries()) { + if (!this.patchData.has(key)) { + values[currentValueIndex++] = value; + } + } + for (const value of this.patchData.values()) { + if (value !== removedValueSymbol) { + values[currentValueIndex++] = value as V; + } + } + return values; + } + + *values(): IterableIterator { + for (const [key, value] of this.immutableData.entries()) { + if (!this.patchData.has(key)) { + yield value; + } + } + for (const value of this.patchData.values()) { + if (value !== removedValueSymbol) { + yield value as V; + } + } + } + + keysArray(): K[] { + const immutableMap = this.immutableData; + + const keys: K[] = Array.from({ length: this._size }); + let currentKeyIndex = 0; + for (const key of immutableMap.keys()) { + if (!this.patchData.has(key)) { + keys[currentKeyIndex++] = key; + } + } + for (const key of this.patchData.keys()) { + if (this.patchData.get(key) !== removedValueSymbol) { + keys[currentKeyIndex++] = key; + } + } + return keys; + } + + *keys(): IterableIterator { + const immutableMap = this.immutableData; + + for (const key of immutableMap.keys()) { + if (!this.patchData.has(key)) { + yield key; + } + } + for (const key of this.patchData.keys()) { + if (this.patchData.get(key) !== removedValueSymbol) { + yield key; + } + } + } + + clear() { + this.immutableData = new Map(); + this.patchData = new Map(); + this._size = 0; + } + + map(fn: (value: V, key: K) => ResultValue): ResultValue[] { + const result: ResultValue[] = Array.from({ length: this._size }); + for (const [key, value] of this.entries()) { + result.push(fn(value, key)); + } + return result; + } + + /** + * Call this to improve the performance after a series of set/delete operations to minimize the data needed to be copied when drafting. + * This is especially useful when a lot of entries were changed recently. + * @return The number of entries that were in the patch data. If this was high, compacting was very useful. + */ + compact(mutativeMap: MutativeMap): number { + let patchDataSize = mutativeMap.patchData.size; + if (patchDataSize === 0) { + return 0; + } + // TODO [MutativeMap] test compacting MutativeMap (especially during mutation. Should that even be allowed? May hurt performance by compacting before unchanged draft values were finalized, which will make patchData grow unnecessarily) + const mapWithAllData = new Map(mutativeMap.entries()); + const allData = new Map(mapWithAllData); + // for (const [key, value] of mutativeMap.patchData) { + // assertAlways(!isDraft(value), () => `Draft value for key=${key} found in patch data while compacting`); + // if (value === removedValueSymbol) { + // allData.delete(key); + // } else { + // allData.set(key, value as V); + // } + // } + mutativeMap.patchData = new Map(); + mutativeMap.immutableData = allData; + return patchDataSize; + } +} diff --git a/src/apply.ts b/src/apply.ts index b358c3f9..5c9bce22 100644 --- a/src/apply.ts +++ b/src/apply.ts @@ -81,6 +81,7 @@ export function apply( case Operation.Replace: switch (type) { case DraftType.Map: + case DraftType.MutativeMap: return base.set(key, value); case DraftType.Set: throw new Error(`Cannot apply replace patch to set.`); @@ -97,6 +98,7 @@ export function apply( ? base.push(value) : base.splice(key as number, 0, value); case DraftType.Map: + case DraftType.MutativeMap: return base.set(key, value); case DraftType.Set: return base.add(value); @@ -108,6 +110,7 @@ export function apply( case DraftType.Array: return base.splice(key as number, 1); case DraftType.Map: + case DraftType.MutativeMap: return base.delete(key); case DraftType.Set: return base.delete(patch.value); diff --git a/src/current.ts b/src/current.ts index bfc451d5..c5691ade 100644 --- a/src/current.ts +++ b/src/current.ts @@ -8,10 +8,11 @@ import { isBaseSetInstance, isDraft, isDraftable, - isEqual, set, shallowCopy, } from './utils'; +import { objectIs } from './generic-utils/equality'; +import { MutativeMap } from './MutativeMap'; export function handleReturnValue(options: { rootDraft: ProxyDraft | undefined; @@ -21,6 +22,7 @@ export function handleReturnValue(options: { isRoot?: boolean; }) { const { rootDraft, value, useRawReturn = false, isRoot = true } = options; + // TODO doesn't this iterate over the proxy too? or does getOwnKeys only return the keys of the original object? forEach(value, (key, item, source) => { const proxyDraft = getProxyDraft(item); // just handle the draft which is created by the same rootDraft @@ -67,15 +69,18 @@ function getCurrent(target: any) { const type = getType(target); if (proxyDraft && !proxyDraft.operated) return proxyDraft.original; let currentValue: any; + function ensureShallowCopy() { currentValue = type === DraftType.Map ? !isBaseMapInstance(target) ? new (Object.getPrototypeOf(target).constructor)(target) : new Map(target) - : type === DraftType.Set - ? Array.from(proxyDraft!.setMap!.values()!) - : shallowCopy(target, proxyDraft?.options); + : type === DraftType.MutativeMap + ? new MutativeMap(target) + : type === DraftType.Set + ? Array.from(proxyDraft!.setMap!.values()!) + : shallowCopy(target, proxyDraft?.options); } if (proxyDraft) { @@ -93,7 +98,7 @@ function getCurrent(target: any) { } forEach(currentValue, (key, value) => { - if (proxyDraft && isEqual(get(proxyDraft.original, key), value)) return; + if (proxyDraft && objectIs(get(proxyDraft.original, key), value)) return; const newValue = getCurrent(value); if (newValue !== value) { if (currentValue === target) ensureShallowCopy(); diff --git a/src/draft.ts b/src/draft.ts index 53904482..f8da4940 100644 --- a/src/draft.ts +++ b/src/draft.ts @@ -18,7 +18,6 @@ import { getType, getValue, has, - isEqual, isDraftable, latest, markChanged, @@ -32,15 +31,21 @@ import { } from './utils'; import { checkReadable } from './unsafe'; import { generatePatches } from './patch'; +import { objectIs } from './generic-utils/equality'; +import { + mutativeMapHandler, + mutativeMapHandlerKeys, +} from './mutativeMapHandlers'; +import { MutativeMap } from './MutativeMap'; const draftsCache = new WeakSet(); const proxyHandler: ProxyHandler = { get(target: ProxyDraft, key: string | number | symbol, receiver: any) { - const copy = target.copy?.[key]; + const copyValue = target.copy?.[key]; // Improve draft reading performance by caching the draft copy. - if (copy && draftsCache.has(copy)) { - return copy; + if (copyValue && draftsCache.has(copyValue)) { + return copyValue; } if (key === PROXY_DRAFT) return target; let markResult: any; @@ -49,7 +54,7 @@ const proxyHandler: ProxyHandler = { // or `Uncaught TypeError: Method get Set.prototype.size called on incompatible receiver #` const value = key === 'size' && - (target.original instanceof Map || target.original instanceof Set) + ( target.original instanceof Map || target.original instanceof MutativeMap|| target.original instanceof Set) ? Reflect.get(target.original, key) : Reflect.get(target.original, key, receiver); markResult = target.options.mark(value, dataTypes); @@ -64,6 +69,7 @@ const proxyHandler: ProxyHandler = { if (source instanceof Map && mapHandlerKeys.includes(key as any)) { if (key === 'size') { + // TODO [documentation] why this "fast-path" here? return Object.getOwnPropertyDescriptor(mapHandler, 'size')!.get!.call( target.proxy ); @@ -74,8 +80,22 @@ const proxyHandler: ProxyHandler = { } } + if (source instanceof MutativeMap && mutativeMapHandlerKeys.includes(key as any)) { + if (key === 'size') { + // TODO [documentation] why this "fast-path" here? + return Object.getOwnPropertyDescriptor(mapHandler, 'size')!.get!.call( + target.proxy + ); + } + const handle = mutativeMapHandler[key as keyof typeof mutativeMapHandler] as Function; + if (handle) { + return handle.bind(target.proxy); + } + } + if (source instanceof Set && setHandlerKeys.includes(key as any)) { if (key === 'size') { + // TODO [documentation] why this "fast-path" here? return Object.getOwnPropertyDescriptor(setHandler, 'size')!.get!.call( target.proxy ); @@ -152,7 +172,7 @@ const proxyHandler: ProxyHandler = { } const current = peek(latest(target), key); const currentProxyDraft = getProxyDraft(current); - if (currentProxyDraft && isEqual(currentProxyDraft.original, value)) { + if (currentProxyDraft && objectIs(currentProxyDraft.original, value)) { // !case: ignore the case of assigning the original draftable value to a draft target.copy![key] = value; target.assignedMap = target.assignedMap ?? new Map(); @@ -161,13 +181,13 @@ const proxyHandler: ProxyHandler = { } // !case: handle new props with value 'undefined' if ( - isEqual(value, current) && + objectIs(value, current) && (value !== undefined || has(target.original, key)) ) return true; ensureShallowCopy(target); markChanged(target); - if (has(target.original, key) && isEqual(value, target.original[key])) { + if (has(target.original, key) && objectIs(value, target.original[key])) { // !case: handle the case of assigning the original non-draftable value to a draft target.assignedMap!.delete(key); } else { @@ -243,6 +263,7 @@ export function createDraft(createDraftOptions: { options, // Mapping of draft Set items to their corresponding draft values. setMap: + // TODO [performance] so are Sets slower than Maps because of always creating a new Map with all the entries even though it is only read? type === DraftType.Set ? new Map((original as Set).entries()) : undefined, diff --git a/src/generic-utils/equality.ts b/src/generic-utils/equality.ts new file mode 100644 index 00000000..745fde9a --- /dev/null +++ b/src/generic-utils/equality.ts @@ -0,0 +1,15 @@ +/** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + * (copied from React) + */ +function is(x: any, y: any) { + return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare + ; +} + +/** + * Object.is but with implicit polyfill if necessary + * (copied from React) + */ +export const objectIs = typeof Object.is === 'function' ? Object.is : is; diff --git a/src/index.ts b/src/index.ts index e20d278a..2745d558 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,6 +8,7 @@ export { rawReturn } from './rawReturn'; export { isDraft } from './utils/draft'; export { isDraftable } from './utils/draft'; export { markSimpleObject } from './utils/marker'; +export { MutativeMap } from './MutativeMap'; export { castDraft, castImmutable, castMutable } from './utils/cast'; export type { diff --git a/src/interface.ts b/src/interface.ts index 0fbabe30..3fcb265d 100644 --- a/src/interface.ts +++ b/src/interface.ts @@ -4,6 +4,7 @@ export const enum DraftType { Object, Array, Map, + MutativeMap, Set, } @@ -45,7 +46,13 @@ export interface ProxyDraft { options: Options & { updatedValues?: WeakMap }; parent?: ProxyDraft | null; key?: string | number | symbol; + /** + * Only for Set to store drafts. + */ setMap?: Map; + /** + * Marks which keys have been assigned new values (also during drafting properties). + */ assignedMap?: Map; callbacks?: ((patches?: Patches, inversePatches?: Patches) => void)[]; } diff --git a/src/makeCreator.ts b/src/makeCreator.ts index e4e93881..e089f058 100644 --- a/src/makeCreator.ts +++ b/src/makeCreator.ts @@ -12,11 +12,11 @@ import { getProxyDraft, isDraft, isDraftable, - isEqual, revokeProxy, } from './utils'; import { current, handleReturnValue } from './current'; import { RAW_RETURN_SYMBOL, dataTypes } from './constant'; +import { objectIs } from './generic-utils/equality'; type MakeCreator = < _F extends boolean = false, @@ -179,7 +179,7 @@ export const makeCreator: MakeCreator = (arg) => { if (!isDraft(value)) { if ( value !== undefined && - !isEqual(value, draft) && + !objectIs(value, draft) && proxyDraft?.operated ) { throw new Error( diff --git a/src/map.ts b/src/map.ts index 52dbc2df..0954ae6d 100644 --- a/src/map.ts +++ b/src/map.ts @@ -6,14 +6,15 @@ import { ensureShallowCopy, getProxyDraft, isDraftable, - isEqual, latest, markChanged, markFinalization, } from './utils'; +import { objectIs } from './generic-utils/equality'; export const mapHandler = { get size() { + // TODO remove unused code? const current: Map = latest(getProxyDraft(this)!); return current.size; }, @@ -23,7 +24,7 @@ export const mapHandler = { set(key: any, value: any) { const target = getProxyDraft(this)!; const source = latest(target); - if (!source.has(key) || !isEqual(source.get(key), value)) { + if (!source.has(key) || !objectIs(source.get(key), value)) { ensureShallowCopy(target); markChanged(target); target.assignedMap!.set(key, true); @@ -102,7 +103,7 @@ export const mapHandler = { [iteratorSymbol]: () => this.values(), next: () => { const result = iterator.next(); - if (result.done) return result; + if (result.done) return result; // TODO [bug] last value is not wrapped in proxy?!?! or does it even just return a key?! write test const value = this.get(result.value); return { done: false, @@ -117,7 +118,7 @@ export const mapHandler = { [iteratorSymbol]: () => this.entries(), next: () => { const result = iterator.next(); - if (result.done) return result; + if (result.done) return result; // TODO [bug] last value is not wrapped in proxy?!?! or does it even just return a key?! write test const value = this.get(result.value); return { done: false, diff --git a/src/mutativeMapHandlers.ts b/src/mutativeMapHandlers.ts new file mode 100644 index 00000000..7fed1dc6 --- /dev/null +++ b/src/mutativeMapHandlers.ts @@ -0,0 +1,135 @@ +import { dataTypes, iteratorSymbol } from './constant'; +import { internal } from './internal'; +import { generatePatches } from './patch'; +import { checkReadable } from './unsafe'; +import { + ensureShallowCopy, + getProxyDraft, + isDraftable, + latest, + markChanged, + markFinalization, +} from './utils'; +import { objectIs } from './generic-utils/equality'; +import { MutativeMap } from './MutativeMap'; + +// TODO [MutativeMap] [refactoring] ended up being basically an exact copy of mapHandlers, so code could be deduplicated. But additional methods to optimize performance could be added here. +export const mutativeMapHandler = { + get size() { + // TODO remove unused code? + const current: MutativeMap = latest(getProxyDraft(this)!); + return current.size; + }, + has(key: any): boolean { + return latest(getProxyDraft(this)!).has(key); + }, + set(key: any, value: any) { + const target = getProxyDraft(this)!; + const source = latest(target); + if (!source.has(key) || !objectIs(source.get(key), value)) { + ensureShallowCopy(target); + markChanged(target); + target.assignedMap!.set(key, true); + target.copy.set(key, value); + markFinalization(target, key, value, generatePatches); + } + return this; + }, + delete(key: any): boolean { + if (!this.has(key)) { + return false; + } + const target = getProxyDraft(this)!; + ensureShallowCopy(target); + markChanged(target); + if (target.original.has(key)) { + target.assignedMap!.set(key, false); + } else { + target.assignedMap!.delete(key); + } + target.copy.delete(key); + return true; + }, + clear() { + const target = getProxyDraft(this)!; + if (!this.size) return; + ensureShallowCopy(target); + markChanged(target); + target.assignedMap = new Map(); + for (const [key] of target.original) { + target.assignedMap.set(key, false); + } + target.copy!.clear(); + }, + forEach(callback: (value: any, key: any, self: any) => void, thisArg?: any) { + const target = getProxyDraft(this)!; + latest(target).forEach((_value: any, _key: any) => { + callback.call(thisArg, this.get(_key), _key, this); + }); + }, + get(key: any): any { + const target = getProxyDraft(this)!; + const value = latest(target).get(key); + const mutable = + target.options.mark?.(value, dataTypes) === dataTypes.mutable; + if (target.options.strict) { + checkReadable(value, target.options, mutable); + } + if (mutable) { + return value; + } + if (target.finalized || !isDraftable(value, target.options)) { + return value; + } + // drafted or reassigned + if (value !== target.original.get(key)) { + return value; + } + const draft = internal.createDraft({ + original: value, + parentDraft: target, + key, + finalities: target.finalities, + options: target.options, + }); + ensureShallowCopy(target); + target.copy.set(key, draft); + return draft; + }, + keys(): IterableIterator { + return latest(getProxyDraft(this)!).keys(); + }, + values(): IterableIterator { + const iterator = this.keys(); + return { + [iteratorSymbol]: () => this.values(), + next: () => { + const result = iterator.next(); + const value = this.get(result.value); + return { + done: result.done, + value, + }; + }, + } as any; + }, + entries(): IterableIterator<[any, any]> { + const iterator = this.keys(); + return { + [iteratorSymbol]: () => this.entries(), + next: () => { + const result = iterator.next(); + const value = this.get(result.value); + return { + done: result.done, + value: [result.value, value], + }; + }, + } as any; + }, + [iteratorSymbol]() { + return this.entries(); + }, +}; + +export const mutativeMapHandlerKeys = Reflect.ownKeys(mutativeMapHandler); diff --git a/src/patch.ts b/src/patch.ts index ebf6762d..9573606f 100644 --- a/src/patch.ts +++ b/src/patch.ts @@ -1,5 +1,6 @@ import { DraftType, Operation, Patches, ProxyDraft } from './interface'; -import { cloneIfNeeded, escapePath, get, has, isEqual } from './utils'; +import { cloneIfNeeded, escapePath, get, has } from './utils'; +import { objectIs } from './generic-utils/equality'; function generateArrayPatches( proxyState: ProxyDraft>, @@ -83,7 +84,7 @@ function generatePatchesFromAssigned( : has(original, key) ? Operation.Replace : Operation.Add; - if (isEqual(originalValue, value) && op === Operation.Replace) return; + if (objectIs(originalValue, value) && op === Operation.Replace) return; const _path = basePath.concat(key); const path = escapePath(_path, pathAsArray); patches.push(op === Operation.Remove ? { op, path } : { op, path, value }); diff --git a/src/set.ts b/src/set.ts index 824aa735..e55ccab6 100644 --- a/src/set.ts +++ b/src/set.ts @@ -19,7 +19,7 @@ const getNextIterator = ) => () => { const result = iterator.next(); - if (result.done) return result; + if (result.done) return result; // TODO [bug] last value is not wrapped in proxy?!?! write test const key = result.value as any; let value = target.setMap!.get(key); const currentDraft = getProxyDraft(value); diff --git a/src/utils/copy.ts b/src/utils/copy.ts index 567892e0..b00cfd09 100644 --- a/src/utils/copy.ts +++ b/src/utils/copy.ts @@ -3,6 +3,8 @@ import { dataTypes } from '../constant'; import { getValue, isDraft, isDraftable } from './draft'; import { isBaseMapInstance, isBaseSetInstance } from './proto'; +import { MutativeMap } from '../MutativeMap'; + function strictCopy(target: any) { const copy = Object.create(Object.getPrototypeOf(target)); Reflect.ownKeys(target).forEach((key: any) => { @@ -48,6 +50,12 @@ export function shallowCopy(original: any, options?: Options) { return new SubClass(original); } return new Map(original); + } else if (original instanceof MutativeMap) { + if (!isBaseMutativeMapInstance(original)) { + const SubClass = Object.getPrototypeOf(original).constructor; + return new SubClass(original); + } + return new MutativeMap(original); } else if ( options?.mark && ((markResult = options.mark(original, dataTypes)), @@ -108,6 +116,13 @@ function deepClone(target: any) { } return new Map(iterable); } + if (target instanceof MutativeMap) { + const iterable = Array.from(target.entries()).map(([k, v]) => [ + k, + deepClone(v), + ]) as Iterable; + return new MutativeMap(iterable); + } if (target instanceof Set) { const iterable = Array.from(target).map(deepClone); if (!isBaseSetInstance(target)) { @@ -125,4 +140,9 @@ export function cloneIfNeeded(target: T): T { return isDraft(target) ? deepClone(target) : target; } +export function isBaseMutativeMapInstance(obj: any) { + return Object.getPrototypeOf(obj) === MutativeMap.prototype; +} + + export { deepClone }; diff --git a/src/utils/deepFreeze.ts b/src/utils/deepFreeze.ts index ec7553ab..92c90fbb 100644 --- a/src/utils/deepFreeze.ts +++ b/src/utils/deepFreeze.ts @@ -1,6 +1,8 @@ import { DraftType } from '../interface'; import { getType, isDraft } from './draft'; +import { MutativeMap } from '../MutativeMap'; + function throwFrozenError() { throw new Error('Cannot modify frozen object'); } @@ -39,7 +41,7 @@ export function deepFreeze( const parent = stack![index]; if ( typeof key === 'object' && - (parent instanceof Map || parent instanceof Set) + (parent instanceof Map || parent instanceof MutativeMap || parent instanceof Set) ) return Array.from(parent.keys()).indexOf(key); return key; @@ -70,6 +72,14 @@ export function deepFreeze( } target.set = target.clear = target.delete = throwFrozenError; break; + case DraftType.MutativeMap: + for (const [key, value] of target) { + if (isFreezable(key)) deepFreeze(key, key, updatedValues, stack, keys); + if (isFreezable(value)) + deepFreeze(value, key, updatedValues, stack, keys); + } + target.set = target.clear = target.delete = throwFrozenError; + break; case DraftType.Set: for (const value of target) { if (isFreezable(value)) diff --git a/src/utils/draft.ts b/src/utils/draft.ts index 5549102c..b1a7790d 100644 --- a/src/utils/draft.ts +++ b/src/utils/draft.ts @@ -2,6 +2,8 @@ import { DraftType, Mark, ProxyDraft } from '../interface'; import { dataTypes, PROXY_DRAFT } from '../constant'; import { has } from './proto'; +import { MutativeMap } from '../MutativeMap'; + export function latest(proxyDraft: ProxyDraft): T { return proxyDraft.copy ?? proxyDraft.original; } @@ -20,7 +22,7 @@ export function getProxyDraft(value: T): ProxyDraft | null { export function getValue(value: T): T { const proxyDraft = getProxyDraft(value); - return proxyDraft ? proxyDraft.copy ?? proxyDraft.original : value; + return proxyDraft ? (proxyDraft.copy ?? proxyDraft.original) : value; } /** @@ -33,6 +35,7 @@ export function isDraftable(value: any, options?: { mark?: Mark }) { Object.getPrototypeOf(value) === Object.prototype || Array.isArray(value) || value instanceof Map || + value instanceof MutativeMap || value instanceof Set || (!!options?.mark && ((markResult = options.mark(value, dataTypes)) === dataTypes.immutable || @@ -79,17 +82,18 @@ export function getPath( export function getType(target: any) { if (Array.isArray(target)) return DraftType.Array; if (target instanceof Map) return DraftType.Map; + if (target instanceof MutativeMap) return DraftType.MutativeMap; if (target instanceof Set) return DraftType.Set; return DraftType.Object; } export function get(target: any, key: PropertyKey) { - return getType(target) === DraftType.Map ? target.get(key) : target[key]; + return getType(target) === DraftType.Map || getType(target) === DraftType.MutativeMap ? target.get(key) : target[key]; } export function set(target: any, key: PropertyKey, value: any) { const type = getType(target); - if (type === DraftType.Map) { + if (type === DraftType.Map || type === DraftType.MutativeMap) { target.set(key, value); } else { target[key] = value; @@ -102,17 +106,10 @@ export function peek(target: any, key: PropertyKey) { return source[key]; } -export function isEqual(x: any, y: any) { - if (x === y) { - return x !== 0 || 1 / x === 1 / y; - } else { - return x !== x && y !== y; - } -} - export function revokeProxy(proxyDraft: ProxyDraft | null) { if (!proxyDraft) return; while (proxyDraft.finalities.revoke.length > 0) { + // TODO [performance] this can't be the fastest way to revoke all proxies. Shouldn't it just be iterated over and then cleared or just left alone and be garbage-collected anyhow? const revoke = proxyDraft.finalities.revoke.pop()!; revoke(); } diff --git a/src/utils/finalize.ts b/src/utils/finalize.ts index f545c62d..3f62d470 100644 --- a/src/utils/finalize.ts +++ b/src/utils/finalize.ts @@ -7,10 +7,10 @@ import { getValue, isDraft, isDraftable, - isEqual, set, } from './draft'; import { forEach } from './forEach'; +import { objectIs } from '../generic-utils/equality'; export function handleValue( target: any, @@ -121,7 +121,7 @@ export function markFinalization( } proxyDraft.callbacks.push((patches, inversePatches) => { const copy = target.type === DraftType.Set ? target.setMap : target.copy; - if (isEqual(get(copy, key), value)) { + if (objectIs(get(copy, key), value)) { let updatedValue = proxyDraft.original; if (proxyDraft.copy) { updatedValue = proxyDraft.copy; @@ -148,7 +148,7 @@ export function markFinalization( // !case: assign the non-draft value target.finalities.draft.push(() => { const copy = target.type === DraftType.Set ? target.setMap : target.copy; - if (isEqual(get(copy, key), value)) { + if (objectIs(get(copy, key), value)) { finalizeAssigned(target, key); } }); diff --git a/src/utils/forEach.ts b/src/utils/forEach.ts index 8d84c3bc..18deeb3b 100644 --- a/src/utils/forEach.ts +++ b/src/utils/forEach.ts @@ -1,5 +1,6 @@ import { DraftType } from '../interface'; import { getType } from './draft'; +import { MutativeMap } from '../MutativeMap'; export function forEach( target: T, @@ -17,7 +18,7 @@ export function forEach( index += 1; } } else { - (target as Map | Set).forEach((entry: any, index: any) => + (target as Map | MutativeMap | Set).forEach((entry: any, index: any) => iter(index, entry, target) ); } diff --git a/src/utils/proto.ts b/src/utils/proto.ts index f4d3b5cd..7fdaf76b 100644 --- a/src/utils/proto.ts +++ b/src/utils/proto.ts @@ -1,5 +1,7 @@ +import { MutativeMap } from '../MutativeMap'; + export function has(target: object, key: PropertyKey) { - return target instanceof Map + return target instanceof Map || target instanceof MutativeMap ? target.has(key) : Object.prototype.hasOwnProperty.call(target, key); } diff --git a/test/__immer_performance_tests__/add-data.ts b/test/__immer_performance_tests__/add-data.ts index b2c4e190..ee9dd549 100644 --- a/test/__immer_performance_tests__/add-data.ts +++ b/test/__immer_performance_tests__/add-data.ts @@ -1,5 +1,6 @@ // @ts-nocheck 'use strict'; +(globalThis as any).__DEV__ = false; import { produce, setAutoFreeze } from 'immer'; import cloneDeep from 'lodash.clonedeep'; diff --git a/test/__immer_performance_tests__/incremental.ts b/test/__immer_performance_tests__/incremental.ts index 5e08daf6..735dd871 100644 --- a/test/__immer_performance_tests__/incremental.ts +++ b/test/__immer_performance_tests__/incremental.ts @@ -1,5 +1,6 @@ // @ts-nocheck 'use strict'; +(globalThis as any).__DEV__ = false; import { produce, setAutoFreeze } from 'immer'; import cloneDeep from 'lodash.clonedeep'; import Immutable from 'immutable'; diff --git a/test/__immer_performance_tests__/large-obj.ts b/test/__immer_performance_tests__/large-obj.ts index 4aacff41..b1ea3945 100644 --- a/test/__immer_performance_tests__/large-obj.ts +++ b/test/__immer_performance_tests__/large-obj.ts @@ -1,4 +1,5 @@ // @ts-nocheck +(globalThis as any).__DEV__ = false; import { produce, setUseStrictShallowCopy } from 'immer'; import { measure } from './measure'; diff --git a/test/__immer_performance_tests__/measure.ts b/test/__immer_performance_tests__/measure.ts index dd15b103..e72247c7 100644 --- a/test/__immer_performance_tests__/measure.ts +++ b/test/__immer_performance_tests__/measure.ts @@ -1,5 +1,6 @@ // @ts-nocheck 'use strict'; +(globalThis as any).__DEV__ = false; function measureTime(setup, fn) { if (!fn) { diff --git a/test/__immer_performance_tests__/todo.ts b/test/__immer_performance_tests__/todo.ts index 2249c46a..ae0a8f18 100644 --- a/test/__immer_performance_tests__/todo.ts +++ b/test/__immer_performance_tests__/todo.ts @@ -2,6 +2,7 @@ /* eslint-disable @typescript-eslint/no-empty-function */ // @ts-nocheck 'use strict'; +(globalThis as any).__DEV__ = false; import { enablePatches, produce, setAutoFreeze } from 'immer'; import cloneDeep from 'lodash.clonedeep'; diff --git a/test/benchmark/array-batch-getter.ts b/test/benchmark/array-batch-getter.ts index 41534c82..f429a9ee 100644 --- a/test/benchmark/array-batch-getter.ts +++ b/test/benchmark/array-batch-getter.ts @@ -2,6 +2,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import path from 'path'; import https from 'https'; diff --git a/test/benchmark/array-batch.ts b/test/benchmark/array-batch.ts index ba2f99d5..e5ecde42 100644 --- a/test/benchmark/array-batch.ts +++ b/test/benchmark/array-batch.ts @@ -2,6 +2,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import path from 'path'; import https from 'https'; diff --git a/test/benchmark/array-single-push.ts b/test/benchmark/array-single-push.ts index cdba14b4..2a2bb738 100644 --- a/test/benchmark/array-single-push.ts +++ b/test/benchmark/array-single-push.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import path from 'path'; import https from 'https'; diff --git a/test/benchmark/array.ts b/test/benchmark/array.ts index 9734f8f1..e144e651 100644 --- a/test/benchmark/array.ts +++ b/test/benchmark/array.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import path from 'path'; import https from 'https'; diff --git a/test/benchmark/class.ts b/test/benchmark/class.ts index eac5f50b..1aaf6174 100644 --- a/test/benchmark/class.ts +++ b/test/benchmark/class.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import path from 'path'; import https from 'https'; diff --git a/test/benchmark/index.ts b/test/benchmark/index.ts index e7fbb068..f56aef32 100644 --- a/test/benchmark/index.ts +++ b/test/benchmark/index.ts @@ -1,4 +1,5 @@ /* eslint-disable no-loop-func */ +(globalThis as any).__DEV__ = false; import fs from 'fs'; import { spawn } from 'child_process'; import path from 'path'; diff --git a/test/benchmark/map-batch.ts b/test/benchmark/map-batch.ts index 8dcf2596..84a1f4b5 100644 --- a/test/benchmark/map-batch.ts +++ b/test/benchmark/map-batch.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import path from 'path'; import https from 'https'; @@ -21,7 +22,7 @@ import { // produceWithPatches, // setAutoFreeze, // } from '../../../temp/immer/dist'; -import { create } from '../..'; +import { create, MutativeMap } from '../..'; enableMapSet(); @@ -37,6 +38,13 @@ const config: Parameters[0] = { data: [], fill: false, }, + { + label: 'MutativeMap', + backgroundColor: 'rgba(235,54,220,0.5)', + borderColor: 'rgba(235,54,220,0.5)', + data: [], + fill: false, + }, // { // label: 'Naive handcrafted reducer', // backgroundColor: 'rgba(255, 0, 0, 0.5)', @@ -93,7 +101,7 @@ const run = (size: number) => { const suite = new Suite(); let i: number; - let baseState: Map; + let baseState: Map | MutativeMap; let MODIFY_FACTOR = 0.1; suite @@ -113,6 +121,22 @@ const run = (size: number) => { }, } ) + .add( + 'MutativeMap', + () => { + const state = create(baseState, (draft) => { + for (let index = 0; index < size * MODIFY_FACTOR; index++) { + draft.get(index).value = i; + } + }); + }, + { + onStart: () => { + i = Math.random(); + baseState = new MutativeMap(getData(size)); + }, + } + ) // .add( // 'Naive handcrafted reducer', // () => { diff --git a/test/benchmark/map.ts b/test/benchmark/map.ts index 077bf1c5..70f33a0f 100644 --- a/test/benchmark/map.ts +++ b/test/benchmark/map.ts @@ -1,6 +1,8 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck + +(globalThis as any).__DEV__ = false; import fs from 'fs'; import path from 'path'; import https from 'https'; @@ -21,7 +23,7 @@ import { // produceWithPatches, // setAutoFreeze, // } from '../../../temp/immer/dist'; -import { create } from '../..'; +import { create, MutativeMap } from '../..'; enableMapSet(); @@ -37,6 +39,13 @@ const config: Parameters[0] = { data: [], fill: false, }, + { + label: 'MutativeMap', + backgroundColor: 'rgba(235,54,220,0.5)', + borderColor: 'rgba(235,54,220,0.5)', + data: [], + fill: false, + }, // { // label: 'Naive handcrafted reducer', // backgroundColor: 'rgba(255, 0, 0, 0.5)', @@ -93,7 +102,7 @@ const run = (size: number) => { const suite = new Suite(); let i: number; - let baseState: Map; + let baseState: Map | MutativeMap; suite .add( @@ -110,6 +119,20 @@ const run = (size: number) => { }, } ) + .add( + 'MutativeMap', + () => { + const state = create(baseState, (draft) => { + draft.get(0).value = i; + }); + }, + { + onStart: () => { + i = Math.random(); + baseState = new MutativeMap(getData(size)); + }, + } + ) // .add( // 'Naive handcrafted reducer', // () => { @@ -153,9 +176,15 @@ const run = (size: number) => { }; [ + // 100 - 900 + // ...Array(9) + // .fill(1) + // .map((_, i) => (i + 1) * 10 ** 2), + // 1000 - 9000 ...Array(9) .fill(1) .map((_, i) => (i + 1) * 10 ** 3), + // 10000 - 90000 ...Array(9) .fill(1) .map((_, i) => (i + 1) * 10 ** 4), diff --git a/test/benchmark/object-batch-getter.ts b/test/benchmark/object-batch-getter.ts index adc554ef..e0150e73 100644 --- a/test/benchmark/object-batch-getter.ts +++ b/test/benchmark/object-batch-getter.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import path from 'path'; import https from 'https'; diff --git a/test/benchmark/object-batch.ts b/test/benchmark/object-batch.ts index f631e846..cb47f135 100644 --- a/test/benchmark/object-batch.ts +++ b/test/benchmark/object-batch.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import path from 'path'; import https from 'https'; diff --git a/test/benchmark/object.ts b/test/benchmark/object.ts index 2a22fcbd..3c38b39a 100644 --- a/test/benchmark/object.ts +++ b/test/benchmark/object.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import path from 'path'; import https from 'https'; diff --git a/test/benchmark/results/map-batch.jpg b/test/benchmark/results/map-batch.jpg index 480835defd239567ba04a0e051b0404bca24f990..0a11e2bba7c75dec81b994c7675a0f439e02440f 100644 GIT binary patch literal 112176 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 literal 103005 zcmdqJby!sI`Y$|)O(>vrh$x|SHz)`yC8C0~fFLz=r=p@#B1o5lgp^1O-O?pU4ns;w zcf)%xaqshc|2gOHb7o&&-z^Sn)~xkB_x-7Ry}hR_Pjr_0EDD7px^r9hJ_?0DjY1vM zIDHa+vP|D{75;P5KtWy>b%^{gp)4f?g}Q{gBYWe4bIcsh)c(R$?BcRj`qfV-I4(UW zCnUXj`;z1H{uW~zF-HrZehWjp>X!AmL8Gxoqe)RAk@65>Cted?p|&eSq+*fcaXY=ak7Q@Q(cX^XImTN=j<#=@OjsvuCW$;av4*`NWQ$ zvPnc%9GIObPOH}Tdx_)hV^n85e%L>L{FqkUxnsWUszMkyda#hVx4pU9aB~5NUTlq* zim$De4NC4(yL~2p?VIS&4RM!|=ckr7HyM8MzZLoV_3Ku5w&yKV(=_aE za~Ox3x2F%~*9mF)ZQG|g8mEbgjn}4sD#nRNk}$~;KHJ%8(rV5uPi_v`wh^YC8?K0t ziJ?Wkc=1A`%+&!C-`v(VxwpL<`tc*l`SX>9HscY3melaEbXj^2AO0Av@hx(kr#?71 zK#tcK!s1l4zrVX_n4_VQZ+7v-yK1!lr~7P& z?;8oX4a%yb9|nw9ufD3Rly-OjmHtO=RB6IHQnX3kgq@s#fSg@_e`h^e7c2fS%Ox?Z zsjEtu_{*0srRzOfF%oV)&Q`T=NOVq4x3;$KEeCmBVPZ`0brPfYV(3S^LK z^EoH^=7)hPX0G-v89jC}lFy_s*W?@u?zd1TYSFAjEk$`EykhSQ+b&5F{Y7$e>THv? zm_{`f34zoZl0|NfiAsIA0q*&9gVeDHaB5h;CbGXcKSarB9b?EEujT+y_40}fJ?6}GWQ2!`)m~CikGMH+M zMULANClQ^dmQrkKQXfcn;lc%OgWA)NGBvyFwcowLz#gO*u;}BarlDcu;$jgJ3NI`a z#!S3=_38ozMM(SBC zjg5_?nV6xmKi%o5q?8mjU0t-Mozq9DVakSa>$PdsgS{y!d~WwGYf>^Y5zjqmSYqw% zLY<~L8hwQ}Om>qkpHfrbgzLJ#{r;V|skwQ3rJ1W}ccBEY&~^Qqi;D}&eHS}yT<1^K z62apm<4dfns#*oB5O-`XT|IkcCMEvZH_v@njI^F?mI~~rL{d^xVY^8}6crWKJi0~O zT&XUIVX?=eg^h{HCxk`i*m)|dMja>IM8RIu$Ln=!_I^LAnS#Wt!}UDxczR0C%*@oe zGI*?!Jb(UNF$(sU-6Z9rkbppNWaJ&V@Dmdg8kvs_3=Jbi?3k;ns?fWC8Xd)``6ohD zBtKmbibLPp$T)*tCTQ|&G>tGueIWJ#^<$Z;jnb*80!!h4JZXhdt$X$x=%M^S~ zC@}AnlbPvVeg|^~b#1RsiP%q{N5TF5jU7G^BqAb$`xX)(A5=4XNm4TIajx;`EOz)h962Yq=)v-%Y!iQS`3UjF`L!4<5XSE264O0>6Cx)G0pnpz!_s_XluB z8*9!kJ8lcD>z{Mi^78WD$Hgh5(VT+O0dQq_VErpsq*PbmI z60Y{XvzrsU>sR=i@KT28z4$y?%0{QA3w_yvHshH8r&cg_~Qcf2h|^ zlQI;Sf^sa0ZH*Q(#9;9>N*pt>R{i2haS7j=s$`|;XJ|CDfWSv8K4bgn}G}f%Fo0 z;nG0W^JkEXgMaS$^{duxvCJf66F#Mc4V0U+y=EN54 zaA){RXy#3ON-;oV6nsX+1_lSvjZa`tjlT;X7V=M4X~c;VexIJ2peY+uPf!Iy$)V)n6Zjg3k5# z_t#BLwnWw>-3jrZfb*Dy+fg@6#;j;9MiE3WVdk#K!^1-tmLefRZ2Y^Pjh)?p(PPm~ zFUMJKP-!KaRn6@i$e2F&B)*%a`Gr7p`<*Wc}_64eCN;g zwsh+Eex7gMTl`Vyoa9!*@&Gm~ z#n!Onjl`I$l9EzVQj)Ye-tV2?nBw9n=t}t9E-OY+(a}m+tGjp4!X>hEvucYGVb?8< zc=_`9GfVP~rt8_1uVilCJcb!^P0uO)^yzu8u3KxS;5QcRe8XUoT|n={hY#h-b&4bd zoOFhbbC;of^sv$bz$;vB6MJ0h%mY9Hy4A{Lw3VZVb3|mI9|afkm-~8pL2&J$Rj_Lp zzJ~$>*g_g^rQ7Dh)7_1ETyo;|ER`}EYHH`HSSQx&*A4r=J*nGm(~K%}+q9kQ%W=%l ztPf(Cn*N!H{~cHEDU~H85)csJzB7|jW;QSz6%XC-V5?rL6ZYBf#t@uYlC7Pc%WNj* z-J?j?J~U41aJ&8Y@89PsDW^A32?+__=cM*Jwy>ktOPvZ_Hd{+i;AoH1 zKLS>RRSuY-YSj9h+a`L*Wr_~7AL&xY?MF4?O;ukZR1tDuElf)*Y+bn}#>@L5A|k?b zDurc21*(}kTsob&6j@=pH?$p_{UOY zaCi>|4Jxg-O2o2m{Ml|tvgIa&iO{)Tyc4kko0fWAny)JWI&_FOnCa_Zij0h$!(xKg z*6cA^ayY8#RpW&0l>Ges(!G^tIqQY-aT#}aaW*zK_>$jTRws!!#{-ZGm3mS~{Ogx5 zuaIk_!W;ycXJw)pPuOK8=_et2<#(fwvQC#4td;A~9R#Cp;te_td&tVm(|9fR=hhce z`M-HH!f-Ik;Ex*Ho{DFIwH_8mzOgvm4k*R76c<=qSI2AILbPS*7$J z22T$5w(EF%XSA!UtG8xUyv){IV)#sm5x@c0t`us!VkGYm!x?Mx!MqK>lEv~}|EKEN zx)bq-+wlM{8Tt4^9;QEX=)X{UJ&VaBJTz24x8M0-dx{E5Env9OX0D2tJuEYeWt;R+ z@=RtrzxWT&B0mzHRuAPQaQs?>=)ckVoC zjS{Fc>FVmj?F0hK4}L{Jant+|2Nf9itaxY0ZIQ=q!{UXHkDGg`_`1aAgzHaL*RSd6 z+q)HqZXZHIpj(c=qR{2uxyB&r9wATfa-4yIp|i8oKY57U@71E$;cndp1s3I)kslO# z$46$fD<%uDXuhcGsH4Rvtrz5_=fxtC?=braW0wmXdvH*DT#V@K*)gkwNvnZwQP;0~ zGqWz^Uz3wx!_9PbjiVQ_eMv+kXfJwQ#@3cs%xU4JAl}Xwh45!)W-odshv2iU2|57& z1@s6qGBWy8@ztHy)LAc}U9j@psmafOj6L-nSi;uM4)wWfu~lDZeG>otF&iIMc5o2L zE4Yp4yoqy4OHVf(t9=W<`#Sz$Ed`yw2n0fWXF75IWawVHrQ!WRSxRkif7k5Pg1U3`&!rE@r-Dav+?Ok+CY`(Mj$d6;aHn=%t@X zd4KUeA)&IcXjxV?M(9zVvcPZ6u8S8h{;={~rSUx69bV0i-_K~Ta?#@8;K} zn@jUnUf9%6uza5Y=|Q{LN{%wjtrZJ0(TX`{ki>Mka%f=Cu{LBqeSOnCd!?9Np;b4* zao3-noz;LD{G+OZndGVWm1DQBadG+fEL>3zVOFwj9*55KxWIx6ZYbcC?#%YD{m|yt zFtpsWuDGt@J1QQ)5uh%#Z+SrtW0H>GesWCeU^xgYU@6EaWx2jyYSSIPn#Tksw9cwe zK-wu#=KT5d`g;q_O-+Ts0`m$CtWT!5MQQP^2}yZ8&Fvp-x?@7-pq?dA-Nq{@DA=== z86)a&R?|n%Bq1U+v=(rxi0$vwfQ!V}I%G;W2FxEkdPE8c5U9i3prDkjtU%ZgW%2?u z_#Q)qYwN#UXieuYPY|}5?#DXzh*oQ5r|_<&K~3VkbjkZp2(!(~?>pbWe@{(IdjkDJ zPAU(6M%0v=2z0W~LJ(S;%#$aKPoF-mYkh9cCzcyEH0-|GYB5|+=Uel{UvrMu{)fOl zG}fL=NT}D@W2W<}VI>DkFUwj{Q4yVFzaSGG8H@7o^z8B%JuIV8Kml7*w~maBkGnaD zyEd(-+26i>8YqAqUw(nmT9yDS-MaZ|tz+ws=ML64bG~aAu#H?Gt?BWoTeoiM1`k2& zaf~uHDQ03~3ZTiIo3kM2(jA=Ik6xFEb|`y>O+nfm+DpuQNe4gr3>kACwryv9R&205 zvX>ybwT?p1{paX+v4z4!b%DTrj#Dk72NL_S5u;;2{PuufAyq6xw`?FY`c+C(e0iLZ z<@%cV{B3Dzl#PvzcDZ}x%8Ko^>(|c^5b&8jgHE~_R$w>P#$)!26~n2Xwcpd)5x=+g z5POQSE$niZcKwL;LEN!p$29Vuk?47DUoCN*{|p=ra66!fGpA4MFANryE>#nt20b=$ zKm{nL7GD$5M2Nfa0-GCUk=j1v;NSq1!mgPEV;|Y`T+-^~j_aR+2jz*UjG@V(FJ4eK z9`<^>7JAH{>O7xG8-EmUoP=8#aQpG<8BKG6_h$(RTxPz6E2c9pDjOMH8Ltl#IvWpn z}+ z1&A*p1yfYipDE&Ml6c_z>J?Rmf=O;$`P^{JYQ6vLt8Oz(A$2=>ri&N}WeK{%mbuwm zYHDgJ`*v0(^98y>XBJdM^y`)vXBLx$29$H-Vgd@w)!-K3qqsj2BrK)_#4W1RCTe}X3S zT-;3=8K4V)Ha>Of#|YuONH_@7qU+1&O{NprD`htIE=znt>71;E@)7V{t}RZ&{DLgG z-xqcK>^!>1p@J$2Zn?4QdLG@Zw4XnJ)&Ttmm=ZAC@8-Rn#0-*yv-6HqNMYq%f{qBh zb#OjyK9o&u@N7hZP^HkYyIr^tr)4~S^haV7&4c>GEd~S=0<*W-n0t&du7qmuzS79@ zdvbDRf6=Q#er7t*T#uWjw_r-q9qEaM*L(5u3?=|NcBV zr}k|%H8QX5X1xRl`xWST2+GS@Ny(m4(vpx+Dfs|}%Ou|8WF}tm4+9>v_p$lo(9SPh zyhyd*5&QJMv$Hd1ym;+3)%HyK(vr2Ic6h-#uYrU4osOTqz2N~gLf;+dHDS%xeS1># zCNPkhg~gYvVviJ52iP)8>+1r?WYW9;kpDh)>Xh2UhuxMV!W~ns`g$rQ=8Yr89_mAm z5+6S);T03Uft3K#Mj`Ng5O?^{S!AT7qV7>MP3vQSL>qk7^mYP4oG21-(X8++)3Q_N zLwAbunzYdtpmFbT=qacZATkvSTz8@i4d}TkDlFXB-~?OOx79-;mRKFy1uyy==!hU5 zUFP6u-P!|E+0fW%D%87t?|0f_3I>EQU>x(wwzhQK&$gCEed2UY0(|*&V)q?&h8I(&WSOY0Vg zS_W3D$Z2TIk55~cv=-`4?d|PR3Ya}8X@{#wbFO*bQOv4hUl62$r_EthN35SK$ z;d}Dh1Zf4U`o)6z`TZ7hdLp7O0|WhzC1ljpW`ph^aahmw@g!2|-@Er7TX|JED=`BT z`{CrsTz{^1v3(KzkF&V8&=WFqg&!) zVX2>&tKGKu`qnk;x*8i7H?*+%@#DvdN8^T$dcVrKS6zRqA&uC)7cVfzb3I*exrMKN z3H}tWlL@WvLO~QrZZO}i$j(&XxlbJ7f~;^J8SMBXd$aiCgSGWi9xN4JTa{q2CLNxD`3%^r2`O|gr2_b z>%(;aO?iJxyv(OX=6bFs`u#drPvg4}5!S8$%C~aHEWTe*+cKHKrMvT*37 z2v?xQnGPMR2v|Yb0!z?*^fB1}97B0uJD09xDT+*rrPlN&!|Ux_yt-)nA)kT3-9JdI8=kU%$S~)WT3V z!}9U><@AXi!dg|}3fZ^-YnN>f@u9C}>z0}EpGnT&NMlhu?xN|HMd2}_sit=CUgcE0 zmoo5IVqYIRF-OYb{BAP`8ZLux6~hZ_Uud~kw>H(<1m6o9e2s<` zNbz<0F>&l(JFY{{FZepLU~yExBIuZWu66tN8=hAYvpySf$EWu>eBIKEiXwq)j91KN zFcbUMSVo$^2LK~Pi?E)o=G8s%DZ81yXy~La|+mm+^yA-4t*aINa4J0Am|lTPJ`r^vyfMg{%Wf z!sSm|itER~PnA$it)L_$W(qH2HC*bgulM~+wHC{I(>vXObguRp22lyHL33zox@(Ba z24Q}6F1MW&e4rfuH94!fZz)Su*4wKgKdGHwZHIf^MO~>=<_^_{_l?Y zLwRvdzy~IC>gi`!ZWzI~0%e?$oBRDK2KR3`TjUx$kDa;9#Dvg(#99E!3BW}hEE4)n z3Wii@WLYV2vGztzNm-j)c64^$gkl6&5Q9A!SlNJErbO;bWhpPKjo_5lemD~DKR_PwwgHC;@;U9UZN$tu3UBUnq=YDRj5O(N)y=o}&>Wf`*7bfxdC$IZwNzw6wPt zpC=IPhgRkBaWO19B93#E+2uRe@_IV<4>l`&dx|s&&Yp#GVN(6_Osw+L$;P!fahJ|% zc}e4z2<2!EQCebij(@R7Z78attHjVYTTx-ZCr1b(Ts47C*R=TOYyu6@@P=X;Jo^KY% z>ZQFtS;{jmKHmT)WPpt!h)Gxn#?bW-Vnw zc`aO*a56)qC!t-ywK-2KUaJ`XpDX}v%hvL^+b^lTz8u3}Jw4zu;U;|Cqg&-3Jt9Xa zut-;Uzu?I~rBwd2X*e{?_3M6}o%hGZPMRBV!!p;*P)%|S( z!0q|xlB?ao`fO0@7S0DtiK%WJm^f{tw(Pj z94sD|*Zcf=>-=E{A_&^PJ7Ntn4FS>>WF$5Z!E4jirH3jC72-TK^<9uWL2vSj29m9K(;&^7hB@a*`Z}pWT4IXs-B~u;xhsTscxnk9No8eg zn_&e7(^MC%68XfwWSq&Nf*W~!*;{JKw@SJC{TgjM(b3z|{>Z@2fmba7sM)e;VTaa0 zc!vW=LpyKZo%eVTl-BiGMvKXBHt4h5kd@71I@@vU_iMX?UxIyi3bVe*?ZR=4P;?X1 z$h!*spTeh*kQ4=`zAgE0mW8PJ&0xnb?Glq6EJx+2_50{(0&g%oz(}0`IRzCZr@!2E z8KND+>|wLxyI<4NKIP?wg4iJkZc$$&Pe7FUrau+#*t>V{o>^EJK~&-8>(@~qI7vvB zJ^!AJAluFGsyN|CzXr40u@-``#P=)ehTA1JX>)RNbUc$wOJno^{tD9$i_>laWe$qh zJB;pCfAr`+5Xy1i;~xD(pfb9Etr5xl^sLlY)j7rfAfbrXIpjJ#5h~d&3jkIg0xC(4 zaVzyg>8i3?=he%Xhg6gXZ^;@}3Y%A+qZRI$FZLy-s~)wE&^0gj*mXP@KHT-9#|=U8 zc#q=JrR3I$Q&@DMr$xxN9BU9AIYpJ8Ltrb@Q}z zp(`jW69X)oU0S8%;9_GN1$qUo?g<79P>K;aHV`ex`0TG=FH1?qLr%c4@Nl6(T}@2} ze(lGPA9Xv>UI3ck)6&A4mYbWKBfljjRZ%kmj0>oasGR#tl43iQpDwWQ|f)VM)9pi~zU8xHakr zbWvgJ5fsEh=B>+oPMtf(?XhDI+Wi2B6xi@!Njw2NQG9=`Yd(wtM0c>WOE?bO5BF3I zwZL7Mi{D~^J`bJ;7!W59c6uvpM=J3!)NasJCR?NH0SKKrdzN=-(aa45fcc#Sgf4+> z>d`c=mkif1{8oX3g2=jMLO-)#U@+4?Q=4;dcl= zf>q{b;igqBUW)C}-|Vr(;OZcS)Cceyu)iVj2Nd)Ra&X|Symqyq z|H6i0+UmiS-vY?r-QA639Xxh7R3AL34f0%LN>p)I$6n{+vcen|*-e4S$^(9I9T-pp z>zPhq#Yyb6#*8Bfe&}#IF=%URJP5wq)5Z^15my2n3t~Fa+67z*lCL;iQ#mwhLb;CN z+&wCaEYnj{N2CtMr6Po^=)r>i1Z>h0TVONULIs-3-KS5l0z{cgONpy)Zx4b96C@$p z7!HjZYnSb)%wKETA8cD-Ch13Ks zaIJa>y*vi{54!>j3H<2R&$s-RR##_L)du3;1O?R(4>O?ByPM|v4<#;d1E?*spCJWH zQG9nU7Z4j&GrD5m(Q_j=9?5fnXdWSK1L3RL28cZX7XJ)21RUa!_wPpv_CPB_(kP^) z)u7s;8Xyk_X8(17ID6CbQntG-2wCz3293m8;9??a3ndZdv9g%wbC7`=2w0$p;22`* z!y1Q=xeP!)V);BP4^ObyUcFaRMutDYMnv)XUREBL{V4sScT0;RY?Pik4SPn>0Xd0Wv+ipsFxAr~Qxvio+ED%A5#f9?A@Vf74(X*o zJvVFMKJggVNzbmmiW|_?YgacRa`*5kOAaLqrinuU0+lr&Gl<;SK<&bKeg(zF$jAr+ zEO!hH#=O7OgZ2gay7Lz=-U7=I@cbya)pdsuyFmeL+|7>%Ulk7)!9ovjB^u+@SGo_^ zxkJ;iKN!q+u#EtnCj!&fGYy%o2LMGSXc2*R1An1zc6xf+F&@F#dBhEqY4huw?nGzK zFfubI*R;QTGsya@R!3I$WDFQhRWD9hU<(59PZ57}T{nA{`528x8-tsg-0n3L3mWax zs4oLx{IML5D_5_AoTF@N%7(-lP+C*%@rW7%)@5QrTu*rwD&BL44Mge%>*%&|FlpqR zoeS$bIfrVfXiIG8PYwNC$?{Y&w#=@WGJp2$S&Hcek|I@zvycSe;PE?H-O1~%k*zaP8_tynxHHD{h(b~3Zo1#l!1(RmRHtR)=k&6=AO@J868-|eQ9krc`C z>9)yv%T>$Ve*bm{Ieb%`bFrIqH`Z6{=wq>(?j*r9!GG_|1tvLv{m!I2F(P(|c}WVl z08lR^GW36?s_qXI@ZFnEYnR+5gqlI;G*~r|Z@!zqxFC$bmM9c+>% z{}kfw1sTCQ&pAi8pn~35xO_KfLv7*9bTp=}x6Sk*a{Q>h9VoZJJ70CBsBD@YUXDxn zA0N03bO@v!#JGl}0T7`Z_wL=p#QOyV{4mIQA0MxRMrSRT*Nl!N21$M{FQ*qhof^xe z1}9IQSdX1|G;B%*hnA+w5eai_%#DIRB6!TKmt?ABK-X!qE!OXc!RW6vwHR?1QgBy5 z!^37`p8dQGj0aloXspu^$Ou&$j-XxXdTu{O6c>nwmEcm|q|CTqB$<&yNJa3Ce1P^y zAO<>yKl38)t-rq!SWrn{zAVq`9Y%rcH@di}0vS%IcTfpl1DeUzX?29`EdV5lJudm_ z?Y)3Dhb~)xv`{of-xez-@9HWFOM)F>KYaCzz;)rw1L0&lKFQF6!w#6i_HchQh&YLcUIs;L)LIzwy#g#MaaXvxJ0gg`=FY>aAfceBhcYE5!K@I*&J*>E3mm4d z^|7(BEfC?_5a0qTBVZ!vAi*C#RKvxEj!m`1HdDI_wv?%YQ|WvVd&F>FwoS|t7X5SO%4Oc#(lAw%QprcZEK1`p zq)mlN*cAM(*fma(+oj58i2mteXJ2%%$9HH^I@IdbZXyxAP=D&YaFgozI&TqOsxhwE5gWRy! z8i-8pzvT1)r^^#TuK4l@*!}w|_5K;KQdyd{93-1X1 z@Bd}Pb2T(%0>cyJC_X`!Bl2il!*f-7IM0-=B?V}ERWD{d zau5zcDe3O)<-~DxDBdd(qzP67d2ay%t^eVp5wy^Uywg6;q2gm$7;HZoP*Z|~gLSg7 zgM*5XA5(!020k_DFQ?dJ{~aOELAwm60P5256DOWPe4LPQ?xzX3!7Y6b6(Bn-fo`j& zu3isuFc(0AVmel{J(H)ue0O)>381w9>L zJLnbX5piS98cFZ~A-0T0o)~^WOcf0G! zkl;i*4yb8iTzW$@t_Wh3bf*N#jox$X2?lQwdcMons4s}xqrhK&b$1ip`}6N>u=19j zEK5py32+sZOvpqVLhMj6T9C*abO`tw0@JHsDnNaOUs}d^?P9=jvoF?#d@tApAPCy` zwYvjY^`{XE1dA6?N)4Dq5;3+%(gW33MS>1XL7HeGE91k1eYD*tl~~bk=lwtF*}M>* zF5fI$BpNt9-IhELE5!t;5Ur?vYL^2jS}3r0=j~&o(Zz4!xIj2B{+qtI9Us|KyASBb zV7S}^GH*yo6KrH$7!+>s*i72voA~i z8qXE0AFPB|0L^NKFhdDpacoTMaEYc6sEgipb#i2C*N$$E5VcxVVZ5XVwYM*WX9S31 zPQ`KY@eD|^%&Kgi90D0IZP4$J+q?}2hVIr9D;5qR!u4rB@CiGj7TScv`z-`fkRC6Y z>m5RjN)#bgKN zxTrm;?F5TxU)f3vbp2#2J8m|qA@l!v`23?|3x%%mg|56<8Sj35U$;g7ZYb@=izlR^ z?ID`FEe@d13k9X(6etUjJbvD7HUZ7p6f@ZGBo0A&P#6voHC}vk&~D^Ic9z+0tcpj> zEK*+Kwf2e)ZwL5MA1oOy4EhHkUjVoHT1c)5>etG8uO1m0Sq%i)p=MxUr9lWqCreF7 zCjjaLlA0IT1>qKD^zrGEiUI&&V@;O$e z%O`;M*;!a>yHQ0{#}gbUU9WwIWW~s8 zKrVj@EcUjR{b@x$0GaRX>bj$(QjocyS-)ZVCr8g_1cyap0js6MFmkgKUjV<3ty;=aWV zu|!T3h?=y&LyxXn!+P7V-~mLpL|8j`m<{diDapwv)4T5iP=RuT6BO8#1HOXfOLa;d zmthWq27j!7-Vr8T07`oWrC5?3?ZO#wZnN=R8o4p#v8m&^ zH_iZ)E#`F#yH|yUBcM5h1t6wl0wF{QBFDn+1+@t(E<$pFXlaL^qdRIjwY#vvDagrf zfi}=*&O!iRM~4oCmeqGCkET#I04rax>qwLvVC<E&<7myf@HHX^18QkOZ4AAS#O5bE}3S zDq8gD9l>@OO=k2#DXUN%Q z&p($s@E8gMpdc&zk}CS&7bxP?{(X73zx^tw4aXKWIlI5Xg|}C}zr5;isGW^5z3aX3 z^?%c8UO^Pa4fF51(N9%YnYh={Z&<%o2vs94A1?I@w2PTwk2JD9 z29%{-uR~9On9BzM$^&{4cLY%>+=h4Q4-P!CH~xz9z;p@YS4G778%>q@!g3T1NF7=o zP{&Um|DYmSFD%E`x;5T@nS9+DD`|Xn<^SAW9v!VLBk2pOwQ!D6T}kh&HR=q0z&yi` zaN)7rm*1+z7*Le3CT7%Qg|13h*iM{lkHy!<7&@1;Y}D#J9;WNjYuO{+=Bd z7gs&-qWAAX4~3~56wtD$9P@v-G{|lwAzI%|hw8ovPz7^!4z; zx-$ddJkUFQYi4V!AksZd+0#)L zVSLFQ)mHKx^Au30VI3hP9S|Yy)H!BstD^`R$dL=dY#JK6e{5|8bYE71fs$qQIF`%lnE=Vkn$#zNMzR8X5jWvek%^ z1xW`0fA~v!hwFL(a1f6MYG#gRrug1c4UlX;$A4ILjD(`7L9jqoh6t5Y`$3*Q|JVJS zXM$x7s&0N`inyXhn)o{4^DA;?yQuRwVUbX^OfMfO&Yt!J9h(dUCO`_e!Mx`Q(1b0W zqpYY%2%Z!-M6->}u6#tZ+DeC>lTp)2%@ zs%ta4x+C+Y(TmGBk3k4QKw9toG(h zJ}O%;nTz8-S)5hdVw3vv=5m`|Tr*L4jy@yfrRPQ;A}e1?&L6&xoXr5X>hmX-y0;!cTn5EIDbYZ2P@=-F@i^kKf~_ z`|KL0uZCXvz?#8z{1UTxvfd20fV34F%?vOB4qy$`9VqWN&CKH`Pr`&>4HTA0VVlp9 zC37U8w?Nol5llC@a2Yx!VK4>+2~rW@lz?)X#l)hWhFpA8;#`~NbJy303F8lI7!JO5 zG4DW{PkM#%=#(a}C3tVT#Pc>4YjgQ?Kgx}=@n6-@1gy*j(k~*Y0_qdfj)Uo`f3Xu4 z@nzYPC^HpNw+(jnENw<0rxm*;6->gyl$z${u<;P_8e;M=2I>QfIxrjmc2WE_M7z6i zfnVSBKUexLQ-IFg=T~8zz0tK-9({WueM};XUhUW#(r6(3t)`{r2N)GpnyWC$0pct) zepoDEBg6whw>#K#(RG=)2-6P-Pb!l&35ba&%Xb%;fG(eI(-ARWk2Q55>X`lW2X&fo zZI0sKcg0T(6fMXJAh5^9_EYGE<;J+Q(7d;gBuzkk0T?U;k-&NEEsH3TG0Z`2;}$*T zLFa<+_+(JHU4Y1100s*P1ijVtCfk7BxfS)<7IDl%gPv!M9o2~J-?8bn55P)N~4 z?>9oY76wOW}K2hg`>HT*)y=LZJEmgcP1U`ILsGVQ&i~m-+F3WEV!dZM$(M>Xn?-)1u0L zIrY|7HDxacWZ06Ncr-vR1~k54a#!hW2OzXtP|6@kgjffE@*GQ{Mgtp$Q!xhGYgw1I z`y0S+GE8s)g$5z39>Ia|Uxk@lO#jIO05u|V8np4v(FIEcB!Ef?!Sv^vln~JiftP@= zKn1R{+8o3BLhI4$1VzSwqQ!jww;ZcJ$-r&8Sz8GLa$|vZ1Jm*Q?n^VaIx4ej$Oz(H zr2seI9SEtshcUyysu~nZ5;8Iwh{A(<3w8;3V|^7~Qn1=!zmrF|8uJG*JVWx^y6rH` z4gr!CWYETasp=HM=u&a#j^+|$(I(J+K$W(EeWM&F-U#p#cQTSsK~eFLxnxtYDQJ`W zfAY2?J~d19WsmSnDNrf_m5B-J-o84)cWlfr+fufOnIj%%7#t%L{}4FzNA2Yvq@}fW4*lpz>OIwvde*&xOMIXC5aNhA;B+P&uqnnH|}SKPaIXM>Ve zkCt+AZ&y)k$Q|RW*Ciw|E>>%7(wm!`i@kYUUA*pOUGLp$IYi@ewu8ZW1dks6tg4MO!k~fs_Cz>b zouV$31Q*vi?PCt!5X*`Ito9C+&ShkRbQj!7B+}a<+WYU33WTK=-(h2?CKoraUw)&{ zVgA;5sZMsbX=KBj;S$s%04>(wG7?8mE`n4E{tJ)_kb{MWg8coHfN&slcHmrL+J$L} zhrA9wAgu?kq5&ww_#gg(!tK{|VkP~pTBY5V){?O^;#Fk2G% zk}`t{FBRxDDCl5IX;a-o-6>a%7cdwRdscVGd>xl0AgS(H!)sR1+AAu;Q zpQG`{-`_r(0t8;yc-TS=A(bs1?Vj+8fhKOi>eG2;U z=`%C##1cpFaoL~ru5-|4VN*9}F9CDJZc)4}DV&IL5hMP;bV`w@(fcaB?dz@lPDQ%M z&SV%|tf7+BH{}cYPkd$hZUFxZ4};x1HJz*}pL2eXTkeM$RPpN1@I|NLx!T$Bfs`vN zCr7;~LQ9NzF;KhDfYl0GI-GMvk=D_PP#LT=PI(Na#H_%Hu*3*tj54GD*p|&cH^til z_hG9m{-73s9SoDp`)>||H{98IP=bG$67Sh`&TC61!2KUHqJs_^J69VBbFcSrk4i2u zd4J;Z#spE(m_mk0#cPKQ95g_RG>axiM(=@(!?X%`kl>t&AS0x0Vv7+u|2doxdo=tB01{>U>X@1I27~i|+v*59?FR9l&xfQuv)*cQ7 z#h&gEo+g3kywPtG3DE^)E*-K@$HSX%85n#fsX1bn4Rn=$;dU{Jmy%GJMy0cC{>J=2 zWz}w;iSAb3n@;=CYneDXNww z-u>pohab-#t&HH3TARS!@G|W&(u<=PotH^v2!F~tNpPHF${2PVeCrlHd|Kx0T5>X1 z#V94O(e2(GF#ZRy*ht7N8n4Db>XeuB>|cPMJM`w$(e}GiIT2hh?_NvQHuA#{XH-9y zdrw(px6hY|X1SK{?HyT??(rS#YL}Ptl+ArN8i(}=**e7h7QpKS%T?Q)`V>4Ipr51Q z%a;>KY?0~p5u^%6IllLqd&;G^bYdncv& zrhI6+`)I6^Cv|n{luT5u13KCfjC&N|Okv3M8RteqnRfJZ5RFCQq8b53!0YysX>z2* z9AmtD9dDQ{>GDXGsl$B>wqze-c8%MY@Vw2wiqwk~7GSpb2iy6??bI(!QLZ2N0LKJK zprA!xC1e*Mo}2&$$+RokK|*zN+dW3u<^|M61k|RgCi+uq{@vQL$9|bA+r3qINv2F| z^FZ|#84JD3Ql5c@9WxCj`LmNr!NBy zK6VzEY)naRTH&V?|N6}!Zm@9srAlAB=V0NPtD$n#yB2F=-X3@BJc`sbZbGbRPg5pWb*|GaTZRW^7|$vD*Hg3O%Evy@oAn5uUlZT!b27ijWa z2n(XGAqqUCO(9-jzq|eVWPzDO+27^W5ZmG#lt}xOqGV^TO)_RQuj9oTvQ~b0CIkf+ zMFvG-d)Pl`yTq`%KMSIrUTx~ZuNg*TU*xVBI5L7gio z5EK;^JxxUP14d446lx%q6EKg(81hEKL=&Tcz{Q|?WH1y!VClimY#s&!PjSM|i-tG< z;PPB1fZf^H&~S-`RBi&%{lGM>PoD-OB&G zBz`yN$*O{<6M+o9lar)GdE92ZwSB`rC z9-PCKgd-w9OdcKA{v-(|H$1^(XlncYd#U_`a|8slJFAdB!h=U(0j>C4?*P&UM5C!w zx*FlfyY9Y62gBxI(M*cfPFkS&fx+rZ-lPE0?_ zJ1lBrnT^dkx+u@T`tug##+rRS<^PaO_>eD28UtB)Utd^O#T+DyD$ky!lE@5)s_VME z0=!+5KN!xb)AZs5f$N2_`T6;!kC#h@Vy6ZM2GHhhM+X#2f6MInT}^4^SPbKd9fnM#wa0Ufo8IPg#oE(yqF1NgoYGr&nPw%(pazBDF0{psx96J@Pgrbd# zDp}zTdv)?@J@{5X5Gnr7oim)_elYmSV>KjR*z<)h0g6fctXMmsQxseQ!gd}Jk^Ut& zV&+yB>l0nt9qz|8xm!=PvLqb+MfdNQtkw~Zm$EuGRr%A(9afX?VRYpQ?Be7jD%}M2 zhYxMQZ|2l3y$#qGtWM-<1J?67UheLD2^KXyJw316r)JmhU>c2J=#dBt01(vTKqp75 z#cVunu=FwiR#KHMlhO#Su=5+=hAUlMMU9n&*E=NW&mr5`3!IkaZFfLriV+>_Q}C1; z5}3W+tT^q;dxy-A*cKI`*)a;*7CGEAc(55PUIs{eygWk|A>rnTS%pR5_v0p%FgSrg)f(OK zwwt>U83P!+Aq>+y!w;Wz zMf`Cc9zbIi``C&JWZYO7@~n{d)2P6PQ<);QVj!OYt}61_pInQ6ULbua2tz%EF+k)z zA|e`qHkV}aMJggsPk@Qyk1&4QF*MW$8X{a%B!>gW7X#E`!yt*taF?Uig{$!kXX=%l z2vs9f^*KS1mh?e}c$})8(^2*AjQ8euLlZoLh(<+$=LGt%FHA!u7v&CF#YIfMJBSqj zo)ib%e#ol18lH5sHG0mg0RmwnUI*gH6GmKX326lV;i(;X>G``-9}vP_OQ!M-Sgjy> zumOs6NgFuLFab4_#jf@W7+HDz^4qyh zT^*&7B`-4JA|5y+FsF3_dQNusD`sY8wY~Y2tz}`sj+mCLtgIt|-=K1%K^ zgR$M>^#cla4QYrs#d{ryaE23vG}gi-C;WSz<;=hl*K*2s9N5-72=}2)`f#`N4ojE@ zHI^n#s8`K`D>=p%?1Paf)Lo~UGU`2k9bafOy!{-Vqp`H@4!zH5o^dD~b^_O_f*mhk zp^!#d_#j}_LhhFE93YU?mn<6<{x+SYF3%0S4_Mgy?Giv7?U6O{SV@9MQ#aZfP{~uxR9nWPO{tu&&y>}GZGkebvLRlf3tn59KjO>+AvdKs!vSrU~ zqR8GeGLn(%IWD@tzu)tEe$VsVue(3G@A`Z$*L7a!c^vO`)QG>JS6dLH$pvSmee*cz z4g;!~&Y8>g>|lI+m+`@xL=>r zJe>_~g`2A@;!%M(s%2Pi(^dMLu*^HF93~M-HLPxg=l`#33F<`WzN0`UWG_!B%iBSE zCxFH)PLJOTQ27vYY8z8}oMWL`W-LkE1}&=h1AZT$(gU;}1QzYRP8ug9Gz%0BsN;|~ z@)&qT$YaWV`xXygyRoJ}9;(b9_@rm2%JCbq4V!Fqj=Qn0NYxut4VAGod3kbe-+@7f z>qE+)3`cNs%K)Vd5H|wTLD%&{50pDz9gHk2`v>nH8yO9rmubFc9V&Q&KuK_x{f2Ea zL4`eDexZ53`ttHm-U_Wr5ZEAUK=lGdnLi9XHzXjkvq!@EC~4?A|Abs|0=mXI9H<4Y zQhsp`sU<^!ugIU`x92icO#J*KP7l-0o6xEC66X*vpBEg4^pUJ@ zUgrdc(%tTCyJW$a;4+t$;hSQ^5O}fky48>?#UiC<7RU=zL8<|L2At@CB2l`W_vG1u12 z0{@C^SSLoe2Dem>48K z4m{(45%B{E{LS+N(T(%gXsQhEf|`BKvmWEYI5S+&Z@8AMyzN7BI80xNi}jQlB3}00 zCohK`zch=iucZ~f1Cj245fCip!!tALaCm{P3sIbcq5w%jLwDb^eu z8~}e`bQePmaG=qSjm1ZS@`_5@-*1f1>-?{q!ZU{shEC#lrK zQ(&}gbY-^>d{M(ABN@Pi0Xx)nxa*+=S7N*G^O^s54PO*#CdU<}j(>Lo;GCGJdOv5@ zHKF;wQeY!24g@>|2_f7+dN3(~(hAy&=$d~`80|9O3!fKWh1vPDHQo#Q9qbDchX#(s zHMm9#;0fsmjJr&a6B>Ge*ghAY7n0RE|^ zr}q&A3dbP(M-7jPf^3#x_)1vp08R@2&jo){q%ruaf{K22!O@ngra^GQ;=%Ojbzl;y zssv+*)|k{9BKbztqab$<0HO=<>^3m!fo{9zKllgtjcX5b`FT~dHTR$Sq;*mC+-X{7 z_KKZ+-w)uzMXh{QGZ0yzKrQY?_U&dI-Ewo_1yH#b{xi#o&m3^uW_AkDEzoo7ojy;U z(s$gHTBD_V2wlfRi)#N^+Z1Ya* zilFaws_jmPx9<1;ptLn8%OJdPVb{AZR{SzPWD6h(5*!@2Xs6G%sHIr1@EhOmvl!R^ z?(8=wkJ8I!+H#$SeH{k}2Rf_denj|6DeW%-2^0*HlC%gKLU?|z2ETb}B~<>>Jn~me zxrMc8Z#P4)Q?0V|^<0@uFclzVDxmZLfn0NBJNpa7*9Tl;5540ss83>O2At_uU2=vu z%xYcW%oP+V^chBI6Kq43H;Ci3#Qgq~$6tEu|ZS0N)JQKz=-&g#sL0iEfj7 zXN_xo%RW|SX_(~E&H;^Zl)higJG0Jj)l-Z$loN~ttNU={k3rbT%EJSJYGmbKf&XHJ zIu?=HjF0PG3#)g8<_pPLgCtt=07&srWhQ~L7Z5na)B%FIMY`i!LvG04IO|xqe@jDc zB-GRgW;FQcv><{RZUV8&Nen=-H+>R$qjzD&r$GScN1Rs}OkqR6IXjiP zehW7A?*@*pUa+vf8-DpSs&)H7Kh15+_MnYGx)0=iNX3f054h4P6 z+uFwUetugcv(G$9n1L6en?qGSs?K~qB?)g87dehpCP7>m|J?fn*uVp%#B+X40?Pjt zg^lcd%(hxji7lZ4Kp z#4-&p{B-wIG)XBby3D~Yi1B(Uiu-|y2-6h zh+_cL7n1!8PX@?jg!e$U^@hZiXya&kgQ-1 zG0>9cz%(60e(00#`^dI9y&?d|95e!5gOC5Xf#3~fe2AaiKO^M4ow~$hj6Z?zI^zx4698%kjtZevB+dZC zBjOi0;q;pPC8aXsnvSBHOkq!I=nM%9O8{_v^%1yEKKAu70=66!gvP9zETgI#J%0>| zEj0dvExE@ROH5O6Qf|xOX%jM4H{Kw#Us=FMqyd@_%4hJb<$w?KrYdv@ zh`}4$1x37vZJys}`XLn;A_7i9+P%!R3eidOkf|IK^V{p;S@j%0SrkeQ0tYng*Ex|J zLl0Dw!>{3U+@-c<3?VK4ohWOYTlOqTK8sFk;W2DAuwVhdLJUP|>MS7i23E+tOb;?3 zK`Qe!B_*<3z`OSb{$-J7_)w{q=Xmf9Y9=1C<0SC9@^+4*_a zyJj#;42uJ?wIR8bU~l&`GH7*}u1f-M-*uM-d59pXrCXhL6jm=FDcRaR@5}zIcJ@!! z_Y=hq$zt-qj3DFCX=IP&R7k!augaIC4J(0GTy)9Z=!ybq+`h;)D$&>bgjmrH1CIQ0 zU2T6)2mj6;_yQnhT~Z{13F!fxZ{NN}e4LOUnl)Mb^QY&G-@e+$=4M1}tkuS7VKv*s zvodXcGAVxGKP|wZ8NQZ05m&`iHKDu3fVo9HB@swz^dtKmnIunKSU^X?U9z`K-m^&A zg;SrkV2IYLCMo-_q@;1#tHi>>A|m?R2j1X#uo0>1=#YU96V!rkfXGW(AVLN8ffuv+ zF%WSK64IUFn^$%r^$W3Y!6pX+HxkIHdId=eaO7n?{^MgWlxnhaezH$LYM}t}V`1(> z$1UEDL@jkp+UW&OJrM9=P}j7QfySq{kG7&-;m;J%2T0m4V8l&%fn&w`Hyj5C~W9=-x!`b$rW8r<(Yd;W9gmsHmwQ8Wwb(tl9qEx0e*Bw3F(= zTXy%Iv4fvbwK5p!%#6O!;)l^6p4ZX_ULhQ5ONuU2zGxFkVWeNEstQte_n??%WDogA#*i8&xP@qILyN!bLi= z^GOS?Hvtmqx6cp4MhWGO#%6b(XGn7{HequkZioQs8#(9bog0Fm`>cdO9}~_`xSsxx zM6A8$y}QSjxkq%xV{?e^=H)g@Me!}|J1uuYiPZ$wGu(3;hLd@<)I}{5;}yvFU*6^{ z3l^h@pZP}>#0Ti!z%v+c^%*$yl}b<*TWgLa6L$1FdR?mR{M8i*E07U}UEW@lTH&Al zejH^;@b7Aghhm+d%V3ug#5ba^@R8RF{^K|p=Sc4~ z3snuP*fqI$e&aMJ8cF`L<&B2r?%n8j+o+>B1jUzR{rgH!*6pX}^`VqHfkEe)m>7@2ZPBjW&)Lvkt@ zD`9qzq;~rB9zvF+q&A(#IY51nODmQL2)cRYJqWTn0RIy55AoFr8w-jLBCX(lzj;0A zrjPbyuJWBdyR#$1t8t(9tV)QAvH&{|AbLmqc<0|r$dp)`^mbHh)+vpOzjn#>%Heup z?M1F8@-;AXsHT2t@Ik~mfZZKfQ=fei-$x1W@qR~q7n|nsi^O^@*w2*qZaFdpE2u4; zFSmC-McCMuR#&w&HRZq>1<)}PxB)&{sEluf;v!=lz^8&_V~(B^pTu+Qh4(?C zkY(OHZmVj+8-+#R&Qlw4G17n=fmx9_a;U{XVpcbn3tv}8UJ4nP;jGwW`hyb zArOlUWmXWJ!&c?P6B8;B&0J*dCHF|hpAI@1yf8tqp;yHjW~WIFa% z{L6_1l&K2j&|M*Kz8WLpw07Y3{xNV0m`EPf>OOLHbP($dCpLy3bt8Bgp&9~50TQ?b z;K82*lfOyU89t!^Tg-lwIQwYEfXnljfOo5LIi#VGy?9F>@Q+_y!tpX5TIeT`e1#Mc z5F{pXyp#Y8z|45oT@L7Rkbwoz7ak`Wpa+m9X^@LvHBZMk-vt+hEXgJo{gQGVs?J^%9AA(=sx^bgTZT1`l#Lz`W zx3{2qTk(^|x@&-eoHxc65P&6hXRXf%U;+w{h~VXfZ@c8b6MW^4uCDdCIm{JBd_j{2Dlw#nS0>9vxN8jqc%juB|qCdjHu>i>ughcppvTd{{zw~Bne*r-n|r!8|PqHX62_IM^CpW*DiF%nqK74gWc|gNjP3S37Y%K ztrc*x6u@wXNv$2IAf3Te0?5Kk@cSbfm2eOv_2lWk^xtwQ9kok z=ta%J2>@6a`q{2E6Dx1JR50&)G_%e^D+9Z?L9#^vv z@xGRk1`8XsjhsexiU0rF5|e6py?5cT`e~zRUH(-MV%WjWx$co#0|>`HlD-bf6C0UPsvD7J^rK(OIO< zAzcU-GD1hfs{>mak}3f`GabOuh~^itY7_(l0s7Md0DkDmO1*a%9LGR%vJ@_G>Ct_y&3r*Iv)yoL{C^P5_)lwcf%qCmp1gei{JC*z9W)itcI^5#csI zz^Tx`f$#26Xz=`)5Wy7v=vk$u%B!PoR;gEJI#2xK^(%ZH zV`3#!29h$f%>%j{l&!BMRM-ps2Td5q0sg(6d>u)QgO*yv|5OB6Ksd*)J4{rRuxvn! z120&q*LPz8Wgz@5k?4j=HAHa9$@%^j`VO8&=;Hy5gqP^Mn6ZWi>d@AB<}D?qIS4T` z`aXa5DoxI>U zQUks&5ZwGoSAgyU8GQA~c(zu%iT})Uz&KPn+!^Ngkxe~b4*L~V3_1>XR8#^zi)~im z9XYrv3~J~3oV2}?&1>Ov${F{`inP;5Mrj79st^~4dr{U7x{O1Ppd`Gp?Qm?gh9~(BDqUY z!SVN}&Ex8FPR|Nfo0_rSD9n5A+C$ZH>3z2q?Ely7hxRD2?n0wuI7#6LfaRl%$KdFU zzP$b1TY?U(?Xxc6CxdFfg}{I3f_>G@Y|;8w!-0A_2dZBqkNCYWqoYF;6Ax@kTHgE3 zEW6@)VuxbqA7A``GPN`5BAKtUZ`P9fVug*##utX~Ki~J>{j}})od_%?MR`eLPPC$U zqR=ZVY*pUQ`atqn_&3(sC!v7pQdvoedin( zua4hTgIYu8o!Zj**{qRJ7=ht-;q%IadT-3=xIG2l8OaRoIO>*&DRrpxb#-;U$nu3b zn3+Riri?*dS3g8NF6cI$kO4La;|`EO_78(AF6qDO4t2AeSszkht3)e{sl9KAyPA{-~eLc5(cl+T^;eWRdP z&-WGIbC^T1rV#BnOp`JNrFpf$4(Jo$FmA|uIQ1GN3Xm}KC-}`9b_i4Gh5vJ6)Hrj@ za|@!8GI?QZMFG0GK2K5&P9{P;1o|2QAe$Gu*YKhNMRAshK45_oCK za=g3Pbc)lx?*3_JW@eH000IjjqYdOfz~Ib$IXye$9q)>7eKR8n6OAUgvfIAc+``07 zq(Dl4YO7F4#ZPtrdfI&Qb(csjVE4Y>KODDGlaEGa}T^0HGBbFF%n7$ObNJ;K6@A?067f}AmG}T zKw3#0%>_>ne4nZ%sh(5=i0ek!jL)q{$l72$N?*Ke@U=&$#FIAaYS27x!AmQ{8qf&R z2<7-`KIg0U5|pr2;x5k0;dUEDa7#8!r^KL$k6n_%YG}!JU}9D z00B8&ef)<7GBB5~z;v$PRTL*sI35952p}XsvXZAN>@b&xS}g`T zSsV)d%c_>_MS2RPf4*N~a;=85NE%Z1;dFuRx_VXwAZeJugpk`vm_uRVpLH}JsDb^Y zuE4GfdW8d;53b89NE-ct8R>$gu_ykf3>Vs(yc2W?x508#s z9HVaQ=;}gPQoy&OsWs0YbjdXqG{gej&Vg_3^CI7zb;rw`a7H&R zF*9`X7t2U{Y>*;x-#R)M{w|{;-T*Ll#!#QBOBroyT=p^lG^66rwT(I1U!sTC8L6|c zAJA|x1ol5gYXEB#9P@Z_UBMs%l92FgwsM9yQW5uz{36y?VKt+feErI?d7M;JZ@@K_ zZxl-8k6W;!{b7m}^l>mh3I+IiCJBkD@X0f3c}noVR~FS`Yh1sbA)mJ&{!;j3SOg#m z1@~tQk~IS|l7;8U&&J>t!w@+>;7M&mdEJxK0tAIQ;YdfmAPs8{qnzkJI6{vo#@EGcLcco*1rli@)@t)A#%~V*dk~H%jY?H3;?O_&RTKBH z29t!jX;4-k?S&b-F9^z-{v5mm-hSiY6v8u*-U4QZ5kk|`cK?%!BC^I@S6Lxd;M)Qt zOZU~_i^M36hAWO-T|psw=7qV$B+QpZeCxF`zzS0e!)n@ zSzK(9UFJS8O5o&0qVS;AMbHZfbR_4xcmE%ZQ$0=h^Nu_bppPMh zp;@qplMv@@T|;&w#+@Xs0d(#m6^?F3FjS+H4yoA1!Fd3%1_t%(yyr0U7VB2YW`jFX z?FV=zytwTi1CesVIe-ccFp}x=wbbkabn{5sL-@QC(n2Ds641*dGl!6oG>qj12r{nA8Y8X($xaLQXSCQ@3+`@(1Uj2<*QoN|3TFAW$)ueB|vh zgFJmKtF4L=ResAvBE|85U6*#C2mn=kaVpO!0y~ERCpnzhbaB?rmYcM+Cfn$?P_jY4 z3x(kBgxx!r-30|^wG?p8V*;{t!FWtR>oFK8nVFb62+prRi>=@?i~2_4_iCAH3u{~p z0NNSChu(V<)zXJ*cZ0GS+6!>riJE=`(esCr-2(7!gT5Og2iazS%^bols43Y5aWv{B z0)nP~sUTzY_*5-CW*8U+ z3Z}D3p#Y6Rqe;i>Se**&TN#WE0gmnW9|19_#u2Sx(>&LVSZ3B?W&IgyAEZTPS!~IL zPD&_uNtu!N3B9()=dIuSgmNE$+~*7B1yEX^D1z~sT2+-6MD>|}Bt8V<9qJjxcnk#@ zM41Lb#2z?PjNc)eUw{vx`~^`VtfA#YrfoPyKg`=9B(|O11&j4v?xg!`AYi<%Q;AFqFie$sM8pTPM^Ifr>fuVud{>l%aSxF#M555#o3eZIS z42Q;L4j?r~aq-F5W==%|1*?#01kvm+03>mnG^#?h29Wp2j7adDm{n5$j63rhVrXzx z)^|NLTr!Vy^ZW+!3s!yFS}_znTorfjbLC8r#*%Sdqw3b{+#|iczFrG)R&DIJ0E7YS zTe9?HDbR}nR*g9B^*F)I2i&rfnp#8l@^bLo{oigt--7dMq$H?e1k$~ZU=YA@QPT+r z+<#2ATL|dE+lrUHDN}^C*a}()l76_<*Wz!5?x#v0K7=|0MVRab3w#Rz{|(Mb)9*l*E9csG)Wb* zSAft8T|x2`Z+sWlGvppKEiip;nsWPpSNWbvepjpP_$$jM8&l=%<^#&KrnPFTw~RUU zlDi~IQr@{Xo=9ZR-0AFyZHs;xYL_Xlk@efrF=>UQ1}J0{Xp$Hi8K?Fh;c^Xu9A6Y< zgNV2YGSnt(>+2<^9EHKfUcZgM5zNKL7Lj?n#G=RfobF-$AT%P7I=MK(eO?n39r{e@h+vC$h$YbJHsaf z-=;k9Z*w}j@ObS@-tR&Evc0PW??VNB3k>B?TLH5`BnmJ>6uO-E4?e#!wt&Zv=y;G( zYam%e)F6`2V=!|DT0gvV_yUvcP{X4~O(u}DC~(`Cx&@W-X|sidB3fY6hL(I#82#-b zm=%qJWQqQ|(r1rc8VWK$B|O`y2pT2=(o2(k!hrR}qeo>#s$Iq{RLmtJFFJQP2 z>$}LSaP`s#&B6!P;RDQLXj zhaYGGYiLoy?hJ)@JBTuNd>bI&9wut>n3k>axWH=|FSGYq(fN0S9sc!@41L{O7kfO#3boG?H!nT{7)V z=da@;WKVz;L-5 zoF^ydpkTOiWe}hWqcEsCEk%K%GXt>=!1j-h_m*L|g5=Pd#X|Q2(9glJ17(mk zn2werYlZ;@lx%maTtoRUbPk;9$h`U$7_%tvW~Hh!Z#Vt*M&V^)!(da4dm|#|maY zs-}q$Aqo_TxvlIwJH;Hk4}^klF~98cj@C2({X8}NV?ST9%%QggGOq)P%Wq%(HL{oU zPUs0lYSBVj?FS(fT~_5(f)&V$oMIZiq%I%y((GaSTM(+9&s;|Y;s70Pd(LbgfHZ=Y z^YrhxY1^l1pMBPL|9<$xKP`adHCsjME#iAmWzZP!TU_mYUV0&MxbkYJ z%RB>FkMIDdF8dYD5|QIMzn(DdjJ7IbD*qM+-9xEO&kvcz&q*DAiJJo^4}=7m@7 z6<@2|VZNx*@{MD)LaY2=KOPRS_5ZA2Orf=s0QT&ngX{JW7o3ww% z92Q6yu?9j2`BgN~z>ms|#F8))&x0C?P5NXw4uZaVcVe}ZkX;y=o(Um_@v6*G!Z2C6VVdw^V5dMW1??H&h3_VjsZz6#4$UYrprh+I|1;(PO_>mTOkFW5Yh-VIXH@y7ht3ypz3$>W7U$WDYAxFXJYJh$B#j zW@k;JOU{1?PQfqo&Vr*mtZ^y~BJ}Oix``-8BLeo5%rAN&z)aCTwfjCcElhP*JNq6( zE`>;8?_jMo>dLo_K_qg0%nA|Dihykt@!q)#qHwyhEjW7T-Y2;uS9OUV1K_9+rts=WSqB^A*zYU}EPUNOzw zo$Ks#tWYml7)H$fiEMf{XLyNslhhI&2`fbWbckOIVjE%FkGfnoAqq0I7@XP{($mxL zm+K3t!M&qpjnw?_$Hjfhbn5~h;KngCitg^921Dmy%}X5fN%x$%SsxlZa6zJ3QAmBF zCWO$Ok8JDe5hRDlopWU@ba4bp8g>p2v=1Qdtsl((dhhQmm(`IWkB@K!Ao?8x|6VBJ z6(}B+NNH>Lu-;H$Qht`lNz41o7f%p`hKZVDg%%WY;loR+YrR1^tceD5H4%?C6#7T2 z{&_HfB?XZWeY{eZEp?0OQ)mz%jZ(L7`|KXH3mh_;?D6sJGnwRML$DB;BDxRLp#H!o zdEjmsmEXsDjNyJ_B1$7P7kdz!dU->@CMNaAk0Msq#KXK~lA)RgO_qf#e+P?m3N%4R z1c!9F-|?Qg$-f13_0f-Av3Daf7j(2WZgHXXtMC^bjIgqTo`S-tVq}0fwk+0zl{8ik z18a{pPBV;i?-G4J0nPYG+G13!#9OQcy)T_Yq|N!FsjGgOEyq&9;zhJm`dgRBDx;{g zR`-2Qe*I$O;b{`^o?HPPF?dwyKm~*d5IGX4lg{p7`E-|GpU=Qz*KMv!Jw1r{T0PiD zfv}w%O*hNpKaT)XVu1~&mZ$X^5|Be{00vZ68MJ*VWImpU)zN#R~hgQ;ywBUZv36aD}R$u zPEO1{&evOhHc47mjL?_TP)c5P=OEI;qKU%S7qOmQl}%)wUHw&T{W~#Q{}R38r}V0$ zoCdiMrO>*MT>KPfFE?M5`Fr71+w353VASl1c?5H@;4y z0^B+dY98nkAjUob37D`K>V@PI?dX4-i$D^Cg7oj?WVrXT_{RJqSC(2sB7113=v!(D z%_qbrk_xzN=ZDD_^rOl(g4>LIeBIhE>=3_D8Or+<|6b&aL-g^9g1)Sijm_1Us_$Xq z6Xdpw{WyX)4FyTnL!e$1U;{wm_5?a#AUz|88_qW(D^*qK7(>W$75^-1%bL;cD?Ll( z+L8;m?Z7zU7cyc?h)wJeUv*83SYh+9Yj^v3=R+cTO=wfqRM96=e%pxD=JBdp3MLsR zXgEwk#c(6evRofhrB$vHnnIO$BM#<{r66Csz3qrKbhZas(O(E|__i$4)%~oaz1|VS zQ`qr&Sv04$vFM z@)y$g`D%PlCcl?FNSS1=6#E!!x~^kxfR`R*x=37$PJ@7N(=34uCpm}W*x7cosCRNlH89e|9!a(fyK>}-^t0MjD5+*HbfXzI@=%3c%s*K9u}RMi-Z zyuBl0QNn6E8FCnmOSAW7$6)tR0ooY1VA6{fnfLj zXCQ+cnVybum;_@FjJKiolbX#%7W)%I^STGwA&?uDx@{I0b_o(+Ffh{Hi5WklkzePL zCYb)B{A`JVLiyQ!Ji8;I+0O2x2N*c??Fa3yLg~s;vAN1OKQX41z55_0b=NFT<@N+a zMy1OyQVgEgY#};7WQB&}E0Sr3UK7Mfe&dEvJD8pZ>T@4p(GlYv(BbWiE??f6NLS=I zP71;32*B@CokdikIOMIPs|LLwXcR@k4S6Y`YmrJ&W)`eYFf;qFGIIje&l=dl!B1}r z8xDz>6>>6#udm%JTG6GRdcWNgOe4%|E+9f(TDr5qB=;n#cu9lK66+ST4~AU$*VcSz z&-!cndbCcr@8x#Yib;`^(Iu(B2r~P+q?US2pB`|drJnPyfP=`a^@4|t!yQZIbw~lXv^zRF9Z(H~P2_5_`R_)Vpp?R>YEsK@y{8>}UDAKz!5v68Sq1a3 zUKJErkB%W4ev`i^W2}*_FoCQch_O4Q$b1YW{1Q({dP~nekE?j0Yf)w%*XN}{-c%9MZjrsw(#qj#d0GUuJCoYZ1HI!`wIKOV zx#G4Yt{j}Wn-ZnXf+ap=Ofr}?nw6()4Gusnj7AeC%#e+2Bc5!)y+;KopqE zy;M17y!id^pYJSYok~Dp2wXb)K(>40vXA5iT(SBDU<0~>T zUML=ysFQ2gt+BncqEYzc&1+rxua6tY`@>@NsV$g?qZLf5hOT}KP{^b9kd67ZVR$iZ z(IB}o8$~i*eR0>j#8=`nzT0ZLm+_$o*tdV+8C6r_w#|W7W97r_Z*K4{`$o4SH+e(Yw>$jE(I-DINHV zR8Cd+Io=h+zCFu=mX74Wo4UhfG-@0d*H=$)ClatFsZ!tZuwGm@VvE{NRJi%3)N(p4 z%i9pOM}l2PD#kTVuF|AUIy6gc>F&`!lVgena|~}n{s3ttT4fUVgJ5bmv@vcj(G(i& zArlCeg?kSw7ml909&OjXArHN-_2Ko~ntJ!S`B8dfv3!C_k%luMAl4g*n; zVah;oLHUSm73H72@AgmE_yl0;4W1~|WD=VDiVtP1I$LLS`X`{%<27k9(P5VE{t{G? zWM9o;&JQ2BPFatbQFE|EP6qy4KweU)I z7#+3ldIek+qRGRjlL*gYmH0VsF~Uvb%Sj%r@t}%8YHW5^+IA5vr_ch}ynn#`q((#N z>Bq0~{N$O{%c4{91=4m2-vvV_?z@E?mh{G^VH&c-5!@IZLN?mj@LsY;%y?U)kXqzM ziQ0GXQ+8p}EHEl%_-?SlV7q1z`*%W; zlO6bK<-K}k@h0q!cDb!oxh?lczx>Lt0u=Y9Mkef2aI~&xa#u#p);_*jFd_P2(ziSV zlb>Lr`ga9yRg?bGU+a?;H8uk5%+Iyf26^4B>P7R0=r9Z3JZ&hx zY$5fcY30EF7Jad3myN#^9l7a`b**e6l#BbuypadY}1oy?!IB=IEc$?O*rHnQqp-QR@~JbObo2oTu` zygtexBH#5+lV=EYn6ybzyh@k_{S4^gN)f)A>z;tag?-uJuQOVOqaKrt3EgH6PAd|B z4xlZf_?@Dqyu$yeKfm_s{>v{`BZg0pRqfyrsP6cQt<9;;>+hBS(B@z99VMZP^C5&E5IRaVMxR)-Xb3AXM;M~o+La(iasVd@c2Vo z8;3nxXvk#V^`_STsQ|h50-{~pCsWm(K{mr1h~ihsVWJ&GL!or#4yo>9k_%MZ>-N{j z>2O=$S?<(=s!EyW1yWDSm*Hjz{(VZ&Rq=q^x<4e@(DuTB;(i4Smzb~iWp+-@eNJ54 z#2QCGEKw)f$6pvys@Bvg&~|4k6i#|%PMOg!V{@y~$CvLKvB;*rAsvXbW7lJy(pp@I zNZPh5?i%!0z!`d{ppi&Lljim{y)d4yqPnUI?T(ff|G#&NHB?>fYexxhI_;Hvf-i8l zoEP@^fE?Bv4rk?VzPP?1h55;^V!^JNFA}hQ!@)EDYQD0i;;LQq z3nL$M{ir|1{h3_O*{nmEWfAzrkvI9tAL*wyMt3YdS!fd#y!1i4l`aXLKAmU6t)g8` zWty6(Nrg{?GU=wS(y{{_SN;VmkCd!EmVZcLOU6giWqEmdjX+Qe7=H@2BaxtFm={F( z(Oy?WgV%!i4S>jHFnb=+Ey7r>e$Zp5n+<-4bb}EAeP|O}Or3i=+0ORNyNmjQChZK3 z9o6?g8-^=;X3s8_S4mjsV0g%;KMUL++pUkmtEp$_rj7NWsbE%BKcGHJ@6n0)%p80p z1X`1iZ|`hyr;)wedE@&j*B?3Ae2MeZ1P1TpCe45&yGVz<}Mum@_|S)7qPCV8d>4cV~7=>>N`2{ zpnx6`Y$T>@yCA7DQ>LJMeCmSe+xGzn9GRT#g-8U{BY+Gb%6#X}Gl}zh&|acwh1*c# zV=!#O?WCeZ83k-snpOnj*GvwFoQ*1-M1y3GC(y1SfX(z2ykwXUe+`dpeh z#u`uk4jO=!H^w|*y9%BCj)0~&1`VEvA#ZkvTRxx`TMlkj~Z*#GS~mwv1mOX_HY<=wR%F#3Rs6c1C-BJ~g9b4*!Nv zYR)dtFSPm#PfUxv3Qeu-mhk9%-6;dN2XlAGKKZ0VVp-!aE4F~yLPF1?#D~}hqix(t z#MQ1NtF1-#?33iR%F7PwLLJvRU%&kcC-hB;n~yozR03w;zy(Y=T%G}OW5P!43i%jj zsC6KvU1E`*2fvgF((EEbZ>2KdQBKEo1Ij95URxmxdHr=8Wq`Bq-G&Kd2$wQ2psuaM zL>y5H*@RT(MkdHlP)&!tF;?NL_V*T;xm*%>KH$ZAQr%ZgmG}H1xv8#3?0|VrGT$jOu@I+x><__JU5q5jI;(Xe% z-dGV?bHx_XU?yf-h{L*BoLr#+?WGhHHP316|eR_WV9nBr_%2uE6a#R(=*KFF}59>H@^py6kn^nV7+xdQ1 zdQ36_8qP5RyveHWWml2Q*9zLNsE+3Uht}mJ*R7dTeCVur(D*dOFUqO=O)VkG(w@U6 z7goa5$HU&xqjYv|wU!Ed+#n_Zs#(scusy`H_hUQNJ4bNjRN z144Ip8~mMhp?P9VA?L&AulUn4T1L&F>WGXf{4GMrC=n*MlF4K==cXzMnhk}Dhs75j0ivkAN|+C zv+cR_s`4}Px9Arj4ycC>6L~5sxp=87$;uY?e(=oeaJR4z%Vrcqus(JkC)vNCwVL9C=tR=0e4MOPCo^^VFln;Z%6$zz z3$?rp)!aCl<;oiTm7q$FfM5_;h>eGSM2V3Y%8%=m_rYllJ_WLJapYRU_17(=R%mDD zp_|O3P#d|UVVfJzsLaXv=JkS*D;C$u zx_lXEFuUGqklbNAjBea`%T`+Vsbxb2)3$BJ&rO;eZ)4S`Q}2mdp8!0g@~@ovwhNvg zhR;yR+Ye&g&Mx8W0t%*gg0N_x8F(1kZYeKoaFE zB8?}oH@IR*pGh+0_-4E2rtYN=*jH{jOFe{^_HVzFe;bl)1bnghu-aBc`$iWpA|YtpIt$jnR9Us)N&}#j?S?51!jRE znQJj1xm6&;B2HT%oxXQi>M15hF9(x}INr*K-?=S0yI_Dk2IWxn@9DkHIbA5GmbJ0@ z?CqEtV^i#Ja-8eO=H#6+cqZ`3U(ERFzo+?H#oewHNt`w7F=m7SC!3d(n1_%uX2MHZn`7G$&4Jql)Wr5VEEsYTD@T4k@31cL_$oTOwEvgVm6X+? zkeZ~l?fwx`;oS{vmWQ~S$E~7!_H-a^duym=?}rZ+5Zrm$v9&QzyE|KB_b2O;Nnwq7 zZBKQ>G%<-E$B>n+_^2OoR07dx@ZWdU<5Iy~3G#cFh+1QQ)q!Vw<8@o$1s-F=X!;&P z^XCy~M^8U*LL9YQ1*0m1|J$dLk1jeIF{P9#QIR_z2zluQV#lc%MQ~4k>B!}P2^a2S zU^!ro3<5N2#BOSP^Y14Rt-~gkba|1|Xe1gu$jQuH7LHiOj<2x{HX|5SqPc5b-57#cbD2CGJ$?N@lpb$`pr&e95Pd(a=WwrEk#det@{oKp|hOM$G|r-oYo^REA%Np>D}E( z4xqwvaf8=`g&2$PWnc27H6N8+_S5?=6!2rWb6vZgA-#hM`n+#Ma)h+$9>tKC+?*9g zC-zz09){iNcdI~DlG85No5GAy(MuY*wr%;6wk~C}S!`DEf=-N#S4!IRG}p_WZK$c* z%>Bn@Lv)$wc-mRtXx0!7J-=Q^us)@+$hh{*Vaxmk9%v(gEoS;tU2^Yhkau(8u1m^D zegEW-5$Ok$D(tZ3z3esgT?f!yG)XihLOH!4HiYv&Do$>3N-{4e4U~5=yun{;6uf+w zh=Uf1Jd65p-t_I-X?r((YfN5-^TBN@SJF0TiOk-<*qtu(hM98Vz)5(pht7Ln?)(Df z*#$c65NEM;_}$rQz#|(3K304;@6jqTvDESQhN&o_J12#SnnGm}C#sSG#mP}r7Nr;O z-I~f}GK=SEWfu*&6`T^7vQ#OH_noYJy3zQ1PKo>?z(3m+3Qn9jLWyDS3{o*3M3^2e zMYoEuc#WWtK}=UZ@ax?#Kjwt&hK6(qNXtZ!-A6z5VL0=@G9dXmwauK-43nDgXqCt4 z?sWn!#jm;1YTaSDJCU=J848{JWCa1OG#yuT*8SI`7qN?$KEu0P z_UOsa-d^|TFV=rpIt)~{w^ZqCZg%jzoan&4&c?9@tPD_ZNE*gI$j^2W#{e>A;fBUi zsywnB%Ymq=?@l$GYklqTKNuHPD&ZLM;MdC=AKgl3vtH?T$Yoaut0moDuEI_a$+io_ zwO|YMye1(g?-xS0S4T{{ipT98W{CYcqcw|Bgo3{#*U1GLs)r1IL!`o=KdX5jp1p1) ztqA0K^pt>?_ohQr5E)2Hjq4Nmr07eQ{W7}&piIH!d%fz4%|4XYz39bm_)S>f*lO>y z7{zmkk(AO-BQytrH)w!b*Ab_u1gO-mZt&T{KF%yD!^6deo&_k5;>EQxy=X&jVRM>- z5#{TYX%)N>U^e+|N;Fkvgw8qz0Z@z|6$G*T;pM{I4$l zg2}sfNY`ebDrom*2gHeE2|~>9#d4|yRD57@_3O00_FVnK9gW%q@!HH^E?22?J4X2& zj9E^g3{EHOY>`7>I;=2OfLnYDwfuV7*d!uf(CsC(mQJ|4yz z=q=xbF(9uu+kK0Dbdw#r@9`E(rvfNYI^V6*lSzU$i$)mmge7;Y`5cHH-Y;80;&)eN_&~+-%q&cD*I+ z$4di29A@q*Zib;dn67^2<3XY*D=UFk+xhhyN#TQJ*17%TeBal|>&*Hd$8e5oCMPUI zWAeFXPn$%a-^%Tt@%B+(&La!0*hNVnv1jDFX$pLAv)G0b`(27BOP;Qwly*~)&H%ru-FT&6Sf(zhTHd) z<0d>y1YZEat@$A7lkzIwf$-h(^}nH15}6hnAs1-bx!CjwQ3@OqZp*UAx0jN+_jZQ0 zmZ^vAOHxVMMQhAwOvp^VmHmh=HJ#s%B^##pQO8??;_lI-^48j#)>=nakFT$51>Rr} z7t5L8b7p<9E^oCGrP}^WH8<3?Z{Kp?zu(J$rz#!=PA&gE}CkX*# zUS0Veem2j%y7~pEvD^kF4^`K_k*eIq;^ecx|MwF~ipr>0RUV5g+ux?AGMbE33Z~^a zX<`qHD)O%`1XiF*hRS^k@SZ>qXk+!0Tw`~)#^%`0<7W0VsCgsPY)0ZPGlV6(niqF- zW3q5U;(C{rNkLD@6FGsRq13U`fPj0K#)~AJZ-(?6&W_I5K=GrIi1G-69sj@e1lzV( zvWmd+ve~e`KkuAO#&H+2VNsC>EqOR~L*z2|i3lJHQU3jfjQcMe{}*tMa2LZX=4NGK zl5px!QeM0iJ??)_4F$$eswIB?@wg55<=`Co!L?~-ichvDcqB~kj2~nLw&@=YEpuMn z;J#{+I{qed*`3gpfhRUWIeV`?=Uj6=^Y>KguIXcok@dPfsaIj!*T3Pm zviPF(!UNZ2VL}Q2UF#3)k2u0)Y*3BCDXQ3eepB1rJZy`H>->3Jf_Yo|c(7Xm0Rajd zTh?x1A+!Qbd4`~4srNx+Lzf`o58Q#t9^&<(Sj}hbHah-@Y~__ z&j~}W7H~58Ffm>e<8Zmr_4c{`rk8+4%ay#{2XhgpY!Pi;Q2d9>`3U6DwwDFMbPx)R zm&?=~tiJl1YFJSjZ@{SpjaQe}03-XKqh4NQLDd#P9{;MBnY)=>4984GM^t5-qlUUh zLlS=yZuP}_Ob=dXkH&{)Pwg(wXTDHe z_vNcmb!7Yc;rdULgL>htTrFUl^?uSpi_4v!5?TL*mf@3%M93R%RS`>(C{nBXQHFzk zE_c*3v6*W1Gf;lN{Nw^CxnqC>AY=vbqW}#lXpe#%l$KsPBjTUe0iv)*fh%V1DP8i? zX`vTR>H2|I=m#xa#C-${9d-UCGWLr!ieH%~0fq<}`>&?2MV>+p$wB_*b!lqH@((lW z<|AOU!6dI3vpT4iu~RiSHMP*s{<0o}%=m5o$j>Gb$bw1bN-A&5Z+WZ>5B}!CXsw;h zY8lQky|Zq5xBDAcvmP17%uC}tpI5)M$N)t|2a8`BE;w2!3fPUI^LCvxgB}{A7&Jm~ zLVvAA?Wz7H40xhgLPWXyLRm)zLJ2ZVvK~ocz6$&5&(NWH3Wr&6D&)Bp2>vTlCu4$w z)-rJM`<+fX{`8x44!9-RSi|x0(3z$6F;x)}oBEBXAO!Zv30T@2yDtL-O)9%|i6FNV zC!FW&bR)g5j$THn*(W?-w<$q^;X=u?8NU(M`xbtRSW8%t7 z>@gD{GR$?j4Rot;Ty6bj`YCjlF#*;L8s*7TjV$oLSoGU2K$161u~0n!gxv~+T;#|U zF&u}C@cK2-0?au%Igx>EP%u!6=pY4g#YoyFGllq`7%14u$%WsKWfNO-h>rjSi-`b4 zbHeXa_(;k#NV%H|1 zY0mgwY9B>f5BmiRZJEp zr+fn@Cjn3K>$4}oByG|*q3 z4imI#_PH0F7IrsH;+Nlq%H@97O?kW-V6%E~Z{n${l^)hR>wch2NPMy7@qnggNPcd| zvk6AIT*r!J8Ddr#w*YvX|8Bg@Ew@;!p0Dx7|2f2(j>7k=CvzCtdNo<++Ay*4^_BLl z0l7=n##ryJugY|(r1MlJ--wQ`RPA%!EyL<#3e;oHqNs-v-5*PO=l0CFc<01FJe(}# z`?5Q_I!(I!+?4Cahw5u;ws6wVpH5#~B;geoPr>UBhK&Eza4|PhI3|J*8DQ_zAL}96 z3d7oqF=(qpI#=mvxA@rEfrykdu29E-m#>0TT6enK&8Sm|9$Pxjrk&5V!2crX=5^o0 z6c!cf)5{cwQk_3V@~!#F)J?D{ogo&@A$gD8K}LLphXNwWvxtFI7m!L0RGX7T<1E=| zJqbcX6fl*DuDp%|$drsmTZm5f`O4G_BicY( z_5S$9?bOnSgjo@T495OV79<>F2M3${A7A`}u2)k&n`U+&Eq%MW_Dv^TpEX+lv0lW? z(>={^EHA?^F&gbEH8qt0%gdRmoC!qC96@|JEZ?Iznj;cma+3d5*wq1tyP@~&EFXIz zlmv_CKGXBOp^_94GGg&OIR5GPu`%hFmN4*b2`%odSLbON1R1y*oL#{z4}zEmI052w z3WGkMK^>)_M+$=l+CtO_LL8yWBeW&JMv;}7AU9)LXsZ82N(T+!$Ovx4$?=J~9roC?RIt*OcDmHC8BD4_kt;WUD+%25BjvB-DOO`!Go2suyXHNalG z_RbR5eKO+y>bLVaXJ0t8$v5h5cPy5W@21@SY4EI*^N9@p&?(6qh-3){P?gu!T?>KY znjm2DW%S=Rb1=}cxOjWl_j4r0`Nc#q&uJfM&ND~THs4%40*<_W?iW`t%j=j|P&4%3 zas>9WiyRSNOT55yYcP9=5x|$TuxbM{$=@!dotq)`fbA4HIrjZ9sS7KU-ZI67KKh?K zHdHf@hQNYBoyp{v5niDZ1J_-{F*o3?_6Y93MjP@fq6z#qAi2Nyw7~lh?_U^n40P~O z802#DyG95>MKGU9D_8PWdbDpD#fN0yz6CPk8}SrR8irGs3AUr66)X|DOKD<`DHs? z8m>%^3Ea+Z!0)HVgXUHvfeq%yT*Y_F)4^j-%#D~8<`}3xNql0vi#caA!Wrb3$EsHQ z`b=~&D{w@KXRSx!*6+S8-=~an(14CEbQ`y81mnkn_&D`UE*|A~5(UhWG(YZ)d{f3P zRl#ZdeLnO%SUL@h=w%ZfMr3-vEyFKYiF`4qtDKxbxs0igy8}bzWCo-!zQx+3K_u~T z!7qUSZ>7bQ8mbSUEea2fh*Gq( z=HwBsWg<7cyc|6Q@bX~5i4y|gI1q%uZu*(|Pi_Iqv1_&P;Un7ai7tUxfY^EYHm zvoKHZvMyrS^fPzcsWJ~D4OkxJ*v~c)h`OwKmn7T`L7|t5z&c{HNMi~|yBcq-naPzC z+S-%M8ytKwl+LD=OZ$r7Io^A%aA#N6hpH7d?+cO!Vf;wT^p=9eZPyiB`$9D$`Lj}6eUa4A(PyW7(5 z`6U-@T#H$BU^^jMVf~3P=_z)*fnf%8tq=Oe2NOABu6JI8+|8MTv~727%gS(G{+xk`rtC1s&UB(EXHOY>Ydm@djJc&Y!!_ z0pIY(3bYZ6-k+S2Ng41dI|dnL(xaf0JO$@lzkn)i%2Q1Onv^*JIyU4jfg3sKWb^qA z43gXuVA(w7vXlIDBB#4Ll5Q)xG^d*qBl>1mnbUctv7y=1AHx|V#I zs!R>7i}?1&dt7h3KY0om%>*=)?LU0oT7T~Ir{MMeK(95`sOu`_vv7JwS>D&CtEjCW zk}In;T(+O9Y;qrv8Nj?3tD5_DubAevidhrbQ>+b0e(0kSq&c^-$&AttAIy$*40j)_yvlTc^-Zqp zQ-?b^BmLb(=oX(ZKyrUU9fos3_XhB4J*1N!W4tN7yzX^=hBWYrSh|9T@hxydO^jr>y?z1a!;ZzaUPgNU}ypm7tp0GA&Z$%BqyKa}Vg3 zgZAo^Mram_v6?H=o0YsTBX+NjSb8h#?L`)i^8!2muXx^PQwuBYO?tAM*FoOoAS|s>Bavo#dJY1S2yEDnL2RZ! zLpgNrdc1TpdzW28BemB$>_-!UYC5}4(EF3|aML!JNKtwKDb_CIbDzqs-*YuZFG@?x z*1P4dNgLcAmzZrxO(dbVT}i+qD*Q~f{F$z6L&JZENu8AJiNtOUp%tzPG>0pezJ@Mv z6*gUzvP{6x&CmKIox3>O{T?{RBp**Osb<(8&I>(tmPo^SZ5+?}ZR0YbgEWR>IeIBF zxqyX~rtawZ(=T8{!4#rF;HUK;Y9!b+A;4L^S4!>2RL$-@}OP&{2>bUm`0ig6t{j( z)zP4PfHSmLf|1YWxnkO~ElTyaa{l-UL(L_i>6@7a@JobQgY zZtYvHZpg=CWoO+oE$&Ox=Sjm_jF8zDziaeyMr0eft>w>5q_Sz`3VGy6?gt)v+FLcG z7r@;kC#RX$yOK#riak0;amN#9?|*XL6D|qFLTk9QpFcGYw3I}-TvF;Q!(Xc_~ZBA#rrv0 z)Q-)d`Wnf!H8E#}A2c?-yRxdNS5V!C^&Lva-E#?hM@9=b^7GG>^2(VUJ&4uSZ)_&3 zF>a&~;!)ZpaF4$1e9++ZFstTq!EfU~yvo!M8`u`er?aJs#4$~Nyju*oUt8$c^`rH| z>*por=bMUo4pFgI%IX>8Q7EjkqH=-*32*QlV{8p{sC{&NRDEUGnOuN&Yvpz@)*<`t z;9wKTQE2tN{dPTBFJ`@&)_lySxcB>Q=Yz*j>NT>w_pcclYc%=%s=ha?elPPZI1P>}YF&N@6%$kAK;uSv3J$0BbXkwJ71kH_-=Q&t40Sh__e3Y_)&g}hnN>UoX^U*K ziBfA5u>I9!^QjxcDkWILq(*pBcj^VO!Bo>|5o;_DG;WEAA`&c{2xmIKzi5Q)wzCp^ z`rLvDMz%$P|K%X>G;uty5|EPiM)33BZz+w&Dk)v- zcKcv6zJU|O_VBd-mv6J3gcz5>PeAL=< z=-s$Y^1G?wu2FXrp3lL~rXxzf{bO&Vdn*x6YVHfNnxjo>rTca$$~BHTzj_%%>7zP! zECkjexbc+s%jiFGc{^q8?AYQ;>p`sxqt@bJL)i>sSX<)?80<%`MqSY9^Aq9b$bm5T z)Oe_Yp1&p=Ffi()#<`w-Tl}ffs?@gMle^-B{Q7Fp5;=-|%(q2M&)9AJPG5};C3s>* z=j}b|!bzuRDTVR#g^xttc+JDm)tDV;yGWWMCX`Tkg*Z9srM^!G4CvdeqZ%t$WSJii z+uSr6VWSwDw|T}Eu$U{o?A@aFsrD)b4+L2-Sc;+s70ahte48Q_fsq;;x;^8Ga4BB} z+mEd=k1y|)qZ>cYVsyX~=wlKvB_5SJ7G@I@3=Mii)RK_=7uzh+_>xoATdhsGm!Kf;-4i&ffx+mJv9XQ3 zl}mPTUV`b;pfuSm*4S^se}7$$0^AQI&QgcnX#E2N<3oq!`Jjc+8gxOi0TjB5I zSZ_0@Yi8C*d}>S7a=N$g_%0^t9ZhEsz(QnEtIGxY3Hzq`awkiVdcF6d`djjxQ6#x( zL`3$nAtIFjeuMP#_Jcyfq6Cu{l{i~&xGi*&4~Fv(>nak()LQeWKG!>8gSFMX8 zSQ#f6Y+tFATsKZ?D67d4Unbi!x|{7%BsY-~VILMC6!VE))kn?gZDRw^!P{1ub)Mbu zE8(FbYIQnq9#EX_v5oK;kv zY!4ykNX^O|-5`DhU|91z?zh36O&GG-gwAg9)2ESZ)_WCWYlFzbip>Ia3~Vjf z$QBa%MJ-lQx5ZRMmprFO?qBQ=2}F;+inibhIM=-Ouq;uX6PR#pTqW^5DDrPTvs}rZ zh*Rbv-te*xCVRaFt#6B2KZWab_y74DMDWYv7Wz0|keUIFYK>Iaa@(#Lkp_nv04 z=en-hazBKMvCf|^J~X0#ut8sAS^#as z&cMD`8%UvoW0IiEA; zt{f4&NM66CY^8_6eKA`BVuATg=Z>2ApO)Q5_42`}hhnVy`Kbc-H?(6(D3$GoWF%O9&$!h&@Ll4TtB6eo#30pb~KG|SAtQsHzPJnRxx*fQk2UIRZSr%ZJ+qz zw1J3i)l`I8!`RVRzF#Kt`3&!4TCv?1iLHc*W2`^gepD9viALPz8ZuE=pYD*nr1as` z(ZDD26<<|q(e-r8EJ~_a)dSyXM(rnGj%aAV;Yyxcqnpw(jnwl3* zT0ZeeQcP>_CSiBM=)P^g8ob1pA2i?baq&oq_rsoIa8P`gmUN@|H&p}65fM%0S@4w@AijpF72C%x94czRJKYgic zQLaE&3B2$av z+Z26*qXjLJ_cx7WLwk(hrOD%bDK9G~#QQQ_A)h8qPnBa81+ZG+(3=FtYYI>Vh~HIY z1O%kv4qNAfg+|{n-)j~b(h=5)^^(Q(5pAC@_~|Do#a$L<&jdAF?^Xt=%8N2tvC4*- zG2b+|HhGyy>$7imwZb~PzK(5pgg!CTimp#6)iXu&5ca+MjanRAKrJceoE}^G;}U^fqry`+-Sx%d!9wN`&F|Q}*4e1e^8OwqSW#LsPS>Wzs@C1G+8<+@$%M?PS^nvy6j%VB>w^WN_kEpf;v_R`tIqg!*#r5L)owT4s+w4uch zd(&9Q+nHj5DLS@Ze?2pO@!@Wxd9nbGO*9^yJdO)BMXe$;J*Ril=GUjr4VGKjI`26U z_(W9g?Sgl**@>na1II z-#iyeuaGM!CRZkMeU!SMi(c#!=Auddnn~JvVfK3rpNQt9CZAU6$Xn*W$yi3?Li}2C z^L!kq*fd0X0gaNHW<^n~njck|m+{-Ndn|1S<3!!B-_M;qh;NH-#oJ?@x1NZTp%rqV z;XjPjS~G|}oWB=tvmJMaokdWIT2`Wp>HTP)^^Zi&L}LhRrDB|oW=sdO;n9V+=-qPF z{8!^N3wXwc0%Ayoq9b(T{si=6FrIC01vJ&`aq@nC7tJyNt!P~d%1f5{8G}%>nwqw4 zc63-JBoc-6^Yr7{9XC=GWG>1*HqZYUtqYs46Gl5!Vzz7e3b{9rFA{Lq zHBf)0of9O*-!H(34HgOAvMMMkmh;aSxIuGqZZTBnEiap|)k`5lg_q6RZyEVM#GZIo z%gI9%#WJ1AR_>kaXrrPBIypE|q@$|*)hYtgQ3fuXblz|1t1vWDkS|?wzT@!48 z;s$Jrk>QnP=LRod#L@WmqXkWH>Tl+Tv*PVvXz^X<{t_67~?f~nB2HrtQGIf&$% z5vF)|ZP!!y1*0S5)eo~;V%6y(Q&&S2v=vY7Y`%?m*A02-J7iQ0xx8GbFX{<>8G~g? z%%Db%!ADF@(sCqF%@cbPE`g6G@ykSE@zt2jf!7#+gJ^2Km9?f`aL+;WV%Zk;G-rQy}feKI5&IwJ1 zo%zqeu#X$BG|j?Y1QwPSY;#Ay2TsY9dbsHJ@f8mRIHp+kr($*leZi-Y9jzybFro^d zeV0P-x56r$+m{-`nS<_?-Ys7t@CIkFb;Y!aN>$!6mwoWPMGXIC&@HS2DM z`K4UEV3~bNNmdFiq8@eTO)>jA&vKgwK!S`r@2KcaAk=O2jKZbeM#A^GxZug$vLiKQ4PwR4(L z{n(6$otUj_t%c2X(gvrWL(9!o#ljq&RP5h>Y1x*nH)zb;=*$RE3t&607KX>SDv;x0 z;CGe`FUPi=ICwaniQ>ezWx~qdnm-yIi@+zTWUjwSTuov+!(p%2 z3RPr%y%E>esmM-6o=a(GXFh--Kwd&cN2io&2ZUv?Y~$eNeIyfYLI_kB-`}Tm4WAAW zV0cDG2BR7=kSZ-9USC2hj|DtP0Y7ItC-%hPnEsnvV0nCb(l5Q&3lZ&)Epb>Mp*nis zVo~F$ek&1L-ZdtAj!DmKjx(1_7ij$#CDhMtYBm};fuuL(S&JmcT%F@3SPPyOib%~AIc6T6-=z3SjgwA`@Q)#<0z>ce6! z{vwyJ^b5KQz1dY=ruK(7?Qq|u?G$n=Tzn|@$w-;}#=I;VcdI2zPE7^>IXM1!5f+U{ z)2cJNIFLE&<1C*W$bW6v&dsW+%#}09h&qiKU@(jRlwBhT?6}2T6(A@WMl_X~-=AfO{3e1g_ z##}lR7IeoFq~LwP#4Mo4AbA)oy#8E^__};?PHLKUlNN6c&2?gaKUdUL1(FV8andQR zP_Bw1)?wl{(ojy^uy!@a+}`!Q^_Y0GXzG6*fj9bFzxNFFNaNz;ZxIQ<)0)`;_m-=x zKyQJgUhb)v@VHWe{RBv;gO7gh)inkE{`t`R(=|d%-T?6_y1}J0l#{12`3Glhd~s_zc|lKxp{i-?|4Q~#=zDIAd#QbL1;?)@S3FoKFU4s?Cp z>R#L{6R(~17rl*&_H!k<^N!G&9-x?8x~9c9D(e=R7WtI6*_q;Ly2=S>yL_P|pf>P| z+M#*J%o3ClD)R(I4po_ughXk+p=4FatWDnWeM|MF_2lU8`}xlJgC9BPeOvi8x!QO5 z2>B>+uw#1OUb!-^D5yzlJT|iSAicXz%jb4786JAnjX~3@`xYre_T`Cf^F!IC7`99) zimc0lJRL)nCbzjVP14cZ4v53A*l5R22U@ARW9ichylfa4mDjwNM@aPf7SWxgw)A8c zTy{EFRrz9VKSAf|jbsZdNzFE)q*w_%+79MJG4u~+R;X6#c7?<7{;%2PW!=NVw32*t z^7oQ6tW2_M@2xE&>6e*3cIxDCzPO;Xu?!4N_(eT#Z+c%r)MUApG<1iYZQ<1PtD1bRN^=Zpl_ula22a4mTQpBHBYeP z{Bpa7eurGuhFSEOK1WZ^iAM6hUU|bdPAId|*!lYXyXiks@_u6mC0NVy+Hj9&ce`>HJj@OCp{((j_r2y_4O^V=RpCVEoQYDvJh4^ z#Bs~aObhI$gmJ%+^B!Z%<1W>Q6H)BRtx&T^+lRrp?!RR@SdwCAzzRbT)dbH}umKcU_S3hX&Sz)oU94 zRM=vqx6D12DPw69Vj9A+@kmLD6{UDS#9~QO5#;h4mx-huWLI^kq=2L4K#VEQzNWUA zeL4$U9;y|I3LXvz|Ji*W5nGS_TMeyoSkG8fo;FZVco-SX#~4xA%pMq#&6CL$t@KNe zhQ{z4VseeRsTqt@i1;1nRja29KDwEfZT%rJ=JR!X#gs}h*2`SAp&0Ejv$#J57fKuA zJe5Lc?O|J1iKVQO&I=-Ox1Xr>o~LyeGIl+U5jM`uPRIQnm~xO5p?6*0)k>G&BmN`<-QzZ6~mKcXUjKzNakrQ{C<@R_42|i$2`Lmz_ezk^U|9 z)y;%S4pDz`ccvOKL5$Qcc2`bxqRbDL=LJl{!b%GXZ8JdCPPbp3g0htqjysh$u!H z4o;MQwyoK2@biYev?}OjjU3P6{N(PGZhm)+y@I29@Kx5wc5*50*giTY2^FtQh~9CQ zil&@26tg96sw_9PD}>B8XE4q%NEYYhm0sd25sQ)T&1IE zEg)I_j`I75BKc>x*Lt34C;3D=?p&K$W>6GmntHL?pi!f0cwOsmnL5dh>;&C)sXU$&0xr*vTjF6H!40#UPWP zhQHuR{D{?>;|vv*jVQITf=cZ?Q=M~!m4s1N_8KE$|L76XoNxD|TpPosdD0z`8_W)U z9tkHO@JN(Y=WV`6&90~H9ML3TYSF4Ic4E8TnDtsqJXalNT)2^*$EY$eXmI8FAo>@i z(u`{;(z1P!&y__q+{jw-YE6gi&BGakaJb&MfNL};yA zx|y}d7i8K_0{o6kV+mR3ea2M>Glvh^7mftZ8nXRbZ!_D63_QT7s zFtGDc@3^=~Cli`+_eBtXB_~sJ%${FStst$4s)sr$E3_x2UJi)ce4E|kdSXYPBlw#7 zfJK7h7uqmtX2mlu9etyM(!iQ%`jbSnsAD!xlguiiW;_xBOUKM~^k1g&^~V415EsuJ z>o>6OQ-PCnz+NK&3lOX6>g)HyY!g^cd46GW6QeuV#0WmrXBHzN>3h#7&(88XD6o;&`iY3G?QP|3 zRBY^plvK?dKRre=*iX~7s1{gQ(_Qj7`VEOz6JyoQY5HGT6(o^)x8@0xLv~&%nuY>P8 zG4ZcPRi{)X)c4ONO-W?lvXog_^y^0d?n({e_=`u%b@~2SOM}2@%^bPDQ0#II7@TWA zziqaE(4>~_MyOu$!Bg*1)jS&=Hc6tK&~0Y(2-Vb1%HPua;xy|IsZMUCdR=?=)qc2{ zNW@N4wx|0>q#i4;``ugL-kU9zcyXzZ%oD z?JbdJ?1Mp8+-=1xqoh|Pl9($l1N0?2RsY7G5NfJr+UE}6wje=kEtG%$RZh@OpKYai zj*!`%Z>p?gSU>89q5nuGMG4+A?Zk!Q%_WD5;!iQ_rC$fR!{#HBC`p>jqT*s1&CVL+ zza}oc9-L3R`|L5+xZ=Qg{TEAJofum&6-FCE-Z0;Cl;;`rYfAgLA4xykg;STR=~&CU z6A9UQq6@GS+|Ycs!D2z*&(kd4`EiYfZzTQdaAq{+BprIa6^eJsI#Cd<=&(esVvYab ze-Dz;Ws9pB!8Gj517X5?6F?Z7VDN(&;Q)mh!D1l)!N3_J0EG+Rci=s-QbU2&A)UrI zx_4^cFyWimM-+=;0o=wr$>|^JW~L_x9pA+3{kXx(3g&gLu7qk7tP;fhe9Szb?P=A; zLc`7#)o1A9x8(iAMOTh|XL;&+a+dj6n64-249E_}Q&{+tGBGZb>(IIl4|^u{ArNxLh0^B5)Um4Q~KQA@As!FyV3WDMzec{ z@2|)C2omz`&`uds@am;ixa-I{YPRd>l+Qgnbh(}KlBhuDP0y+W3c9Z;L8drsW*eK# zlZPA}n0t{Hu@y`Ox#o%Q^a{F4h-{gR($?(Z2#wV&M|ewy{OBQj3%6N>r%`T>wtv15 zcloMvSyL0qVAr)<*nw%YCu;X_XZ@`Ub*BAg)E@TS)6qo!gk;v^^_T{F6Jc0yuRIPe zE@HVM?sv=@O+dE>9Q#Y4rftKP>^?}?3=9nFVVuA~_{=(yS4CYN2c_$%Mmft$>MXGH zTT4pTb-jJ{N{{}2dRn{r>`nkgQ$T@zKqsa@)9L%f87~ zl)K~j!1TaQ>6z3*&*NvRuXFvoqOj{`FOZEL`Z4jraPPZe)eR2@istcfYKNYasLOC%n zhKUg{`x^$Mc`8cERe-c3y5;{kJt4qP1S5~2Bde>cPoyt9(+UdkWdj0!k^M@@%A@%f zz&&r*GpPBb$CA48>V7{*JNCzpFT(!(@Ac9aIlX5hoy91Ub9;UYQCzF(T((tbU`Pw; z$P~wNaCOlws}R+ErqN4_YsEk(ymPw8`jHJsO2B7p$oqmmeq;AjtoA?&=ROIR zu3;wSxKHKXW%XQoTW5g*nzOh?>S+px-Rd0o{rmE1CLO;XmF0z%qdyrFi(NB#f;xd; zpMtH5YRG=GM$>S|Gdo1h(9nq?a|{D^KUPTt8~wF){$^Ukp4MXV^ZRL%e>76o< zTDK{&D6xngsPAdbn}j%*Gha=F96gh?BjcO~0E zo<|2)Ffsq{*AXyx!w`MEeU&I)ILH^MW`uwUoow&%hTg^e0m}zAw{k(nI*TpSU@7)6 z%>f1ZMn+LRdpO?8ped&3mJQQ7e8qefY7_20%oj^Cnk1R_^CKE5BVD0up+joT8X3H? z5#*lULGCrpjVQ(<+;0C=GyisI4KW~{xfb1*FXfj8(~N-Bjuy|flY(y!rX4WkV_$QV z{vo0d0MAausjj`F!x;F1h!6AAmX;?O8Kj7k%a5i`Ovy^AQT|uVyACvkor>a4zGSwe zV|1^hC2Y(+fK}nL zy_trkx)4dz|NRj!kRTF~47`>Fo@IzTzcIvF1qR~xW8Ha4~wg#X_~_n(!g zg9HD2baWIJQqkXq|HhdA%cM`-*MW1L*Ur!XUoF7D=IMWbI!Cv}2F=j__Z3gsO}z6@ zSMtA~_(Rwx|FbLn?>)5++2d@ocRN596LQS;=T8uba}c{Z$j2-)GC>WM-X9|RtUx(B z1oUYv%y3&eT1AH_EnC(krP0h+uQBuMHU!!>GmWQQaIszJ} zl)^%KaPql%w{`=Xyv$5YR>+I)w7wqu& z`~5Dhx4}ys#*M*@$85jaOt`|)9flsE{Y*(m#|FkTfOh~l%cLb2i~TQV!r;s(9dM>= zVUb+BXM6uXP`{KRnk5oiBi|C*C`VA^OwGvE;J? z?pPSmBL%i8Qayph&luh-2{5>5VXPFc9{{?*`papl{YhI}8+^n&Bsh`tfRP5rEM`)i z)SR4=pQn3BU`P}Cd*))5TOt0f?tz;UysO~9KY|zD1pjRYpS}y=6pq7f(7W>l=<-)w zN4ZW+a6I09UUv*PL-XNn(n#Pm7EA+?+}`H>TfeBlJ!a-3 zV%rD)XwX{>qgidT(j1ckBp*6zsG~DbDOWWte(HbMxKK8lfN_77<-ilIilC>eY5gx+ zm)~y7{1B%l7{YJJlx6Im2>#;%pF;EnHxpARZ{TNKsA^z%ifMLcad8ZpmG3nF*8CCy zN`S)^GT|UPY##9Ip!MSSx8UG~*DoLc@`j)(v$nS864L^ri+@h9fMaxYc5`!E^jUd~ zkul%^Ac3pMY(5{J%`~vt07rfTF6S_( z{u$FKxxx_{6DVnK_rI4n^JSx{=r>pEvj5FA)`81=C=kIfzUTz2TUe|#zl4KmL<|oZ zX%+L_2{GNh0HX9GPqU)$9!%(u;{@#tae9< z!%)XjQbOV!EL1eXG!g>Nb$C9@U@RY|?+#(snS>x3RvO|o2LGn2KJLRQ;*|qH@h1r4 z?eFg&K&KW9{v#D|w*MLGR1^qCha2fSX=!Pw{GH@8LKlEtxr>a*qg|8g))HNc0Q@9G zHn^1W0O&_SD6eQ*@ z==1lLGGr$K&d@#UJYS24V<*V0*T5l29-0FPlNaW`hJ>`hyUQ0?KV^oMMrQGjxd=EC zhIFG~-JJjv4=v<&rS=g>&y?N-0>bY+@6AQtj+cbtoS>N4FxY!2*cxx$w79^52NsWj zK;PJSMDkl__{ukxG*)EUeQn?43F~3(KlFznbPg~#1#mR7fT?9Q4UIAovcW`&I}EXF z&cJOy^a=jqv$3%ui&uxS3V>i?Nc)@cB3m%Rt&nL4^fzC)DGtug7{zUE*$6{y_Z89e zJ)nCbKBcU*1Se1G0wZA^@Ih39Nej5rJ$t9j5vzhl7kB_zdo=c~1^F=X7MEf0yqrAc zeH=SBrU_?u3&6yL{X;Jw9)zCcTYtph)9?ou1i=J2M3Y-Si*8qeSJ-dgqz4tE$)ndw zZ~;*;Ffb5$$CPmY?mggiBQOq#vYWst5`X{)Q_FyI9<=y#Oc50wO(gF+MCWrD$s5S@ zz%%y4DbzQI2z_lzp$0t60G2(?#hYJ(l`_R$c-(58FIbsVT(koXIUXm@v)67~i# z(^zBN6t%dxI8b;-wgAzX;qiAOWFU9})X#CHmf$EpI=a4<_sHJU6MX5&5l#v8lpy@Y zIksjZe-V0w$Kec@A^G{Vw#I`8-cA0e50Kpl7%wB=0p!%@zmb_r>)8)p4h}KMDnXzv z$gmOUMVUqgAfq5o2(}}{;6zJBOS=JYYGZpFT9L2kXS$e?Hx%&W>n1>1w*Wu@dz*c4 z$ycvlAs&*z+J<`uPdV~T!2_xMg1TWCR2MovKB5y+CwTBID`ajuR3SOn!O5u{UK#>Q%3#)W(=`0J^;xzy$X2g2UK;6wa$mR#T>LHg|-7hOr< z8iiFkIWwaGj}9zgemb5;fOEbplpX~TF&$DEaE-Q^);gTaf&Jss(o(*3KqlO0Ad%8G z@mzv~#Z1wk48&5)Z;L7|Jw4Tq3XEkSQG;O?qLYRt2$Q6=X7_8N?wPf@hGv=j$HJ;U z1X??+9X--W$PO?+n*=EY7X0_qQ#aTEKovwI-IlC`M0D)}i2>2BBYe1GfN&No&<60u zJ1Fj8sg^V~r9+$3_0Of>zqf-rDWnwyZ5vp~x6XU6scL9I{2(SFfuh+8tWN;0gG4V7 z)1@8AwYnN|&t zFO=7>_ah&{31h~SCsV+K4i3HrvCa)VwI4TT)}>uKIq&^Kv1x< zh1a+-0%7vZ&#M9+1il%YprD}rdOmXCxwCT}@DlyaMht3crP0R1!oq;VMVyu3=522> zi?2W|GY>pc0@IJ+g+nrkPf%f&%GX2q2FDuMR9d^&0eQmh`;H#H?`mk(fIBlN2H{Da znVy!{(YXeN9hlG!)Tjo7gTc<1FP|Cyd}gRvLcwMNOLa0>rr^fR2TvNfr~&5MOmpiR zmq9LzX9yw}n9xfqfhC;F#PpAhRaFwjQ#XXO~J5)8x0K&e5o7!Pj|DW z2nDp#w+jQ3Ag0RvTA0v&*!t-JmIDTW*uZcV(Dmg2^MSH^z_vEGyxJM34@Vhnb|7sa4;XZU>V6&apLK=a>VZ|zH&5~5$?)*->aUf* zGT`D3+bP7?!9rw9gnVajPvOo7Dy2SnhlrCAxHXr-bq83h$nGq;#@J>PJk;QNkR46$ zkHv(Jw5y>nX8~gm1+Qv2*w`W~3;p9DTU%0M0uVUx{pt1Dop0Y%GB>FnZ9o<{hen=` zygcgT$B!>Bw{Hz?pK$L;ZTEI}qeNMaoi8MG(B1-fBrGO?mTrNKulc0kyC<*qg(2qL zf)cmUst*(P0|OKm2~o!V)bJvzX+rCXi_h*n_ub05ud1eI1t|tX^fqj*xR4iyZ9#6u zxC0S|Jd$V+;R$3?BZgZEQ{m=D|M%jppT=9ePPt)`@oA;sHTR1IPc!aSuI+cGv$u71 zy9Fnt6qJ=QVFL#jAu}{I6eE9g5o|`F=r{iHkXFYzG^U%iX(gax*m;$+Jhjx<9)jAEW^s*(jTKyMBG``1hiLb>q#2 z;Bat=yl7Do!+4+DD^tS;St!zLtUF3e!@dP>OF{?)x7zbf-e5H`+OAqR?$EA~gd#=y zTS0+?L7-s+WZx&`0kz~Ch79Mk#PEGc4%RS)NyuSi^Ssd1fg6m|`bi5gF2U!04CGEp z9(I>a(5u~OMyI>|YCTC3*;f(DAHpY!1cO1IN#siY$bI%KaGhoaTo}-`W_-b@izlzy zsXw{la9!)8m3K%5#i|x( zs2(FcXy$VN)5EyZ!+sK-dhp0}K+PFt<2G@E95p56Jc}05+$_}f|((T$Vd?z(@#HNw2D=rqjv2Xu!TUKr4;43oNlcX0$}Da@he7 zBrl}RmzlliB>`J)gyw5&XU8ulMwx!~I!_iZ>|y{_cVD^&Li8rh$~oqzjD{S8SvhQ2z=uCu-9X-h2Gxz9Nk~)2Vdt+-0ro-Ms)xzL$_4@kP z6*%C_(jpX1z4P4g=-^Q>O?00e1T}D}KMNc8s2%gFy8_!qi&fagW32kT`9%lbO$@&- zYcpSc6^0-Ve`1D%g9CUY1X|y;9L$Re@d(NirIQKMSfoH+`WBSc)+PoMpWPs9@-th% z$MY381}t8oi6JB^ifEgtY;4JtN@{8nc6T4Nx3|0gKbp=2Ea$Cjx0NS+?r{!cyTY&hCHr3 z17JNWDcPr5P*NDNOpyytSCp@Tb7Rho__oY9)B90E1Ly!F2b0&8TbJE;lAnJZHlddK z+$znr*XjF{>wok+1qS->x;`5?hzS-C^XyW4D$F3RNi#6WEAIFf?y%lkR|J!xH&s5o zbm7=hqeh)7j7?4DYMJy&=d7Lw1_la1%W__@O5Kv1GIyBnl_` zBS>N5Zdl22`ftUhZN#&)aFR59=bcz^e#CtEl9H!SnR&*@3z@AE^bZP@wJ>Xh9X5NuNqUT*|^>5-^7>KG1a5^5su_e?NNkX#T>5F#vrKkgn{j94SalcSI2`;SCH5 znq=2AKHyW9mp&PF7ZyZa5jx6St3l`SQi#Lk72|bne{Q zY2(Io85t4G2ve=Fs`D&(ZA%qevNr%bU=E6z2x5BFVLln<#D1J;|O9A765fF&pX0 zlPBsUJB*y4wek8^o}?&r+8k)k3-cd=i1OjT*KFEU2S^Tx8(~e|CiV=={Jy^a$t9aR zzFl;--wZo@c7(X?NV(6A^&7);?0>yTNlzbqvAh7n&EePcqPus`04Jz0xWmSwZ>F@j zj3?Cva|8LfVN<5;D62FTyew5SM=yy?9Bgpy?Pphby)&FkDjf<1wP^h%OM)o!;hH`( zYm6-=J^keqaYvdszZ^TLB+j5iN$7Z$4jNnc_UVPIC}9iBj1L zZii*n*VhmJtT=9d?>!k2KYq9oA#KM=yAc$*vg>SY>|w5{6HT=P(kD}}h)JIu$V#Tf ztFOL)balwDU%%dZx20@8wZ@-M6_@%>4J!)1nc9EHns_P;0%OJcYXipD=t#P(sDoxw zMPFeJ<`GgjaDk z#JNIT7;rG~(Yv#NS6)7_$@bslcU=`zxY%%>>~eZR@AtPnO+M!`%m>@(_>dn%p?~b? z(cAffqoyHzaC;x|wb=C~n3bWa!zN7Fx^#BN1Mtw?KoIwVAO7&u z!qQ~^&|UvF44D%a`{=0D%tuSNG}iufoH}|>M(C!nrk~>)f40^1Te_lN*O*!R5_(h- zo%h>hWzUZ@J028t@bu|H>gwuCS2XH=YHFI3uv8RFd-iDYKe^pkV@yW#MAWIWg9d57 zmMF`*b7yg!nNzX_+eK-;zMGrd@$hgXuAt%sTzzjb$}=Hh?5$h3SQylR1A5Um$Qp86 z2Rk}CnwXl-EkE2Yb*|{c({@L-fqqoh-g{gfDxN)K0`bz&urP!J`?{hq0)fRZRZUIJ z^&2*fnlx>Qg2K6r7aMzwGtt$RfB~H=BZ1i7%3%AkUy2LumIUq|+Su5b5pVt+OgkT( zt`z7!=WvhDu<7QnR)!3j8n|Y`MC%LOh5`$Fgom9ubEc44j~tQmiCFFEcvx34|d2ZfA_?$TAX0!@YVBlGt4T50J6b_WVkj`}gTMnRR>% Tx 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 diff --git a/test/benchmark/results/map.jpg b/test/benchmark/results/map.jpg index c9ac16a770b5df377b27f124de0db1d19f2d3552..884df5d30468c738c188f693fd7d8e2474715c17 100644 GIT binary patch literal 94572 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 OH*@OjDd&xs|Mp+^$3~C< literal 98320 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 +s9hw%w%Gp9d`tj5MR{W*1jg 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 TUekAwSI(GXG5ON3%Y6SA{ { test('object', () => { @@ -433,6 +435,179 @@ describe('base', () => { expect(state.map).not.toBe(data.map); }); + test('MutativeMap:set new', () => { + const initialState = { + bar: {}, + map: new MutativeMap([ + ['initial1', { a: 1 }], + ['initial2', { a: 2 }], + ]), + }; + const assertInitialStateDidNotChange = makeAssertDidNotChange(initialState); + + const newState = create(initialState, (draft) => { + draft.map.set('new1', { a: 3 }); + }); + assertHasNoDrafts(newState); + expect(newState).toMatchInlineSnapshot(` + { + "bar": {}, + "map": MutativeMap { + "_size": 3, + "immutableData": Map { + "initial1" => { + "a": 1, + }, + "initial2" => { + "a": 2, + }, + }, + "patchData": Map { + "new1" => { + "a": 3, + }, + }, + }, + } + `); + expect(newState).not.toBe(initialState); + expect(newState.bar).toBe(initialState.bar); + expect(newState.map).not.toBe(initialState.map); + expect(newState.map.get('initial1')).toBe(initialState.map.get('initial1')); + expect(newState.map.get('initial2')).toBe(initialState.map.get('initial2')); + expect(newState.map.get('new1')).not.toBe(initialState.map.get('new1')); + assertInitialStateDidNotChange(); + }); + test('MutativeMap update existing value (without calling set)', () => { + const initialState = { + bar: {}, + map: new MutativeMap([ + ['initial1', { a: 1 }], + ['initial2', { a: 2 }], + ]), + }; + const assertInitialStateDidNotChange = makeAssertDidNotChange(initialState); + + const newState = create(initialState, (draft) => { + draft.map.get('initial1')!.a = 3; + }); + assertHasNoDrafts(newState); + expect(newState).toMatchInlineSnapshot(` + { + "bar": {}, + "map": MutativeMap { + "_size": 2, + "immutableData": Map { + "initial1" => { + "a": 1, + }, + "initial2" => { + "a": 2, + }, + }, + "patchData": Map { + "initial1" => { + "a": 3, + }, + }, + }, + } + `); + expect(newState).not.toBe(initialState); + expect(newState.bar).toBe(initialState.bar); + expect(newState.map).not.toBe(initialState.map); + expect(newState.map.get('initial1')).not.toBe( + initialState.map.get('initial1') + ); + expect(newState.map.get('initial1')).toStrictEqual({ a: 3 }); + expect(newState.map.get('initial2')).toBe(initialState.map.get('initial2')); + assertInitialStateDidNotChange(); + }); + test('MutativeMap update existing value (without calling set) and read other value without changing it', () => { + const initialState = { + bar: {}, + map: new MutativeMap([ + ['initial1', { a: 1 }], + ['initial2', { a: 2 }], + ]), + }; + const assertInitialStateDidNotChange = makeAssertDidNotChange(initialState); + + const newState = create(initialState, (draft) => { + draft.map.get('initial1')!.a = draft.map.get('initial2')!.a + 3; + }); + assertHasNoDrafts(newState); + expect(newState).toMatchInlineSnapshot(` + { + "bar": {}, + "map": MutativeMap { + "_size": 2, + "immutableData": Map { + "initial1" => { + "a": 1, + }, + "initial2" => { + "a": 2, + }, + }, + "patchData": Map { + "initial1" => { + "a": 5, + }, + }, + }, + } + `); + expect(newState).not.toBe(initialState); + expect(newState.bar).toBe(initialState.bar); + expect(newState.map).not.toBe(initialState.map); + expect(newState.map.get('initial1')).not.toBe( + initialState.map.get('initial1') + ); + expect(newState.map.get('initial1')).toStrictEqual({ a: 5 }); + expect(newState.map.get('initial2')).toBe(initialState.map.get('initial2')); + assertInitialStateDidNotChange(); + }); + test('MutativeMap value is only read', () => { + const initialState = { + bar: {}, + map: new MutativeMap([ + ['initial1', { a: 1 }], + ['initial2', { a: 2 }], + ]), + }; + const assertInitialStateDidNotChange = makeAssertDidNotChange(initialState); + + const newState = create(initialState, (draft) => { + draft.bar = draft.map.get('initial1')!; + }); + assertHasNoDrafts(newState); + expect(newState).toMatchInlineSnapshot(` + { + "bar": { + "a": 1, + }, + "map": MutativeMap { + "_size": 2, + "immutableData": Map { + "initial1" => { + "a": 1, + }, + "initial2" => { + "a": 2, + }, + }, + "patchData": Map {}, + }, + } + `); + expect(newState).not.toBe(initialState); + expect(newState.bar).not.toBe(initialState.bar); + expect(newState.bar).toBe(initialState.map.get('initial1')); + expect(newState.map).toBe(initialState.map); + assertInitialStateDidNotChange(); + }); + test('map clear', () => { const data = { bar: {}, diff --git a/test/generic-utils/assertAlways.ts b/test/generic-utils/assertAlways.ts new file mode 100644 index 00000000..efb4cf57 --- /dev/null +++ b/test/generic-utils/assertAlways.ts @@ -0,0 +1,14 @@ + +export function assertAlways(condition: unknown, message?: string | (() => string)): asserts condition { + if (!condition) { + if (message !== undefined) { + if (typeof message === 'function') { + throw new Error(message()); + } else { + throw new Error(message); + } + } else { + throw new Error(`assertion error`); + } + } +} diff --git a/test/generic-utils/recordUtil.ts b/test/generic-utils/recordUtil.ts new file mode 100644 index 00000000..746e78e2 --- /dev/null +++ b/test/generic-utils/recordUtil.ts @@ -0,0 +1,165 @@ +import { assertAlways } from './assertAlways'; + +import { MutativeMap } from '../..'; + +/** + * + * @param value + * @param filter returns false to stop iteration within the current object + */ +export function deepIterateObjectNodes( + value: unknown, + filter?: (path: (string | number)[], value: unknown) => boolean +): Generator<[path: (string | number)[], value: unknown], void> { + return deepIterateObjectNodes2(value, [], filter); +} + +function *deepIterateObjectNodes2( + value: unknown, + path: (string | number)[], + filter?: (path: (string | number)[], value: unknown) => boolean +): Generator<[path: (string | number)[], value: unknown], void> { + yield [path, value]; + if (value == null) { + return; + } + const shouldContinue = filter?.(path, value); + if (shouldContinue === false) { + return; + } + if (Array.isArray(value)) { + for (let i = 0; i < value.length; i++) { + yield *deepIterateObjectNodes2(value[i], [...path, i], filter); + } + } else if (value instanceof Map || value instanceof MutativeMap) { + for (const [key, subValue] of value.entries()) { + yield *deepIterateObjectNodes2(subValue, [...path, key], filter); + } + } else if (value instanceof Set) { + // hack to iterate over set values + let i = 0; + for (const subValue of value.values()) { + yield *deepIterateObjectNodes2(subValue, [...path, i], filter); + i++; + } + } else if (typeof value === 'object') { + for (const [key, subValue] of Object.entries(value)) { + yield *deepIterateObjectNodes2(subValue, [...path, key], filter); + } + } +} + +/** + * similar to radash crush, but has arrays as paths and supports Maps and Sets + * TODO support symbols and other values in paths + fix typing for map keys that are not strings + * @param data + */ +export function getAllChildIntermediateAndLeafNodePaths(data: unknown): (string | number)[][] { + if (typeof data !== 'object' || data === null) { + return []; + } + if (data instanceof Map || data instanceof MutativeMap) { + const keys = [...data.keys()]; + return keys.flatMap((key) => { + return [ + [key], + ...getAllChildIntermediateAndLeafNodePaths(data.get(key)).map((path) => { + return [key, ...path]; + }), + ]; + }); + } + if (data instanceof Set) { + return getAllChildIntermediateAndLeafNodePaths([...data.values()]); + } + if (Array.isArray(data)) { + return data.flatMap((v, index) => { + return [[index], ...getAllChildIntermediateAndLeafNodePaths(v).map((path) => [index, ...path])]; + }); + } + const keys = Object.keys(data); + return keys.flatMap((key) => { + return [ + [key], + ...getAllChildIntermediateAndLeafNodePaths((data as any)[key]).map((path) => { + return [key, ...path]; + }), + ]; + }); +} + +export function getDeepValueByPath(data: unknown, path: (string | number)[]): unknown { + let current = data; + for (const key of path) { + if (typeof current !== 'object' || current === null) { + throw new Error(`cannot get value by path '${path.join('.')}'`); + } + if (current instanceof Map || current instanceof MutativeMap) { + current = (current as Map | MutativeMap).get(key); + } else if (current instanceof Set) { + assertAlways(typeof key === 'number', () => 'key must be a index (number) for Set values but was ' + key); + current = [...current.values()][key as number]; + } else { + current = (current as any)[key]; + } + } + return current; +} + +export function tryGetDeepValueByPath(data: unknown, path: (string | number)[]): undefined | { value: unknown } { + let current = data; + for (const key of path) { + if (typeof current !== 'object' || current === null) { + return undefined; + } + if (current instanceof Map || current instanceof MutativeMap) { + current = (current as Map | MutativeMap).get(key); + } else if (current instanceof Set) { + if (typeof key !== 'number') { + return undefined; + } + current = [...current.values()][key]; + } else { + current = (current as any)[key]; + } + } + return { value: current }; +} + +export function setDeepValueByPath(data: unknown, path: (string | number)[], value: unknown): void { + const parent = getDeepValueByPath(data, path.slice(0, -1)); + const key = path[path.length - 1]; + if (parent instanceof Map || parent instanceof MutativeMap) { + (parent as Map | MutativeMap).set(key, value); + } else if (parent instanceof Set) { + // TODO [unimportant] does this make any sense? + parent.add(value); + } else if (Array.isArray(parent)) { + assertAlways(typeof key === 'number', () => 'key must be a index (number) for array values but was ' + key); + if (parent.length === key) { + parent.push(value); + } else if (parent.length < key) { + throw new Error(`cannot set value by path '${path.join('.')}' in array with length ${parent.length}`); + } else { + parent[key] = value; + } + } else { + (parent as any)[key] = value; + } +} + +export function deleteDeepValueByPath(data: unknown, path: (string | number)[]): void { + const parent = getDeepValueByPath(data, path.slice(0, -1)); + const key = path[path.length - 1]; + if (parent instanceof Map || parent instanceof MutativeMap) { + (parent as Map | MutativeMap).delete(key); + } else if (parent instanceof Set) { + assertAlways(typeof key === 'number', () => 'key must be a index (number) for Set values but was ' + key); + parent.delete([...parent.values()][key]); + } else if (Array.isArray(parent)) { + assertAlways(typeof key === 'number', () => 'key must be a index (number) for array values but was ' + key); + parent.splice(key, 1); + } else { + delete (parent as any)[key]; + } +} diff --git a/test/immer/__tests__/map-set.ts b/test/immer/__tests__/map-set.ts index a4fba0a6..160da992 100644 --- a/test/immer/__tests__/map-set.ts +++ b/test/immer/__tests__/map-set.ts @@ -17,7 +17,7 @@ jest.setTimeout(1000); runBaseTest('proxy (no freeze)', true, false); runBaseTest('proxy (autofreeze)', true, true); -runBaseTest('proxy (autofreeze)(patch listener)', true, true, true); +runBaseTest('proxy (autofreeze)(patch listener)', true, true, true); // TODO unused 4th arg? function runBaseTest(name, autoFreeze, useListener) { const listener = useListener ? function () {} : undefined; diff --git a/test/immer/src/immer.ts b/test/immer/src/immer.ts index e7b443cf..9d22e897 100644 --- a/test/immer/src/immer.ts +++ b/test/immer/src/immer.ts @@ -131,7 +131,7 @@ export const produceWithPatches = (base: any, recipe: any) => { export function freeze(obj: any, deep: boolean = false): T { if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj; - if (getArchtype(obj) > 1 /* Map or Set */) { + if (getArchtype(obj) > 1 /* Map or MutativeMap or Set */) { obj.set = obj.add = obj.clear = diff --git a/test/performance/array-object-first-time.ts b/test/performance/array-object-first-time.ts index ab37c86f..26d35963 100644 --- a/test/performance/array-object-first-time.ts +++ b/test/performance/array-object-first-time.ts @@ -1,5 +1,6 @@ // @ts-nocheck 'use strict'; +(globalThis as any).__DEV__ = false; import { produce, setAutoFreeze, enableMapSet } from 'immer'; import { create } from '../..'; diff --git a/test/performance/array-object.ts b/test/performance/array-object.ts index 71b3f4c1..eb0e4593 100644 --- a/test/performance/array-object.ts +++ b/test/performance/array-object.ts @@ -1,5 +1,6 @@ // @ts-nocheck 'use strict'; +(globalThis as any).__DEV__ = false; import { produce, setAutoFreeze, enableMapSet } from 'immer'; import { create } from '../..'; diff --git a/test/performance/benchmark-array.ts b/test/performance/benchmark-array.ts index 5189d30f..f4986c4d 100644 --- a/test/performance/benchmark-array.ts +++ b/test/performance/benchmark-array.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import https from 'https'; import { Suite } from 'benchmark'; diff --git a/test/performance/benchmark-class.ts b/test/performance/benchmark-class.ts index 77593b50..17091635 100644 --- a/test/performance/benchmark-class.ts +++ b/test/performance/benchmark-class.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import https from 'https'; import { Suite } from 'benchmark'; diff --git a/test/performance/benchmark-object.ts b/test/performance/benchmark-object.ts index 0d1139c0..7d247e8d 100644 --- a/test/performance/benchmark-object.ts +++ b/test/performance/benchmark-object.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import https from 'https'; import { Suite } from 'benchmark'; diff --git a/test/performance/benchmark.ts b/test/performance/benchmark.ts index 80b2ad03..dcf1c1b2 100644 --- a/test/performance/benchmark.ts +++ b/test/performance/benchmark.ts @@ -1,6 +1,7 @@ /* eslint-disable import/no-relative-packages */ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import https from 'https'; import { Suite } from 'benchmark'; diff --git a/test/performance/benchmarks/forEach.ts b/test/performance/benchmarks/forEach.ts index 20f6da71..1a612a29 100644 --- a/test/performance/benchmarks/forEach.ts +++ b/test/performance/benchmarks/forEach.ts @@ -1,6 +1,7 @@ /* eslint-disable prefer-template */ /* eslint-disable @typescript-eslint/no-unused-vars */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import { Suite } from 'benchmark'; import { parse } from 'json2csv'; diff --git a/test/performance/benchmarks/rawReturn.ts b/test/performance/benchmarks/rawReturn.ts index 54ab8ad6..4d5bed64 100644 --- a/test/performance/benchmarks/rawReturn.ts +++ b/test/performance/benchmarks/rawReturn.ts @@ -2,6 +2,7 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable no-unused-expressions */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import { Suite } from 'benchmark'; import { parse } from 'json2csv'; diff --git a/test/performance/benchmarks/returnWithDraft.ts b/test/performance/benchmarks/returnWithDraft.ts index b2510115..26820e50 100644 --- a/test/performance/benchmarks/returnWithDraft.ts +++ b/test/performance/benchmarks/returnWithDraft.ts @@ -1,6 +1,7 @@ /* eslint-disable prefer-template */ /* eslint-disable @typescript-eslint/no-unused-vars */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import fs from 'fs'; import { Suite } from 'benchmark'; import { parse } from 'json2csv'; diff --git a/test/performance/big-object.ts b/test/performance/big-object.ts index f0cf65f9..9fd8e256 100644 --- a/test/performance/big-object.ts +++ b/test/performance/big-object.ts @@ -1,5 +1,6 @@ // @ts-nocheck 'use strict'; +(globalThis as any).__DEV__ = false; import { produce, diff --git a/test/performance/index.ts b/test/performance/index.ts index 14716ab5..fa1d04f6 100644 --- a/test/performance/index.ts +++ b/test/performance/index.ts @@ -1,5 +1,6 @@ // @ts-nocheck 'use strict'; +(globalThis as any).__DEV__ = false; import { produce, diff --git a/test/performance/mutative-set-map.ts b/test/performance/mutative-set-map.ts new file mode 100644 index 00000000..2207954b --- /dev/null +++ b/test/performance/mutative-set-map.ts @@ -0,0 +1,95 @@ +// @ts-nocheck +'use strict'; +(globalThis as any).__DEV__ = false; +import { create, MutativeMap } from '../..'; +import { measure } from '../__immer_performance_tests__/measure'; + + +// TODO [performance] use minified version for benchmarks and performance tests. Apparently as it worked sometime without __DEV__ being defined and indicated by setting NODE_ENV=production, this probably already happened sometime but was broken since? + +const MAX = 100; + +const getData = (mapClass: any) => { + const baseState = { + // set: new Set( + // Array(10 ** 4 * 5) + // .fill('') + // .map((_, i) => ({ [i]: i })) + // ), + map: new mapClass( + Array(10 ** 4 * 5) + .fill('') + .map((_, i) => [i, { [i]: i }]) + ), + }; + return baseState; +}; + +interface BaseState { + // set: Set<{ + // [x: number]: number; + // }>; + map: Map< + number, + { + [x: number]: number; + } + > | MutativeMap< + number, + { + [x: number]: number; + } + >; +} + +measure( + 'mutative - normal Map', + () => getData(Map), + (baseState: BaseState) => { + for (let i = 0; i < MAX; i++) { + const state = create(baseState, (draft) => { + // draft.set.add({ [i]: i }); + draft.map.get(i)[i] = i.toString(); + }); + } + } +); + +measure( + 'mutative - MutativeMap', + () => getData(MutativeMap), + (baseState: BaseState) => { + for (let i = 0; i < MAX; i++) { + const state = create(baseState, (draft) => { + // draft.set.add({ [i]: i }); + draft.map.get(i)[i] = i.toString(); + }); + } + } +); + +// measure( +// 'tmpRoot - mutative - normal Map', +// () => getData(Map).map, +// (baseState: BaseState) => { +// for (let i = 0; i < MAX; i++) { +// const state = create(baseState, (draft) => { +// // draft.set.add({ [i]: i }); +// draft.get(i)[i] = i.toString(); +// }); +// } +// } +// ); +// +// measure( +// 'tmpRoot - mutative - MutativeMap', +// () => getData(MutativeMap).map, +// (baseState: BaseState) => { +// for (let i = 0; i < MAX; i++) { +// const state = create(baseState, (draft) => { +// // draft.set.add({ [i]: i }); +// draft.get(i)[i] = i.toString(); +// }); +// } +// } +// ); diff --git a/test/performance/read-draft/index.ts b/test/performance/read-draft/index.ts index c039be15..75aeadb5 100644 --- a/test/performance/read-draft/index.ts +++ b/test/performance/read-draft/index.ts @@ -1,5 +1,6 @@ /* eslint-disable prefer-template */ // @ts-nocheck +(globalThis as any).__DEV__ = false; import { produce } from 'immer'; import { create } from '../../..'; import { createTable, updateTable } from './mockPhysics'; diff --git a/test/performance/sample.ts b/test/performance/sample.ts index 9fb0da37..8c0fa6c5 100644 --- a/test/performance/sample.ts +++ b/test/performance/sample.ts @@ -1,4 +1,5 @@ // @ts-nocheck +(globalThis as any).__DEV__ = false; import { produce } from 'immer'; import { create } from '../..'; diff --git a/test/performance/set-map.ts b/test/performance/set-map.ts index 60c541b0..64058454 100644 --- a/test/performance/set-map.ts +++ b/test/performance/set-map.ts @@ -1,5 +1,6 @@ // @ts-nocheck 'use strict'; +(globalThis as any).__DEV__ = false; import { produce, @@ -10,6 +11,7 @@ import { } from 'immer'; import { create } from '../..'; import { measure } from '../__immer_performance_tests__/measure'; +// TODO [performance] use minified version for benchmarks and performance tests. Apparently as it worked sometime without __DEV__ being defined and indicated by setting NODE_ENV=production, this probably already happened sometime but was broken since? const MAX = 10; diff --git a/test/utils/assertHasNoDrafts.ts b/test/utils/assertHasNoDrafts.ts new file mode 100644 index 00000000..8f922aac --- /dev/null +++ b/test/utils/assertHasNoDrafts.ts @@ -0,0 +1,28 @@ +import { deepIterateObjectNodes } from '../generic-utils/recordUtil'; +import { isDraft } from '../../src'; + +export function assertHasNoDrafts(obj: any) { + for (const [path, value] of deepIterateObjectNodes(obj)) { + let isDraftResult: boolean; + try { + isDraftResult = isDraft(value); + } catch (e) { + if ( + e instanceof Error && + e.message.endsWith('on a proxy that has been revoked') + ) { + // throw new Error(`Draft found at path ${path.join('.')}, but the proxy has been revoked`, { + // cause: e, + // }); + // TODO separate tsconfig for tests to upgrade tsconfig target? + throw new Error( + `Draft found at path ${path.join('.')}, but the proxy has been revoked` + ); + } + throw e; + } + if (isDraftResult) { + throw new Error(`Draft found at path ${path.join('.')}`); + } + } +} diff --git a/test/utils/identityChecking.ts b/test/utils/identityChecking.ts new file mode 100644 index 00000000..b54428bb --- /dev/null +++ b/test/utils/identityChecking.ts @@ -0,0 +1,26 @@ +import { + getAllChildIntermediateAndLeafNodePaths, getDeepValueByPath, +} from '../generic-utils/recordUtil'; +import {format as prettyFormat} from 'pretty-format'; + +/** + * returns a function that asserts that the value did not change in any way (deep equality and identity checks) + * @param value + */ +export function makeAssertDidNotChange(value: any) { + const strRepr = prettyFormat(value); + const allPaths = getAllChildIntermediateAndLeafNodePaths(value); + const valuePerPath = allPaths.map((path) => { + return getDeepValueByPath(value, path); + }); + + return function assertDidNotChange() { + // console.debug('checking that the value did not change, strRepr:', strRepr); + expect(prettyFormat(value)).toStrictEqual(strRepr); + const newAllPaths = getAllChildIntermediateAndLeafNodePaths(value); + expect(newAllPaths).toStrictEqual(allPaths); + allPaths.forEach((path, index) => { + expect(getDeepValueByPath(value, path)).toBe(valuePerPath[index]); + }); + } +} diff --git a/yarn.lock b/yarn.lock index 61d849ca..dc1c5c1d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -396,121 +396,241 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/natural-compare/-/natural-compare-1.1.0.tgz#75f0642ad64701ffa9d42f1d7ada3b83f4e67cf3" integrity sha512-yuctPJs5lRXoI8LkpVZGAV6n+DKOuEsfpfcIDQ8ZjWHwazqk1QjBc4jMlof0UlZHyUqv4dwsOTooMiAmtzvwXA== +"@esbuild/aix-ppc64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353" + integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ== + "@esbuild/aix-ppc64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz#b57697945b50e99007b4c2521507dc613d4a648c" integrity sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw== +"@esbuild/android-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018" + integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw== + "@esbuild/android-arm64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz#1add7e0af67acefd556e407f8497e81fddad79c0" integrity sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w== +"@esbuild/android-arm@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee" + integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ== + "@esbuild/android-arm@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.0.tgz#ab7263045fa8e090833a8e3c393b60d59a789810" integrity sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew== +"@esbuild/android-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517" + integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg== + "@esbuild/android-x64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.0.tgz#e8f8b196cfdfdd5aeaebbdb0110983460440e705" integrity sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ== +"@esbuild/darwin-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16" + integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q== + "@esbuild/darwin-arm64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz#2d0d9414f2acbffd2d86e98253914fca603a53dd" integrity sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw== +"@esbuild/darwin-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931" + integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw== + "@esbuild/darwin-x64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz#33087aab31a1eb64c89daf3d2cf8ce1775656107" integrity sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA== +"@esbuild/freebsd-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc" + integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA== + "@esbuild/freebsd-arm64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz#bb76e5ea9e97fa3c753472f19421075d3a33e8a7" integrity sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA== +"@esbuild/freebsd-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730" + integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g== + "@esbuild/freebsd-x64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz#e0e2ce9249fdf6ee29e5dc3d420c7007fa579b93" integrity sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ== +"@esbuild/linux-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383" + integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g== + "@esbuild/linux-arm64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz#d1b2aa58085f73ecf45533c07c82d81235388e75" integrity sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g== +"@esbuild/linux-arm@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771" + integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ== + "@esbuild/linux-arm@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz#8e4915df8ea3e12b690a057e77a47b1d5935ef6d" integrity sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw== +"@esbuild/linux-ia32@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333" + integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ== + "@esbuild/linux-ia32@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz#8200b1110666c39ab316572324b7af63d82013fb" integrity sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA== +"@esbuild/linux-loong64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac" + integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw== + "@esbuild/linux-loong64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz#6ff0c99cf647504df321d0640f0d32e557da745c" integrity sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g== +"@esbuild/linux-mips64el@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6" + integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q== + "@esbuild/linux-mips64el@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz#3f720ccd4d59bfeb4c2ce276a46b77ad380fa1f3" integrity sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA== +"@esbuild/linux-ppc64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96" + integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw== + "@esbuild/linux-ppc64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz#9d6b188b15c25afd2e213474bf5f31e42e3aa09e" integrity sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ== +"@esbuild/linux-riscv64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7" + integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA== + "@esbuild/linux-riscv64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz#f989fdc9752dfda286c9cd87c46248e4dfecbc25" integrity sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw== +"@esbuild/linux-s390x@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f" + integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw== + "@esbuild/linux-s390x@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz#29ebf87e4132ea659c1489fce63cd8509d1c7319" integrity sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g== +"@esbuild/linux-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24" + integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ== + "@esbuild/linux-x64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz#4af48c5c0479569b1f359ffbce22d15f261c0cef" integrity sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA== +"@esbuild/netbsd-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653" + integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA== + "@esbuild/netbsd-x64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz#1ae73d23cc044a0ebd4f198334416fb26c31366c" integrity sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg== +"@esbuild/openbsd-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7" + integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q== + "@esbuild/openbsd-arm64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz#5d904a4f5158c89859fd902c427f96d6a9e632e2" integrity sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg== +"@esbuild/openbsd-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273" + integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA== + "@esbuild/openbsd-x64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz#4c8aa88c49187c601bae2971e71c6dc5e0ad1cdf" integrity sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q== +"@esbuild/sunos-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403" + integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA== + "@esbuild/sunos-x64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz#8ddc35a0ea38575fa44eda30a5ee01ae2fa54dd4" integrity sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA== +"@esbuild/win32-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2" + integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A== + "@esbuild/win32-arm64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz#6e79c8543f282c4539db684a207ae0e174a9007b" integrity sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA== +"@esbuild/win32-ia32@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac" + integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ== + "@esbuild/win32-ia32@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz#057af345da256b7192d18b676a02e95d0fa39103" integrity sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw== +"@esbuild/win32-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699" + integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg== + "@esbuild/win32-x64@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz#168ab1c7e1c318b922637fad8f339d48b01e1244" @@ -955,10 +1075,10 @@ is-module "^1.0.0" resolve "^1.22.1" -"@rollup/plugin-replace@^5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz#33d5653dce6d03cb24ef98bef7f6d25b57faefdf" - integrity sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ== +"@rollup/plugin-replace@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-6.0.2.tgz#2f565d312d681e4570ff376c55c5c08eb6f1908d" + integrity sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ== dependencies: "@rollup/pluginutils" "^5.0.1" magic-string "^0.30.3" @@ -998,85 +1118,100 @@ estree-walker "^2.0.2" picomatch "^4.0.2" -"@rollup/rollup-android-arm-eabi@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz#8b613b9725e8f9479d142970b106b6ae878610d5" - integrity sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w== - -"@rollup/rollup-android-arm64@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz#654ca1049189132ff602bfcf8df14c18da1f15fb" - integrity sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA== - -"@rollup/rollup-darwin-arm64@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz#6d241d099d1518ef0c2205d96b3fa52e0fe1954b" - integrity sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q== - -"@rollup/rollup-darwin-x64@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz#42bd19d292a57ee11734c980c4650de26b457791" - integrity sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw== - -"@rollup/rollup-linux-arm-gnueabihf@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz#f23555ee3d8fe941c5c5fd458cd22b65eb1c2232" - integrity sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ== - -"@rollup/rollup-linux-arm-musleabihf@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz#f3bbd1ae2420f5539d40ac1fde2b38da67779baa" - integrity sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg== - -"@rollup/rollup-linux-arm64-gnu@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz#7abe900120113e08a1f90afb84c7c28774054d15" - integrity sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw== - -"@rollup/rollup-linux-arm64-musl@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz#9e655285c8175cd44f57d6a1e8e5dedfbba1d820" - integrity sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA== - -"@rollup/rollup-linux-powerpc64le-gnu@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz#9a79ae6c9e9d8fe83d49e2712ecf4302db5bef5e" - integrity sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg== - -"@rollup/rollup-linux-riscv64-gnu@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz#67ac70eca4ace8e2942fabca95164e8874ab8128" - integrity sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA== - -"@rollup/rollup-linux-s390x-gnu@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz#9f883a7440f51a22ed7f99e1d070bd84ea5005fc" - integrity sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q== - -"@rollup/rollup-linux-x64-gnu@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz#70116ae6c577fe367f58559e2cffb5641a1dd9d0" - integrity sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg== - -"@rollup/rollup-linux-x64-musl@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz#f473f88219feb07b0b98b53a7923be716d1d182f" - integrity sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g== - -"@rollup/rollup-win32-arm64-msvc@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz#4349482d17f5d1c58604d1c8900540d676f420e0" - integrity sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw== - -"@rollup/rollup-win32-ia32-msvc@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz#a6fc39a15db618040ec3c2a24c1e26cb5f4d7422" - integrity sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g== - -"@rollup/rollup-win32-x64-msvc@4.22.4": - version "4.22.4" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz#3dd5d53e900df2a40841882c02e56f866c04d202" - integrity sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q== +"@rollup/rollup-android-arm-eabi@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz#7f4c4d8cd5ccab6e95d6750dbe00321c1f30791e" + integrity sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ== + +"@rollup/rollup-android-arm64@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz#17ea71695fb1518c2c324badbe431a0bd1879f2d" + integrity sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA== + +"@rollup/rollup-darwin-arm64@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz#dac0f0d0cfa73e7d5225ae6d303c13c8979e7999" + integrity sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ== + +"@rollup/rollup-darwin-x64@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz#8f63baa1d31784904a380d2e293fa1ddf53dd4a2" + integrity sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ== + +"@rollup/rollup-freebsd-arm64@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz#30ed247e0df6e8858cdc6ae4090e12dbeb8ce946" + integrity sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA== + +"@rollup/rollup-freebsd-x64@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz#57846f382fddbb508412ae07855b8a04c8f56282" + integrity sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz#378ca666c9dae5e6f94d1d351e7497c176e9b6df" + integrity sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA== + +"@rollup/rollup-linux-arm-musleabihf@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz#a692eff3bab330d5c33a5d5813a090c15374cddb" + integrity sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg== + +"@rollup/rollup-linux-arm64-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz#6b1719b76088da5ac1ae1feccf48c5926b9e3db9" + integrity sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA== + +"@rollup/rollup-linux-arm64-musl@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz#865baf5b6f5ff67acb32e5a359508828e8dc5788" + integrity sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A== + +"@rollup/rollup-linux-loongarch64-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz#23c6609ba0f7fa7a7f2038b6b6a08555a5055a87" + integrity sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz#652ef0d9334a9f25b9daf85731242801cb0fc41c" + integrity sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A== + +"@rollup/rollup-linux-riscv64-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz#1eb6651839ee6ebca64d6cc64febbd299e95e6bd" + integrity sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA== + +"@rollup/rollup-linux-s390x-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz#015c52293afb3ff2a293cf0936b1d43975c1e9cd" + integrity sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg== + +"@rollup/rollup-linux-x64-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz#b83001b5abed2bcb5e2dbeec6a7e69b194235c1e" + integrity sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw== + +"@rollup/rollup-linux-x64-musl@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz#6cc7c84cd4563737f8593e66f33b57d8e228805b" + integrity sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g== + +"@rollup/rollup-win32-arm64-msvc@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz#631ffeee094d71279fcd1fe8072bdcf25311bc11" + integrity sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A== + +"@rollup/rollup-win32-ia32-msvc@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz#06d1d60d5b9f718e8a6c4a43f82e3f9e3254587f" + integrity sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA== + +"@rollup/rollup-win32-x64-msvc@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz#4dff5c4259ebe6c5b4a8f2c5bc3829b7a8447ff0" + integrity sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA== "@rtsao/scc@^1.1.0": version "1.1.0" @@ -1393,16 +1528,11 @@ dependencies: "@babel/types" "^7.20.7" -"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5", "@types/estree@^1.0.6": +"@types/estree@*", "@types/estree@1.0.6", "@types/estree@^1.0.0", "@types/estree@^1.0.5", "@types/estree@^1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== -"@types/estree@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -2491,6 +2621,13 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +copy-anything@^3.0.2: + version "3.0.5" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0" + integrity sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w== + dependencies: + is-what "^4.1.8" + core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -3075,6 +3212,36 @@ esbuild@^0.24.0: "@esbuild/win32-ia32" "0.24.0" "@esbuild/win32-x64" "0.24.0" +esbuild@~0.23.0: + version "0.23.1" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8" + integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.23.1" + "@esbuild/android-arm" "0.23.1" + "@esbuild/android-arm64" "0.23.1" + "@esbuild/android-x64" "0.23.1" + "@esbuild/darwin-arm64" "0.23.1" + "@esbuild/darwin-x64" "0.23.1" + "@esbuild/freebsd-arm64" "0.23.1" + "@esbuild/freebsd-x64" "0.23.1" + "@esbuild/linux-arm" "0.23.1" + "@esbuild/linux-arm64" "0.23.1" + "@esbuild/linux-ia32" "0.23.1" + "@esbuild/linux-loong64" "0.23.1" + "@esbuild/linux-mips64el" "0.23.1" + "@esbuild/linux-ppc64" "0.23.1" + "@esbuild/linux-riscv64" "0.23.1" + "@esbuild/linux-s390x" "0.23.1" + "@esbuild/linux-x64" "0.23.1" + "@esbuild/netbsd-x64" "0.23.1" + "@esbuild/openbsd-arm64" "0.23.1" + "@esbuild/openbsd-x64" "0.23.1" + "@esbuild/sunos-x64" "0.23.1" + "@esbuild/win32-arm64" "0.23.1" + "@esbuild/win32-ia32" "0.23.1" + "@esbuild/win32-x64" "0.23.1" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -3594,7 +3761,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2: +fsevents@^2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -3696,6 +3863,13 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" +get-tsconfig@^4.7.5: + version "4.8.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471" + integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg== + dependencies: + resolve-pkg-maps "^1.0.0" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -4379,6 +4553,11 @@ is-weakset@^2.0.3: call-bind "^1.0.7" get-intrinsic "^1.2.4" +is-what@^4.1.8: + version "4.1.16" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f" + integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A== + is-windows@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -5795,6 +5974,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +"prettier-2@npm:prettier@^2": + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -6026,6 +6210,11 @@ resolve-global@^1.0.0: dependencies: global-dirs "^0.1.1" +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve.exports@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" @@ -6078,29 +6267,32 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rollup@^4.9.0: - version "4.22.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.22.4.tgz#4135a6446671cd2a2453e1ad42a45d5973ec3a0f" - integrity sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A== +rollup@^4.28.1: + version "4.28.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.28.1.tgz#7718ba34d62b449dfc49adbfd2f312b4fe0df4de" + integrity sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg== dependencies: - "@types/estree" "1.0.5" + "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.22.4" - "@rollup/rollup-android-arm64" "4.22.4" - "@rollup/rollup-darwin-arm64" "4.22.4" - "@rollup/rollup-darwin-x64" "4.22.4" - "@rollup/rollup-linux-arm-gnueabihf" "4.22.4" - "@rollup/rollup-linux-arm-musleabihf" "4.22.4" - "@rollup/rollup-linux-arm64-gnu" "4.22.4" - "@rollup/rollup-linux-arm64-musl" "4.22.4" - "@rollup/rollup-linux-powerpc64le-gnu" "4.22.4" - "@rollup/rollup-linux-riscv64-gnu" "4.22.4" - "@rollup/rollup-linux-s390x-gnu" "4.22.4" - "@rollup/rollup-linux-x64-gnu" "4.22.4" - "@rollup/rollup-linux-x64-musl" "4.22.4" - "@rollup/rollup-win32-arm64-msvc" "4.22.4" - "@rollup/rollup-win32-ia32-msvc" "4.22.4" - "@rollup/rollup-win32-x64-msvc" "4.22.4" + "@rollup/rollup-android-arm-eabi" "4.28.1" + "@rollup/rollup-android-arm64" "4.28.1" + "@rollup/rollup-darwin-arm64" "4.28.1" + "@rollup/rollup-darwin-x64" "4.28.1" + "@rollup/rollup-freebsd-arm64" "4.28.1" + "@rollup/rollup-freebsd-x64" "4.28.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.28.1" + "@rollup/rollup-linux-arm-musleabihf" "4.28.1" + "@rollup/rollup-linux-arm64-gnu" "4.28.1" + "@rollup/rollup-linux-arm64-musl" "4.28.1" + "@rollup/rollup-linux-loongarch64-gnu" "4.28.1" + "@rollup/rollup-linux-powerpc64le-gnu" "4.28.1" + "@rollup/rollup-linux-riscv64-gnu" "4.28.1" + "@rollup/rollup-linux-s390x-gnu" "4.28.1" + "@rollup/rollup-linux-x64-gnu" "4.28.1" + "@rollup/rollup-linux-x64-musl" "4.28.1" + "@rollup/rollup-win32-arm64-msvc" "4.28.1" + "@rollup/rollup-win32-ia32-msvc" "4.28.1" + "@rollup/rollup-win32-x64-msvc" "4.28.1" fsevents "~2.3.2" run-async@^2.4.0: @@ -6523,6 +6715,13 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +superjson@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/superjson/-/superjson-2.2.2.tgz#9d52bf0bf6b5751a3c3472f1292e714782ba3173" + integrity sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q== + dependencies: + copy-anything "^3.0.2" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -6745,6 +6944,16 @@ tslib@^2.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== +tsx@^4.19.2: + version "4.19.2" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.2.tgz#2d7814783440e0ae42354d0417d9c2989a2ae92c" + integrity sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g== + dependencies: + esbuild "~0.23.0" + get-tsconfig "^4.7.5" + optionalDependencies: + fsevents "~2.3.3" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" From 5b83c1832b1611c894acb7ac9c063705aab40c7b Mon Sep 17 00:00:00 2001 From: Thomas Jahoda Date: Mon, 16 Dec 2024 18:35:41 +0100 Subject: [PATCH 2/3] style(set-map): formatting, better comments and expose Mark type --- .gitignore | 3 + src/MutativeMap.ts | 13 +++-- src/current.ts | 8 +-- src/draft.ts | 13 ++++- src/generic-utils/equality.ts | 5 +- src/index.ts | 1 + src/makeCreator.ts | 7 +-- src/utils/copy.ts | 1 - src/utils/deepFreeze.ts | 4 +- src/utils/draft.ts | 7 ++- src/utils/forEach.ts | 4 +- test/benchmark/map-batch.ts | 4 +- test/benchmark/map.ts | 4 +- test/generic-utils/assertAlways.ts | 6 +- test/generic-utils/recordUtil.ts | 85 +++++++++++++++++++++------- test/immer/__tests__/curry.ts | 6 +- test/immer/__tests__/frozen.ts | 7 +-- test/immer/__tests__/manual.ts | 2 +- test/immer/src/immer.ts | 3 +- test/performance/mutative-set-map.ts | 25 ++++---- test/performance/new-set-api.ts | 2 +- test/utils/assertHasNoDrafts.ts | 4 +- test/utils/identityChecking.ts | 7 ++- 23 files changed, 138 insertions(+), 83 deletions(-) diff --git a/.gitignore b/.gitignore index 457de7e8..9f267e9b 100644 --- a/.gitignore +++ b/.gitignore @@ -107,3 +107,6 @@ benchmark.csv # IntelliJ /.idea + +# MacOS Finder files +.DS_Store diff --git a/src/MutativeMap.ts b/src/MutativeMap.ts index 74599f3c..8fd260a3 100644 --- a/src/MutativeMap.ts +++ b/src/MutativeMap.ts @@ -2,8 +2,8 @@ const removedValueSymbol = Symbol('MutativeMap-removedValue'); /** * More efficient version of Map for use with 'mutative' mutations, especially when a lot of entries exist and only a few are changed at a time. (it already is much faster at just a hundred entries though) - * WARNING: does not guarantee iteration order to be the same as the original map (i.e. not insertion order). - * TODO [bug] I think mutative already violates iteration-order contract anyhow? I think updated entries are treated as if they were inserted? or at least read objects are set with draft value and then set to final value, which might impact order. Write test for that + * WARNING: It does not guarantee iteration order to be the same as the original map (i.e. it might not be insertion order during iteration). + * TODO [bug] I think mutative already violates iteration-order contract anyhow? I think updated entries are treated as if they were inserted? or at least read objects are set with draft value and then set to final value, which might impact order. How does Immer behave? Write test for that * TODO [MutativeMap] test/implement patch support * TODO [MutativeMap] MutativeMap does not extend Map. Reasons were: * 1. reduce the initial complexity/effort of having to implement and test all Map methods; @@ -12,7 +12,7 @@ const removedValueSymbol = Symbol('MutativeMap-removedValue'); * But maybe all this does not matter and MutativeMap should extend Map. * * Background/Details: - * Mutative and especially Immer do not work well for scenarios where a lot of entries exist and only a fraction of the data is accessed/changed per mutation. It has to shallow-copy the whole Map on each mutation, which has significant performance impact compared to directly mutating a Map. + * Mutative and especially Immer do not work well for scenarios where a lot of entries exist and only a fraction of the data is accessed/changed per mutation. It has to shallow-copy the whole Map on each mutation, which has a significant performance impact compared to directly mutating a Map. * Compared to immer, mutative is already much faster/better for such scenarios, but using MutativeMap basically reduces the cost to 0. See performance test in test/performance/mutative-set-map.ts. * This class enables mutative from needing to copy the entire map when a single value is changed. Instead, it stores the original entries separately and only copies the changed data during drafting. * E.g. if there are 50k entries and only 1 is changed or was recently changed, this class will only copy the map with that 1 changed entry. @@ -83,7 +83,7 @@ export class MutativeMap { // re-use immutableData value if it's the same as the new value to minimize size of patchData // TODO [MutativeMap] [performance] could store drafts somewhere else to avoid setting drafts as values in patchData and then removing them again if they did not change? this.patchData.delete(key); - }else { + } else { this.patchData.set(key, value as any); } } @@ -122,7 +122,10 @@ export class MutativeMap { return immutableMap.has(key); } - forEach(callbackfn: (value: V, key: K, map: MutativeMap) => void, thisArg?: any): void { + forEach( + callbackfn: (value: V, key: K, map: MutativeMap) => void, + thisArg?: any + ): void { for (const [key, value] of this.entries()) { callbackfn.call(thisArg, value, key, this); } diff --git a/src/current.ts b/src/current.ts index c5691ade..584c5460 100644 --- a/src/current.ts +++ b/src/current.ts @@ -77,10 +77,10 @@ function getCurrent(target: any) { ? new (Object.getPrototypeOf(target).constructor)(target) : new Map(target) : type === DraftType.MutativeMap - ? new MutativeMap(target) - : type === DraftType.Set - ? Array.from(proxyDraft!.setMap!.values()!) - : shallowCopy(target, proxyDraft?.options); + ? new MutativeMap(target) + : type === DraftType.Set + ? Array.from(proxyDraft!.setMap!.values()!) + : shallowCopy(target, proxyDraft?.options); } if (proxyDraft) { diff --git a/src/draft.ts b/src/draft.ts index f8da4940..b097fef9 100644 --- a/src/draft.ts +++ b/src/draft.ts @@ -54,7 +54,9 @@ const proxyHandler: ProxyHandler = { // or `Uncaught TypeError: Method get Set.prototype.size called on incompatible receiver #` const value = key === 'size' && - ( target.original instanceof Map || target.original instanceof MutativeMap|| target.original instanceof Set) + (target.original instanceof Map || + target.original instanceof MutativeMap || + target.original instanceof Set) ? Reflect.get(target.original, key) : Reflect.get(target.original, key, receiver); markResult = target.options.mark(value, dataTypes); @@ -80,14 +82,19 @@ const proxyHandler: ProxyHandler = { } } - if (source instanceof MutativeMap && mutativeMapHandlerKeys.includes(key as any)) { + if ( + source instanceof MutativeMap && + mutativeMapHandlerKeys.includes(key as any) + ) { if (key === 'size') { // TODO [documentation] why this "fast-path" here? return Object.getOwnPropertyDescriptor(mapHandler, 'size')!.get!.call( target.proxy ); } - const handle = mutativeMapHandler[key as keyof typeof mutativeMapHandler] as Function; + const handle = mutativeMapHandler[ + key as keyof typeof mutativeMapHandler + ] as Function; if (handle) { return handle.bind(target.proxy); } diff --git a/src/generic-utils/equality.ts b/src/generic-utils/equality.ts index 745fde9a..dc643f49 100644 --- a/src/generic-utils/equality.ts +++ b/src/generic-utils/equality.ts @@ -4,8 +4,9 @@ * (copied from React) */ function is(x: any, y: any) { - return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare - ; + return ( + (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare + ); } /** diff --git a/src/index.ts b/src/index.ts index 2745d558..c4e59b2d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,4 +18,5 @@ export type { Patch, ExternalOptions as Options, PatchesOptions, + Mark, // TODO [review] allowed to expose this? I wanted it in my own project for proper typing and originally used patch-package. But I'll try to sneak it in with this feature if it's fine. } from './interface'; diff --git a/src/makeCreator.ts b/src/makeCreator.ts index e089f058..17e4e64a 100644 --- a/src/makeCreator.ts +++ b/src/makeCreator.ts @@ -8,12 +8,7 @@ import { Result, } from './interface'; import { draftify } from './draftify'; -import { - getProxyDraft, - isDraft, - isDraftable, - revokeProxy, -} from './utils'; +import { getProxyDraft, isDraft, isDraftable, revokeProxy } from './utils'; import { current, handleReturnValue } from './current'; import { RAW_RETURN_SYMBOL, dataTypes } from './constant'; import { objectIs } from './generic-utils/equality'; diff --git a/src/utils/copy.ts b/src/utils/copy.ts index b00cfd09..6a8fbebe 100644 --- a/src/utils/copy.ts +++ b/src/utils/copy.ts @@ -144,5 +144,4 @@ export function isBaseMutativeMapInstance(obj: any) { return Object.getPrototypeOf(obj) === MutativeMap.prototype; } - export { deepClone }; diff --git a/src/utils/deepFreeze.ts b/src/utils/deepFreeze.ts index 92c90fbb..32235c25 100644 --- a/src/utils/deepFreeze.ts +++ b/src/utils/deepFreeze.ts @@ -41,7 +41,9 @@ export function deepFreeze( const parent = stack![index]; if ( typeof key === 'object' && - (parent instanceof Map || parent instanceof MutativeMap || parent instanceof Set) + (parent instanceof Map || + parent instanceof MutativeMap || + parent instanceof Set) ) return Array.from(parent.keys()).indexOf(key); return key; diff --git a/src/utils/draft.ts b/src/utils/draft.ts index b1a7790d..87a061a3 100644 --- a/src/utils/draft.ts +++ b/src/utils/draft.ts @@ -22,7 +22,7 @@ export function getProxyDraft(value: T): ProxyDraft | null { export function getValue(value: T): T { const proxyDraft = getProxyDraft(value); - return proxyDraft ? (proxyDraft.copy ?? proxyDraft.original) : value; + return proxyDraft ? proxyDraft.copy ?? proxyDraft.original : value; } /** @@ -88,7 +88,10 @@ export function getType(target: any) { } export function get(target: any, key: PropertyKey) { - return getType(target) === DraftType.Map || getType(target) === DraftType.MutativeMap ? target.get(key) : target[key]; + return getType(target) === DraftType.Map || + getType(target) === DraftType.MutativeMap + ? target.get(key) + : target[key]; } export function set(target: any, key: PropertyKey, value: any) { diff --git a/src/utils/forEach.ts b/src/utils/forEach.ts index 18deeb3b..7525900c 100644 --- a/src/utils/forEach.ts +++ b/src/utils/forEach.ts @@ -18,8 +18,8 @@ export function forEach( index += 1; } } else { - (target as Map | MutativeMap | Set).forEach((entry: any, index: any) => - iter(index, entry, target) + (target as Map | MutativeMap | Set).forEach( + (entry: any, index: any) => iter(index, entry, target) ); } } diff --git a/test/benchmark/map-batch.ts b/test/benchmark/map-batch.ts index 84a1f4b5..35cc5948 100644 --- a/test/benchmark/map-batch.ts +++ b/test/benchmark/map-batch.ts @@ -101,7 +101,9 @@ const run = (size: number) => { const suite = new Suite(); let i: number; - let baseState: Map | MutativeMap; + let baseState: + | Map + | MutativeMap; let MODIFY_FACTOR = 0.1; suite diff --git a/test/benchmark/map.ts b/test/benchmark/map.ts index 70f33a0f..59a1c6e2 100644 --- a/test/benchmark/map.ts +++ b/test/benchmark/map.ts @@ -102,7 +102,9 @@ const run = (size: number) => { const suite = new Suite(); let i: number; - let baseState: Map | MutativeMap; + let baseState: + | Map + | MutativeMap; suite .add( diff --git a/test/generic-utils/assertAlways.ts b/test/generic-utils/assertAlways.ts index efb4cf57..79fcdd34 100644 --- a/test/generic-utils/assertAlways.ts +++ b/test/generic-utils/assertAlways.ts @@ -1,5 +1,7 @@ - -export function assertAlways(condition: unknown, message?: string | (() => string)): asserts condition { +export function assertAlways( + condition: unknown, + message?: string | (() => string) +): asserts condition { if (!condition) { if (message !== undefined) { if (typeof message === 'function') { diff --git a/test/generic-utils/recordUtil.ts b/test/generic-utils/recordUtil.ts index 746e78e2..36e81ca6 100644 --- a/test/generic-utils/recordUtil.ts +++ b/test/generic-utils/recordUtil.ts @@ -14,7 +14,7 @@ export function deepIterateObjectNodes( return deepIterateObjectNodes2(value, [], filter); } -function *deepIterateObjectNodes2( +function* deepIterateObjectNodes2( value: unknown, path: (string | number)[], filter?: (path: (string | number)[], value: unknown) => boolean @@ -29,22 +29,22 @@ function *deepIterateObjectNodes2( } if (Array.isArray(value)) { for (let i = 0; i < value.length; i++) { - yield *deepIterateObjectNodes2(value[i], [...path, i], filter); + yield* deepIterateObjectNodes2(value[i], [...path, i], filter); } } else if (value instanceof Map || value instanceof MutativeMap) { for (const [key, subValue] of value.entries()) { - yield *deepIterateObjectNodes2(subValue, [...path, key], filter); + yield* deepIterateObjectNodes2(subValue, [...path, key], filter); } } else if (value instanceof Set) { // hack to iterate over set values let i = 0; for (const subValue of value.values()) { - yield *deepIterateObjectNodes2(subValue, [...path, i], filter); + yield* deepIterateObjectNodes2(subValue, [...path, i], filter); i++; } } else if (typeof value === 'object') { for (const [key, subValue] of Object.entries(value)) { - yield *deepIterateObjectNodes2(subValue, [...path, key], filter); + yield* deepIterateObjectNodes2(subValue, [...path, key], filter); } } } @@ -54,7 +54,9 @@ function *deepIterateObjectNodes2( * TODO support symbols and other values in paths + fix typing for map keys that are not strings * @param data */ -export function getAllChildIntermediateAndLeafNodePaths(data: unknown): (string | number)[][] { +export function getAllChildIntermediateAndLeafNodePaths( + data: unknown +): (string | number)[][] { if (typeof data !== 'object' || data === null) { return []; } @@ -63,9 +65,11 @@ export function getAllChildIntermediateAndLeafNodePaths(data: unknown): (string return keys.flatMap((key) => { return [ [key], - ...getAllChildIntermediateAndLeafNodePaths(data.get(key)).map((path) => { - return [key, ...path]; - }), + ...getAllChildIntermediateAndLeafNodePaths(data.get(key)).map( + (path) => { + return [key, ...path]; + } + ), ]; }); } @@ -74,21 +78,32 @@ export function getAllChildIntermediateAndLeafNodePaths(data: unknown): (string } if (Array.isArray(data)) { return data.flatMap((v, index) => { - return [[index], ...getAllChildIntermediateAndLeafNodePaths(v).map((path) => [index, ...path])]; + return [ + [index], + ...getAllChildIntermediateAndLeafNodePaths(v).map((path) => [ + index, + ...path, + ]), + ]; }); } const keys = Object.keys(data); return keys.flatMap((key) => { return [ [key], - ...getAllChildIntermediateAndLeafNodePaths((data as any)[key]).map((path) => { - return [key, ...path]; - }), + ...getAllChildIntermediateAndLeafNodePaths((data as any)[key]).map( + (path) => { + return [key, ...path]; + } + ), ]; }); } -export function getDeepValueByPath(data: unknown, path: (string | number)[]): unknown { +export function getDeepValueByPath( + data: unknown, + path: (string | number)[] +): unknown { let current = data; for (const key of path) { if (typeof current !== 'object' || current === null) { @@ -97,7 +112,10 @@ export function getDeepValueByPath(data: unknown, path: (string | number)[]): un if (current instanceof Map || current instanceof MutativeMap) { current = (current as Map | MutativeMap).get(key); } else if (current instanceof Set) { - assertAlways(typeof key === 'number', () => 'key must be a index (number) for Set values but was ' + key); + assertAlways( + typeof key === 'number', + () => 'key must be a index (number) for Set values but was ' + key + ); current = [...current.values()][key as number]; } else { current = (current as any)[key]; @@ -106,7 +124,10 @@ export function getDeepValueByPath(data: unknown, path: (string | number)[]): un return current; } -export function tryGetDeepValueByPath(data: unknown, path: (string | number)[]): undefined | { value: unknown } { +export function tryGetDeepValueByPath( + data: unknown, + path: (string | number)[] +): undefined | { value: unknown } { let current = data; for (const key of path) { if (typeof current !== 'object' || current === null) { @@ -126,7 +147,11 @@ export function tryGetDeepValueByPath(data: unknown, path: (string | number)[]): return { value: current }; } -export function setDeepValueByPath(data: unknown, path: (string | number)[], value: unknown): void { +export function setDeepValueByPath( + data: unknown, + path: (string | number)[], + value: unknown +): void { const parent = getDeepValueByPath(data, path.slice(0, -1)); const key = path[path.length - 1]; if (parent instanceof Map || parent instanceof MutativeMap) { @@ -135,11 +160,18 @@ export function setDeepValueByPath(data: unknown, path: (string | number)[], val // TODO [unimportant] does this make any sense? parent.add(value); } else if (Array.isArray(parent)) { - assertAlways(typeof key === 'number', () => 'key must be a index (number) for array values but was ' + key); + assertAlways( + typeof key === 'number', + () => 'key must be a index (number) for array values but was ' + key + ); if (parent.length === key) { parent.push(value); } else if (parent.length < key) { - throw new Error(`cannot set value by path '${path.join('.')}' in array with length ${parent.length}`); + throw new Error( + `cannot set value by path '${path.join('.')}' in array with length ${ + parent.length + }` + ); } else { parent[key] = value; } @@ -148,16 +180,25 @@ export function setDeepValueByPath(data: unknown, path: (string | number)[], val } } -export function deleteDeepValueByPath(data: unknown, path: (string | number)[]): void { +export function deleteDeepValueByPath( + data: unknown, + path: (string | number)[] +): void { const parent = getDeepValueByPath(data, path.slice(0, -1)); const key = path[path.length - 1]; if (parent instanceof Map || parent instanceof MutativeMap) { (parent as Map | MutativeMap).delete(key); } else if (parent instanceof Set) { - assertAlways(typeof key === 'number', () => 'key must be a index (number) for Set values but was ' + key); + assertAlways( + typeof key === 'number', + () => 'key must be a index (number) for Set values but was ' + key + ); parent.delete([...parent.values()][key]); } else if (Array.isArray(parent)) { - assertAlways(typeof key === 'number', () => 'key must be a index (number) for array values but was ' + key); + assertAlways( + typeof key === 'number', + () => 'key must be a index (number) for array values but was ' + key + ); parent.splice(key, 1); } else { delete (parent as any)[key]; diff --git a/test/immer/__tests__/curry.ts b/test/immer/__tests__/curry.ts index f4041995..f3d9d68e 100644 --- a/test/immer/__tests__/curry.ts +++ b/test/immer/__tests__/curry.ts @@ -1,9 +1,5 @@ // @ts-nocheck -import { - produce, - produceWithPatches, - enablePatches, -} from '../src/immer'; +import { produce, produceWithPatches, enablePatches } from '../src/immer'; enablePatches(); diff --git a/test/immer/__tests__/frozen.ts b/test/immer/__tests__/frozen.ts index 941043b1..ed292a84 100644 --- a/test/immer/__tests__/frozen.ts +++ b/test/immer/__tests__/frozen.ts @@ -1,10 +1,5 @@ // @ts-nocheck -import { - produce, - setAutoFreeze, - freeze, - enableMapSet, -} from '../src/immer'; +import { produce, setAutoFreeze, freeze, enableMapSet } from '../src/immer'; enableMapSet(); diff --git a/test/immer/__tests__/manual.ts b/test/immer/__tests__/manual.ts index 82c8e0f8..6f3d77d8 100644 --- a/test/immer/__tests__/manual.ts +++ b/test/immer/__tests__/manual.ts @@ -52,7 +52,7 @@ function runTests(name) { it('cannot finishDraft twice', () => { const state = { a: 1 }; - const [draft, finishDraft]= createDraft(state); + const [draft, finishDraft] = createDraft(state); draft.a = 2; expect(finishDraft(draft)).toEqual({ a: 2 }); expect(() => { diff --git a/test/immer/src/immer.ts b/test/immer/src/immer.ts index 9d22e897..b39ce927 100644 --- a/test/immer/src/immer.ts +++ b/test/immer/src/immer.ts @@ -81,8 +81,7 @@ export { castDraft, } from '../../../src'; -export const applyPatches = (base: any, patches: any) => - apply(base, patches); +export const applyPatches = (base: any, patches: any) => apply(base, patches); export const enablePatches = () => {}; diff --git a/test/performance/mutative-set-map.ts b/test/performance/mutative-set-map.ts index 2207954b..16c87812 100644 --- a/test/performance/mutative-set-map.ts +++ b/test/performance/mutative-set-map.ts @@ -4,7 +4,6 @@ import { create, MutativeMap } from '../..'; import { measure } from '../__immer_performance_tests__/measure'; - // TODO [performance] use minified version for benchmarks and performance tests. Apparently as it worked sometime without __DEV__ being defined and indicated by setting NODE_ENV=production, this probably already happened sometime but was broken since? const MAX = 100; @@ -29,17 +28,19 @@ interface BaseState { // set: Set<{ // [x: number]: number; // }>; - map: Map< - number, - { - [x: number]: number; - } - > | MutativeMap< - number, - { - [x: number]: number; - } - >; + map: + | Map< + number, + { + [x: number]: number; + } + > + | MutativeMap< + number, + { + [x: number]: number; + } + >; } measure( diff --git a/test/performance/new-set-api.ts b/test/performance/new-set-api.ts index 1356fd45..06ed9a54 100644 --- a/test/performance/new-set-api.ts +++ b/test/performance/new-set-api.ts @@ -124,7 +124,7 @@ const run = (size: number) => { .add( 'Set - shallow copy with difference()', () => { - const state = Set.prototype.difference.call(baseState, new Set()) + const state = Set.prototype.difference.call(baseState, new Set()); }, { onStart: () => { diff --git a/test/utils/assertHasNoDrafts.ts b/test/utils/assertHasNoDrafts.ts index 8f922aac..1d782ec9 100644 --- a/test/utils/assertHasNoDrafts.ts +++ b/test/utils/assertHasNoDrafts.ts @@ -16,7 +16,9 @@ export function assertHasNoDrafts(obj: any) { // }); // TODO separate tsconfig for tests to upgrade tsconfig target? throw new Error( - `Draft found at path ${path.join('.')}, but the proxy has been revoked` + `Draft found at path ${path.join( + '.' + )}, but the proxy has been revoked` ); } throw e; diff --git a/test/utils/identityChecking.ts b/test/utils/identityChecking.ts index b54428bb..fa7a7803 100644 --- a/test/utils/identityChecking.ts +++ b/test/utils/identityChecking.ts @@ -1,7 +1,8 @@ import { - getAllChildIntermediateAndLeafNodePaths, getDeepValueByPath, + getAllChildIntermediateAndLeafNodePaths, + getDeepValueByPath, } from '../generic-utils/recordUtil'; -import {format as prettyFormat} from 'pretty-format'; +import { format as prettyFormat } from 'pretty-format'; /** * returns a function that asserts that the value did not change in any way (deep equality and identity checks) @@ -22,5 +23,5 @@ export function makeAssertDidNotChange(value: any) { allPaths.forEach((path, index) => { expect(getDeepValueByPath(value, path)).toBe(valuePerPath[index]); }); - } + }; } From 1cb934c03b0624b6011b51271de63d078404a96c Mon Sep 17 00:00:00 2001 From: Thomas Jahoda Date: Tue, 17 Dec 2024 00:49:33 +0100 Subject: [PATCH 3/3] fix(set-map): fix MutativeMap iteration fns and iteration order --- src/MutativeMap.ts | 109 ++++++++++++++++++++++++------------ src/draft.ts | 3 +- src/map.ts | 5 +- src/mutativeMapHandlers.ts | 62 ++++++++++++++++++-- src/set.ts | 2 +- test/create.test.ts | 112 +++++++++++++++++++++++++++++++++++++ 6 files changed, 246 insertions(+), 47 deletions(-) diff --git a/src/MutativeMap.ts b/src/MutativeMap.ts index 8fd260a3..d5b62f17 100644 --- a/src/MutativeMap.ts +++ b/src/MutativeMap.ts @@ -2,12 +2,12 @@ const removedValueSymbol = Symbol('MutativeMap-removedValue'); /** * More efficient version of Map for use with 'mutative' mutations, especially when a lot of entries exist and only a few are changed at a time. (it already is much faster at just a hundred entries though) - * WARNING: It does not guarantee iteration order to be the same as the original map (i.e. it might not be insertion order during iteration). + * WARNING: Iteration order may change between read-only calls and iteration order is not guaranteed to be insertion order like in a normal Map. * TODO [bug] I think mutative already violates iteration-order contract anyhow? I think updated entries are treated as if they were inserted? or at least read objects are set with draft value and then set to final value, which might impact order. How does Immer behave? Write test for that * TODO [MutativeMap] test/implement patch support * TODO [MutativeMap] MutativeMap does not extend Map. Reasons were: - * 1. reduce the initial complexity/effort of having to implement and test all Map methods; - * 2. prevent external business-logic written to handle Maps to do unsupported stuff with MutativeMap; + * 1. reduce the initial complexity/effort of having to implement and test all Map methods - which became obselete because I implemented everything (and additional utilities for better performance for common use-cases) anyhow; + * 2. prevent external business-logic written to handle Maps to do unsupported or weird stuff with MutativeMap - e.g. serialize MutativeMap to JSON as map, but at deserialization it would be a Map and no MutativeMap, reducing performance again on next mutation; * 3. because MutativeMap does not adhere to the contract of insertion-order during iteration, it should not extend Map. * But maybe all this does not matter and MutativeMap should extend Map. * @@ -122,6 +122,9 @@ export class MutativeMap { return immutableMap.has(key); } + /** + * WARNING: order may change between calls during mutation (drafting influences entry order). + */ forEach( callbackfn: (value: V, key: K, map: MutativeMap) => void, thisArg?: any @@ -131,92 +134,119 @@ export class MutativeMap { } } + /** + * WARNING: order may change between calls during mutation (drafting influences entry order). + */ entriesArray(): [K, V][] { + // TODO [MutativeMap] [bug] if modified during iteration, new AND old entry for same key may be emitted + // TODO [MutativeMap] [bug] what about modification during iteration generally? + // NOTE: returning patchData values first to have better behavior in some cases when modifying during iteration (e.g. during drafting) const entries: [K, V][] = Array.from({ length: this._size }); let currentEntryIndex = 0; - for (const [key, value] of this.immutableData.entries()) { - if (!this.patchData.has(key)) { - entries[currentEntryIndex++] = [key, value]; - } - } for (const [key, value] of this.patchData.entries()) { if (value !== removedValueSymbol) { entries[currentEntryIndex++] = [key, value as V]; } } - return entries; - } - - *entries(): IterableIterator<[K, V]> { for (const [key, value] of this.immutableData.entries()) { if (!this.patchData.has(key)) { - yield [key, value]; + entries[currentEntryIndex++] = [key, value]; } } + return entries; + } + + /** + * WARNING: order may change between calls during mutation (drafting influences entry order). + */ + *entries(): IterableIterator<[K, V]> { + // TODO [MutativeMap] [bug] if modified during iteration, new AND old entry for same key may be emitted + // NOTE: returning patchData values first to have better behavior in some cases when modifying during iteration (e.g. during drafting) for (const [key, value] of this.patchData.entries()) { if (value !== removedValueSymbol) { yield [key, value as V]; } } + for (const [key, value] of this.immutableData.entries()) { + if (!this.patchData.has(key)) { + yield [key, value]; + } + } } + /** + * WARNING: order may change between calls during mutation (drafting influences entry order). + */ valuesArray(): V[] { + // TODO [MutativeMap] [bug] if modified during iteration, old AND new value for same key may be emitted + // NOTE: returning patchData values first to have better behavior in some cases when modifying during iteration (e.g. during drafting) const values: V[] = Array.from({ length: this._size }); let currentValueIndex = 0; - for (const [key, value] of this.immutableData.entries()) { - if (!this.patchData.has(key)) { - values[currentValueIndex++] = value; - } - } for (const value of this.patchData.values()) { if (value !== removedValueSymbol) { values[currentValueIndex++] = value as V; } } - return values; - } - - *values(): IterableIterator { for (const [key, value] of this.immutableData.entries()) { if (!this.patchData.has(key)) { - yield value; + values[currentValueIndex++] = value; } } + return values; + } + + /** + * WARNING: order may change between calls during mutation (drafting influences entry order). + */ + *values(): IterableIterator { + // TODO [MutativeMap] [bug] if modified during iteration, old AND new value for same key may be emitted + // NOTE: returning patchData values first to have better behavior in some cases when modifying during iteration (e.g. during drafting) for (const value of this.patchData.values()) { if (value !== removedValueSymbol) { yield value as V; } } + for (const [key, value] of this.immutableData.entries()) { + if (!this.patchData.has(key)) { + yield value; + } + } } + /** + * WARNING: order may change between calls during mutation (drafting influences entry order). + */ keysArray(): K[] { - const immutableMap = this.immutableData; - + // TODO [MutativeMap] [bug] if modified during iteration, key may be emitted twice in some special cases like setting key to original value + // NOTE: returning patchData values first to have better behavior in some cases when modifying during iteration (e.g. during drafting) const keys: K[] = Array.from({ length: this._size }); let currentKeyIndex = 0; - for (const key of immutableMap.keys()) { - if (!this.patchData.has(key)) { + for (const [key, value] of this.patchData.entries()) { + if (value !== removedValueSymbol) { keys[currentKeyIndex++] = key; } } - for (const key of this.patchData.keys()) { - if (this.patchData.get(key) !== removedValueSymbol) { + for (const key of this.immutableData.keys()) { + if (!this.patchData.has(key)) { keys[currentKeyIndex++] = key; } } return keys; } + /** + * WARNING: order may change between calls during mutation (drafting influences entry order). + */ *keys(): IterableIterator { - const immutableMap = this.immutableData; - - for (const key of immutableMap.keys()) { - if (!this.patchData.has(key)) { + // TODO [MutativeMap] [bug] if modified during iteration, key may be emitted twice in some special cases like setting key to original value + // NOTE: returning patchData values first to have better behavior in some cases when modifying during iteration (e.g. during drafting) + for (const [key, value] of this.patchData.entries()) { + if (value !== removedValueSymbol) { yield key; } } - for (const key of this.patchData.keys()) { - if (this.patchData.get(key) !== removedValueSymbol) { + for (const key of this.immutableData.keys()) { + if (!this.patchData.has(key)) { yield key; } } @@ -228,10 +258,15 @@ export class MutativeMap { this._size = 0; } - map(fn: (value: V, key: K) => ResultValue): ResultValue[] { + /** + * WARNING: order may change between calls during mutation (drafting influences entry order). + * @param fn + */ + mapValues(fn: (value: V, key: K) => ResultValue): ResultValue[] { const result: ResultValue[] = Array.from({ length: this._size }); + let currentIndex = 0; for (const [key, value] of this.entries()) { - result.push(fn(value, key)); + result[currentIndex++] = fn(value, key); } return result; } diff --git a/src/draft.ts b/src/draft.ts index b097fef9..80157db1 100644 --- a/src/draft.ts +++ b/src/draft.ts @@ -88,7 +88,7 @@ const proxyHandler: ProxyHandler = { ) { if (key === 'size') { // TODO [documentation] why this "fast-path" here? - return Object.getOwnPropertyDescriptor(mapHandler, 'size')!.get!.call( + return Object.getOwnPropertyDescriptor(mutativeMapHandler, 'size')!.get!.call( target.proxy ); } @@ -113,6 +113,7 @@ const proxyHandler: ProxyHandler = { } } + // TODO [bug] isn't this potentially wrong for map entries with string keys, because e.g. if mutativeMap['valuesArray'] is called and an entry with 'valuesArray' exists as key, it may not attempt to find a property 'valuesArray' on the MutativeMap object itself, which is not correct. Fixing it by adding mutativeMapHandler, but generally makes no sense here to consider map entries here. Will probably just make issues for custom map implementations (which seem to be supported based on some code I looked at). Test with '_size'. if (!has(source, key)) { const desc = getDescriptor(source, key); return desc diff --git a/src/map.ts b/src/map.ts index 0954ae6d..dc3abb3d 100644 --- a/src/map.ts +++ b/src/map.ts @@ -14,7 +14,6 @@ import { objectIs } from './generic-utils/equality'; export const mapHandler = { get size() { - // TODO remove unused code? const current: Map = latest(getProxyDraft(this)!); return current.size; }, @@ -103,7 +102,7 @@ export const mapHandler = { [iteratorSymbol]: () => this.values(), next: () => { const result = iterator.next(); - if (result.done) return result; // TODO [bug] last value is not wrapped in proxy?!?! or does it even just return a key?! write test + if (result.done) return result; const value = this.get(result.value); return { done: false, @@ -118,7 +117,7 @@ export const mapHandler = { [iteratorSymbol]: () => this.entries(), next: () => { const result = iterator.next(); - if (result.done) return result; // TODO [bug] last value is not wrapped in proxy?!?! or does it even just return a key?! write test + if (result.done) return result; const value = this.get(result.value); return { done: false, diff --git a/src/mutativeMapHandlers.ts b/src/mutativeMapHandlers.ts index 7fed1dc6..d20a24da 100644 --- a/src/mutativeMapHandlers.ts +++ b/src/mutativeMapHandlers.ts @@ -16,7 +16,6 @@ import { MutativeMap } from './MutativeMap'; // TODO [MutativeMap] [refactoring] ended up being basically an exact copy of mapHandlers, so code could be deduplicated. But additional methods to optimize performance could be added here. export const mutativeMapHandler = { get size() { - // TODO remove unused code? const current: MutativeMap = latest(getProxyDraft(this)!); return current.size; }, @@ -62,10 +61,10 @@ export const mutativeMapHandler = { target.copy!.clear(); }, forEach(callback: (value: any, key: any, self: any) => void, thisArg?: any) { - const target = getProxyDraft(this)!; - latest(target).forEach((_value: any, _key: any) => { - callback.call(thisArg, this.get(_key), _key, this); - }); + const keys = this.keysArray(); // get as array to make sure that modifications due to creating drafts do not lead to the same key being iterated over multiple times + for (const key of keys) { + callback.call(thisArg, this.get(key), key, this); + } }, get(key: any): any { const target = getProxyDraft(this)!; @@ -99,6 +98,10 @@ export const mutativeMapHandler = { keys(): IterableIterator { return latest(getProxyDraft(this)!).keys(); }, + keysArray(): any[] { + // TODO [MutativeMap] [bug] iteration order changes when calling .values() because of creating drafts. So if calling .values() again, the order is different but stays stable starting then. Fix by just returning patchData keys/entries first? + return latest(getProxyDraft(this)!).keysArray(); + }, values(): IterableIterator { const iterator = this.keys(); return { @@ -113,6 +116,28 @@ export const mutativeMapHandler = { }, } as any; }, + // values(): IterableIterator { + // const keys = this.keysArray(); // get as array to make sure that modifications due to creating drafts do not lead to the same key being iterated over multiple times + // let nextIndex = 0; + // return { + // [iteratorSymbol]: () => this.values(), + // next: () => { + // if (nextIndex >= keys.length) { + // return { done: true }; + // } + // const key = keys[nextIndex++]; + // const value = this.get(key); + // return { + // done: false, + // value, + // }; + // }, + // } as any; + // }, + valuesArray(): any[] { + // TODO [MutativeMap] [performance] could probably be optimized just like non-draft fn + return Array.from(this.values()); + }, entries(): IterableIterator<[any, any]> { const iterator = this.keys(); return { @@ -127,6 +152,33 @@ export const mutativeMapHandler = { }, } as any; }, + // entries(): IterableIterator<[any, any]> { + // const keys = this.keysArray(); // get as array to make sure that modifications due to creating drafts do not lead to the same key being iterated over multiple times + // let nextIndex = 0; + // return { + // [iteratorSymbol]: () => this.entries(), + // next: () => { + // if (nextIndex >= keys.length) { + // return { done: true }; + // } + // const key = keys[nextIndex++]; + // const value = this.get(key); + // return { + // done: false, + // value: [key, value], + // }; + // }, + // } as any; + // }, + entriesArray(): [any, any][] { + // TODO [MutativeMap] [performance] could probably be optimized just like non-draft fn + return Array.from(this.entries()); + }, + mapValues( + fn: (value: any, key: any) => ResultValue + ): ResultValue[] { + return Array.from(this.entries(), ([key, value]) => fn(value, key)); + }, [iteratorSymbol]() { return this.entries(); }, diff --git a/src/set.ts b/src/set.ts index e55ccab6..824aa735 100644 --- a/src/set.ts +++ b/src/set.ts @@ -19,7 +19,7 @@ const getNextIterator = ) => () => { const result = iterator.next(); - if (result.done) return result; // TODO [bug] last value is not wrapped in proxy?!?! write test + if (result.done) return result; const key = result.value as any; let value = target.setMap!.get(key); const currentDraft = getProxyDraft(value); diff --git a/test/create.test.ts b/test/create.test.ts index e29f3b7b..1e8e0880 100644 --- a/test/create.test.ts +++ b/test/create.test.ts @@ -607,6 +607,118 @@ describe('base', () => { expect(newState.map).toBe(initialState.map); assertInitialStateDidNotChange(); }); + test('MutativeMap additional utilities within and outside draft', () => { + const initialState = { + bar: {}, + map: new MutativeMap([ + ['initial1', { a: 1 }], + ['initial2', { a: 2 }], + ['initial3', { a: 3 }], + ]), + }; + const assertInitialStateDidNotChange = makeAssertDidNotChange(initialState); + + const newState = create(initialState, (draft) => { + expect(draft.map.keysArray()).toStrictEqual([ + 'initial1', + 'initial2', + 'initial3', + ]); + draft.map.get('initial2')!.a = 10; + + expect(draft.map.keysArray()).toStrictEqual([ + 'initial2', + 'initial1', + 'initial3', + ]); + const values = draft.map.valuesArray(); + expect(values).toStrictEqual([{ a: 10 }, { a: 1 }, { a: 3 }]); + // NOTE: the order is weird and changes due to drafting + expect(draft.map.valuesArray()).toStrictEqual([ + { a: 10 }, + { a: 1 }, + { a: 3 }, + ]); + expect(draft.map.valuesArray()).toStrictEqual([ + { a: 10 }, + { a: 1 }, + { a: 3 }, + ]); + // expect(JSON.stringify(values)).toStrictEqual('[{"a":3},{"a":2}]'); + const keys = draft.map.keysArray(); + // NOTE: the order of keys is weird due to drafting + // expect(keys).toStrictEqual(['initial2', 'initial1']); + expect(keys).toStrictEqual(['initial2', 'initial1', 'initial3']); + const entries = draft.map.entriesArray(); + expect(entries).toStrictEqual([ + ['initial2', { a: 10 }], + ['initial1', { a: 1 }], + ['initial3', { a: 3 }], + ]); + expect(Array.from(draft.map.entries())).toStrictEqual(entries); + expect(Array.from(draft.map.keys())).toStrictEqual(keys); + expect(draft.map.mapValues((value) => value.a)).toStrictEqual([10, 1, 3]); + }); + assertHasNoDrafts(newState); + expect(newState).toMatchInlineSnapshot(` + { + "bar": {}, + "map": MutativeMap { + "_size": 3, + "immutableData": Map { + "initial1" => { + "a": 1, + }, + "initial2" => { + "a": 2, + }, + "initial3" => { + "a": 3, + }, + }, + "patchData": Map { + "initial2" => { + "a": 10, + }, + }, + }, + } + `); + expect(newState.map.entriesArray()).toStrictEqual([ + ['initial2', { a: 10 }], + ['initial1', { a: 1 }], + ['initial3', { a: 3 }], + ]); + expect(newState.map.keysArray()).toStrictEqual([ + 'initial2', + 'initial1', + 'initial3', + ]); + expect(newState.map.valuesArray()).toStrictEqual([ + { a: 10 }, + { a: 1 }, + { a: 3 }, + ]); + expect(Array.from(newState.map.entries())).toStrictEqual([ + ['initial2', { a: 10 }], + ['initial1', { a: 1 }], + ['initial3', { a: 3 }], + ]); + expect(Array.from(newState.map.keys())).toStrictEqual([ + 'initial2', + 'initial1', + 'initial3', + ]); + expect(Array.from(newState.map.values())).toStrictEqual([ + { a: 10 }, + { a: 1 }, + { a: 3 }, + ]); + expect(newState.map.mapValues((value) => value.a)).toStrictEqual([ + 10, 1, 3, + ]); + assertInitialStateDidNotChange(); + }); test('map clear', () => { const data = {