All user data for FoundryVTT. Includes worlds, systems, modules, and any asset in the "foundryuserdata" directory. Does NOT include the FoundryVTT installation itself.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

563 lines
29 KiB

1 year ago
  1. # 1.12.13.0 (2023-07-18)
  2. - Improve "potential conflict" warning message. ([Issue #77](https://github.com/ruipin/fvtt-lib-wrapper/issues/77))
  3. - Now worded "[A] and [B] modify the same FoundryVTT functionality and are more likely to conflict"
  4. - Portuguese translations (pt-PT and pt-BR) also updated similarly. PRs for other languages welcome.
  5. - [README] Update "Why?" section to make it more clear why libWrapper is useful.
  6. - [BUILD] Updated npm dependencies to latest version.
  7. - Removed unnecessary dependencies.
  8. - Updated to rollup v3.
  9. # 1.12.12.1 (2023-05-25)
  10. - Declare compatibility with Foundry v11.
  11. - No code changes.
  12. # 1.12.12.0 (2023-01-30)
  13. - Implement workaround for Chromium handling of error stack traces resulting in missing information when printed to console ([Issue #76](https://github.com/ruipin/fvtt-lib-wrapper/issues/76))
  14. # 1.12.11.0 (2022-11-15)
  15. - Fix incorrect formatting of error messages when modules have both an 'info' and 'bugs' URL in their package manifest. ([Issue #73](https://github.com/ruipin/fvtt-lib-wrapper/issues/73))
  16. # 1.12.10.0 (2022-09-19)
  17. - Code refactoring/clean-up (no user-facing changes)
  18. - Get rid of another FVTT v10 deprecation warning that occurred only when running the development version of the module.
  19. # 1.12.9.0 (2022-09-11)
  20. - Fix incorrect error messages when calling the libWrapper API before the `libWrapper.Ready` hook. ([Issue #72](https://github.com/ruipin/fvtt-lib-wrapper/issues/72))
  21. - Add unit test to catch this issue in the future.
  22. - Fix accidental 3 consecutive blank lines in error messages when a module has neither an `url` nor a `bugs` entry in its manifest.
  23. - Update NPM dependencies to latest version.
  24. # 1.12.8.0 (2022-09-04)
  25. - Get rid of FVTT v10 deprecation warnings caused by legacy style package 'data' accesses.
  26. - Shim updated to v1.12.2 to also get rid of these warnings when libWrapper is not installed.
  27. - Closes [Issue #71](https://github.com/ruipin/fvtt-lib-wrapper/issues/71). Thanks to wickermoon for the issue report and fix proposal!
  28. # 1.12.7.2 (2022-09-02)
  29. - Add `authors` key to the module manifest to avoid compatibility warnings in FVTT v10.
  30. # 1.12.7.1 (2022-08-08)
  31. - Add `compatibility` and `id` keys to the module manifest to avoid compatibility warnings in FVTT v10.
  32. # 1.12.7.0 (2022-06-21)
  33. - Enforce `options.chain == true` when registering non-OVERRIDE wrappers.
  34. # 1.12.6.0 (2022-06-15)
  35. - Add support for reading core compatibility versions for packages using the new Foundry VTT v10 manifest format.
  36. - Update README with information about the new Foundry VTT v10 manifest format.
  37. # 1.12.5.0 (2022-05-31)
  38. - Fix `options.bind` parameter to `libWrapper.register` for `OVERRIDE` wrappers.
  39. - Declare compatibility with Foundry v10. It is unlikely a future v10 update will break compatibility.
  40. # 1.12.4.0 (2022-02-14)
  41. - Improve package detection. Will no longer fail if an error's stack trace is empty, which could happen sometimes when browser native code causes a JS exception.
  42. - Improve error package info injection to be less noisy when it fails.
  43. - Tweak rollup configuration so that relative sourcemap file paths are now correct.
  44. # 1.12.3.0 (2022-02-01)
  45. - All API functions now accept disambiguation prefixes as part of their `package_id` parameter, i.e. `module:foobar`, `system:foobar`, or `world:foobar`.
  46. # 1.12.2.0 (2022-01-30)
  47. - Allow integer enum values to be passed to `get` as a string, so that the caller does not need to cast explicitly.
  48. - No known issues were caused by this, and this code isn't exposed in the libWrapper API, but the previous behaviour was unintended.
  49. # 1.12.1.0 (2022-01-30)
  50. - Hotfix: Correctly handle malformed log verbosity setting.
  51. - Disable minification of class names, for more readable error messages.
  52. # 1.12.0.0 (2022-01-29)
  53. - Fix `libWrapper.AlreadyOverriddenError` usage.
  54. - Override conflicts were accidentally throwing `libWrapper.PackageError` exceptions instead, which breaks the API.
  55. - Fix module updated check when `compatibleCoreVersion` contains only the compatible FVTT major version.
  56. - Allow arguments to be bound when calling `libWrapper.register` ([Issue #58](https://github.com/ruipin/fvtt-lib-wrapper/issues/58))
  57. - This allows avoiding an extra function call, for example
  58. `libWrapper.register(PACKAGE_ID, "foo", function(wrapped, ...args) { return someFunction.call(this, wrapped, "foo", "bar", ...args) });`
  59. becomes
  60. `libWrapper.register(PACKAGE_ID, "foo", someFunction, "WRAPPER", {bind: ["foo", "bar"]});`.
  61. - Implement a logging verbosity setting ([Issue #62](https://github.com/ruipin/fvtt-lib-wrapper/issues/62))
  62. - By default, libWrapper will only show warnings or errors in the console.
  63. # 1.11.4.0 (2022-01-14)
  64. - Hotfix: Previous update caused significant breakage due to an uninitialised variable not caught by unit tests. Sorry for the inconvenience!
  65. # 1.11.3.0 (2022-01-14)
  66. - Allow JavaScript engine to garbage collect objects that have been wrapped by libWrapper.
  67. # 1.11.2.0 (2022-01-05)
  68. - Improve static dispatch chain caching, speeding up wrappers when calling them on different objects with "High Performance Mode" enabled.
  69. # 1.11.1.0 (2022-01-04)
  70. - Add Japanese localisation, contributed by BrotherSharper. Thank you!
  71. # 1.11.0.1 (2021-12-13)
  72. - Declare compatibility with all Foundry v9 versions, instead of individual ones. It is unlikely a future update will break compatibility.
  73. # 1.11.0.0 (2021-11-25)
  74. - API Improvements to `libWrapper.register` and `libWrapper.unregister` (non-breaking):
  75. - `libWrapper.register` now returns a unique numeric target identifier.
  76. - This unique identifier can be used in further calls to `libWrapper.register` and `libWrapper.unregister`, rather than specifying the target path again.
  77. As a result, even if the object is no longer reachable from global scope or has otherwise been replaced by another module, it is still possible to register/unregister wrappers to it.
  78. - The `libWrapper.Register` and `libWrapper.Unregister` hooks have been updated, and now also supply the unique target identifier as an extra parameter.
  79. - Note: The Shim does not support nor provide these unique identifiers.
  80. - Improvements to 'Active Wrappers' pane in the settings window:
  81. - Add the target identifier to the displayed information.
  82. - Do not merge wrappers with the same path but with different target objects (i.e. different target IDs).
  83. - When a target is known by multiple names, display the additional names when expanded.
  84. - Fixed a few cases where having multiple wrappers sharing the same target path but with different target objects (i.e. different target IDs) could cause issues.
  85. - Fix setter inheritance chain handling for properties when there are no setter-specific wrappers.
  86. - Update test cases to exercise the new target identifier code paths properly.
  87. - Miscellaneous cleanup/refactoring and optimisations.
  88. - Update `compatibleCoreVersion`, now set to v9d2 (`9.231`). Note: This was previously set to a non-existent version (`9.244`) by accident.
  89. # 1.10.8.0 (2021-10-10)
  90. - Fix [Issue #56](https://github.com/ruipin/fvtt-lib-wrapper/issues/56).
  91. - Fix handling of unknown packages.
  92. - Correctly use package ID passed to `libWrapper.register` in specific error messages, when auto-detection does not succeed.
  93. - Ensure all exceptions thrown are an object, in order to fix compatibility issue with Foundry 0.8.x when thrown inside `Application._render`.
  94. - Code cleanup: Refactor error classes usage to avoid a cyclic dependency.
  95. # 1.10.7.0 (2021-10-07)
  96. - Fix incorrect error message when a package that conflicts does not correctly define a `minimumCoreVersion` or `compatibleCoreVersion`.
  97. - Optimise the indexing regex, to remove potential exponential backtracking.
  98. - Tweak README to make it clearer that `libWrapper.Ready` is not implemented by the compatibility shim.
  99. # 1.10.6.0 (2021-09-18)
  100. - Add official support for v9p2 (9.244). Previous versions are still supported.
  101. # 1.10.5.0 (2021-09-06)
  102. - Relax `Hooks._call` patch regex to work even when `foundry.js` has been modified.
  103. # 1.10.4.0 (2021-09-05)
  104. - Fix issue where sometimes the relative file paths to a localisation JSON file would be incorrect.
  105. - Use JSCC pre-processor to improve initialisation
  106. - Strip all unnecessary unit-test code from artifact.
  107. - Bundle version information into artifact, to avoid having to look at the module.json during runtime
  108. - Bundle list of available translations into artifact, to skip requesting a localisation JSON file if it does not exist.
  109. # 1.10.3.0 (2021-09-02)
  110. - Add Spanish localisation, contributed by GoR (GoR#9388). Thank you!
  111. - Tweak how support channels are specified in the localisation JSON files, to avoid having to specify them twice.
  112. # 1.10.2.0 (2021-08-27)
  113. - Tweak localisation polyfill. Messages should now be localised correctly before `game.i18n` initialises.
  114. - Fix Settings UI: `Show ignored conflicts` checkbox clicks sometimes would not register.
  115. - Add pt-BR localisation, contributed by Matheus Clemente (mclemente#5524). Thank you!
  116. - Add pt-PT localisation.
  117. # 1.10.1.1 (2021-08-27)
  118. - Fix build workflow to properly include translation JSON files in the artifact.
  119. - No code changes.
  120. # 1.10.1.0 (2021-08-27)
  121. - Hotfix: Foundry did not load with libWrapper enabled if set to a language for which no libWrapper translation was available.
  122. # 1.10.0.0 (2021-08-26)
  123. - **[BREAKING]** Remove LibWrapperError methods deprecated since v1.6.0.0:
  124. - `LibWrapperInternalError.module`, replaced by `LibWrapperInternalError.package_id`
  125. - `LibWrapperPackageError.module`, replaced by `LibWrapperPackageError.package_id`
  126. - Improve error messages (Implements [#42](https://github.com/ruipin/fvtt-lib-wrapper/issues/42))
  127. - Add support for localization (Implements [#44](https://github.com/ruipin/fvtt-lib-wrapper/issues/44))
  128. - As of now, only includes the english language, but community contributions are welcome.
  129. # 1.9.2.0 (2021-08-25)
  130. - Resolve `ignore_conflicts` API not ignoring all types of conflicts. (Fixes [Issue #49](https://github.com/ruipin/fvtt-lib-wrapper/issues/49))
  131. # 1.9.1.0 (2021-08-25)
  132. - When an unhandled exception is seen by libWrapper, it will detect involved packages (if any) and append this list to the exception message.
  133. # 1.9.0.0 (2021-08-23)
  134. - Support wrapping global methods when they are available in `globalThis` and the associated descriptor has `configurable: true`.
  135. - Include shared library [fvtt-shared-library](https://github.com/ruipin/fvtt-shared-library) statically for `PackageInfo`, polyfills, and Enums.
  136. - Now correctly able to detect package IDs (e.g. in case of compatibility issues) before the `init` hook.
  137. - Can now use enum objects for the `type` and `options.perf_mode` parameters to `libWrapper.register`, e.g. `libWrapper.WRAPPER` or `libWrapper.PERF_FAST`.
  138. - Fix `libWrapper.register` API: The value `NORMAL` for `options.perf_mode` was incorrectly not permitted.
  139. - Miscellaneous code cleanup.
  140. # 1.8.1.0 (2021-08-22)
  141. - Attempt to prevent other modules from breaking the libWrapper initialisation process.
  142. - **[BREAKING]** Prevent use of `Game.toString()` before libWrapper initialises.
  143. - Detect when the libWrapper initialisation process did not run because of another module.
  144. - Prepend `/* WARNING: libWrapper wrappers present! */` to `toString()` calls on methods wrapped by libWrapper.
  145. - Explicitly announce compatibility with Foundry 0.8.9.
  146. # 1.8.0.0 (2021-07-29)
  147. - Allow `libWrapper.register` targets to contain string Array indexes. (Fixes [Issue #46](https://github.com/ruipin/fvtt-lib-wrapper/issues/46))
  148. For example, `CONFIG.Actor.sheetClasses.character["dnd5e.ActorSheet5eCharacter"].cls.prototype._onLongRest` is now a valid wrapper target.
  149. # 1.7.5.0 (2021-07-05)
  150. - Don't fail registering wrappers if `game` is malformed.
  151. # 1.7.4.0 (2021-07-05)
  152. - Handle malformed `game.modules` gracefully. This can happen when Foundry does not initialise properly which by itself can cause issues, but libWrapper was making the situation even worse by aborting the initialisation process.
  153. - Explicitly announce compatibility with Foundry 0.8.8.
  154. # 1.7.3.0 (2021-06-22)
  155. - Update 'About' pane in the settings with more information about reporting issues.
  156. - Update documentation
  157. - Explain differences between the full library and the shim.
  158. - Add information about how to obtain support.
  159. # 1.7.2.0 (2021-06-19)
  160. - Rename `error-listeners.js` to `listeners.js` (see [Issue #42](https://github.com/ruipin/fvtt-lib-wrapper/issues/42)).
  161. - Do not prefix `libWrapper-` to `listeners.js` file in the sourcemap.
  162. - Explicitly announce compatibility with Foundry 0.8.7.
  163. - Add `bugs` attribute to manifest, and enable [Bug Reporter](https://github.com/League-of-Foundry-Developers/bug-reporter) support.
  164. - Miscellaneous code cleanup.
  165. - Update documentation:
  166. - Add section about Systems.
  167. - Add section about Mixins.
  168. - Add section about `super`.
  169. - Update release script to properly handle commas in the manifest file, as well as be easier to maintain.
  170. # 1.7.1.0 (2021-06-14)
  171. - Include Git commit hash in manifest.
  172. - Update release scripts.
  173. - Update version parsing code.
  174. # 1.7.0.0 (2021-06-09)
  175. - **[BREAKING]** Removed `libWrapper.clear_modules` API, `libWrapper.ClearModule` hook, and `LibWrapperModuleError` exception class (all deprecated since v1.6.0.0).
  176. - Implement backend system for ignoring known potential conflicts (part of [Issue #33](https://github.com/ruipin/fvtt-lib-wrapper/issues/33))
  177. - Added `libWrapper.ignore_conflicts` API method to allow package developers to have libWrapper not warn the user about certain conflicts.
  178. - Add a toggle to the 'Conflicts' tab in the settings dialog to display detected conflicts that were ignored. These are hidden by default.
  179. - Hooks `libWrapper.ConflictDetected` and `libWrapper.OverrideLost` now also get passed a list of all unique `target` parameters that have been used to register wrappers for a given method, instead of just the first one ever used. This is important for methods that are reachable through more than one target path.
  180. # 1.6.2.0 (2021-06-04)
  181. - Fix errors seen when wrapping inherited properties.
  182. - These were caused by a terser bug ([terser/terser #1003](https://github.com/terser/terser/issues/1003)).
  183. - Clean up `Wrapper` singleton detection code.
  184. - Explicitly announce compatibility with Foundry 0.8.6.
  185. # 1.6.1.0 (2021-05-26)
  186. - Fix infinite loop leading to a `RangeError: Maximum call stack size exceeded` error when both libWrapper wrappers and manual wrappers are present on a method inherited from a parent class.
  187. - Fixes the incompatibility between "TouchVTT" and "Drag Ruler" when libWrapper was active.
  188. - Fix module ID not displaying correctly in settings dialog for `MANUAL` wrappers.
  189. # 1.6.0.1 (2021-05-24)
  190. - No code changes.
  191. - Explicitly announce compatibility with Foundry 0.8.5.
  192. # 1.6.0.0 (2021-05-10)
  193. - **[BREAKING]** Remove `libWrapperReady` hook (deprecated since v1.5.0.0, `libWrapper.Ready` should be used instead).
  194. - Rename all instances of `module` to `package`, given the library now officially supports systems and worlds.
  195. - Deprecate `libWrapper.clear_module` method (now `libWrapper.unregister_all`) and the `libWrapper.ClearModule` hook (now `libWrapper.UnregisterAll`).
  196. - Deprecate `libWrapper.ModuleError` (now `libWrapper.PackageError`).
  197. - Deprecate all `libWrapper.Error.module` getters (now `libWrapper.Error.package_id`).
  198. - Rewrite module auto-detection functionality to be able to handle systems and worlds correctly.
  199. - Allows modules/systems/worlds to co-exist even when they share the same package ID.
  200. - Make it explicit when a package ID corresponds to a world or system.
  201. - Error and warning messages now display `world` and `system` instead of `module`, when applicable.
  202. - Display `[World]` and `[System]` next to the package IDs in the settings dialog when packages are not modules.
  203. - Miscellaneous code clean-up in preparation for future work.
  204. - Announce compatibility with Foundry 0.8.3.
  205. # 1.5.6.0 (2021-05-05)
  206. - Improve unhandled error detection mechanism.
  207. - Also detect errors that occur inside `Application.prototype.render`.
  208. # 1.5.5.0 (2021-05-05)
  209. - Fix sorting of unprioritized modules in the settings dialog.
  210. # 1.5.4.0 (2021-05-05)
  211. - Improve support for systems and world scripts. ([Issue #19](https://github.com/ruipin/fvtt-lib-wrapper/issues/19))
  212. - World scripts are now supported.
  213. - Shim ID/title auto-detection now supports both world scripts and systems.
  214. - Do not use positive look-behind in regexes. ([Issue #34](https://github.com/ruipin/fvtt-lib-wrapper/issues/34))
  215. - This fixes support for Safari Technical Preview. (Note: Safari is still officially unsupported by both Foundry and libWrapper)
  216. - Corresponding update to the shim, which will be required if modules wish to support Safari.
  217. # 1.5.3.0 (2021-05-04)
  218. - Improve call stack for hooks ([Issue #32](https://github.com/ruipin/fvtt-lib-wrapper/issues/32))
  219. - Changed the `Hooks._call` wrapper to a patched override.
  220. - Delay evaluation of notifications configuration until `ready` hook.
  221. - Announce compatibility with Foundry 0.8.2.
  222. # 1.5.2.0 (2021-04-16)
  223. - Versioning updates
  224. - Split `SUFFIX` field into `SUFFIX` and `META`.
  225. - `SUFFIX` is now always an integer, with `META` containing the string portion.
  226. - `META` is now unnecessary when comparing library versions, as any change to this field will cause one of the other fields to be incremented.
  227. - Updated `version_at_least` to be able to request a minimum `SUFFIX` field.
  228. # 1.5.1.0 (2021-04-13)
  229. - Fix issue detecting module names when using minified releases of libWrapper.
  230. # 1.5.0.0 (2021-04-12)
  231. - Major performance improvements
  232. - Improved performance of the standard performance mode in a tight loop by 60% compared to previous versions.
  233. - Compared to v1.4.3.0:
  234. - 1000 calls to one wrapper: 1.67ms → 0.67ms (~60% improvement)
  235. - One call to 1000 wrappers: 0.87ms → 0.60ms (~25% improvement)
  236. - Added unit test to ensure there are no significant performance regressions in the future.
  237. - The GM can now toggle a 'High-Performance Mode' in the libWrapper module settings. ([Issue #25](https://github.com/ruipin/fvtt-lib-wrapper/issues/25))
  238. - Modules can also request this be used by default (see documentation for usage details).
  239. - This mode forgoes libWrapper's dynamic conflict detection capabilities in exchange for higher performance.
  240. - Compared to the standard mode on v1.5.0.0:
  241. - 1000 calls to one wrapper: 0.67ms → 0.06ms (~90% improvement)
  242. - One call to 1000 wrappers: 0.60ms → 0.08ms (~85% improvement)
  243. - This is within margin of error of non-libWrapper wrapping methods, and useful when wrapping methods in a tight loop such as `WallsLayer.testWalls`.
  244. - Updated rollup/babel/terser configuration and versions.
  245. # 1.4.3.0 (2021-04-11)
  246. - Ignore conflicts when `libWrapper.ConflictDetected` returns `false`.
  247. - Do not treat an `OVERRIDE` wrapper being replaced as a conflict when `libWrapper.OverrideLost` returns `false`.
  248. # 1.4.2.0 (2021-04-11)
  249. - System support:
  250. - Systems can now register wrappers using their ID (Partially implements [Issue #19](https://github.com/ruipin/fvtt-lib-wrapper/issues/19))
  251. - Detected conflicts involving a system no longer show up as `unknown`.
  252. - Improve call stacks further ([Issue #17](https://github.com/ruipin/fvtt-lib-wrapper/issues/17)):
  253. - Decorate all `libWrapper`, `Wrapper` and `LibWrapperNotifications` functions with the `🎁` symbol.
  254. - Bind `call_wrapped` on the last wrapper call, instead of `call_wrapper`. This avoids one extra call.
  255. - Decorate `Hooks._call` wrapper properly.
  256. # 1.4.1.0 (2021-04-11)
  257. - Fix broken `Hooks.once` behaviour. Modules such as Norc's Custom Hotbar now work as expected. Closes [Issue #30](https://github.com/ruipin/fvtt-lib-wrapper/issues/30).
  258. - Detect `Promise` rejections caused by `LibWrapperError` exceptions properly.
  259. # 1.4.0.0 (2021-04-11)
  260. - **[BREAKING]** Remove private code from `libWrapper` scope.
  261. - The `libWrapper` object no longer exposes various private functions. This includes:
  262. - Any function with a `_` prefix
  263. - `load_priorities`
  264. - If your code was relying on any of these undocumented functions, it will need to be updated.
  265. - As always, you should assume any method that is not publicly documented may change or be removed at any moment and without notice.
  266. - Closes [Issue #16](https://github.com/ruipin/fvtt-lib-wrapper/issues/16).
  267. - **[DEPRECATION WARNING]** The hook `libWrapperReady` is now deprecated and will be removed in a future version.
  268. - You should use `libWrapper.Ready` instead.
  269. - Bug-fixes:
  270. - Register modules to the prioritization UI even if they fail to register an `OVERRIDE` wrapper due to another wrapper already existing. Fixes [Issue #21](https://github.com/ruipin/fvtt-lib-wrapper/issues/21).
  271. - Enable statistics collection for non-GM users with 'Modify configuration settings' permission. This means they can now edit the libWrapper priorities. Fixes [Issue #26](https://github.com/ruipin/fvtt-lib-wrapper/issues/26).
  272. - New features / improvements:
  273. - Trigger the `libWrapper.OverrideLost` hook when an `OVERRIDE` wrapper gets replaced. Closes [Issue #23](https://github.com/ruipin/fvtt-lib-wrapper/issues/23).
  274. - Trigger various hooks when certain events occur. See documentation for details.
  275. - Added public API function `version_at_least(major, minor=0, patch=0)` for modules to easily check for a minimum libWrapper version.
  276. - Redirect `toString()` method to the wrapped method. Closes [Issue #18](https://github.com/ruipin/fvtt-lib-wrapper/issues/18)
  277. - Major documentation improvements:
  278. - Documented `version`, `versions`, `is_fallback`.
  279. - Documented all custom exception classes used by libWrapper.
  280. - Documented the Hooks triggered by libWrapper.
  281. - Documented the `{chain: true}` option for `OVERRIDE` wrappers added in v1.3.6.0.
  282. - Documentation now states explicitly that usage of anything undocumented is unsupported, might change, and can easily break.
  283. - Split the contributing section to [CONTRIBUTING.md](CONTRIBUTING.md).
  284. - Added a Table of Contents, as well as section numbers.
  285. - Improve callstack:
  286. - Renamed `src/lib/lib-wrapper.js` to `src/libWrapper-api.js`.
  287. - Renamed `src/lib/wrapper.js` to `src/libWrapper-wrapper.js`.
  288. - Renamed handler function names, so that they are shorter.
  289. - Use Function.displayName in addition to the previous implementation, when giving functions custom names.
  290. - Improve performance by caching handler functions, instead of re-generating them every time.
  291. - Closes [Issue #17](https://github.com/ruipin/fvtt-lib-wrapper/issues/17).
  292. - Improve error handling mechanism:
  293. - Detect unhandled libWrapper errors inside hooks, and warn the user appropriately.
  294. - libWrapper will no longer break if it fails to parse `game.data.user` or `game.data.settings`. This should improve compatibility with future Foundry VTT versions.
  295. - Delay warning and error notifications until the `ready` hook if they occur beforehand, to ensure they are displayed.
  296. - Manifest changes:
  297. - Add `library: true` to manifest.
  298. - Announce compatibility with Foundry 0.8.1.
  299. - Minor code cleanup.
  300. # 1.3.6.0 (2021-04-09)
  301. - Allow OVERRIDE wrappers to continue chain if they pass `{chain: true}` as a fourth parameter to `libWrapper.register`.
  302. # 1.3.5.0 (2021-01-11)
  303. - Bugfix: Refactor usage of the handler objects (used to bootstrap a libWrapper call) so that dispatch is dynamic. Prevents references to wrapped methods from skipping the wrappers.
  304. # 1.3.4.0 (2021-01-08)
  305. - Give custom names to methods in the wrapper call chain for easier debug when something goes wrong (browser support varies).
  306. # 1.3.3.0 (2021-01-08)
  307. - Hotfix crashes introduced by v1.3.2.0 when detecting possible conflicts. Now added to test suite to avoid something similar happening again.
  308. # 1.3.2.0 (2021-01-07)
  309. - Add try-catch inside `onUnhandledError` in order to avoid swallowing the original exception with a second exception if anything goes wrong.
  310. - Handle missing `ui.notifications` gracefully.
  311. # 1.3.1.0 (2021-01-07)
  312. - Remove need for invalidation of outstanding asynchronous wrappers, when wrappers are modified. (Fixes [Issue #7](https://github.com/ruipin/fvtt-lib-wrapper/issues/7))
  313. - Optimize instance assignment.
  314. - Misc. bug fixes.
  315. # 1.3.0.0 (2021-01-06)
  316. - **[BREAKING]** Fix inconsistent wrapping order (see [Issue #13](https://github.com/ruipin/fvtt-lib-wrapper/issues/13)).
  317. - Major test suite improvement. Expand the number of tests, and refactor them for readability (see [Issue #12](https://github.com/ruipin/fvtt-lib-wrapper/issues/12))
  318. - Fix property inheritance. It did not work at all before this update.
  319. - Throw correct exception type when trying to wrap a setter that doesn't exist.
  320. - A few other miscellaneous bug-fixes for corner cases detected by the new tests.
  321. # 1.2.1.0 (2021-01-03)
  322. - Freeze all libWrapper classes after defining them.
  323. - Remove use of '<' and '>' to avoid them being treated as HTML.
  324. - Make error notifications permanent.
  325. # 1.2.0.0 (2021-01-03)
  326. - Refactor source code directory structure.
  327. - **[BREAKING]** Clean-up API parameter validation.
  328. - The `module` and `target` API parameter types are now validated, and these must be strings.
  329. - The `module` API parameter will now undergo more extensive validation - attempts to wrap using a different module name than the caller may fail.
  330. - Library now attempts to forbid wrapping libWrapper code and APIs.
  331. - Refactor error handling.
  332. - All libWrapper errors now extend the `LibWrapperError` class.
  333. - **[BREAKING]** For consistency, the previous libWrapper exception classes have been renamed.
  334. - `AlreadyOverriddenError` and `InvalidWrapperChainError` have been renamed to `LibWrapperAlreadyOverriddenError` and `LibWrapperInvalidWrapperChainError` respectively.
  335. - To aid compatibility, these can still be found in `libWrapper.AlreadyOverriddenError` and `libWrapper.InvalidWrapperChainError` as before, in addition to their new names.
  336. - Add option to visually notify non-GM players of issues, in addition to the GM.
  337. - No longer notifies user if libWrapper exceptions are handled by a given module.
  338. # 1.1.5.0 (2021-01-03)
  339. - Reintroduce changes from v1.1.3.0.
  340. - Fix 'super' usage inside wrapped methods, which was causing multiple modules to malfunction when using libWrapper.
  341. # 1.1.4.0 (2021-01-03)
  342. - Hotfix release. Reverts changes in 1.1.3.0, which broke some things.
  343. # 1.1.3.0 (2021-01-03)
  344. - Fix instance/inherited wrapping when there are more than 2 layers, e.g. C inherits from B which inherits from A. Some corner cases were broken.
  345. # 1.1.2.0 (2021-01-03)
  346. - Prevent wrapping of libWrapper internals
  347. - Update shim. Now supports very basic inherited method wrapping using static dispatch.
  348. # 1.1.1.0 (2021-01-03)
  349. - Fix parameters when instance-specific wrappers chain to class-specific wrappers.
  350. - Notify of conflicts when a module wraps instances directly without using libWrapper, but the class has a libWrapper wrapper.
  351. # 1.1.0.0 (2021-01-02)
  352. - Fix 'WRAPPER'-type wrappers that chain asynchronously. These will no longer be incorrectly unregistered for not chaining. (See [issue #7](https://github.com/ruipin/fvtt-lib-wrapper/issues/7))
  353. - Fix wrappers being called twice when a module wraps an instance member without libWrapper, if libWrapper is used to wrap the class prototype. (See [issue #7](https://github.com/ruipin/fvtt-lib-wrapper/issues/8))
  354. - Notify GM when potential issues/conflicts are detected. This can be disabled in the module settings menu.
  355. - Removed option to disable runtime data collection used for the settings menu. After benchmarking, this being enabled does not seem to impact performance at all.
  356. # 1.0.8.0 (2021-01-01)
  357. - Allow modules to chain wrappers asynchronously ([issue #7](https://github.com/ruipin/fvtt-lib-wrapper/issues/7)).
  358. # 1.0.7.0 (2020-12-30)
  359. - Implement support for multiple chaining. Now, modules can call the next wrapper in the chain more than once.
  360. # 1.0.6.0 (2020-12-30)
  361. - Improved some exception messages to make it clearer which module/wrapper is responsible for them.
  362. - Improved the README, to make more explicit some of the common pitfalls when using this library.
  363. Now explicitly mentions that 'OVERRIDE' wrappers have a different call signature, and that wrappers should not chain more than once.
  364. - Explicitly announce compatibility with Foundry 0.7.9.
  365. # 1.0.5.3 (2020-12-08)
  366. - No code changes.
  367. - Explicitly announce compatibility with Foundry 0.7.8.
  368. # 1.0.5.2 (2020-11-15)
  369. - No code changes (Note: from now on, versions with no code changes will not increment the "minor version", instead using a suffix).
  370. - Explicitly announce compatibility with Foundry 0.7.7.
  371. # 1.0.5 (2020-10-22)
  372. - No code changes.
  373. - Explicitly announce compatibility with Foundry 0.7.5.
  374. # 1.0.4 (2020-09-22)
  375. - Adds official support for instance-specific, as well as inherited-method wrapping. Note that these are not supported by the shim.
  376. - Fixes silent failures and broken behaviour when attempting to override a method on a class which it inherited from a parent class.
  377. - Fixes silent failures and broken behaviour when attempting to override a method on an object instance, rather than a class.
  378. - Throw an explicit failure message when the shim fails to find the method to wrap.
  379. - Fix 'this' parameter when using the shim and calling the original method without using 'call' or 'apply'.
  380. - Update documentation to better explain the shim's limitations.
  381. - Closes [issue #2](https://github.com/ruipin/fvtt-lib-wrapper/issues/2). Thanks to Nordii for the report.
  382. # 1.0.3 (2020-09-17)
  383. - Fix shim when type='OVERRIDE' is used ([issue #1](https://github.com/ruipin/fvtt-lib-wrapper/issues/1)). Thanks to itamarcu for the report.
  384. # 1.0.2 (2020-08-29)
  385. - Fix libWrapper.versions property, which was not showing the correct libWrapper version information.
  386. # 1.0.1 (2020-08-08)
  387. - Fix packaging mistake that would prevent the settings dialog from opening.
  388. # 1.0.0 (2020-08-08)
  389. - Initial release.