From 9f9e32e409914e396f682a5ab1fcb821499fc6fb Mon Sep 17 00:00:00 2001 From: Alan Rodas Bonjour Date: Thu, 23 Nov 2023 09:24:52 -0300 Subject: [PATCH] build: update build to export separated modules for index and cli By updating the gobstones-scripts dependency and ejecting the rollup configuration, along with changes in the package.json, now a separated cli module is exported. Thi is the module to export only from cli baed applications, and only in the cli part of it. fix #22 --- CHANGELOG.md | 7 +- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/Events.EventEmitter.html | 6 +- docs/classes/Expectations.Expectation.html | 6 +- .../Expectations.FinishedExpectation.html | 6 +- .../Expectations.JoinedExpectation.html | 6 +- docs/classes/Expectations.Matchers.html | 6 +- docs/classes/GobstonesLang.Board.html | 6 +- docs/classes/GobstonesLang.BoardError.html | 6 +- docs/classes/GobstonesLang.Cell.html | 6 +- docs/classes/GobstonesLang.Color.html | 6 +- docs/classes/GobstonesLang.Direction.html | 6 +- ...GobstonesLang.InvalidBoardDescription.html | 6 +- .../GobstonesLang.InvalidCellReading.html | 6 +- .../GobstonesLang.InvalidSizeChange.html | 6 +- .../GobstonesLang.InvalidStonesAmount.html | 6 +- ...bstonesLang.LocationFallsOutsideBoard.html | 6 +- .../SourceReader.DefinedSourcePosition.html | 6 +- ...SourceReader.EndOfInputSourcePosition.html | 6 +- ...ourceReader.EndOfStringSourcePosition.html | 6 +- .../SourceReader.ErrorAtEndOfInputBy.html | 6 +- .../SourceReader.ErrorAtEndOfStringBy.html | 6 +- docs/classes/SourceReader.ErrorNoInput.html | 6 +- ...urceReader.ErrorUnmatchingPositionsBy.html | 6 +- .../SourceReader.KnownSourcePosition.html | 6 +- docs/classes/SourceReader.SourcePosition.html | 6 +- docs/classes/SourceReader.SourceReader.html | 6 +- .../SourceReader.SourceReaderError.html | 6 +- .../SourceReader.SourceReaderErrorBy.html | 6 +- .../SourceReader.StringSourcePosition.html | 6 +- .../SourceReader.UnknownSourcePosition.html | 6 +- docs/classes/Translator.Translator.html | 8 +- docs/classes/Types.BiMap.html | 6 +- docs/classes/cli.CLIApp.html | 8 +- docs/classes/cli.CLICommandBuilder.html | 8 +- docs/docs/globals.html | 6 +- docs/functions/Expectations.and.html | 6 +- docs/functions/Expectations.expect.html | 6 +- docs/functions/Expectations.or.html | 6 +- docs/functions/Functions.deepEquals.html | 6 +- .../functions/Functions.deepStringAssign.html | 6 +- docs/functions/Functions.flatten.html | 6 +- docs/functions/Functions.matrix.html | 6 +- docs/functions/Functions.unflatten.html | 6 +- docs/functions/cli.cli-1.html | 6 +- docs/functions/cli.readJSON.html | 7 ++ docs/index.html | 6 +- .../Expectations.IArrayExpectation.html | 6 +- .../Expectations.IFinishedExpectation.html | 6 +- .../Expectations.IGenericExpectation.html | 6 +- .../Expectations.INumberExpectation.html | 6 +- .../Expectations.IObjectExpectation.html | 6 +- .../Expectations.IStringExpectation.html | 6 +- docs/interfaces/Expectations.MatcherCall.html | 6 +- docs/interfaces/Functions.FlattenOptions.html | 6 +- .../Functions.UnflattenOptions.html | 6 +- .../GobstonesLang.BoardDefinition.html | 6 +- .../interfaces/GobstonesLang.BoardEvents.html | 6 +- .../GobstonesLang.CellDataDefinition.html | 6 +- docs/interfaces/GobstonesLang.CellEvents.html | 6 +- docs/interfaces/GobstonesLang.CellInfo.html | 6 +- .../SourceReader.SourceReaderLocale.html | 6 +- docs/interfaces/cli.CLIAppOptions.html | 14 ++-- docs/interfaces/cli.CLIGeneralFlags.html | 6 +- docs/interfaces/cli.CLIGeneralTexts.html | 22 ++++++ docs/modules/Events.html | 6 +- docs/modules/Expectations.html | 6 +- docs/modules/Functions.html | 6 +- docs/modules/GobstonesLang.html | 6 +- docs/modules/SourceReader.html | 6 +- docs/modules/Translator.html | 6 +- docs/modules/Types.html | 6 +- docs/modules/Types_WithRequired.html | 3 + docs/modules/cli.html | 10 ++- docs/types/Events.DefaultEventSignature.html | 6 +- docs/types/Events.EventSignature.html | 6 +- docs/types/GobstonesLang.BoardInfo.html | 6 +- docs/types/GobstonesLang.CellLocation.html | 6 +- ...obstonesLang.CellReadingActionAttempt.html | 6 +- ...obstonesLang.InvalidSizeChangeAttempt.html | 6 +- ...tonesLang.LocationChangeActionAttempt.html | 6 +- ...obstonesLang.OnBoardHeadMovedCallback.html | 6 +- ...stonesLang.OnBoardSizeChangedCallback.html | 6 +- .../GobstonesLang.OnCellStonesChanged.html | 6 +- ...bstonesLang.StonesChangeActionAttempt.html | 6 +- docs/types/SourceReader.SourceInput.html | 6 +- docs/types/Types.Subset.html | 6 +- .../Types_WithRequired.WithRequired.html | 12 +++ docs/types/cli.cli.html | 6 +- docs/variables/GobstonesLang.identifier.html | 6 +- docs/variables/GobstonesLang.lowerId.html | 6 +- .../GobstonesLang.nonAlphabeticId.html | 6 +- docs/variables/GobstonesLang.number.html | 6 +- .../GobstonesLang.sigiledNonAlphabeticId.html | 6 +- docs/variables/GobstonesLang.upperId.html | 6 +- .../SourceReader.SourceReaderIntl.html | 6 +- .../SourceReader.availableLocales.html | 6 +- docs/variables/SourceReader.en.html | 6 +- docs/variables/SourceReader.es.html | 6 +- package.json | 32 +++++++- rollup.config.js | 60 +++++++++++++++ src/Translations/Translator.ts | 4 +- src/Types/WithRequired.ts | 23 ++++++ src/Types/index.ts | 2 +- src/cli.ts | 74 ++++++++++++++----- 106 files changed, 511 insertions(+), 315 deletions(-) create mode 100644 docs/functions/cli.readJSON.html create mode 100644 docs/interfaces/cli.CLIGeneralTexts.html create mode 100644 docs/modules/Types_WithRequired.html create mode 100644 docs/types/Types_WithRequired.WithRequired.html create mode 100644 rollup.config.js create mode 100644 src/Types/WithRequired.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 80cc75c..9ff1738 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,11 @@ -## 0.4.6 (2023-11-21) +## 0.4.7 (2023-11-23) + -* build: update gobstones-core to latest version of scripts ([2949b1c](https://github.com/gobstones/gobstones-core/commit/2949b1c)), closes [#19](https://github.com/gobstones/gobstones-core/issues/19) +## 0.4.6 (2023-11-21) + +- build: update gobstones-core to latest version of scripts ([2949b1c](https://github.com/gobstones/gobstones-core/commit/2949b1c)), closes [#19](https://github.com/gobstones/gobstones-core/issues/19) ## 0.4.6 (2023-11-21) diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index e520cf1..0777f5e 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE5WZTXfjJhiF/4vX6bTJdKZtdo5jT90mcU/TrObMAks4pkGgAvIk09P/XkCShQR6gWWse5+LXvGdz/8uFH5Vi+vF+oSZkouLRY3UUf9d8bKhWH7f/v7uqCqqH74QVi6ury4WxZHQUmC2uP48RqwrohQWA6igSMoB5IrG1Murn/+7OMNu8QE1VFn5I3lmSDUCD1T1Vg/MoHbS5B9++enyw5UTkEROQX5xoa81LhRShLNQLZ2naRUdDIGCujTnD6iqG8KIPOIyHRxwQAG/ccJy8J4egt8jVRyxkBFmL4NQ26UQ6C3YTsJ01zygYor1LJNP+OGjywcrPRsRrfYk5RNmWJAiL8Q3gRkPTbXHIi/C84AJu/3fWpeX4HnAhEclCHvOS/A8UELX51aI0jjaEUNMpH86sw4NK6x7jNKaMeLjjw4BW2kU0soADhdRBhee350YN73LnxXPj5KmxA1Feulgu3pCc2o9AMdiqNZP7JADnsohdIlxvf6nQVSGijgwBx3wJYyo7ZhLKfW6FEe6agDcvQ/M60QApkI67hWmtBoA0rCk1pxlYM/7xPdScYblHWLPfu8bPU7qgTccCWdg9kvQGGRF0AJkBWsheGCrFEBZJcRbYXfmCZOMBmRwGm+OFYE7NyJwEV76x6SzEFyo2QlRUtoi3GJZCFKnsGdsCUmmSH9iVBK3t4AhjiOB/0i+4dVR23EifjCk0K19WfGGqVS+Y4ES7nhh5/qNXrbkrlGSlDhpLMwao+NDb+z1hmh2vQ6Mk8EBTcntkJqceGBw8Bw0gppucIsUymq0b4pFJDd7EMeQW3bgiUAjjVZ2zGsPVIGSBljeKc1k9v0HRrrKFGo3Ypd2BlrqZaSqVTwh5IqleeM4KW3OFUvra9CZ0l8PMMYyd8x+0F91ce75CZdmZ7tHxQscOOdKTBsqk5cX8MUTzbdvJ8rOGovyDLEMV5zx1WZtsTw9CTNFDsS9qzkhQdDe3xYN2jH1vQuk/CsW2zJO64QAium3oPUR7bEiRQpyYoDQ9mSaQLQ6AKT304Ti8iG3qWEfENTUdVpdO6GHcnfDj7wRBTazmFuEfjPsPk3aC9tlC5et7w8uSXhvNuIGPdBWYM3K3WHL6kZl5czZolHtiSk/K+QDw8yefqmGdt68xWJ8R2pA27ishN4SjXjgtjEp6E4aRT6xylyS6Py+kjKt7UEjFPc7419Z1scOOKCALHYudjqSAWhoWM8jZ46ms9zoAdUTR79nwAEG5A/b3BH7xF6ye0vQk1oosyejzkHR2ZvPlqr1QJv0Vj0Zs+3mIkANDNjA7sXxbZlyriKG1Wq2xcYALIDohAg1iPbNZJQ9NQBs945phja9Xxr7460J5Lsr8l8CMUmR4oH1eHiWtBqHUH2fdFBzVNMNRy0zPSLQKPNz2k0ZuUd1oCkWYB+C46DZS+x10NbcPov/P66gxH8B/WNS81d322UdaL/xt8/Ay7S77YpXFWLlTaPZoUm6A41lEaZOha6oh7Yl3Exrof1fEKIbip5BoKuDkKOCt1/MEPySezPIyDlc93bu7y4Dl7xf/ge0OKCgvx4AAA==" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE5WZXXPjJhiF/4uv026Tdrdt7hzH3nqbxJ31Znqxs9PBEo5pMGgR8ibt9L8XkGSBQC9wGXPOc9ArvkQ+/zuT+EXOrmfLE2aynl3MKiQP6u8jLxuK6zft798f5JGqxmfCytn11cWsOBBaCsxm159dxPJIpMRiABUU1fUAskUu9fLql/8uzrBbvEcNlUa+JU8MyUbggSpfq4EZ1I66/MOvP1++vbICksgpyC829KXChUSScBaqpdWaVtHBECioTbP+gKq6IozUB1ymgwMOKOADJywH7+kh+D2SxQGLOsLsZRBqPRcCvQb7SZgamntUjLGeZfQK376z+WClJyOi1R6lvMcMC1LkhfgmMOOhOe6wyIvwPGDCZve30uUleB4wYSsFYU95CZ4HSujG3AJRGkdbYoiJ1E9n1r5hhXG7KKVxEe9+sgjYSKOQVgZwuIgyuPD89sK46l3+qnhuSloSVxSprYNtqhHNqvUAdMVQrR/ZPgc8lkPoEuNq+bVBtA4VcWAOOuBNaFE7MOd1rfalONJWA+DueWBeJwIwR6TiXmBKqwEgDUvqzVkGjrz3fFdLznB9h9iTP/qc5qQReMORsCZmvwW5ICOCNiAjWArBA0elAMooId4C2ytPmKQ1IIPTeHeMCDy5EYGL8Nbvks5CcKNmJ0RJaYpwi+tCkCqFPWFLSNJF+ohRSezRAoZYjgT+lvyDFwdlx4n4wZBCN/b5kTdMpvItC5Rwxwuz1q/UtlVvGlmTEifNhUljdH6og706EE3u14F5MjigJbmdUqMvHhgc/A5yoHoY3CKJsjrtm2IRyd0exDHkmu15IlBLo5V1ee0HVaCkAZb3laYz+/EDI21lCrWbsXOzAs3VNnKsZDwh5IqlefM4KW3KFUvra9CZ0h8PMMYyN8y80N9Uce75CZf6ZLtDxTMcOOVKTBsqk5cX8MUT9btvF8rOGovyDLEMW5zx1iZtsTy1CDNJ9sS+qzkhQdDOPxYNWpf6ow2k/BsW6zJO64QAiqmnoNUB7bAkRQpyZIDQ5ss0gWh0AEidpwnF5UNuV8M+IKipqrS6dkIPZZ+Gt7wRBdarmF2E/jBstyadhc22hcvW9wevSfhs5nCDHugosGTlZr9mVSOzcqZs0aj2iyk/K+QDw/SZfi6Hft68xmJ8R2pA27mshN4SjXjgpjMp6E4aRT6yo74kUfl9Jeu0vgeNUNzvjH9jWS874IACsti52PFMBqChaT2NnPg0neRGP1A9cfR9BhxgQP60zZ2xj+w5e7QEPamF0mcyan0oWmfzyVK1HuiQ3qpHc7Y9XASogQkbOL1YvjWT1lXEsFtN9lgbgA0QnRChGtE+WR1ljw0A275jmqCN75dcf7w3gXx7R/4kEKspkjywHw9tSbtxCNWPSQs1RdXD0OmZHhGBTumf027KyD2qAl0xANMIzoNmV2NvgLbmti3+/zijfvMnkYeP+GtDhH1ud57nL1uT9HBhqNVJFwnwA/0uKPE7qn5M6tnibj2vAnXX/rYNvAS8Wy/48YhYedModmhz6UCuLMJUqdDV+tC3hBt1JTT/w0J0RdETCLR1achP6ocUpNFBSOcdtuNCE/y36C2mjnO4+e7c310CV+dCrTkftpuHKX/fHrgy//I/wdrfKw0gAAA=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 62c39bc..646ef89 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAE82dXXfcNpL3v8pz7FvHKxAgwJ47x3ES72TsnDjJ7GxOjg8lUVKvW93a7pYdz5z57g8JEN2FYhUJ8MXZi5lIFgH8icJL4YcC+K8n+92nw5O//PavJx/W2+snf8kuVkbk2bMn2/K+evKXJ68+Vtvju/Xttjw+7qsnz5487jf1Px8/P1SH/7B/PDwPn3l+d7zf1A9ebcrDoarzflL/8lDu62d8focn/37GFfhNdVM+bo4x5ZKPJhav81zqU+Hv3zcFpJb29JSsr1A6g2WkPH//vs6y+uO5+/UrMUrb8zAzIFVkRdhCXt2vj8dqf5LbFha0kPaZRAPl4tw2rnbbw3H/eHXcxZf0NEzUWwvBq4C3vcjUSUPVPPP28lDtP1b7Q7yMTrqzkuPh+qv14auH/fpjeawm6dpeVaO1obTT9WUX6txMdnX28Yrap8dYC5WaUuYsJd7cJBRpH55cZrnZvE0p9vT85JKr+s8J7cw9Pf19Hx6q7fXPu7+VDwkvHSSauXXvq/vdx+rtTZKiMNHMiq6rTXWsXm2P+3V1eL1NEkamnVnfbXV8Vx3f7l/dPxw/x0vDyWZQFc5k52Hzfnf9uDlr6U5bzHz4x0N1dSyPa2rsOf+t1nP+ZWBOBKnGzIx9hcZNj0wO7Fy0qe6blGlKzqkIo+6O9cPV9RRV++pQuziJok6JltG0PrzZpUryaZZRdKj/XBG+Q6+kU6LZNGU6E+qsaptcS9tdz1QTUT4cq467rwnfpbf4Nsl85f+w/jBGQ5tsPh1vHjebETraZPPpqFcs661tVqlSzinnU/NLvUAaqwemnU/Rz/vH4x0xsQ7KOSWcT8u35eYwRopPN5eS78uP1c9wVR0rBSScr1a+21f1qLn/+a5MdBSedlMvoqr2sv73sRzT28lMZhwLd59G1xtMu4Ci8XVGZDGfvq+r46eqGlNf55TzqXm9rce7NeX2D8oBSWec08o3Y6Y0m2o+FS83u0P1826EknPKOUfKd4+X9cpgvb0dNVzC1HOpencs98e/r493yYpgyrnUvNpej9JyTjeXkr+Vx6t0HT7VfC3YLspf7PflmJ4dJJ6zHf9QbW9HmClIOpeel7vtsVynj8PndHPWzIvjj7vDOp1UPCWSz6Or3Gx+3r2rHzncpLYhlHQmPdvPo/WESWfSc7973B5HS+qknrnvv738n/rZsZ3/lHrONv7jfvdQ7Y+fXzavPqqZ4xzm7YE/VOVhnK5z2jkVvdm9Pd6N9K676Zew5CQjzuzHHo5ls21G7L1EeLIg8TyabqvjT2MgJ0w3j5LDSCUHUslUlhjs1DxureNDbVb3SgsSLqNtV3eb/e5TorBzqo6q9baWu56s6h/rapNKts6pllFVbq+/2b1NNeI51YKqxmha0HrJgtoks+nRYGfIPnDSc/O4vbIpQ0XuqVGbYqCsul6HCqofmVoK2HBjCtkNhbzQZcA9xW/X2/XhrrqG9dtrUyLBl9tj5ApP32uk3nvK2Mkqo8bQeVRFjJ09qrpj6ByqosZOVhU1hs6maoqmBaw3WlBnDJ1DT6R/x4pK9PMGlOXnYMXX31Xbemq4osan9fZY7W/KK6ySSDNunIS713CfOLXg+C1j6nVjto6TFcXvIidKCnaTR8mK31hOlIY3dkepS9rjTRTY3esdJTFx2zdRZLBNP0pf/I59ojS0Mz1KXMomdaK8cLN6lLqEfeskcZ396xHq0rayB+TBKeDN4/1ltU+aATpJRk0AURvriRrGbbETdTBup32i2qQd5DTR3a33MVoTN+FHSpyjVsftyqcJxpvzY3QmbdOnyevs1o/Rl7ZvnyYQbt+P0Ra9kZ8mC+/nj5GWtLPfKy/dTWZkYS85Gg6l1d6kavsSAuNc6L6hBXvQCwmNdqh7tFL+9EJyE9zrHsG0d72Q5Dhnu28Ewr72QkJjXe8eqYTnvZDYSEe8R2vXD19EarxbzmolvfKZxEIn/Z0NyUpy0jtJ5nDS6fiyRA3jIs2IOkgIOEuXmBh6liIPR6Cli0uKRUuRFoakpQtLCE7rlZXu9jCSxrs9CbUW4/awVTba7UkSGOf29Iic4PYkCY12e3q0TnN7kuQmuD09gqe6PUmS49yeHrUT3J4kobFuT4/USW5PkthIt6dH6xS3J0FqvNvTO31PcHt6xUK3x4YVJ3k9OMU8ZJIIkE5TMCpSuvv6KfHSyQJTA6cT5OHw6WRtSXHUifVGRFOPqrvUsOpomWRwdaLE9CjreHlUrHWqvOSg63h5TOh1qsIxMdh9ItM9XFrYeAc3vpvE+Lf8uPcF5MV5t7zECc5tisxo35ZXOs21TRGb4Nnycqc6timC4/xaXusEtzZFZqxXywud5NSmSI30aXmlU1zatFk8zqPtm78nOLR9UqE/607KJDm0nSQzerTo2E+ihnEHgIg6GHEOKF3qyBNBqXLxwaBxQpOOCKVKpE4KjZOZfGZorPFnsvv8IsmzRGP6Ueqpol6R6a4lo2y8b5lUh5Nq7ksIjHMve0RO8C+ThEY7mD1ap3mYSXITXMwewVN9zCTJcU5mj9oJXmaS0Fg3s0fqJD8zSWyko9mjdYqnmTgrxbmavTPSBF+zVyx0NvsOH7Gq5zqANHD+Ibn81DMQ5NtHHkFKF5d0DClNWngOaYy0hLNIadK+iYiRm+GgTYqo8CxSuqqE80jJssDBrZHCYg9vDUiDJxT/c9dMnNQQQR5R6jz+5U4n0kWnn03svjHjOMfcO8qI6rt9tHvNbay6MWfKGIGJo2m0qqjTnIymSefhExRGnOxkFU44Gx+tMOqUJ6Nw0jn5NIXj9S1u4ZHixp+f79UGfLL2IoqXZcQaAjw7/XzlPbo6I7bQp/fE1RlsNcDXY4SU+9tDuoo21TwS9nGuaEcEMainygATb/vEwI3N/ql5oG9CWQlHWE9vEgtQIkuPP6kaoyDq3uGuiKQDqTE6Im8c7ipJPHcao2X4TuiujPjjpTEKYm477mpIOUUaoyLinuOuiITDosMa4m44xiLSzoTG1ET03cbd+kg+dZmoJ+qG3l5ZSUcBo0a1uPuMiaEt7RxlkpaR9TTuwGSMsqg7jLuCkk5GxuiIu724KyTtCGTUuDt0bzEx7MaedYwpP+rG4q6GpEONcWNe5F3F1MCXeHxkWE/kLcVYS+I5kWEdUfcTYxVJB0KGNUTcTIwVJJz8iGmjsXcSd5tpaphtXEuNuY2YaqYpEbXDSqLuIcYykoJn42oj9gZiqkZS42SHFMXfPRyqSQ+JHVQSfeswUpIc/TqoJOW+YSRmTKBrdI+OuWmY6dIpUUZxrTjhjmGqIY8IJ4rtXRG3C9NdKyFuKE5L9L3ClJ7kAKE0u4032ZxeZdxdwpRfmRbyQ6gZtZESKkneP6Eq5SQiIFFexemDfDCbLtA65weu6byuqge7Hjlnd76u81v/0/PzY/2k7JSCL80dTnpxOKxvt4NlwocnlXyzKY/Hqr/A9plJ5TxuY0o6PZVeFsTd37pM3j6E7QEQ13OR4bPp5QaI97rarO/XRxp495b5FCYdKB2l58QcyhsyXKRfR5tqHgn35R/fVA/04bB+GSDlPFKO+3J7uNnt7/9akQE//XJQ6tGSer/ZPUrN84GPibM5Ba9E96NffHeM6kn46S/Tl8hSk3pT5y0ZQTs2an1Iza7fgxwh5WO1/9RsDY5SAxLPJSi+d9GaEvtXj6z0HjasKL6PdfLietl5rjr1A+y2nHON9Fnuy9or+KN3gnWPjJhdL1ZG5GfVb7df78r99bv1P6uXtZN9W103W46X5dWHU/FNjR3+47vd5eG421aHH+qnnvPJ+iUFucQae4SApwOGjs1suOa+r8rrv9U9ManeOom+bK3RxY+qs+7r0zOQfRh9Zxt04jBv8PC4igmGtN92W2DZ39OLf/o+yOF9ZA3BV+alnSpwpLBT+omyQGSBfaKzBCRymcE44AWiS3waJop+aV4DsG6KijDZGB2x629WRMzqO6EqLps//n19TYBqVkKQJiZeMVXP99X69q4Ls/oFnRLNrOiubnn/9cPuio51ZTXhZAuo+sc4Vf9YTpU1xDflsUy0XZtkuhr0Mfn1IW1oe3pOMKZnodIb57FMaMan52co+1Nal/7U6c2jS75L7Lx33X47oewywdjt0zOV+1+JY8N8Jf8jsf/PU/JlWs+6nNKvIEK/2tTPJcyX7eOTy72tji8rIvqNLfmcYJayd5vH+4SRHiaZo/yfiBj9vsJ/6jncNObNu2Gvw6/ORwAnv3ta8W2CyWXf7DbXTRtKKB0mmVz+ffmQWDxIMf3t15t6XZT6/kGiGSywr8qru2QjBKlmGPMqYjO1Z8yrerZPU+xfr7ialRcR+cW3AJhmRgWvrm+rFwl+BZFyuh3s2q9ZBabUCEo1WUV5fZ06G8Ak85Wf0COCNJMV7KvGuqmVgFLNqiKhKnCyOeyRNDufnp+p5LRmMNfc6Kox6cVhkvnKTzb9XDXQRJKSkbBs+SDF5NLX2221/26Ee9ZNOMO6n1c2VthyupLabJhoqZpKWtigVEtoelcdm7k7HXAxqZfQ+PI0rSfKCxIuZNFvqs2x/PrzN+t9dTWiBukcZta6214lVF37dEcDedY2SUWKhkUU3HQjAXkJNzdLaCg3m7cpMk7Pz66kul8nePnt07OowLuX9iQne80zkdk5wQwbZYgeJ5U8AiWDl2UEhUg5TU8yXx6Wgzhzmp506BwjqCSv3YmSk0aih8WEdDZNTTKqJeXg8An75OvtzXnhTAUsnJ4a14NwoY2L0nEiqHLhgyOLBsNHk1vwqqwB/JMzDBhlYmlPy0gbn96GKThieAwLjl19DxVMBhj2FRy7ZT5U8MfUgj+OLxi3q2avNGVm6qaZoa39Mbrcp38kVAV6V0YMGbcYJ4YPWRwrJrIXUmLILfAIRyZe3Pjm8nSs5xsvLrI3U+Liry8aKy6yx1PiPi4hjprofqq9iOZsiV2uvTgeq/uHs3/ETXpUonnmXj+duuVuvKqedPMIe739WG7WIPozRhWXaB5J7+xDqTXFpho5wuOQwFf7fVxomn1wXKETAuLOpY6NinMvyHT59WHE+z89pxqvAtihbXatm3242q8fInAOk+pLWqhPwghzcfUQtzgcIZFYIcZCr0StMaFavVK7i+uFlF5Rq6kx5g/zWVx3XE/ulUx16/ipPEJvt8+D2TlOOUjwJ/R0XPr4Tg5fnPOy0eyYpuycel5VN+V6U//55W63rx8rj0N0m9NH5TOv0qQe0dE3S2dgVIJ+4IeIb8vN5vD28XhYX1cx8bxsui/ZK/pFjOgcfG1M6iMDOtO6SrLG1B4zoHZsx0nW/bCvPq53j4e5hJP5LaI8rucPyJ02AERp7s6H56VX3LB1fv5PmA1R4eMnQ/DWc8yFWNeoqXBYk2/PMSeLGGU4i0X0RZ00GhBIHDyaQeG2+jSh8kDquVVNqTKYfFZdSf4MVjWLO0NrJEYxm/LFPXmBFJ0zSPFnjGS4+AljGXz3WUazjrZx41mErqvdZkqNbRapqymt6Okp9cyqTr5M7eC/O0avgroCqYxm1po2bnQUzjNy0Dq71w+4ejgj3/M6iD7633n+i106QJecet9A9335XdHYmwbOz8500QDUF3GiH5VvbxqAWcQe6gfvTE83ESGdzSOznOinG+VAoU+76WJffPLUdhaRPpchAT1RN0Nld+NsYvlnr4bNY+UqNl4ITDK3mvLqQ7IcmGZePfvqOlENTDGvltt9VW0T1YRp5tWzadflQyeZz2pgimW0DJ1t7mr5xxxa0FnnP6JVpES38OV17ynlyksJYOHLG7qv4VxeSswYX97Q7tG5vJRQMb68+Plg5CyAyvsYXV5KYBhf3iZuU67bWUaWnnoeH8y3Ccfx+0q9Kw9uFCRu0eXKDtNMVXBbHZMVhGmmKjiMUHCYVUF5nTqbwhRTS3en6ZKn8yDRVA31CrC5aTy6+PPzs/WA9PY/Z+uPIllED3iRQh/6lFRJ9V/NVPvrQ8L5NGh+9mDaWB0vjl/v9tfVfvBsPFQRJJqqYdsg3cvdfvBMPJjWYZK5yv9mXd7utuVmhI4g6Vx64nsmTDG19MhTwefCEw8F97bG9uxg4sDUSTbdf5/hTGRX3yxHIgeVvhtXf+8Wq7+Ic5qQ6ow+ptmvIUHBEuUPHo4EAkYfjOz1tWJOaAJHa8oBzf75dvB8JpxuRx/PxHQAss2IvRj7zAx08+sffnkVXdTT9ukR/c++Eqvhxcu/pohwj8+s4qdX38RrcA/PrOC7n1696n4Hj9XgH5/bGpvHweEQGKN++isRO7f2lwsvm44ouH58npJ/Gqb6wPLV9TylfrenvgHJW7t5fHTJ4aVTxPfS2HLve76TllJmOQgZQZllNGfsK3Nb/TE4lJ8LbZ7+KpujXL+xG1+2TzFP+e31bPHFnxOMKXvkHtW5eG6TapbhzDqPv5ZJg1qQZroeTE/TxHzs6Phi3eHP7QxzlB67WjyXnrpcxG0P+HGxK7HTczP4c2/e/vTz90nlPfVJ0hv6+QUZNa9evPs5TUybYgEt797+klozPskCav7+KrVm2hQLaHmz2w8GYuI20ySJ9kaG2wn1ccf+dlKnmK/8d7vH1BqwSeZT8PcqtQaaFJPKT/QJUfHxfuFw2YO+IS472j8cLDtiUkSFJ/mJg+VHTo9IQ7K/OKhj9/DQfIN4yC9BOnyq+XSsD79W++P6qhyK7kJKzunm1PL9br/+Z/Ox6GQ155Tz6Ynz65GUNN+e0jDOv0cypvr4gwNotJ+PTTXN1yeNlu7vI1EpPv9CQ9z/jQHu/8bw9n9ncPu/NbTNpSZylYaUJK7UKBXyPLJtH+8vwSc9P5b7dXm56Whwj41bqIHSHh8eqv3r68Hi2ucml7fZfYoqr31ucnnb3fbF5uGuvKzqZhtRLnp+cvmH9e16U12/SZRBJ5usZn1dP7q+WUe0r/Oj40o9Fxo+4cv13/AMS+0WxR/UqBc++6vq9fbhEd/e4/7SHHqv1YPH+t8EpmJAinvkx2YspmgKUa5/dlzR0K94v75/2FT3dQIb0/JNdSzXxLcyhjQ8ZfOJ8Tl6ch/hqA1qjTk1ECcJTTq/bD9sd5/SLfgUJp1NDzvtDMoZnHri1MA23r5fSlMnkyzV4r/d7aOsx4tiukCQcXJnoKttYp/oeYf0dUyS3DH9pUdtYrdJUhfXe3rEpXWiIW2wL/01tScRCRbsR38dtikniO9Dfx3bg6jKmth/WPUTe0+/1LDyD9BCI+sa5bGo3s2aOGYQqbNNu6i+K/prI5EKr1K+OTJa4766Xe+Ib7VEijwnn1klAkIzNE22Zc6jcEJj7LTFeRRNan5E65tH1bQGR7W3sbpG+A2srkSvIUnZq+3125tw8ZgqLshiXn31/HRsDp0TIfbRE9w5g2W0fbvf3U9U12Yxr76bx83m5dT662SynMYJ9UhkM6/O9/bmjHrCgRmMnte4zOae5YI3mNyV3jN9aUGtE5oEzmNRvbN0tW4uX0zzlHru7Xvz645b5bJyyTVu3yGBFN8XrHjPc2LKspdLteDadwGh/Jq4p7DkNsPmNXGt3P9qExfMEaJH+mf9stOdtFSlcf2yX2UagEpVGD0DDjTuadPgaNXDY3Sk7rGDdLLylFlxQPv0qXGS+sl1P8ckGfEGY4nbgPpI7Pb/oufR5FcZ5h8DrzBA5BaUHgNKBnvuAKxbUH4UURnQP8zxZn2B0XSv/zWGesES2qe2e67ZL6F1ekPn2/kSemdo2T0Nex7FIyjikCPYs7c7v+Z5XK5+j2s51VOn/SGPa37l87lcwx7Xsuqn1n2MxzX/G4zhhAOTZyosnNcXgEFfdm2WQgmoFAuijKjgIU4SDy14YDQYGEbV2NTwMPYFJqKJAbHIBE2reb29rroHhaKrG2axrNqru3I/TSzMYVmtH9eH9eWmudp/omQio7mVI4fKWvRN8/NIzTCDmDC+dHV+RpikEGQyu8pm2no9h1Iqo9nVvj/euYjiaU0V57KIzuk9CmWyiMpf5+r+dF4zaB6Hp3u6VDKaHqFwmmuAM5lZYzSY7pugJsHRUWqHPfQIvWNhaJLilFVRj+bpEHq06kl1PQd8TvJh4olbj+oh3Ja83El6hWHw1iN9Ntic5uVG8LfeHjkbZE6SHYXhenTPCZfT5us5mvlQK59b85R2PR4mp2mc1pCnQOQ0nRNb7iR4nOYDxR3z6vF/JkHjFK3TXaGpsHiM2inT83RInKJ4HldoDjg8VvWUup4HCid5cSOAcB/UWQwGp7xU5DlN9jWmBeENeRc4Ci+dW7PJlo7Dm1vqQCQeU9y4yJQlYPfA280RjLcQTBhQPoIoJKtNiMhL7KrTNI6CxkP1SZLjtJ2wxXByjHaS0i6pPxE0D7xDP21e8j1SEPTQYMlz6KXfIJL3RrxA737PYvrTsHXEa/Sy63nfZkK89QiqvZz2tPjmqSw5McxgIcIc+yoD2HPJl0kOyZmDQH+pF5puoQQ4Pe9LTYqV/pLcOv1lIqNGvwTBThcfHUb6ZVh2+gvEx5V+Iao9Yk6frTsM9YZF1E9u/xPDpufH3YML4YmB0wuA7wHJ00OnF0Dgg07d9ODpJWD4MCaZHsa7DBaPVD4xgHcpQB6xKJ4lhHo5VJ7wBl/QBqOjqP8Uch7lIcCvkFQ39fRynUJ5ySQLwui6vLqUsZp46nzKN5nV0pU2ES/3vMJEtDwkdyxW7lE8AiknqYzDyT0C01DyoLZRGLmv/qYh5DF649DrkOZpyDVRdyI27tE+EzJO1J+Ci/tGuBlQ8QjlkXx1QPhEqDpCdxoeHpA/DxoeM0JHYOHhAXoCEk7SHI2D+6p7ZhQ87gWG3diYV5gNLqa9RMp6ou81FkC/419kmkUWQb5DLzMW9/a9yOyoN+0lhjFXn/jZEG+a6Bja1d+dZ0O7acKjoFef8jmRbuIcPEtzn45yE1VPat/jEW6iyokNegq6TVQ6tQVPQraJ/lYUru11tiah2iS1MzhaUxHtKL2TZvHpaDZJ80xu1BxIdrTuSfU9D4pNc/lGYNi+CXA5BDs4k3e+XRQzFwa/TIat7XgUB3w7RT/tJo+AaDG63j9um5+u3x1Tq+NpmDQZkkapG/21p0DozN966mie8KUnqHPkd56GqrAhDocGbY6ouCDtQia2ZYyUtqyqmDP4jLLxl27EqIu90qQrbtpVJjHa2ptHXo8zK069jMaIc5BdaWM/6xJn0ZhTj4Q5R3/IJUpV3BnHrqwJn26Jtt+r7bA/wljxlHQudYHjVB6jr8XoyENpx88BlKKoY1ucpKTrLyI0PVTVh1QpbZqZFByO5f54+Pv62P2E94COIOVMam6r41jnMEw6nx5n8gmqOhnMZbkP64dkm7k0Myk4lh+qv9+tN8mzCEw4k5bLerDd/mRH3FQ1YdKZ9FTb63FqYMKZtLw/7eu/SB6LUdpF5or3wR7+WI1B+mV0Qr9sglw2mwVrt+Elg4fdmZo9pV2+VkfKJLNYRm0zhL4d4Tif0y1u5dfpLjROvYzGu/Lw8nHfJB/lFxLpl9bZRFi8OM4kmsxsodbgAi1+GLPEC9Muo+9qs9tWP41cWKHEs62uGEL6ar9PwVj28VGsdDJBOxc9DaO5N46sma8/Jwr8+vOfWDtt4TPUT/3ezI0bzV/f7GIO0IInv1yddEpNr4zgFXtq4ZftfXm8ugPrn8NQc+HTfeEa4jWMrC+6Mnpq7wXgIFHVFib4wvVFFD6yotB7D9eQW2KnVJFP8efUUVD6tEo6vTqYafv3+e53148brK5bDSC/XJM5/rC7KsHaf10vZPY35VXfEOySTN9IrIIpObHkpz514qjfvu9Zks5zea6a9++Pnx9GV4cT9fyUyShtzys8ccNKw1PSFIXPz5lNUOpfl90u7ps9Jsnnsl7uZer++vbbueSfM1tO8CEE5al6DyNR+bK9zKlq3/wrMboC27dLjHOYqPb55ACIQP2A/Yn9m6n6p2zrJEt/N0f7RdrH7v8MiJfnKbs6t5aP5X5dXnam6mrcqUdYxmGwjMPUMsqP5XrT5OxefbBE/Pyo8nuHipSCn6bMw51X5ZyWQdP2aXleRfb3Tib9faXafvXil4nC3tscFtH29X9P1WZzWETbyxdTtdkcltH29WRtXy+l7bvJ2r5bTNvrV1O12RyW0fZmsrY3S2n7z79N1WZzWETb336eqs3msIy2f0zW9o+ltL2ZPPa+WWzs/fH7qdpsDotoe/fdVG02h0W0/Ty5L/y8WF/45d1UbTaHRbT99+S5/r8Xm+v/+++Ttf19GW3j3P6TsMgPtiWr+urFTxOFvbc5LKLt67dTtdkcFtH28oep2mwOy2ibXG8vl6u3ye3t5WLt7ZvJ9fbNYvX26uVUbTaHZbRNnK1qbQvNVoevvps4yx/ef7fQLH/46vuJq5jD++8XWsUcvvrbf03VZnNYRNub11O12RwW0fbjRO/o8P7HhbyjWtvEFX2tbaEVfa1t8rzw42Lzwo8TV6a1toVWpoev3v06VZvNYRFtU1cxh8VWMbW2yTb9ZTGb/jq5n/46Wz+VdAzF6+1xMyQSPz8u2AEEuvy8L7eHTUkFmJz/9Bz82FsgyC09oIUvLyqIhUzOtYiTkfyjZKhojyIug5hw0SSl19VN+bg5onCYCIU44ezKrlyocboynHBZZc3pktHq2sSzK7yp/3qsupH0PbrOSeZQgw+ifTO2mRFpx/VPrOjF1C7ak8c8CkdV1py1dFce0jXARDNoOIyph8O89XBsn0jSABPNoOFh87gvN+t/JmmAiUZq6JvJfTBm7/RN+wVfr/9Wdg+A/lw7Mofn9m8DjkDz4BgfABUQN/OfE3Hj7X358Ndfh0vzj0WNsFGl/vrXqFLtY+NLxbfRkc0QF3vobXd0OcEtV5uqjLFg+9jocuoB669VN/q6U9DpudEl1cPz15+jygJPji7tEF3aYYbSrqtNdawiCwwfnmK5X8vNY0RbBE9Os15kecGz0ywYWeJhlhK9YSILxY+PLvdD9ZnwvXBx7VOjS/nYyIwo5/Tc6JLqB/frmKLOD44ui73Xv1PY4AX+EaVdruuEu6t1PW/UvffF9jqyqbDpJsxKUNe++ljtD9U3tkVGDUJEiiW0RNYPmWYmPb+tj9W+cc9+H9bx3j/7PrmVrIzIAXp6vKzHpFOBDaPyxbk/pXl4wBG1f+n4oDbn3pNAwLNYd9LX/xZ9jujlD6+/q7Z1NW2+3ZS3Zy0gSrvJDj3W/76NJsbNu6s2DyllPG0TsAXhVCPOK/SWPXQQiEzcaOYOc9zt9mQcf4yK5z51mpYB5LvZ0dH5UYraxPMKKre3j+VtmrFAoj+lsfjy/UGFLKlWTupnazYdPa7xjNQ1dxPqqmuyWEZcMxkxh39Yfec0f0pjaov3taOSqsVrn60pYTVtSxqlau6G1NFm29ES0tZpLWj9pzWe9ak2+GN1VOL1jE0GaGhbS6qWuRsKVGTbyMyCdvTxPFbPrufs3cINpC7a14VMqoRdeMnEtCYCVbRtJFnN3I0k0GRbyQySkLv94uHh7UO4Q9OVdn5otKt9rP44JhTx1D/f+7ZA/OgGSRYc6WeDtE4v8/JbuJOZJuH5Fm9kRuiIc0HePN5fVuR1CTG6cCZzChxYl/XqilmiJcqJWAH0SopdDIyU9Yq79SJF26veyy/GCTzudpuxutq0CzT7iQ1+7jrqbv5F6IKJ0kdIHNDQC1pw2f75EcWCXcr6mZe7+/tye/3143pzTXxvos0pfGr09PPu+7c//fz++1c//Pj+2x9efJdQ2tNu0hh4SGbYr+7XVz+9e/32zUiBKPVCGn948ea7kQJh0oXUvX7z4y8/j5QXpF1I39tffh4vMEw8u8If3tbmGdVBOimX0Ta2e1CJl1E4qnN0Ui6jbVzX6CZdRt3IjkGknUNfbMxLj7KY6JekanrY7273ZfcjWT0azkmIStkdqyv03agkPXfl4cUVefV9jyKYaAFNbQDoi/1td3+4z1ZBsuV04XV2vLRzygXU7bZNnLn1//926O5196jrpFxCXXql7ZasrfXh3ePllXs0RRRKN4+y8MuQ5MWyfZJ6b9xKKnv3eEws/JRijtIfUgeiU4oZSi+Th8GyOwaOLn1f98CUstvnZyj5U/PhwZSifYKZ3vrbdXuzf+rrw4Rz1cPPu2+pD54M1cYp2Xw6XtZD326UlHPKGdRU28Pjvnq7/7Zcb15sr1/9sU6yE518Bl21C/Jml+ohwESzjZbfQ8gZPWJ+H4E3U1W83aZXCZl6jnaT2lBmaxmH6vhyV7tbV8cfMO+N0EGmXmCW91+K9aU0Oz0pOpn0M3lKIeF78cA28PpPKSwvcUXmc09ZhjVi+bXXVXU49HWRU4nhswmr0bD8cLZ7ZN2LU7numYQ3RN+97nVoQX12Hdi0kpoDRG3Te31Tzzg369t6oB8umU83Tx3fVsdfDp3Lyzk1+OlZNbzafkyTAROMVpJCG2BrH0QMvd+qHpYyCBpOYuLowkQ5EYzh3FsiwcI8kgbwAlYVwxQmCosjCydhCThhqrDIqoohCROlxPCEk55oiJAuKh4lnNVwn6oaWWo/RDgbpUsOJpbbiw9QY5ix3H5wcCqXoAXTyu1DBmd/AnOCaWX2woJToV1CMP1NBzFB8Mo0G5jh3fsBQVgDBBWYRcEAGsAiKB4wTUcCFDiJGSIB0xQN4gDoXRDr3DlGvD4QgEa9zup/rvKHEAChg1z3T2wfUQ1i3hYQv+yHa5GUtf7EyThlxX+SmLzMTxepgQcKjn3dPG7thOU01f/7SqSs9PFhN5i1O+nWZhuR6e/Pak/muvrjyV/+dQr++suT7Ll8vqqfvVlXm+s63W8+PLNxrJrUv7d/+7VquEHzhHvkPy6ePPvt4plWz2W++v33Z7/5FPYP9h/sY6L+TVCPieCxrP4teyZXz1e5CR7Lgsck95gMHlP1b5IqVAWP5fVv6pnMnptcBI/lwWO6/i2nctPBY6b+TVOPmeCxov7NPMvz50aGr1AEj9VG+a2gHluF1dvU9op6TiA7WENckE+GphBNlQtBPhlaQzS1LjLSuqFBRFPxgjSJCG0imroXinwyNItoql+QhhGhZURjAUHaRoTGEY0RhCGfDO0jVlzjEaGFssYOoqCyzEITZdZEpDEz1FtsdyF7XxaaKLM9huyAWWiirLFDlj1Tq+cKlx6aKGvskMlnyjxfFeG7Z6GJssYO9fqOejI0UdbYIcvJJ0MTZY0dMk0+GZooawyRGfLJ0EayMURWUE/K0EayMUS2Ip8MbSQbQ8gL8kk0qDWGkGSHk6GNpB3YMvLJ0EayMYSU5JOhjWRjCKnIJ0MbycYQMiefDG0kG0NITT4Z2kg2hpDkeChDG6nGEJIcElVoI9UYQpL9SIU2Uo0hFDkoqtBGqjGEIm2k0NzTGEKRNlKhjZSdf0gbqdBGqjGEIm2kQhupxhCKtJEKbaQaQyjSRiq0kbJDHWkjFdoobwyhSBvloY3yxhCKtFEe2ihvDJGTNspDG+WNIXLSRnloo7wxRE7aKEcuQmOInLRRHtoot24CaaM8tFHeGCInbZSHNsobQ+S1jeRzUYQPhibKGzvk5LyVhybSjR1ycjrSoYl0Y4d8RRSuQwvpxgz6gnowNJBurKAF9WBoH90YQWfUg6F5dGMDLakHkQ/XmECTboUOraOtH0f7e6F1dGMDTboVOjSPbmygSfPo0DzmgnMrTGgdw1rHhNYxrHVMaB3DWseE1jGsdUxoHcNax4TWMZpr5wb52NY4ZOs1oXFMwbozJjSOWbHujAmNU1yw7kwRWqcQrJNShOYpMtZJKUL7FJJ1kYrQQIVi3ZkitFCRs+5MEZqo0Kw7U4Q2KqyNVpSNCrQUKljHpwhtVKxYx6cIbbS6YB2fVWijlWAdn1Voo1XGOj6r0EYryTo+q9BGK8U6PqvQRqucdXxWoY1Wmm3zq9BGK8O2+VVoo1XBtvkVWrGu2Da/wovWC7bRu7/BZwXb7N3f4LMZ2/Dd3+Czkm367m/wWcU2fvc3+GxjE0Ouzdzf4LO2UzHLd7SGvbCeHb2Av0Cr2Avr29FL+Au0jr2w3h3ZtdzfwLOWKdANTHR4g2CbmMDEwXIFupEJzBwsWaCbmcDUwbIFpp1h7mDpAtPOMHmwfIFpZ5g9WMLAtDNMHyxjYNoZ5g8WMxgarSEEISxooFcaAkEIYVEDvdYQGSZFdv1EDowCgQhhcQO93hAIRQgLHOgVh0AwQljkQK85BMIRwkIHetUhEJAQjkjQbR0hCeGYBN3WEZQQjkrQbR1hCeG4BN3WEZgQjkzQbR2hCWEBBNPWJWZ8km/rCE8ICyGYto4AhXCEgm7rCFEICyIMAxqR3SyKoNeLAmEKYWEEvWIUCFQIiyPoNaNAqEJYIEGvGgWCFcIiCXrdKBCuEBZK0CtHgYCFsFiCab8K01nFt18ELYRFE0z7RdhCWDjBtF8ELoTFE0z7RehCWEDBtF8EL4RFFEz7RfhCWEjBtF8EMITFFEz7RQhDWFBhaPyNIIZwFINaCwlEMYTDGNQaUOSYqtulGLUKFIhjCEsryFWbQCBDWFxBrgQFIhnCAgtydSkQyxCWWBhmCwBZTLPrZYFwhtA8XheIaAgLLmgjIKYhLLqgjYCohnBYgzQC4hrCgQ2yujTeBtGsERDaEI5tkKZFbENYgmGY3RVkMMswDL2/gviGsBjD0DssCHEI02MxRDmEhRmGJAMCgQ5heQYz3CHWISzSYIY7hDuEpRrMcIeIh7BggxnuDN6+4jdHBMIewnEPerhD4EM48kEPdwh9CAs4mOEOwQ9hEQe9rhcIfwgLOeiVvUAARFjMQa/tBUIgwoIOenUvEAQRFnXQ63uBMIhwHIR2YxEIERZ30Gt8gVCIcCyEdmMRDBGOhtD9AuEQYaEHs2xEQERY7MEsGxESERZ8MMtGBEWERR/M8gNhEWHhB7P8QGBEWPzBLD8QGhEWgDDLDwRHhEUgzPID4RFhIQiz/ECARFgMwiw/ECLJLAah3dgMIZLMYhDajc0QIsksBqHd2AwhksxiENqNzRAiySwGod3YDCGSzGIQ2o3NECLJLAYhJ/gMEZLMUhBDgscMEZLMUpCC3kFHhCSzFKSg99ARIcksBSnq6l09r52K8FlESDJLQQrSK8wQIcksBSlInyhDhCSzFKTIaQ3IbJaCFOTUnSFCklkKUpBTd4YISWYpSFHQGpDdHCEhg38QIMksBCloEyNAklkIwlUDMpuFICsmoAKZzUKQFd0cOnEaGV8NOFIjY4ObMhyqYRnIilwPZzhYwzKQFd3KcLiGZSArupXhgI2MtxqO2LAIZEX6khmO2XB4hM4WGc0SkBXddhEdySwBWRnSEIiOZJaArGijITqSWQKyorz/DMGRzAIQLltkNAtAOLnIaJIfIREbySz/EBd0O0dwJLMARFwwsUPIbJaAiAu6SSI8klkEIi7oNon4SKZc4BrdKBEgySwEERd0U0OEJLMURFxospYRIsksBhEXpFOQIUaSWQ4iLkivIEOQJLMgRFysaBnIgpaECEFbEGGSzKIQIWgLIk6SWRZCt2SESTKLQoSgZznESTLLQgQd+5chUJLlLvaQNjYiJZnFIYKOAMwQK8ksEBF0EGCGaElmkYig4wAzxEsyC0UEE+GHiEmWO/vRMxhiJpkFI4KJ80PUJLNkRDChfgibZJaNiIzurgicZA6cZLQFETnJLB4RGW1BxE4y7QJIaQsiepJZRCIy2oKIn2QWkoiMtiAiKJnFJM1xbfJhZEELSkRGWxBRlMySEiFpCyKMkllUIiRtQcRRMstKhKQtiEBK5kCKpC2ISEpmaYmol86qnlEKiR5GFrS4REjagoilZMZFAdMWRDAls8BESNqCiKZklpgISVsQ4ZTMIhMhaQsinpJZZiIUbUEEVDILTUSzgiYGRkRUMktN6PkEAZXMQhN6NkE8JbPMhI4hRjglK9z8Rz+LTFe44ZN+FlmucCHcdNNEPCUrdM8kjIBKVpieSRgRlawoeiZhhFSyYtUzCSOmklluQk+VCKlkFpsIRfc8xFQyy02aLyBSIhBUySw4EYrueYiqZJacCBp/ZAirZCtnP7qWEVfJLDsRNADJEFjJLDwRNAHJEFnJLD0ROd3zEFrJLD4ROd3zEFuRlp8052qIhyWCK/JC8FUnEV2RFxlfdRLhFXkh+aqTiK/IC8VXnUSARVqIInKy1UlEWOSFO0dBztgSMRZpOYrIyVYnEWSRF86C5HgvEWWRF86C5HgvEWaRgt32kYiySHfwJS+ojVCJMIt0Z19ycmqQiLNIy1IYEch67vwLPRZJxFmkOwJDj3ISgRbpTsHQY4ZEpEW6gzBcXSDrubMwmux/EsEWyR+HkYi1SHcghtzbkoi1SHckRtM9FcEWmWU9b4doi7RIRWi6iyDeIl08Cvl2CLdIi1S4t0O2s0iFfTtku8wdYqK7KSIuMiv6qgLZznIVQYc8S3xSRvI9Dx+VkYKvCnxYxnIVQQdTy855GWc7eqjAR2YsWhF0zLDEp2aksx7d//HBGal7KhmfnXHohY4LlPj4jKUrTCUj4znwwlQysp3jLoacJCXiLtJxFzroRiLuIh13oSMcJOIu0nEXpt4Qd5GOu9DRABJxF+liU8jzoYi6SEdd6A1uiaiLdNTFkE6qRNRFOupCb3FLRF2kRStszsh+Od/3EHWRFqyQLqpEzEU65kJvnUvEXKRjLvQmi0TMRTrmQu+ySMRcpGMu9DaLRMxFOuZS0I0TMRfpmAu90SIRc5GOudCOpETMRTrmwjiSiLlIx1wYRxIxF+mYC+NIIuYiHXNhHEnEXKRjLowjiZiLdMyF3neSiLlIx1xoLCgRc5GOuRR0/0PMRTrmQm9TScRcpGMu9D6VRMxFOuZS0I0fMRfpmAu9/SQRc5Ft8Ard+BFzkY650JtKEjEX6ZgLvf0jEXORjrnQ+z8SMRfpmAu9ASQRc5GOudDbOhIxF+mYC71ZIxFzkY65rGgLIuYiHXNZ0RZEzEUWjpqRbEsi6iILZ0Ha3Ii7yML1QXrcQORFuqM89D6MROhFWrxCDwSIvEgLV+hhAHEXadEKPQgg6iJb6kI/iw/+ui0H+llkOcdcGHcEMRdpwUp2QT+MqIu0YCW7oEciRF3kyh2ml/TDyHIrZzl6uYWoi7RghdWMbGfBCqsZWc+d9OE0I/u5wz6cZmRAd97ngtw2l4i6SHfkh4Z3ElEX5Q79NMvajk+iEHRR7tBPs14mnkVnuN2hHxrdKcRc1AW7ZleIuCgLVbKm3VP5oqPcFqpkgjS1QsRFXeiemkDnuS9MT02gE92Ot9Cjm0K8RVmkktG3dyjEW5Q7+CPI9qYQcVHu5I8g25tCxEW5oz+CbG8KERflzv4Isr0pxFyUO/zDaUb2c6d/OM3Ifu74D6cZGdBFt3CakQVFT+9TiLko0dP7FKIuKuvpfYi6qKyn9yHootxVJIIMVVAIuqj2NhIyBkIh6KLchSSC7tcIuyh3JwkzCCDuojI2YkIh6qJclAszCCDqotwxIGYQQNRFuUAXxiDIeO4cEG0QRF2UOwfEGARhF+UOAjEGQdhFuZNAjEEQdlEOuzBjEcIuypKVjN7oVgi7KOlOuZK+skLYRUl3iose5RB2UdKdGadvjkLgRVm4ktEb3QrfXaLcwUnSV1b4+hILVzJ6o1vhG0wsXMnojW6FLzFpzwSRvrLq3GPiLgSizY2vMlHsXVoK32XiDgXRoeQKX2fiyAvTjPCNJu5YEL2BrvClJu5cEL2BrhB5UTx5UYi8qFz0vB5iLyrv2WtXiL2o3B1boJsnYi8qd0e66OaJ2IvKeesh8qJyZ716hhLPRefWGmS93B0z1xTpU4i8qNxZz9API+vlznokQ1SIvCgLVzJJHnRQiLwoC1eyJmKeeEFEXpR2B5cF/TCyn4UrWRMzTz2M7KdVTzNC5EVpdyZP0jnju4TcpVyKfhhZ0MKVTNHmRuRFaXdXgKYfRhbU7hysoR9GFjTu5o2CfBiRF2WcBVf0w8iCxh2Fpc2NyItyB4dy2tyIvCh3ciinzY3Ii2qjXeiBAJEX5c4O0du7CpEX1R4eogcCRF6UYTceFOIuyh0eYtoc4i6qj7soxF1U0Wc/xF1U0Wc/xF1U0Wc/xF1U0Wc/RF6Uu0iFGRYRe1GF7hkWEX1RhekZFhF+UUXRMywi/qKKVc+wiPiLcvyFGRYRf1GOvzDDIuIvyvEXZlhE/EU5/sIMi4i/KMdfmJEO8Rfl+Asz0iH+ohx/YUY6xF+U4y/MSIf4i2rvW6FHOsRflOMvdDSGQvwld/yFjsbIEYDJLWSh70ZF/CV3/CUnFxw54i+5u3UlJxccOSIwuSMwdDRGjghM7giMpi+KQwQmdwRG03fFIQSTOwSj6eviEIPJL9z1lPSNcYjB5I7BaPrSOMRgcsdgNH1vHGIwuWMw9OicIwaTOwajyZ2pHDGY3DEYenTOEYPJHYOhR+ccMZi8vYGFHDVyxGByx2Do0TlHDCZ3DIYenXPEYHLHYOjROUcMJncMhh6dc8Rgcsdg6NE5RxAmdxCGHp1zRGFyR2Ho0TlHFCZ3FIYenXNEYXJHYejROUcUJm9vhiVH5xxRmDzr8UNzxGHyrMcPzRGHybMePzRHHCbPevzQHIGYXPb4oTkiMbmLf6GdnhyRmNyRGDqmJUckJnckho5pyRGJySUbvJQjDpM7DsMMBIjD5C78hXs9ZD/HYZjRGXGY3HEYZnRGHCZ3HIYZnRGHyR2HYUZnxGFyx2GY0RlxmNxxGGZ0RhwmdxyGGZ0Rh8kdh2EGXMRhchcBwwy4iMTkjsQwAy4iMbm7n4UZcBGJyVsSQ3dXRGLylsTQAy6+YdZd0cIMuPiS2ZbF0AMuvmfW4hZuwMVXzToWwwy4+LZZx2KYAbdz4WzeM+DiO2fzHpaW42tnHY1hBlx886yjMcyAi2+fdTSGGXARjckdjWEGXERj8pbG0AMuojG5ozF09F6OaEzuaAwdkJcjGpNrfgxFLCbXfWMoYjG57htDEYvJdd8YilhMrvvGUMRict03hiIWk5u+MRSxmNz0jaGIxeSmbwxFLCY3fWMoYjG56RtDEYvJTd8YilhMbvrGUMRictM3hiIWk5u+MRTRmNz0jaGIxuRF3xiKaExe9I2hiMbkRd8YimhMXvSNoYjG5EXfGIpoTF70jaGIxuRF3xiKaExe9I2hiMbkRd8YimhMXvSNoYjG5Ku+MRTRmHzVN4YiGpOv+iyIaEzuaAwdwZMjGpM7GkMHFOeIxuSOxtCbTzmiMfmK3c/NEYvJHYuhA5VzxGJyx2Lo2OMcsZi8ZTE0BkEsRrcshsQgGrEY7YJh6FBljWiMdjSGHgg0ojHa0Rh6INCIxmhHY+iBQCMaox2Noe8E04jGaEdj6IhpjWiMdjSGDlfWiMZoR2PocGWNaIx2NIYOV9aIxmhHY+hwZY1ojHY0hg5X1ojGaEdj6HBljWiMdjSGDtDViMZoR2PomFuNaIx2NIaOudWIxuj2QlzagojGaEdj6JhbjWiMdjSGjrnViMZoR2PomFuNaIx2NIaOudWIxmhHY+iYW41ojHY0ho651YjGaEdj6JhbjWiMdjSGjrnViMZoR2PomFuNaIx2NIaOudWIxmhHY+iYW41ojM7YPSWNWIx2LIaOuNWIxWj+JJJGJEZLd1cn3S4QidEWtjD54u9Z2Avp6CtSNOIwmucwGnEY3d6NS7c2xGE0f/+LRhRGuy/40BevaERhNH8ISSMGo2XPTpJGDEa7D/nQF7poxGC0+5YPfaGLRgxGK/YrchoRGK2c5ei+gQiMVu76d7pvIAKjlbMd3TcQgdHKfVWBbvCIwGjF3rikEX/Rjr/QjplG/EVbxCLpO2U04i/aIhZJ3ymjEX/R7o5cUWsunmdYM+Iv2iIWKeQzqZ8XF0gz4i86d9/MohsR4i/a8Rey4hB90RawsIqR9SxgaR7OTC2iFi7yZ0o/vxA5SocMaVlLkE7T6ZBV8wKnM3Q6ZOB8hdMVdDpka32B063IdPjDQVqgdNkFnQ61AJ3hdKIBI/VEg9KhxqAlTpfR5aF2YdFNkE7S6VAj0TlOp+h0+BtEuL1kdHvBXyTSuL1kdHvB3yfSuL1kdHvBXyvSuL1kdHtBZEgb3F6au2UJ+yFIpA1uL5JuL4gXaYPbixR0OtRejOwZaRA60ka1D2f6uR0YJN24EEXSJsfp6MaFgJI2GqejGxdiS9oYnI5uXAgzaVPgdHTjQsRJmxVORzcuBJ+0u0gYpqMbF+JQur1UWDbDeK7ww6hlFBkuhB65EJLShUTpFN0SEZ3SBW4kim6JCFTpAjcSRTcuxKx0gRuJohsXwle6wI1E0Y0LkSxd4Eai6MaFoJYucCNRdONCfEuvcCNRdONCqEuvBErHjECIeukVbi+KbpQIgOlVp73Q7QyxMO2+/kTfbaMRC9PuA1D0/b4asTDNszCNWJi2uEvm9CoDsTBtcZekYw41YmHa4i5JxxxqxMKMxV2SDmIyiIUZi7vo+3UNQmHmwn22i/4mM0JhxtIuSV8/YxAKM+57UPRXFA1CYebCmY/08Q1CYcZ9EYq+dMUgFGYs7ZKa9MUNQmHG0i6pSWsbhMLMxYpvcgahMGNpl6SvUjEIhRnBBpYZBMKMZV2SvvHEIBBmhPvyGt2KEAgzlnVJ+rYRg0CYsaxL0pEZBoEwI5z96JaBQJgRzn50y0AgzLhvQ9H7lQaBMGNZl6S/DmUQCDOWdUkazBsEwoxlXZIG6AaBMGNZl6QBukEgzFjWJWnMbRAIM5n7fB5tQQTCjGVdkubLBoEwY1mXpPmyQSDMZD3HUwwCYSZzFqTNjVCYsbRL0jDaIBRmLO+SNIw2CIYZB8NoGG0QDDPuK9Y0jDYIhxmHw2gYbRAOM+5b1gW52WsQEDMOiNEw2iAgZtwXrQtyJ8YgJGYkC1UMAmLGfdW6IPfRDEJixn3YuiB3nA1CYsYhsRV5ytAgJGZcWBKpGAExo7IexQiJGYfEGMUIiRmHxFYkYDIIiRn+Wh6DgJhxQIxTjGxnqRerGFnPUq+GKJCKkfUUewu5QUDMOCDGKEZAzDggxihGQMw4IEbvORgExEzO3h5vEA4zuepTjGzngBinGFnPATF648MgCmYcBaM3PgxCX8aFI9Gvh2znaBe9R2IQ4jIOcdF7JAZxLeO4FjOwIJhlHMxi+jQiWMYRLHr3xSBsZRy2ondfDGJVxrEqpqMiQGUcoGLcPkSljKNS9GaNQSjKWMSk6B0Yg/iTsVxJ0dsqBn8w230xm94rMfij2ZYgKXoDxOAPZ1tspOiNCoM/nm2xkaI3Kgz+gLZlRYrefTD4I9oWECl698HgD2lbKqTo3QfT+Zi2/c4Nvftg8Pe03dEwepfA4E9qG/Y6SIN4kLGcR9GH5g2CQKZwXyii138IAhkLdxR9AYRB5MdYoqPoCyAMwj3GYhxFXwBhEOMxlt0o+gIIg8COscBG0af3DaI5xlIaRZ/eNwjhmMLZj4yoMYjbGMtjVEYPXgjWGPeJKWZmRYTGuG9MZbQFEZYx7UemaAsiFmPcV6Yy2oIIwBj3mamMtiACMMZ9ZyqjLYgAjHEAJqMtiBCMcV+aymgLIgRj3Kem6JgogxCMcd+akrQFEYIpLGVRkrRggRBM4Y6GSdKCBWIwhcUsSpIWLBCDKdzlPPSZ9QIxmOKC3U4vEIEpLGRR9CX1BSIwhfvgFH1JfYEITOE+yk1fUl8gAlO4r3LTl9QXiMAU7rPc9CX1BSIwhbsOmb6kvkAEpnAEhh5wC8RgCpHxA26BGEzhLkSmB9wCMZhCKH7ALRCDKUTOD7gFYjCF0PyAWyAGUwjDD7gFYjCFKPgBt0AMpnBXItMDboEYTOG+0E0PuAViMIX7RDc94BaIwRTuG930gFsgBlO4j3TTA26BGEzhbkWmB9wCMZjCfaabHnALxGAKd0EPPeAWiMEUmeEH3AIxmMIFI9EDboEYTJGt+AG3QAymcOFI9IBbIAZTSNEz4CIGU7iAJGbARQymkLJnwEUMpuhjMAViMEXLYJiHnQV/f/Zkvf1Y7Y/V9evtdfXHk7/89tuT9++Pnx+qJ8/+9eT92v1j9szm+eQv/3qS1f/372dPpPtP88E390Pm/yU7/cuqfVTl7ocmqKf9oX2mCeewPzTsxv2ghP8h9z+0+TTr4vaHovmh/ql9Hftb83rvr+7KvdMM1efFWX9zaNmVXc+TXC6b3bbaV7fr3fYQZFQv+E4ZNUF2XPrd5vF+G6SUIKVy+p89aa4DsD80J0/dD/lF+0Nx4WVKvpjtsf6Hw81+dx++7wUozGS+sMwX1lZ67qu4OSQxUMZxF5SgVrAE4UsQvgTpS/BFGcWVcPO42fBvksFylC/H5yq0L8dXpDEx5aC3qRfQoBTpS/EvIXw1KV+cYU1/Vx6uHvf7+t+aplge21/W24fHY9iUctiU2No550dkoWAWbDNZ3z9squafymPdoK+rY7nehM06g9Y8mWzFNgoyx5vd/rq6ediFWRvQFJtTWok5Vtvr3Y1988PucX9V1dmvmydC8yloPrYB9JZxONbjxm1PIRqOITL5RT5sd5/QiABV52wD4DJ0gsN60HCYY0c3LsfHLSES9j83EJNZNhbynasMW2kBKk4L3jpNFk3/R31zdQGT9ytwydfhK6wk7CVZbwbE1GFgnfoRdNWvo0mAawHOHIIdPlxTD3sQaCfNIZbelM2DKLmEyfnqP9husFlvw4l/pWHtsSNCJ53UsHUbP6T6AVQUfkj1E59Z+fmONVFTSK2y2qM3hBIvWInUfC4LqHLlVXpxmZ+Mcz+x+RmuOT/DlHP4sH7Y4VrMYC0KNqkdfvZVWb9jqDOHOrXX6ecl74Q1J7Xb2mTbyfGuop0kDdvZhTeLd8dyw6quc2Q6j4Zt7+Jkcl+rhh2i6iw/rg/ryw2nFdRHc5VKm7HvnoZtQo/bJtl1PXiGTSiDnYQ17cdys74ujxW0U9igFGxQphWmVv7VpZeqfbWu2GrtrYB8BWuWF+zy6B2eV3BgYpsNzIkapQVs4KxdYS6oE0N36IKrlBKmaT7NcF6WrFq3RV60Vdt8ooHJ5QrP7s3a/JRVg0BtDgXbU8vr666P33zq8qxHc0Y5pT2EiQ1MzI1ideL97lOQUF7AhJwBXcKwSClgSm5Kq1PW/vI2nFYEnNUln3az2d3cBAmBWtFaKvOetiy4+anO6Lirm+76cPM5MBxcVrVjlsjapiDY6a683z1ug34g4BAgFWt4m5CWAruk8FK0l8JW0fYa5gJHNs3K315fB/1Pw/nFL6l9LfjZV2jO7bD57YIhUcMO7dfd0udY+BzZdrr9TFdSsBL3lZT7SmJb78NDPfEfd/flQ9hpQGPiXPIyeC8JPVrNrkrL/W3Q3g1oZ4Kdt+qp4bReCUc36P1dsGY4gqVImB760BdsszhWu5vLoL6bc02gZbDmOh6r+4ewQ8AWIL0nJL2tmg+CtT+wLfsxUCJgy87ZOvhYr0bKeo7Y7K7KTTjoNMeHQBaswX0Wx325PWzsKifMB1IFzQ4Sl7XDuHVeYzhjwhcRXAu6XJeHw+5qXRvlQ/W57mG18/AYeIVNZNl50sm4tn+5Rq1eQrfKCK4xXm7Kqw+B8As4xK28/dhlvs2AGPqhbMla4RK9bfNZDVC6b0+ss9WkpwqH807O+XmXu7DPwyUgy7oud+U+GItX4EUz6fmmn2ay0zvk3Gxhc6wdxtBtuQCtOGNnGpe2qgeTDotoPtV7zqHofZ9qvw8HdgFXtPKC67wu8cfGYQyqBLo4km16TeJ6VXB7Fw4psAnUa6++1OvtzS58Z2DDjPWabdpP6+vjXVgw9JEk2+H/GY42cF2Zc4muyjARHOlZTn11GSaCg3TOmeSq2mzCvgAtqdiy6mRNG2TaEmTFGTsBN5l0W4OAXrtU3JjeJO7aM4flcqNIk7SZCbpdAHaild+UYMFKk0+zXqsnVuf9UzNeLmHP4LpVvSDb3laH9T+rcA1UuzHQnWbfaBMOTXBKY7Hy1aYq0VoDDgHsSqdJF7o/2sC5g33HzTpIBae8JtbX1nZx/qEnn9p1CxxA+MIFu7fhEu4eunM3xHmGdSPq9M0/1dPu5eN6g3CKgsOBYZdMdR631bbal5ubTRm6g01kM6gQ/vURCBLQY828AyxZN/oKzWPB4oAdkXYbNOQbOPV6/NJ8sYvNAG9fKbhDov2Okvchcr/5l/v9vLzg5vXWLGGbMLBN8O+1rV3jx6tj+HYQWz1p1xHuv56/CN3+kF20y7FMaj9i+NrwW1bSp5Z+GSk9tZGy8DO+Jzt+M1H5hZ7ye2rq9Ezu/8V4DOQRRe57UO4Xbc39R/YHnbUPa196c5lF+4PyP/iHvTDtkxu/tjaeqxYsJWI33+AQrbRnuCtPHf1Gb+6Xg3nBdiVmFxFugWhfg57k5L5Oc7+CzVk+cIUWeXDqZllou7GG13pNQMy5c/td04JdYLbZuAVLuM6AgztLAIL09vEgDzj0sps6bR7EgKngosl40lKw65brqnqo/vexDLcIC+glXHAV2qR1q9d67bO+DYaQAvp+rNtZOynl4+boXI06h/L4uA9HULAO78+DsgdcB7C+jnWUquu+vUCIejS3CLmu6iVodfm5Xv6Fyz7IGtkdLZ+aWDbCFsFu+7r09b/s17WzssXkBDQK1guos1jfr4/h5AldgUycwkDY11jvqw5uzeA0qPjGgGY/6FobLlFVHkL2Al9V+WFRsS9dXYWFQte84Lpf5TZUQ0IK2zuXrq7e0D8AZmkHnsxHO0h2eG082aCNCeglSZZyVYFVJLSK9ghT++lL+30nnZ+id/y047fOtJ9ptd/g0N5Z0J4iaj/Xae1z9kO/9pOM1j5n7XP2k7n20Saa3eWhIZyE6Fmze9lxEQegehXrtTM0T0Ir65xtG3FhCXB/WvbUCAWy4CzJd4jtoR6Dd/ubhqo1KcMmq+DGhfH+R5FxM3U7IoUjWgFHNLY6McporpkCFuXmA5sOolmMSGGzZ315mIuzCs4GTi4sY7DZbHfd1gnXJFr2vstjPZofr+5qCb5JHLCWgN5zUwSmq/AFct9tPfTXfj+hBWjP/HL1mV+KPPOu1jM/PD/zQ2bzg++23qHS3hfRfoDTfkNb+zgB7QPktN+T14XP2eM37Vch2mMAzeIE61c0gy6a1GB37ku6uzxU+49o0xc2wt7E26uKzACuJfsyCNkLSMVG1fB+FGht7ACEezrcLywu/CYp31b/eKin/uBFoT/M1pVN1iU+cAeGnQjPacPtG0hy2QVmM8LVnepqt2v4Y93Xw/qG9Dzz9JwdrW7WtRu7b7gT2ueFnjQLCBtUd7irrpnKgKM+u/napRYQaBt2d7FOV/eP0HmH2MIvmQ27Td/mQKxGCojtBDdd3ew2192aCzwqlvw0AX3lVYB/m8/MAnfT0ws2mqnNgrAdXMOwnLZOfl8i8A2xufJOc8G+Q19IbLDl7d0jtfJLZB91nXtXLF9xHbwnIhaGVijvjCk/u+ceTuTe8ctZmNQUEsSfhO4LDLy58O8gT+/A57q96jQuGGWVsSG1t4i9w/gXFqTeVseIbUXoCbFos86quyaEK0rDDuc2KbEghLyCjVmpE3d2EOCUn7HbWE3KbrQLXFdl7E7cKS3qy7BDsMGvdeKexTycNtmgwToLKi10OFkwVqclfW6IMjS7/1qn3leHWnvgK8AQ3bYTeTdK+PMNgkUKTZ4o/Aduq2fsbqxLiGwAI45ybjCsUx6qYz0idtaYoGB236VJbTdxiYgb2F2l6VHuctiFcURw8SLZucym3gNPOTQk9PxFT/N/rL22avux25KaM3xnn6ivLTRZEOkl6PgFS0Jua7/RVkK9AgsjQ2DMmWKXQLf7KpzQM7gJLVeefbOxEDYDKgwM7izwbShc6sB3bpcDRKK78kAE6kFGYfyaomA9iTqTzlAL+z7bcOuE1LgBh2l2h7BOu911qHIGy/XTdcGGfdSZEPUN4ywlC0BOaXGfgdu1rANepybmGFjvLM+6q8pgZ0dAzyvzx2cy1llo0v8RDlLQXVZc87TpyH1iuLjP2FClJn04uEFGk7F76zYdXS6cWRVfX90YCejl+s2kzC9/Jcvt76pNGCUETxwYv1NkNDdE3IUsEI5r7UqdSLQu9/vyM7NIgZxbsIB4fV3/tr5Zo4h3uJmu2Ppbh40Urq00+6brgcUVdKcE69i4veH1FbdCg72da7bhSRUJlxcnbmrYxrfe1gLO0Qgh3ofdht0AszlQfiGk3hnLN0/Ju84h3IDLWP4cZoCCk6Ffw3oHPofranMsLz+Tuw0Cbl5nnkxJduLxeXYCraG/xEaR+dTU4A0D5wq2eTYZ1C5XM7aQQwucPrOetuWy6erIIGqUfN9uMuhMBBkckNVFS+4Ui3s7oFPBZbzxfK9gkU7P2hGYNfc7+7nfCs/ZuI7TEa0wN3hQ8cLvcftjyTnrYa63j/eXtXfIDAPQveOzsAdL2oi/w9V+/dAN04Jth3V32pxAtFOIsKDhe2rcZtKMKW50CfOAPkTGjuo4DzLeCmbFUjmfFbeMgCdMJcvd17vL/6kNxA35QSA5O94dyuNlc8p1j/AOPMsr+eHy0IkwFXAHI1OsWQ/EDh98bfZwVnusrxuRDsMplT5FqHjw4vdJcw+rcn4IPnBR6xoudv12Zi5932Kjnuocu1GrMO7Xq5P+4JvMfASgJ1PyFOGjeOHsEAtPVkt+qD/c7fbrf9ZjU7kJx0jIG30YkWL3Ydb1ciG0Dpy9+UZxeLxs/hFHU8F1vfE7KQULldbOclzPgOd12BXP+kAeHoZThXf+ld9YVn4fWPnlZ+4PF+R+qzlnEen60Nxasb7CNQ/P3/moNMXuizbBDSWKJ5OQChh2d+N/AiorYTymZoM//2fXRJZwVR3EZHAja72cRZunkIOx1NNap2cfGYbIKxYjNfjhsQxnBAlHIuOjCw3LsHwe3e1ceLuGYeuwc9QY+rrKxx0ovz2Y+6Eh93gtZ10eciyAWxaSPdXnk7azHR9jDHNjTwL53G7KzaY22vFQr5K6kwc8ByLZQCCfV7iuho1cspspPm049RSwXDYwfrNDYQ/wpKnxiN/4Ccb4KzyMHyAMy5OarN83C973zR5XMPjBnRbDLjxsBnZSJHKAMln32ubQNGUig2Dpx1dtnbY2LakBOtmGXb7ZLJrN5NpChAzYm9g5bLP7VK9ig3aVwbFMsR7VfflA7NHBtQnbNOqkHz6GUA4GKbLubZ3u44cwHYyFYyM0bbhECBjgqCnYbaY2YT3LBNOMCdA3Z542cbgRDdqGYPldnXK/DvorjOfK2I3L+zI8JQ47g1z5rUIWxdTJr6uH8OgMpEgZGyN0j+7cgG6t9KffFbviuN99rBpfDB+ogC/N4pxz4ur6Fl27ITK4ScVOSfchn4blanbEvw/qWkLIoNno9/uQRWdBQARXu4hmQIv4YGzpd7UlW094xSvhqsWw/sa2QZTNqmdd3tZT2gbZCM7Zkh2pfCaIh0Cfng3o9GlxwbBts8P0tvpEMFa4KpdsxFedtnuSDHI9KTkzb6s/kEMPN+0vTqcHvE/sj9cqdkG9DQ/kwBOAmj0BSMaZwaA/dm20bUz9cFdeVrWPjacH6Cqyp/i2tcXCKAy42ax8EIligTZeE0GQ364cfLiZj0sQPlfhzyYI/g0ttglLgI4k3yzCU4IQVGt2T8XRh2BED9Z4HOBGtyeAdutfNfPxdJJdK4UOLWjA/iSr30eTbEvabdszneV1M95eNzPiJTpfDMeTjN3XanM6kyE6LzhuszFWTURdMLsC2OZf7XTaiWtnTSa1G2PxUqso5EvQY1d8Lqe6Cd4DgnR/gCdjx43d1l0qU6+M7g/IJYSjtY+YLNgZebcFNRwogtOHP8Sfsa19t+2pGTgEe/ddspHVuwe78kQ4GQ6Mfqmm2FX3rkNGFey1xkeHFnyPoo7IwEWDD0It2L1hdFMGHFDZVr9HF3YEsbbtaOaPr3n6IVjo3IytaHsiD+7xaXP015D4Y3mCXVXv9p/X1Sa8igTupvndqMzn6MWy/tEOTTww3MOw22puRRRaBy7I/EZowXqxLge8HargHYfGu6QFO9+ec9ltic18iLaM96wL9kB8PSzsP+1R24d7+RkbtvUQni+H3FazI354e6uE5+w0uw3xUFXhfREwalazh74e7sL5EHYHtgE/bB735QbtWkoYDWj4AkNqBE8pavaIzMO++rjePaKNMEgL/aFM5cMQlQ/yVaxdfa5uBsERw3AjWbJw/5QHE3YMpx92m81nQjm70ENnGbTPgPB44SjPktSH/e6qOhy6HQVYp2D5cZ36dl/eh90eHpPz03jBRmk9hCsrFYzKXC8P9xjg5USZ9ymlP+Ir2eXjHkW9KOirGn88oWBJfpP+Zt1eixZmBLGIx+QFC3n34QSdwSAUebokYcWNGvuKvOkLbjSxoZrU7YpwkaL88S/ldeTei8/9XJKz7ue+ajwr6so1aDLW+4bJUUQ35FXsaOXS727wIUoYKMJXTJO2E0sAVzPsfVKntCg0AnIRduvPJaYMCle/PWXj2NWA7XnPwrsaokdHgygrdx4VB+PBxmXYyTjIohubBoMQDTtW7x9DvxGGqBQsifeHrcKlYh7cx8UkPZQ3gU4YsZqx7eVAhYfDXTjDYrQDEx4OBxF2EDo0YTj7JnyG2uRRsMEWfqos2Omgzs1ns7652m1v1rePaHRSMMioYGf7AxnADX1TwxrvQIZgwxOTXIs7cFHHcDJlvf1w6SbhCUnNJ7qrvfqwXcONBB/XYtQpMMzH9PmbJgw7Otu8uR0T2HtYEu5y4LZMYAtjqbbLgtkzgUcY2KHE5cBtmkDobNhwBZcHv2sCp252cDysb+v5+rqXksFj52zgKQ7ck9DbMvwg8WEdzEQZ3JLT7P6J2//tBoPABqpYR7Vn9xhOw4pFbvz1xjBewp9bUn4tn/vJJveHUvPTpwxORz75GgaFdracM8hnNOtdd/IIj9tmMLBPs7MYzGW9PYb3QMFruDR7KR7MghgVYT/UbNBss6GMyCwMtvWBOorlH/VKZ3+sVwooFziXa/Yog10mhX5icCscm+xMoXp21+FahZ9Sukfy4aavZi8yGzyNDyPaFHvhy+Hxsp5fwqEejn/8rBpumqrgFChn7mP5ofp0tw6bSgajGjS7cXqs/jiiI6RwqGc3eI+7S3QdPNwWbmertnv7oxDCR3UJH8Ml/KcoBDuaNwXVo+8ndLxFBgF5bTkeXbGrjCazq83ugC52Cy6Jbwcnv+8mWODQZNbeJBPUBHQCTyyrzdRfYOyvVRH+7ifh53rBbuQ35dkoQRuSHzpaQL/X7XecBHtW/pRhd+8CDlZ+TBa+njP2kqImx5tyc0CDJzCV9yu9Sr/2Fj7QT/i7r8Tp9mB247Ap7rYeK4/V/ngXXp8HT7L7iz09WRRsZDbKcLe39ySFrh4kPm2+3qpswHmT73prb2dER5VAbn6ry9cIy/5cbvUw21w3EHivcHQ6XQrt3cmMhTNNhpv1BxR0BdfN7Yv6vuEr0s8kwp9JFqfmx0bm2MKamJSOyYKgo7Yk3wbYiK4gO8pgQXBXm6sfh9gtoybXLZIHFwZ+ZPNtlUWuNqPHMLgkuEbSh8d7q/uVl/DfJBJ+U0n4bz8IdjO8Ke24ryf/sAPCHW2P2bxyH1Yg/JeWhO8u4nTdOrvr35T3uKUGwSCEoS3Sl+R3x4X/TJXww4Lwe0yCjao67pqjAmUYjhLcY+ez8HtNgr3/+LirttfYywkuQjxZxVc9ey/tcXdXfqxHjg2+ngpeRX3apfENKGOPNfv8KC8kOLvvlflYWMHSP5flptreojcOLunz2XmTsK6qy2672x3vup0Z3p902knyc2vGHp13eT7sdw91lkEjhmGVp+0z/+2SjD3hHWZ4hc8WwO+CnQ5n+5E4Y6+/cLk2Xl7X0YQrHV+HPgxEsJza5Yi/ygc3ofww4OO9hT+aI/yndoQ87S+eBjh+prbQK2TRcInnC/FjwIpvqLtwwIUrLsNuHh53dpHR6X0wQuM0YPguzbvAu64lBBz6M7+vKYtTbE5bbcrP48oPHcq7PMrv2CqfKvdDVe4nk9zfbWbY1aW9T6K5NARRP4h/Mj/+ZizA89dSIJ4A6Q57xsanRQHZsP1r7/Iab3TD8vYjiqeDi2yWMDWtG12yC9ca7M7V45a6sAYuONg9o1NS6qaagHZzU1x77IFcDMLzr7n32zR7nLPNqi9GH849PfkM3g4G141sRMvjw0M3MjiY/Tjzh7usEnr452v82KnyEW3kwcbDDjPBwljAT7Fkfn0p/Ygo2SAI/30nj647dBA6oYX3jQq2aRKnJ2EF+lOGig2Wshmg4x4wrJuNBP6IAgCgCdgVXwtFw+Eajh9+3DdsqGqbRTe4TsJ4TcPumXyq8O2d0Jnx62LFHmYirv6HvqZ/gcyfO5VsAFUnXENBiGE8TShYYmUzsP7oYYcu/YAQwPhxtWDD3NqcbtY4Gwi8/WKjYNtEeAAEju2ZJw+SvZAMXf0C17neYZfsbso/wxgW6LdoFvb/81OYCM5F9B7D78+ePKwfKntA6C+//f7vf/9/n3YgP6zwAgA="; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/Events.EventEmitter.html b/docs/classes/Events.EventEmitter.html index 59c68e1..1a16657 100644 --- a/docs/classes/Events.EventEmitter.html +++ b/docs/classes/Events.EventEmitter.html @@ -1,5 +1,5 @@ -EventEmitter | @gobstones/gobstones-core - v0.4.6 -

The EventEmitter class is a minimal observer pattern class definition. +EventEmitter | @gobstones/gobstones-core - v0.4.7 +

The EventEmitter class is a minimal observer pattern class definition. Instances of this class can be created directly, by new EventEmitter() or it can be used as a base class for custom definitions that require support for this pattern in order to allow subscription to custom events.

@@ -83,4 +83,4 @@

Type Parameters

  • U extends string | number | symbol

Parameters

  • event: U

    The event to remove the observer from.

  • observer: L[U]

    The observer to be removed.

  • map: Map<U, Set<L[U]>>

    The map to unregister the event and observer.

    -

Returns void

\ No newline at end of file +

Returns void

\ No newline at end of file diff --git a/docs/classes/Expectations.Expectation.html b/docs/classes/Expectations.Expectation.html index 18128c2..4a2a25a 100644 --- a/docs/classes/Expectations.Expectation.html +++ b/docs/classes/Expectations.Expectation.html @@ -1,5 +1,5 @@ -Expectation | @gobstones/gobstones-core - v0.4.6 -

The expectation class is the class that is actually instantiated for +Expectation | @gobstones/gobstones-core - v0.4.7 +

The expectation class is the class that is actually instantiated for any expectation. It implements all interfaces for expectations, even the finished expectation ones.

Type Parameters

  • T

Hierarchy

Constructors

constructor @@ -111,4 +111,4 @@
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/Expectations.FinishedExpectation.html b/docs/classes/Expectations.FinishedExpectation.html index 4f4e29a..8a8cb8b 100644 --- a/docs/classes/Expectations.FinishedExpectation.html +++ b/docs/classes/Expectations.FinishedExpectation.html @@ -1,5 +1,5 @@ -FinishedExpectation | @gobstones/gobstones-core - v0.4.6 -

This abstract class provides finished expectation behavior for +FinishedExpectation | @gobstones/gobstones-core - v0.4.7 +

This abstract class provides finished expectation behavior for all actions based on the fact that it's subclass provides an implementation for getResult.

Hierarchy

Implements

Constructors

constructor @@ -17,4 +17,4 @@
  • If the result of the expectation is false, run the given function.

    Parameters

    • action: (() => void)
        • (): void
        • Returns void

    Returns void

  • If the result of the expectation is false, throw the given error.

    Parameters

    • error: Error

    Returns void

  • If the result of the expectation is false, return the given value.

    -

    Type Parameters

    • T

    Parameters

    • value: T

    Returns T

\ No newline at end of file +

Type Parameters

  • T

Parameters

  • value: T

Returns T

\ No newline at end of file diff --git a/docs/classes/Expectations.JoinedExpectation.html b/docs/classes/Expectations.JoinedExpectation.html index c10a5c9..6f87882 100644 --- a/docs/classes/Expectations.JoinedExpectation.html +++ b/docs/classes/Expectations.JoinedExpectation.html @@ -1,5 +1,5 @@ -JoinedExpectation | @gobstones/gobstones-core - v0.4.6 -

A joined expectation consist of multiple expectations joined by a specific +JoinedExpectation | @gobstones/gobstones-core - v0.4.7 +

A joined expectation consist of multiple expectations joined by a specific joiner function. A JoinedExpectation implements FinishedExpectation, where the result is calculated using the given joiner function.

Currently two join forms are provided, Expectations!and, @@ -25,4 +25,4 @@

  • If the result of the expectation is false, run the given function.

    Parameters

    • action: (() => void)
        • (): void
        • Returns void

    Returns void

  • If the result of the expectation is false, throw the given error.

    Parameters

    • error: Error

    Returns void

  • If the result of the expectation is false, return the given value.

    -

    Type Parameters

    • T

    Parameters

    • value: T

    Returns T

\ No newline at end of file +

Type Parameters

Parameters

Returns T

\ No newline at end of file diff --git a/docs/classes/Expectations.Matchers.html b/docs/classes/Expectations.Matchers.html index 0651cb3..4615ad1 100644 --- a/docs/classes/Expectations.Matchers.html +++ b/docs/classes/Expectations.Matchers.html @@ -1,5 +1,5 @@ -Matchers | @gobstones/gobstones-core - v0.4.6 -

This object contains a series of matchers, that is, a series of functions +Matchers | @gobstones/gobstones-core - v0.4.7 +

This object contains a series of matchers, that is, a series of functions that can be called with the actual value (and in cases a series of arguments) and returns a boolean, true if the value satisfies the matcher, and false otherwise.

@@ -81,4 +81,4 @@
  • Answer if the actual value matches the given regexp.

    Parameters

    • actual: string
    • expected: RegExp

    Returns boolean

  • Answer if the actual value starts with the expected string.

    -

    Parameters

    • actual: string
    • expected: any

    Returns boolean

\ No newline at end of file +

Parameters

Returns boolean

\ No newline at end of file diff --git a/docs/classes/GobstonesLang.Board.html b/docs/classes/GobstonesLang.Board.html index 706621a..1367a06 100644 --- a/docs/classes/GobstonesLang.Board.html +++ b/docs/classes/GobstonesLang.Board.html @@ -1,5 +1,5 @@ -Board | @gobstones/gobstones-core - v0.4.6 -

This class models a Gobstones Board with all it's associated behavior. +Board | @gobstones/gobstones-core - v0.4.7 +

This class models a Gobstones Board with all it's associated behavior. Note that an instance of this class implements BoardDefinition, so it can be used as a valid description of a board in the Gobstones Interpreter and is @@ -458,4 +458,4 @@

Throws

removeRow on an instance.

  • Calling removeRows on an instance.
  • -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/GobstonesLang.BoardError.html b/docs/classes/GobstonesLang.BoardError.html index 5bd2881..841813b 100644 --- a/docs/classes/GobstonesLang.BoardError.html +++ b/docs/classes/GobstonesLang.BoardError.html @@ -1,8 +1,8 @@ -BoardError | @gobstones/gobstones-core - v0.4.6 -

    The base class of the error hierarchy that is thrown when +BoardError | @gobstones/gobstones-core - v0.4.7 +

    The base class of the error hierarchy that is thrown when an invalid operation is performed in the Board class and it's associated Cell.

    Hierarchy

    Constructors

    Properties

    Constructors

    • Parameters

      • name: string
      • message: string

      Returns BoardError

    Properties

    isError: boolean

    A boolean that specifies the instance as an error. Always true.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/GobstonesLang.Cell.html b/docs/classes/GobstonesLang.Cell.html index b9a39e7..37ace7c 100644 --- a/docs/classes/GobstonesLang.Cell.html +++ b/docs/classes/GobstonesLang.Cell.html @@ -1,5 +1,5 @@ -Cell | @gobstones/gobstones-core - v0.4.6 -

    A cell

    +Cell | @gobstones/gobstones-core - v0.4.7 +
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/GobstonesLang.Color.html b/docs/classes/GobstonesLang.Color.html index 03b7cb8..5aaf3a9 100644 --- a/docs/classes/GobstonesLang.Color.html +++ b/docs/classes/GobstonesLang.Color.html @@ -1,5 +1,5 @@ -Color | @gobstones/gobstones-core - v0.4.6 -

    This enum represent the valid Gobstones Colors. +Color | @gobstones/gobstones-core - v0.4.7 +

    This enum represent the valid Gobstones Colors. It provides a set of singleton cases, for each possible value, as well as static accessors for each case name string (that should be used as key for representing directions).

    @@ -98,4 +98,4 @@

    And they are cyclic, that is, the previous color of Blue is Green.

    Parameters

    • color: Color

      The color to obtain the previous value from.

    Returns Color

    The previous color of the given one.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/GobstonesLang.Direction.html b/docs/classes/GobstonesLang.Direction.html index 7f30d8a..911c943 100644 --- a/docs/classes/GobstonesLang.Direction.html +++ b/docs/classes/GobstonesLang.Direction.html @@ -1,5 +1,5 @@ -Direction | @gobstones/gobstones-core - v0.4.6 -

    This class represents the valid Gobstones Directions. +Direction | @gobstones/gobstones-core - v0.4.7 +

    This class represents the valid Gobstones Directions. It provides a set of singleton cases, for each possible value, as well as static accessors for each case name string (that should be used as key for representing directions).

    @@ -133,4 +133,4 @@

    And they are cyclic, that is, the previous direction of North is West.

    Parameters

    • dir: Direction

      The direction to obtain the previous value from.

    Returns Direction

    The previous direction of the given one.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/GobstonesLang.InvalidBoardDescription.html b/docs/classes/GobstonesLang.InvalidBoardDescription.html index 52cf8bb..c94189c 100644 --- a/docs/classes/GobstonesLang.InvalidBoardDescription.html +++ b/docs/classes/GobstonesLang.InvalidBoardDescription.html @@ -1,5 +1,5 @@ -InvalidBoardDescription | @gobstones/gobstones-core - v0.4.6 -

    This error is thrown when attempting to create a board +InvalidBoardDescription | @gobstones/gobstones-core - v0.4.7 +

    This error is thrown when attempting to create a board with invalid data.

    Hierarchy

    Constructors

    Properties

    cellLocation @@ -10,4 +10,4 @@
    height: number

    The height attempted to create the board with

    isError: boolean

    A boolean that specifies the instance as an error. Always true.

    width: number

    The width attempted to create the board with

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/GobstonesLang.InvalidCellReading.html b/docs/classes/GobstonesLang.InvalidCellReading.html index fcc6ab4..15bc9ed 100644 --- a/docs/classes/GobstonesLang.InvalidCellReading.html +++ b/docs/classes/GobstonesLang.InvalidCellReading.html @@ -1,5 +1,5 @@ -InvalidCellReading | @gobstones/gobstones-core - v0.4.6 -

    This error is thrown when attempting to read a cell, a +InvalidCellReading | @gobstones/gobstones-core - v0.4.7 +

    This error is thrown when attempting to read a cell, a column or a row but an invalid location is given.

    Hierarchy

    Constructors

    Properties

    attempt @@ -8,4 +8,4 @@

    Constructors

    Properties

    The action attempted to be performed

    failingCoordinate: CellLocation

    The coordinate the head was attempted to set into

    isError: boolean

    A boolean that specifies the instance as an error. Always true.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/GobstonesLang.InvalidSizeChange.html b/docs/classes/GobstonesLang.InvalidSizeChange.html index 360f22e..e57178b 100644 --- a/docs/classes/GobstonesLang.InvalidSizeChange.html +++ b/docs/classes/GobstonesLang.InvalidSizeChange.html @@ -1,5 +1,5 @@ -InvalidSizeChange | @gobstones/gobstones-core - v0.4.6 -

    This error is thrown when attempting to change the size of the board, +InvalidSizeChange | @gobstones/gobstones-core - v0.4.7 +

    This error is thrown when attempting to change the size of the board, but an invalid size is given

    Hierarchy

    Constructors

    Properties

    attempt @@ -14,4 +14,4 @@
    newWidth: number

    The new width of the board

    previousHeight: number

    The previous height of the board

    previousWidth: number

    The previous width of the board

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/GobstonesLang.InvalidStonesAmount.html b/docs/classes/GobstonesLang.InvalidStonesAmount.html index ddc9410..fc188c3 100644 --- a/docs/classes/GobstonesLang.InvalidStonesAmount.html +++ b/docs/classes/GobstonesLang.InvalidStonesAmount.html @@ -1,5 +1,5 @@ -InvalidStonesAmount | @gobstones/gobstones-core - v0.4.6 -

    This error is thrown when attempting to change the stones amount +InvalidStonesAmount | @gobstones/gobstones-core - v0.4.7 +

    This error is thrown when attempting to change the stones amount with an invalid amount of stone (negative amount).

    Hierarchy

    Constructors

    Properties

    amount @@ -12,4 +12,4 @@
    color: string

    The color of the stones attempted to change

    isError: boolean

    A boolean that specifies the instance as an error. Always true.

    previousCellState: CellInfo

    The state the cell was previously in

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/GobstonesLang.LocationFallsOutsideBoard.html b/docs/classes/GobstonesLang.LocationFallsOutsideBoard.html index 1b52976..3ce6a3a 100644 --- a/docs/classes/GobstonesLang.LocationFallsOutsideBoard.html +++ b/docs/classes/GobstonesLang.LocationFallsOutsideBoard.html @@ -1,5 +1,5 @@ -LocationFallsOutsideBoard | @gobstones/gobstones-core - v0.4.6 -

    This error is thrown when attempting to move the head, but an +LocationFallsOutsideBoard | @gobstones/gobstones-core - v0.4.7 +

    This error is thrown when attempting to move the head, but an invalid location is given.

    Hierarchy

    Constructors

    Properties

    attempt @@ -10,4 +10,4 @@
    failingCoordinate: CellLocation

    The coordinate the head was attempted to set into

    isError: boolean

    A boolean that specifies the instance as an error. Always true.

    previousCoordinate: CellLocation

    The previous coordinate the head was in

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/SourceReader.DefinedSourcePosition.html b/docs/classes/SourceReader.DefinedSourcePosition.html index 78085f2..595168b 100644 --- a/docs/classes/SourceReader.DefinedSourcePosition.html +++ b/docs/classes/SourceReader.DefinedSourcePosition.html @@ -1,5 +1,5 @@ -DefinedSourcePosition | @gobstones/gobstones-core - v0.4.6 -

    A DefinedSourcePosition points to a particular position, different from EndOfString, +DefinedSourcePosition | @gobstones/gobstones-core - v0.4.7 +

    A DefinedSourcePosition points to a particular position, different from EndOfString, in a source given by a SourceReader.

    It provides the right implementation for the operations given by its superclasses.

    Hierarchy

    API: Access

    column @@ -152,4 +152,4 @@

    It is supposed to be used only by SourceReader.

    Returns number

    • get _theVisibleCharIndex(): number
    • Private

      The index indicating the exact char in the visible input string in the source input.

      It is supposed to be used only by SourceReader.

      -

      Returns number

    \ No newline at end of file +

    Returns number

    \ No newline at end of file diff --git a/docs/classes/SourceReader.EndOfInputSourcePosition.html b/docs/classes/SourceReader.EndOfInputSourcePosition.html index 57c6ceb..3d30343 100644 --- a/docs/classes/SourceReader.EndOfInputSourcePosition.html +++ b/docs/classes/SourceReader.EndOfInputSourcePosition.html @@ -1,5 +1,5 @@ -EndOfInputSourcePosition | @gobstones/gobstones-core - v0.4.6 -

    An EndOfInputSourcePosition points to the EndOfInput position in a specific +EndOfInputSourcePosition | @gobstones/gobstones-core - v0.4.7 +

    An EndOfInputSourcePosition points to the EndOfInput position in a specific SourceReader. That position is reached when all input strings have been processed. It is a special position, because it does not point to a particular position inside the @@ -137,4 +137,4 @@

  • all numbers are >= 0
  • numbers are consistent with the reader state
  • -

    Parameters

    • sourceReader: SourceReader
    • line: number
    • column: number
    • regions: string[]

    Returns EndOfInputSourcePosition

    \ No newline at end of file +

    Parameters

    Returns EndOfInputSourcePosition

    \ No newline at end of file diff --git a/docs/classes/SourceReader.EndOfStringSourcePosition.html b/docs/classes/SourceReader.EndOfStringSourcePosition.html index f794ab8..6c96675 100644 --- a/docs/classes/SourceReader.EndOfStringSourcePosition.html +++ b/docs/classes/SourceReader.EndOfStringSourcePosition.html @@ -1,5 +1,5 @@ -EndOfStringSourcePosition | @gobstones/gobstones-core - v0.4.6 -

    An EndOfStringSourcePosition points to the EndOfString position in a specific +EndOfStringSourcePosition | @gobstones/gobstones-core - v0.4.7 +

    An EndOfStringSourcePosition points to the EndOfString position in a specific SourceReader. That position is reached when all characters in the current input string have been processed. It is a special position, because it does not point to a particular position inside the @@ -153,4 +153,4 @@

    It is supposed to be used only by SourceReader.

    Returns number

    • get _theVisibleCharIndex(): number
    • Private

      The index indicating the exact char in the visible input string in the source input.

      It is supposed to be used only by SourceReader.

      -

      Returns number

    \ No newline at end of file +

    Returns number

    \ No newline at end of file diff --git a/docs/classes/SourceReader.ErrorAtEndOfInputBy.html b/docs/classes/SourceReader.ErrorAtEndOfInputBy.html index 8e7fbef..506e328 100644 --- a/docs/classes/SourceReader.ErrorAtEndOfInputBy.html +++ b/docs/classes/SourceReader.ErrorAtEndOfInputBy.html @@ -1,7 +1,7 @@ -ErrorAtEndOfInputBy | @gobstones/gobstones-core - v0.4.6 -

    The error to produce when a function that is not supposed to be used at EndOfInput is called.

    +ErrorAtEndOfInputBy | @gobstones/gobstones-core - v0.4.7 +

    The error to produce when a function that is not supposed to be used at EndOfInput is called.

    Hierarchy

    Constructors

    Constructors

    \ No newline at end of file +

    Returns ErrorAtEndOfInputBy

    \ No newline at end of file diff --git a/docs/classes/SourceReader.ErrorAtEndOfStringBy.html b/docs/classes/SourceReader.ErrorAtEndOfStringBy.html index ef8174c..82cf09f 100644 --- a/docs/classes/SourceReader.ErrorAtEndOfStringBy.html +++ b/docs/classes/SourceReader.ErrorAtEndOfStringBy.html @@ -1,7 +1,7 @@ -ErrorAtEndOfStringBy | @gobstones/gobstones-core - v0.4.6 -

    The error to produce when a function that is not supposed to be used at EndOfString is called.

    +ErrorAtEndOfStringBy | @gobstones/gobstones-core - v0.4.7 +

    The error to produce when a function that is not supposed to be used at EndOfString is called.

    Hierarchy

    Constructors

    Constructors

    \ No newline at end of file +

    Returns ErrorAtEndOfStringBy

    \ No newline at end of file diff --git a/docs/classes/SourceReader.ErrorNoInput.html b/docs/classes/SourceReader.ErrorNoInput.html index 63193f3..c2f2ced 100644 --- a/docs/classes/SourceReader.ErrorNoInput.html +++ b/docs/classes/SourceReader.ErrorNoInput.html @@ -1,5 +1,5 @@ -ErrorNoInput | @gobstones/gobstones-core - v0.4.6 -

    The error to produce when a SourceReader is called with no input (an empty object or array).

    +ErrorNoInput | @gobstones/gobstones-core - v0.4.7 +

    The error to produce when a SourceReader is called with no input (an empty object or array).

    Hierarchy

    Constructors

    Constructors

    \ No newline at end of file +

    Returns ErrorNoInput

    \ No newline at end of file diff --git a/docs/classes/SourceReader.ErrorUnmatchingPositionsBy.html b/docs/classes/SourceReader.ErrorUnmatchingPositionsBy.html index 9d038c9..b280c2e 100644 --- a/docs/classes/SourceReader.ErrorUnmatchingPositionsBy.html +++ b/docs/classes/SourceReader.ErrorUnmatchingPositionsBy.html @@ -1,9 +1,9 @@ -ErrorUnmatchingPositionsBy | @gobstones/gobstones-core - v0.4.6 -

    The error to produce when two positions related with different readers are used to determine +ErrorUnmatchingPositionsBy | @gobstones/gobstones-core - v0.4.7 +

    The error to produce when two positions related with different readers are used to determine a portion of the contents.

    Hierarchy

    Constructors

    Constructors

    \ No newline at end of file +

    Returns ErrorUnmatchingPositionsBy

    \ No newline at end of file diff --git a/docs/classes/SourceReader.KnownSourcePosition.html b/docs/classes/SourceReader.KnownSourcePosition.html index 67766b2..9b9cd21 100644 --- a/docs/classes/SourceReader.KnownSourcePosition.html +++ b/docs/classes/SourceReader.KnownSourcePosition.html @@ -1,5 +1,5 @@ -KnownSourcePosition | @gobstones/gobstones-core - v0.4.6 -

    A KnownSourcePosition points to a position in a specific SourceReader. +KnownSourcePosition | @gobstones/gobstones-core - v0.4.7 +

    A KnownSourcePosition points to a position in a specific SourceReader. It is created using the getPosition operation of a particular SourceReader instance. The obtained object indicates a position in the source associated with that reader, that may be @@ -216,4 +216,4 @@

  • all numbers are >= 0
  • numbers are consistent with the reader state
  • -

    Parameters

    • sourceReader: SourceReader
    • line: number
    • column: number
    • regions: string[]

    Returns KnownSourcePosition

    \ No newline at end of file +

    Parameters

    Returns KnownSourcePosition

    \ No newline at end of file diff --git a/docs/classes/SourceReader.SourcePosition.html b/docs/classes/SourceReader.SourcePosition.html index b98b76f..706a031 100644 --- a/docs/classes/SourceReader.SourcePosition.html +++ b/docs/classes/SourceReader.SourcePosition.html @@ -1,5 +1,5 @@ -SourcePosition | @gobstones/gobstones-core - v0.4.6 -

    Instances of SourcePosition point to particular positions in the source given by a +SourcePosition | @gobstones/gobstones-core - v0.4.7 +

    Instances of SourcePosition point to particular positions in the source given by a SourceReader. They may be unknown or they may point to a particular SourceReader. All SourcePosition are created through SourceReader.

    @@ -39,4 +39,4 @@ of the position (not suitable for persistance, as it looses information).

    See the documentation of UnknownSourcePosition and KnownSourcePosition for additional implementation details.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/SourceReader.SourceReader.html b/docs/classes/SourceReader.SourceReader.html index f879ffb..b2fd6a8 100644 --- a/docs/classes/SourceReader.SourceReader.html +++ b/docs/classes/SourceReader.SourceReader.html @@ -1,5 +1,5 @@ -SourceReader | @gobstones/gobstones-core - v0.4.6 -

    A SourceReader allows you to read input from some source, either one single string of +SourceReader | @gobstones/gobstones-core - v0.4.7 +

    A SourceReader allows you to read input from some source, either one single string of content or several named or indexed source strings, in such a way that each character read registers its position in the source as a tuple index-line-column. That is, the main problem it solves is that of calculating the position of each character read @@ -311,4 +311,4 @@

    Throws

    KnownSourcePosition subclasses.

    PRECONDITION: both positions correspond to this reader (and so are >= 0 -- not verified)

    -

    Returns string

    \ No newline at end of file +

    Parameters

    Returns string

    \ No newline at end of file diff --git a/docs/classes/SourceReader.SourceReaderError.html b/docs/classes/SourceReader.SourceReaderError.html index 10fcf14..fd09133 100644 --- a/docs/classes/SourceReader.SourceReaderError.html +++ b/docs/classes/SourceReader.SourceReaderError.html @@ -1,5 +1,5 @@ -SourceReaderError | @gobstones/gobstones-core - v0.4.6 -

    The superclass for all SourceReader errors. +SourceReaderError | @gobstones/gobstones-core - v0.4.7 +

    The superclass for all SourceReader errors. It provides internationalization of error messages through a Translator. It also restores the prototype chain, as described in the Typescript Handbook.

    @@ -10,4 +10,4 @@
  • Optional interpolations: Record<string, any>

    A record indicating values for interpolations used in the value associated with the key given. It may be undefined if there are none.

    -
  • Returns SourceReaderError

    \ No newline at end of file +

    Returns SourceReaderError

    \ No newline at end of file diff --git a/docs/classes/SourceReader.SourceReaderErrorBy.html b/docs/classes/SourceReader.SourceReaderErrorBy.html index b861a35..7e619be 100644 --- a/docs/classes/SourceReader.SourceReaderErrorBy.html +++ b/docs/classes/SourceReader.SourceReaderErrorBy.html @@ -1,9 +1,9 @@ -SourceReaderErrorBy | @gobstones/gobstones-core - v0.4.6 -

    The superclass for all SourceReader errors with operation and context as +SourceReaderErrorBy | @gobstones/gobstones-core - v0.4.7 +

    The superclass for all SourceReader errors with operation and context as interpolations. It constructs the corresponding interpolation.

    Hierarchy

    Constructors

    Constructors

    \ No newline at end of file +

    Returns SourceReaderErrorBy

    \ No newline at end of file diff --git a/docs/classes/SourceReader.StringSourcePosition.html b/docs/classes/SourceReader.StringSourcePosition.html index 3ed29bd..fb23c1f 100644 --- a/docs/classes/SourceReader.StringSourcePosition.html +++ b/docs/classes/SourceReader.StringSourcePosition.html @@ -1,5 +1,5 @@ -StringSourcePosition | @gobstones/gobstones-core - v0.4.6 -

    A StringSourcePosition points to a particular position, different from EndOfInput, +StringSourcePosition | @gobstones/gobstones-core - v0.4.7 +

    A StringSourcePosition points to a particular position, different from EndOfInput, in a source given by a SourceReader.

    It provides the right implementation for the operations given by its superclasses, KnownSourcePosition and SourcePosition. @@ -203,4 +203,4 @@

    It is supposed to be used only by SourceReader.

    Returns number

    • get _theVisibleCharIndex(): number
    • Private

      The index indicating the exact char in the visible input string in the source input.

      It is supposed to be used only by SourceReader.

      -

      Returns number

    \ No newline at end of file +

    Returns number

    \ No newline at end of file diff --git a/docs/classes/SourceReader.UnknownSourcePosition.html b/docs/classes/SourceReader.UnknownSourcePosition.html index 85e07bd..e0e55df 100644 --- a/docs/classes/SourceReader.UnknownSourcePosition.html +++ b/docs/classes/SourceReader.UnknownSourcePosition.html @@ -1,5 +1,5 @@ -UnknownSourcePosition | @gobstones/gobstones-core - v0.4.6 -

    An unknown source position does not point to any position in any source reader. +UnknownSourcePosition | @gobstones/gobstones-core - v0.4.7 +

    An unknown source position does not point to any position in any source reader. It is used when a position must be provided, but no one is known.

    As source positions are only created by a SourceReader, there is a static member of it, the UnknownPosition, @@ -22,4 +22,4 @@ proper information.

    Implementation: Protected for Source Reader

    \ No newline at end of file +

    Returns UnknownSourcePosition

    \ No newline at end of file diff --git a/docs/classes/Translator.Translator.html b/docs/classes/Translator.Translator.html index 58fced6..43bcfd4 100644 --- a/docs/classes/Translator.Translator.html +++ b/docs/classes/Translator.Translator.html @@ -1,8 +1,8 @@ -Translator | @gobstones/gobstones-core - v0.4.6 -

    A Translation consist of an object that hold the state of the current +Translator | @gobstones/gobstones-core - v0.4.7 +

    A Translator consist of an object that hold the state of the current locale being used, and allows for switching between different locales and obtain translated strings.

    -

    The translation expects a locale to be given as the language definition, +

    The translator expects a locale to be given as the language definition, and, if constructed with the flatten options, flattens it to allow dot notation access to the different strings in the locale object.

    Note that this object does not provide mechanisms for maintaining @@ -60,4 +60,4 @@ to replace any interpolation matcher in the translated text (any text in between ${}) by the value of the corresponding key.

    Returns string

    A translated string

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/Types.BiMap.html b/docs/classes/Types.BiMap.html index b0fd9e6..de266c8 100644 --- a/docs/classes/Types.BiMap.html +++ b/docs/classes/Types.BiMap.html @@ -1,5 +1,5 @@ -BiMap | @gobstones/gobstones-core - v0.4.6 -

    A bidirectional map is a map that represents biyective association between +BiMap | @gobstones/gobstones-core - v0.4.7 +

    A bidirectional map is a map that represents biyective association between keys and values, and such that it can be accessed both by the keys or by the values. The types of both the keys and the values should be comparable by identity (=== comparison).

    @@ -116,4 +116,4 @@

    Parameters

    • value: V

      The value to search

    Returns boolean

    • Return an iterator for the keys of this BiMap.

      Returns K[]

    • Return an iterator for the values of this BiMap.

      -

      Returns V[]

    \ No newline at end of file +

    Returns V[]

    \ No newline at end of file diff --git a/docs/classes/cli.CLIApp.html b/docs/classes/cli.CLIApp.html index 7e7121a..e33c42a 100644 --- a/docs/classes/cli.CLIApp.html +++ b/docs/classes/cli.CLIApp.html @@ -1,5 +1,5 @@ -CLIApp | @gobstones/gobstones-core - v0.4.6 -

    The CLIApp class is the class to extend in order to define your CLI based +CLIApp | @gobstones/gobstones-core - v0.4.7 +

    The CLIApp class is the class to extend in order to define your CLI based application.

    Hierarchy

    Constructors

    Properties

    Constructors

    Properties

    currentArgs: any[]
    currentOptions: any
    hasAction: boolean = false
    isSubcommand: boolean
    onReadErrorMsg: string
    options: CLIAppOptions
    processArgs: string[]

    The arguments passed to the application

    +

    Constructors

    Properties

    currentArgs: any[]
    currentOptions: any
    hasAction: boolean = false
    isSubcommand: boolean
    onReadErrorMsg: string
    options: WithRequired<CLIAppOptions, "flags">
    processArgs: string[]

    The arguments passed to the application

    program: Command

    Methods

    • Set the action for this command. The action callback receives both the current command, and the arguments (Note this is one or more arguments, depending on the command definition. Mandatory or optional positional arguments are @@ -85,4 +85,4 @@

    Returns void

    • Write a set of contents to a given file.

      Parameters

      • fileName: string

        The file to write to.

      • contents: string

        The contents to write.

        -

      Returns void

    \ No newline at end of file +

    Returns void

    \ No newline at end of file diff --git a/docs/classes/cli.CLICommandBuilder.html b/docs/classes/cli.CLICommandBuilder.html index 2099cd3..f12df08 100644 --- a/docs/classes/cli.CLICommandBuilder.html +++ b/docs/classes/cli.CLICommandBuilder.html @@ -1,5 +1,5 @@ -CLICommandBuilder | @gobstones/gobstones-core - v0.4.6 -

    A builder for a CLI command. May be the main command of the app (CLIApp) +CLICommandBuilder | @gobstones/gobstones-core - v0.4.7 +

    A builder for a CLI command. May be the main command of the app (CLIApp) extends this class) or a sub-command.

    Hierarchy

    Constructors

    Properties

    Constructors

    Properties

    currentArgs: any[]
    currentOptions: any
    hasAction: boolean = false
    isSubcommand: boolean
    onReadErrorMsg: string
    options: CLIAppOptions
    program: Command
    LONG_HELP_FLAG: string = '--help'
    LONG_INPUT_FLAG: string = '--in'
    LONG_LANG_FLAG: string = '--language'
    LONG_OUTPUT_FLAG: string = '--out'
    LONG_VERSION_FLAG: string = '--version'
    SHORT_HELP_FLAG: string = '-h'
    SHORT_INPUT_FLAG: string = '-i'
    SHORT_LANG_FLAG: string = '-l'
    SHORT_OUTPUT_FLAG: string = '-o'
    SHORT_VERSION_FLAG: string = '-v'

    Methods

    • Set the action for this command. The action callback receives both the current +

    Constructors

    Properties

    currentArgs: any[]
    currentOptions: any
    hasAction: boolean = false
    isSubcommand: boolean
    onReadErrorMsg: string
    options: WithRequired<CLIAppOptions, "flags">
    program: Command
    LONG_HELP_FLAG: string = '--help'
    LONG_INPUT_FLAG: string = '--in'
    LONG_LANG_FLAG: string = '--language'
    LONG_OUTPUT_FLAG: string = '--out'
    LONG_VERSION_FLAG: string = '--version'
    SHORT_HELP_FLAG: string = '-h'
    SHORT_INPUT_FLAG: string = '-i'
    SHORT_LANG_FLAG: string = '-l'
    SHORT_OUTPUT_FLAG: string = '-o'
    SHORT_VERSION_FLAG: string = '-v'

    Methods

    • Set the action for this command. The action callback receives both the current command, and the arguments (Note this is one or more arguments, depending on the command definition. Mandatory or optional positional arguments are passed first, while the last element consists of the flags passed to the command)

      @@ -77,4 +77,4 @@

    Returns void

    • Write a set of contents to a given file.

      Parameters

      • fileName: string

        The file to write to.

      • contents: string

        The contents to write.

        -

      Returns void

    \ No newline at end of file +

    Returns void

    \ No newline at end of file diff --git a/docs/docs/globals.html b/docs/docs/globals.html index b952b99..e11b1ff 100644 --- a/docs/docs/globals.html +++ b/docs/docs/globals.html @@ -1,5 +1,5 @@ -@gobstones/gobstones-core - v0.4.6 -

    @gobstones/gobstones-core - v0.4.6

    gobstones-core

    A set of utility types, interfaces and classes that are used through all the Gobstones Platform repositories.

    +@gobstones/gobstones-core - v0.4.7 +

    @gobstones/gobstones-core - v0.4.7

    gobstones-core

    A set of utility types, interfaces and classes that are used through all the Gobstones Platform repositories.

    Licence Version API Docs

    GitHub Workflow Tests GitHub Workflow Build

    Install

    Install with npm by using

    @@ -22,4 +22,4 @@
    import { cli } from '@gobstones/gobstones-core/cli';
     

    Contributing

    See the Gobstones Platform Contributions Guidelines to contribute.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/Expectations.and.html b/docs/functions/Expectations.and.html index fd8865f..ffaa85f 100644 --- a/docs/functions/Expectations.and.html +++ b/docs/functions/Expectations.and.html @@ -1,7 +1,7 @@ -and | @gobstones/gobstones-core - v0.4.6 -

    Returns IFinishedExpectation

    \ No newline at end of file diff --git a/docs/functions/Expectations.expect.html b/docs/functions/Expectations.expect.html index 7b8806c..299f797 100644 --- a/docs/functions/Expectations.expect.html +++ b/docs/functions/Expectations.expect.html @@ -1,5 +1,5 @@ -expect | @gobstones/gobstones-core - v0.4.6 -
    \ No newline at end of file +

    Returns INumberExpectation

  • Parameters

    • Optional element: string

    Returns IStringExpectation

  • Type Parameters

    • T

    Parameters

    • Optional element: T[]

    Returns IArrayExpectation<T>

  • Type Parameters

    • T

    Parameters

    • Optional element: T

    Returns IObjectExpectation<T>

  • \ No newline at end of file diff --git a/docs/functions/Expectations.or.html b/docs/functions/Expectations.or.html index 53aac36..478aff8 100644 --- a/docs/functions/Expectations.or.html +++ b/docs/functions/Expectations.or.html @@ -1,7 +1,7 @@ -or | @gobstones/gobstones-core - v0.4.6 -

    Returns IFinishedExpectation

    \ No newline at end of file diff --git a/docs/functions/Functions.deepEquals.html b/docs/functions/Functions.deepEquals.html index a3823f7..f46e660 100644 --- a/docs/functions/Functions.deepEquals.html +++ b/docs/functions/Functions.deepEquals.html @@ -1,5 +1,5 @@ -deepEquals | @gobstones/gobstones-core - v0.4.6 -
    • Answer wether or not two elements are semantically equal, considering them +deepEquals | @gobstones/gobstones-core - v0.4.7 +

      • Answer wether or not two elements are semantically equal, considering them equal when they have the same type and all their internal elements are the same, or when they represent the same concept (two regular expressions that match the same string, two dates for the same moment, two sets with same @@ -36,4 +36,4 @@

        Type Parameters

        • T

        Parameters

        • first: T

          The element to compare to.

        • second: T

          The element to compare against.

        Returns boolean

        true if both elements are equal, false otherwise.

        -
      \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/Functions.deepStringAssign.html b/docs/functions/Functions.deepStringAssign.html index 80296b4..fcd11ed 100644 --- a/docs/functions/Functions.deepStringAssign.html +++ b/docs/functions/Functions.deepStringAssign.html @@ -1,5 +1,5 @@ -deepStringAssign | @gobstones/gobstones-core - v0.4.6 -
    • It returns a copy of the target object, where its string keys has been overwritten with +deepStringAssign | @gobstones/gobstones-core - v0.4.7 +

      • It returns a copy of the target object, where its string keys has been overwritten with the corresponding keys of the sources objects, when they are present, recursively. If the same key appears in more than one of the source objects, the last one is used. If none of the objects has the key, or the key is not of string type, it is not changed. @@ -24,4 +24,4 @@

        Type Parameters

        • T extends object

        Parameters

        • target: T

          An object that provides the default values for the fields of the result.

        • Rest ...sources: Subset<T>[]

          A span parameter with objects possibly containing values to replace the defaults in string keys with strings as values.

          -

        Returns T

      \ No newline at end of file +

    Returns T

    \ No newline at end of file diff --git a/docs/functions/Functions.flatten.html b/docs/functions/Functions.flatten.html index 7b67061..0550a48 100644 --- a/docs/functions/Functions.flatten.html +++ b/docs/functions/Functions.flatten.html @@ -1,5 +1,5 @@ -flatten | @gobstones/gobstones-core - v0.4.6 -
    • Flatten the given object. +flatten | @gobstones/gobstones-core - v0.4.7 +

      • Flatten the given object. Given an object with nested elements, it returns an object that has been flattened, that is, where the keys are string that represent the nested route to follow in the original object to access the leaves.

        @@ -10,4 +10,4 @@

        Additional options may be passed, such as which character is used as a delimiter, or the maximum depth level.

        For an inverse operation see unflatten.

        -
      \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/Functions.matrix.html b/docs/functions/Functions.matrix.html index 941cf80..f0b0bb4 100644 --- a/docs/functions/Functions.matrix.html +++ b/docs/functions/Functions.matrix.html @@ -1,5 +1,5 @@ -matrix | @gobstones/gobstones-core - v0.4.6 -
    • Creates a two-dimensional matrix where all positions are filled using the given +matrix | @gobstones/gobstones-core - v0.4.7 +

      • Creates a two-dimensional matrix where all positions are filled using the given generator.

        Type Parameters

        • T

        Parameters

        • width: number

          The number of rows of the matrix

        • height: number

          The number of columns of the matrix

          @@ -7,4 +7,4 @@ the element to store the matrix at that position

            • (i, j): T
            • Parameters

              • i: number
              • j: number

              Returns T

        Returns T[][]

        A T[][] where T is the type of the elements in the matrix.

        Throws

        Error if the width or the height given are zero or negative.

        -
      \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/Functions.unflatten.html b/docs/functions/Functions.unflatten.html index 8db06e1..f74bda7 100644 --- a/docs/functions/Functions.unflatten.html +++ b/docs/functions/Functions.unflatten.html @@ -1,5 +1,5 @@ -unflatten | @gobstones/gobstones-core - v0.4.6 -
    • Un-Flatten the given object. +unflatten | @gobstones/gobstones-core - v0.4.7 +

      • Un-Flatten the given object. Given an object without nested elements, but whose keys represent paths in a nested elements object, return an object that has nested objects in it. This the reverse of flatten, in such a way that this complies.

        @@ -9,4 +9,4 @@

        Additional options may be passed, such as which character is used as a delimiter, or the maximum depth level.

        -
      \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/cli.cli-1.html b/docs/functions/cli.cli-1.html index 2f3d424..968ed2f 100644 --- a/docs/functions/cli.cli-1.html +++ b/docs/functions/cli.cli-1.html @@ -1,4 +1,4 @@ -cli | @gobstones/gobstones-core - v0.4.6 -

    Returns CLIApp

    \ No newline at end of file diff --git a/docs/functions/cli.readJSON.html b/docs/functions/cli.readJSON.html new file mode 100644 index 0000000..5c606f9 --- /dev/null +++ b/docs/functions/cli.readJSON.html @@ -0,0 +1,7 @@ +readJSON | @gobstones/gobstones-core - v0.4.7 +
    • Retrieves an object with the data from a JSON file +after reading the same from the command line. +This function is useful here as most times you will +want to retrieve data from the package.json file.

      +

      Parameters

      • fileLocation: string

        The location of the file to read.

        +

      Returns any

    \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index b952b99..e11b1ff 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,5 +1,5 @@ -@gobstones/gobstones-core - v0.4.6 -

    @gobstones/gobstones-core - v0.4.6

    gobstones-core

    A set of utility types, interfaces and classes that are used through all the Gobstones Platform repositories.

    +@gobstones/gobstones-core - v0.4.7 +

    @gobstones/gobstones-core - v0.4.7

    gobstones-core

    A set of utility types, interfaces and classes that are used through all the Gobstones Platform repositories.

    Licence Version API Docs

    GitHub Workflow Tests GitHub Workflow Build

    Install

    Install with npm by using

    @@ -22,4 +22,4 @@
    import { cli } from '@gobstones/gobstones-core/cli';
     

    Contributing

    See the Gobstones Platform Contributions Guidelines to contribute.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/Expectations.IArrayExpectation.html b/docs/interfaces/Expectations.IArrayExpectation.html index c5d69ae..e592c36 100644 --- a/docs/interfaces/Expectations.IArrayExpectation.html +++ b/docs/interfaces/Expectations.IArrayExpectation.html @@ -1,5 +1,5 @@ -IArrayExpectation | @gobstones/gobstones-core - v0.4.6 -

    This interface represents an expectation that is performed over an array.

    +IArrayExpectation | @gobstones/gobstones-core - v0.4.7 +

    This interface represents an expectation that is performed over an array.

    Type Parameters

    • T

    Hierarchy

    Properties

    Methods

    allToSatisfy amountToSatisfy @@ -43,4 +43,4 @@ with additional logic added to support 'array' as a type.

    Parameters

    • value: string

    Returns IArrayExpectation<T> & IFinishedExpectation

    Example

    `toHaveType([1,2,3], 'array')` returns `true` as expected.
     
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/Expectations.IFinishedExpectation.html b/docs/interfaces/Expectations.IFinishedExpectation.html index 1fe7945..72f807d 100644 --- a/docs/interfaces/Expectations.IFinishedExpectation.html +++ b/docs/interfaces/Expectations.IFinishedExpectation.html @@ -1,5 +1,5 @@ -IFinishedExpectation | @gobstones/gobstones-core - v0.4.6 -

    This interface represents an expectation after a matcher has been executed +IFinishedExpectation | @gobstones/gobstones-core - v0.4.7 +

    This interface represents an expectation after a matcher has been executed and the result can be accessed.

    Hierarchy

    • IFinishedExpectation

    Implemented by

    Methods

    andDo andDoOr @@ -15,4 +15,4 @@
    • If the result of the expectation is false, run the given function.

      Parameters

      • action: (() => void)
          • (): void
          • Returns void

      Returns void

    • If the result of the expectation is false, throw the given error.

      Parameters

      • error: Error

      Returns void

    • If the result of the expectation is false, return the given value.

      -

      Type Parameters

      • T

      Parameters

      • value: T

      Returns T

    \ No newline at end of file +

    Type Parameters

    • T

    Parameters

    • value: T

    Returns T

    \ No newline at end of file diff --git a/docs/interfaces/Expectations.IGenericExpectation.html b/docs/interfaces/Expectations.IGenericExpectation.html index cfe1363..3a64180 100644 --- a/docs/interfaces/Expectations.IGenericExpectation.html +++ b/docs/interfaces/Expectations.IGenericExpectation.html @@ -1,5 +1,5 @@ -IGenericExpectation | @gobstones/gobstones-core - v0.4.6 -

    This type represents an expectation for any type of element. +IGenericExpectation | @gobstones/gobstones-core - v0.4.7 +

    This type represents an expectation for any type of element. The matchers that can be called contain general things, such as strict comparison with other elements, be undefined, be null, or any other checks.

    @@ -31,4 +31,4 @@ with additional logic added to support 'array' as a type.

    Parameters

    • value: string

    Returns IGenericExpectation<T> & IFinishedExpectation

    Example

    `toHaveType([1,2,3], 'array')` returns `true` as expected.
     
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/Expectations.INumberExpectation.html b/docs/interfaces/Expectations.INumberExpectation.html index a53c12f..7ef0eb6 100644 --- a/docs/interfaces/Expectations.INumberExpectation.html +++ b/docs/interfaces/Expectations.INumberExpectation.html @@ -1,5 +1,5 @@ -INumberExpectation | @gobstones/gobstones-core - v0.4.6 -

    This interface represents an expectation that is performed over a number.

    +INumberExpectation | @gobstones/gobstones-core - v0.4.7 +

    This interface represents an expectation that is performed over a number.

    Hierarchy

    Properties

    Methods

    toBe toBeBetween @@ -47,4 +47,4 @@ with additional logic added to support 'array' as a type.

    Parameters

    • value: string

    Returns INumberExpectation & IFinishedExpectation

    Example

    `toHaveType([1,2,3], 'array')` returns `true` as expected.
     
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/Expectations.IObjectExpectation.html b/docs/interfaces/Expectations.IObjectExpectation.html index e5610f2..82db9bc 100644 --- a/docs/interfaces/Expectations.IObjectExpectation.html +++ b/docs/interfaces/Expectations.IObjectExpectation.html @@ -1,5 +1,5 @@ -IObjectExpectation | @gobstones/gobstones-core - v0.4.6 -

    This interface represents an expectation that is performed over an object.

    +IObjectExpectation | @gobstones/gobstones-core - v0.4.7 +

    This interface represents an expectation that is performed over an object.

    Type Parameters

    • T

    Hierarchy

    Properties

    Methods

    toBe toBeDefined @@ -42,4 +42,4 @@ with additional logic added to support 'array' as a type.

    Parameters

    • value: string

    Returns IObjectExpectation<T> & IFinishedExpectation

    Example

    `toHaveType([1,2,3], 'array')` returns `true` as expected.
     
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/Expectations.IStringExpectation.html b/docs/interfaces/Expectations.IStringExpectation.html index 9b7718f..046c98f 100644 --- a/docs/interfaces/Expectations.IStringExpectation.html +++ b/docs/interfaces/Expectations.IStringExpectation.html @@ -1,5 +1,5 @@ -IStringExpectation | @gobstones/gobstones-core - v0.4.6 -

    This interface represents an expectation that is performed over a string.

    +IStringExpectation | @gobstones/gobstones-core - v0.4.7 +

    This interface represents an expectation that is performed over a string.

    Hierarchy

    Properties

    Methods

    toBe toBeDefined @@ -36,4 +36,4 @@
    \ No newline at end of file +

    Parameters

    • start: string

    Returns IStringExpectation & IFinishedExpectation

    \ No newline at end of file diff --git a/docs/interfaces/Expectations.MatcherCall.html b/docs/interfaces/Expectations.MatcherCall.html index fedb744..9270578 100644 --- a/docs/interfaces/Expectations.MatcherCall.html +++ b/docs/interfaces/Expectations.MatcherCall.html @@ -1,7 +1,7 @@ -MatcherCall | @gobstones/gobstones-core - v0.4.6 -

    A matcher call represents a call to a matcher with it's corresponding +MatcherCall | @gobstones/gobstones-core - v0.4.7 +

    A matcher call represents a call to a matcher with it's corresponding arguments and the actual result.

    Hierarchy

    • MatcherCall

    Properties

    Properties

    args: any[]
    matcher: string
    result: boolean
    \ No newline at end of file +

    Properties

    args: any[]
    matcher: string
    result: boolean
    \ No newline at end of file diff --git a/docs/interfaces/Functions.FlattenOptions.html b/docs/interfaces/Functions.FlattenOptions.html index f695b10..474607f 100644 --- a/docs/interfaces/Functions.FlattenOptions.html +++ b/docs/interfaces/Functions.FlattenOptions.html @@ -1,5 +1,5 @@ -FlattenOptions | @gobstones/gobstones-core - v0.4.6 -

    Interface FlattenOptionsInternal

    This type represent the options that are available for +FlattenOptions | @gobstones/gobstones-core - v0.4.7 +

    Interface FlattenOptionsInternal

    This type represent the options that are available for a flattening action. This are copies of the definitions in the flat library that we use as an internal implementation and we do not recommend to relay on them, as they might change @@ -8,4 +8,4 @@ maxDepth? safe? transformKey? -

    Properties

    delimiter?: string
    maxDepth?: number
    safe?: boolean
    transformKey?: ((key) => string)

    Type declaration

      • (key): string
      • Parameters

        • key: string

        Returns string

    \ No newline at end of file +

    Properties

    delimiter?: string
    maxDepth?: number
    safe?: boolean
    transformKey?: ((key) => string)

    Type declaration

      • (key): string
      • Parameters

        • key: string

        Returns string

    \ No newline at end of file diff --git a/docs/interfaces/Functions.UnflattenOptions.html b/docs/interfaces/Functions.UnflattenOptions.html index 1439e4c..a235d57 100644 --- a/docs/interfaces/Functions.UnflattenOptions.html +++ b/docs/interfaces/Functions.UnflattenOptions.html @@ -1,5 +1,5 @@ -UnflattenOptions | @gobstones/gobstones-core - v0.4.6 -

    Interface UnflattenOptionsInternal

    This type represent the options that are available for +UnflattenOptions | @gobstones/gobstones-core - v0.4.7 +

    Interface UnflattenOptionsInternal

    This type represent the options that are available for a un-flattening action. This are copies of the definitions in the flat library that we use as an internal implementation and we do not recommend to relay on them, as they might change @@ -8,4 +8,4 @@ object? overwrite? transformKey? -

    Properties

    delimiter?: string
    object?: boolean
    overwrite?: boolean
    transformKey?: ((key) => string)

    Type declaration

      • (key): string
      • Parameters

        • key: string

        Returns string

    \ No newline at end of file +

    Properties

    delimiter?: string
    object?: boolean
    overwrite?: boolean
    transformKey?: ((key) => string)

    Type declaration

      • (key): string
      • Parameters

        • key: string

        Returns string

    \ No newline at end of file diff --git a/docs/interfaces/GobstonesLang.BoardDefinition.html b/docs/interfaces/GobstonesLang.BoardDefinition.html index 203f43e..19cf586 100644 --- a/docs/interfaces/GobstonesLang.BoardDefinition.html +++ b/docs/interfaces/GobstonesLang.BoardDefinition.html @@ -1,5 +1,5 @@ -BoardDefinition | @gobstones/gobstones-core - v0.4.6 -

    The definition of a Board as expected by the current Gobstones Interpreter. +BoardDefinition | @gobstones/gobstones-core - v0.4.7 +

    The definition of a Board as expected by the current Gobstones Interpreter. This definition make heavy assumptions as for the origin of the board and it's internal structure. Although this definition is left for reference, the Board class (which implements this interface) should be considered @@ -26,4 +26,4 @@

    height: number

    The height of the board

    width: number

    The width of the board

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/GobstonesLang.BoardEvents.html b/docs/interfaces/GobstonesLang.BoardEvents.html index 38df190..ffa9d3b 100644 --- a/docs/interfaces/GobstonesLang.BoardEvents.html +++ b/docs/interfaces/GobstonesLang.BoardEvents.html @@ -1,6 +1,6 @@ -BoardEvents | @gobstones/gobstones-core - v0.4.6 -

    This interface contains the signature of the +BoardEvents | @gobstones/gobstones-core - v0.4.7 +

    This interface contains the signature of the events that a Board can throw.

    Hierarchy

    • BoardEvents

    Properties

    \ No newline at end of file +

    Properties

    \ No newline at end of file diff --git a/docs/interfaces/GobstonesLang.CellDataDefinition.html b/docs/interfaces/GobstonesLang.CellDataDefinition.html index d041585..074cdb9 100644 --- a/docs/interfaces/GobstonesLang.CellDataDefinition.html +++ b/docs/interfaces/GobstonesLang.CellDataDefinition.html @@ -1,5 +1,5 @@ -CellDataDefinition | @gobstones/gobstones-core - v0.4.6 -

    A cell data definition consists of the location of a cell, and +CellDataDefinition | @gobstones/gobstones-core - v0.4.7 +

    A cell data definition consists of the location of a cell, and the amount of stones for any color (if non zero, undefined may be used is those attributes if zero is ought to be used for such color).

    Hierarchy

    Properties

    a? @@ -8,4 +8,4 @@ v? x y -

    Properties

    a?: number
    n?: number
    r?: number
    v?: number
    x: number
    y: number
    \ No newline at end of file +

    Properties

    a?: number
    n?: number
    r?: number
    v?: number
    x: number
    y: number
    \ No newline at end of file diff --git a/docs/interfaces/GobstonesLang.CellEvents.html b/docs/interfaces/GobstonesLang.CellEvents.html index 78cec52..ad8592d 100644 --- a/docs/interfaces/GobstonesLang.CellEvents.html +++ b/docs/interfaces/GobstonesLang.CellEvents.html @@ -1,5 +1,5 @@ -CellEvents | @gobstones/gobstones-core - v0.4.6 -

    This interface contains the signature of the +CellEvents | @gobstones/gobstones-core - v0.4.7 +

    This interface contains the signature of the events that a Cell can throw.

    Hierarchy

    • CellEvents

    Properties

    Properties

    [onStonesChanged]: OnCellStonesChanged
    \ No newline at end of file +

    Properties

    [onStonesChanged]: OnCellStonesChanged
    \ No newline at end of file diff --git a/docs/interfaces/GobstonesLang.CellInfo.html b/docs/interfaces/GobstonesLang.CellInfo.html index 3642bd3..c3d3e73 100644 --- a/docs/interfaces/GobstonesLang.CellInfo.html +++ b/docs/interfaces/GobstonesLang.CellInfo.html @@ -1,5 +1,5 @@ -CellInfo | @gobstones/gobstones-core - v0.4.6 -

    The information of a cell such that:

    +CellInfo | @gobstones/gobstones-core - v0.4.7 +

    The information of a cell such that:

    • a = number of blue stones
    • n = number of black stones
    • @@ -10,4 +10,4 @@ n r v -

    Properties

    a: number
    n: number
    r: number
    v: number
    \ No newline at end of file +

    Properties

    a: number
    n: number
    r: number
    v: number
    \ No newline at end of file diff --git a/docs/interfaces/SourceReader.SourceReaderLocale.html b/docs/interfaces/SourceReader.SourceReaderLocale.html index 0cf5c25..144808f 100644 --- a/docs/interfaces/SourceReader.SourceReaderLocale.html +++ b/docs/interfaces/SourceReader.SourceReaderLocale.html @@ -1,5 +1,5 @@ -SourceReaderLocale | @gobstones/gobstones-core - v0.4.6 -

    This interface declares the strings that the API of +SourceReaderLocale | @gobstones/gobstones-core - v0.4.7 +

    This interface declares the strings that the API of SourceReader uses. It is used by Translator to use the right string for the current language. @@ -8,4 +8,4 @@ English, en, and Spanish, es).

    Hierarchy

    • SourceReaderLocale

    Properties

    Properties

    error: {
        AtEOFBy: string;
        NoInput: string;
        UnmatchingPositionsBy: string;
    }

    Type declaration

    • AtEOFBy: string
    • NoInput: string
    • UnmatchingPositionsBy: string
    string: {
        EndOfInput: string;
        EndOfString: string;
        UnknownPosition: string;
    }

    Type declaration

    • EndOfInput: string
    • EndOfString: string
    • UnknownPosition: string
    \ No newline at end of file +

    Properties

    error: {
        AtEOFBy: string;
        NoInput: string;
        UnmatchingPositionsBy: string;
    }

    Type declaration

    • AtEOFBy: string
    • NoInput: string
    • UnmatchingPositionsBy: string
    string: {
        EndOfInput: string;
        EndOfString: string;
        UnknownPosition: string;
    }

    Type declaration

    • EndOfInput: string
    • EndOfString: string
    • UnknownPosition: string
    \ No newline at end of file diff --git a/docs/interfaces/cli.CLIAppOptions.html b/docs/interfaces/cli.CLIAppOptions.html index 18afae8..57c22af 100644 --- a/docs/interfaces/cli.CLIAppOptions.html +++ b/docs/interfaces/cli.CLIAppOptions.html @@ -1,10 +1,10 @@ -CLIAppOptions | @gobstones/gobstones-core - v0.4.6 -

    A set of options for initially configure a CLI application. +CLIAppOptions | @gobstones/gobstones-core - v0.4.7 +

    A set of options for initially configure a CLI application. If a translation is given

    -

    Hierarchy

    • CLIAppOptions

    Properties

    Hierarchy

    • CLIAppOptions

    Properties

    The flag names to use in this application, if the flags differ in any way from +

    Properties

    The flag names to use in this application, if the flags differ in any way from the default ones.

    The default flags include:

      @@ -14,12 +14,12 @@
    • input file for a command: -i, --in
    • output file for a command: -o, --out
    -
    texts: {
        help: string;
        language?: string;
        languageError?: string;
        name: string;
        tool: string;
        version: string;
        versionNumber: string;
    }

    The description texts (Or a description key if a Translator is provided) +

    The description texts (Or a description key if a Translator is provided) that is used is the description of the different parts of the CLI. The name and the versionNumber are expected to be the app name (No translation is used, as the name should be the same through all the app), and the versionNumber should be the version is the major.minor.patch.

    -

    Type declaration

    • help: string
    • Optional language?: string
    • Optional languageError?: string
    • name: string
    • tool: string
    • version: string
    • versionNumber: string
    translator?: Translator<any>

    A Translator used to translate the tool to different locales, both when +

    translator?: Translator<Record<string, any>>

    A Translator used to translate the tool to different locales, both when called with a language flag, and automatically at startup by auto-detecting the user language by checking OS Environment variables.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/cli.CLIGeneralFlags.html b/docs/interfaces/cli.CLIGeneralFlags.html index dbbdc19..0eae267 100644 --- a/docs/interfaces/cli.CLIGeneralFlags.html +++ b/docs/interfaces/cli.CLIGeneralFlags.html @@ -1,5 +1,5 @@ -CLIGeneralFlags | @gobstones/gobstones-core - v0.4.6 -

    The general flags that a CLI app accepts, when configured to used them. +CLIGeneralFlags | @gobstones/gobstones-core - v0.4.7 +

    The general flags that a CLI app accepts, when configured to used them. Note that currently the default flags cannot be changed.

    Hierarchy

    • CLIGeneralFlags

    Properties

    help in @@ -11,4 +11,4 @@

    Type declaration

    • long: string
    • short: string
    language: {
        long: string;
        short: string;
    }

    The language set flags, both short and long

    Type declaration

    • long: string
    • short: string
    out: {
        long: string;
        short: string;
    }

    The output file flags, both short and long

    Type declaration

    • long: string
    • short: string
    version: {
        long: string;
        short: string;
    }

    The version information flags, both short and long

    -

    Type declaration

    • long: string
    • short: string
    \ No newline at end of file +

    Type declaration

    • long: string
    • short: string
    \ No newline at end of file diff --git a/docs/interfaces/cli.CLIGeneralTexts.html b/docs/interfaces/cli.CLIGeneralTexts.html new file mode 100644 index 0000000..675f76e --- /dev/null +++ b/docs/interfaces/cli.CLIGeneralTexts.html @@ -0,0 +1,22 @@ +CLIGeneralTexts | @gobstones/gobstones-core - v0.4.7 +

    The general texts that a CLI app uses. +This include the description texts (Or a description key if a Translator is provided) +that are used a the description of the different parts of the CLI. +The name and the versionNumber are expected to be the app name (No translation +is used, as the name should be the same through all the app), and the versionNumber +should be the version is the major.minor.patch.

    +

    Hierarchy

    • CLIGeneralTexts

    Properties

    help: string

    A text displayed when showing the application's help

    +
    language?: string

    The language used by the application

    +
    languageError?: string

    The error message displayed when using a wrong language

    +
    name: string

    The application name

    +
    tool: string

    Text used by the tool

    +
    version: string

    The text displayed when showing the version of the application

    +
    versionNumber: string

    The application version number in semVer

    +
    \ No newline at end of file diff --git a/docs/modules/Events.html b/docs/modules/Events.html index 0176491..0a2c950 100644 --- a/docs/modules/Events.html +++ b/docs/modules/Events.html @@ -1,5 +1,5 @@ -Events | @gobstones/gobstones-core - v0.4.6 -

    This module provides support for typed events, +Events | @gobstones/gobstones-core - v0.4.7 +

    This module provides support for typed events, wether is for classes that emit a particular event, and allowing others to subscribe to that event emission, or by simply creating objects that @@ -16,4 +16,4 @@

    Author

    Alan Rodas Bonjour alanro

    Index

    API: Main

    Internal: Definition types

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/modules/Expectations.html b/docs/modules/Expectations.html index 7aec8d2..d5551ac 100644 --- a/docs/modules/Expectations.html +++ b/docs/modules/Expectations.html @@ -1,5 +1,5 @@ -Expectations | @gobstones/gobstones-core - v0.4.6 -

    This module exports the expect function, that is the kickoff to +Expectations | @gobstones/gobstones-core - v0.4.7 +

    This module exports the expect function, that is the kickoff to create "expectations" over a specific element as shown in the following example:

    Example

    expect(x+y).toBeGreaterThan(z)
    .orThrow(new Error('x and y need to add up to more than z')); @@ -48,4 +48,4 @@

    Author

    Alan Rodas Bonjour alanro FinishedExpectation Matchers MatcherCall -

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/modules/Functions.html b/docs/modules/Functions.html index 3731be1..6e77adf 100644 --- a/docs/modules/Functions.html +++ b/docs/modules/Functions.html @@ -1,5 +1,5 @@ -Functions | @gobstones/gobstones-core - v0.4.6 -

    This module provides different functions that provide common functionality +Functions | @gobstones/gobstones-core - v0.4.7 +

    This module provides different functions that provide common functionality that may be reused in different packages. Functions that are widely used in different packages should be added here for better accessibility in all packages.

    @@ -11,4 +11,4 @@ unflatten

    Internal: Definition types

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/modules/GobstonesLang.html b/docs/modules/GobstonesLang.html index 3d73069..1b660aa 100644 --- a/docs/modules/GobstonesLang.html +++ b/docs/modules/GobstonesLang.html @@ -1,5 +1,5 @@ -GobstonesLang | @gobstones/gobstones-core - v0.4.6 -

    This module provides the Board class, which models a Gobstones Board +GobstonesLang | @gobstones/gobstones-core - v0.4.7 +

    This module provides the Board class, which models a Gobstones Board and all the associated behavior.

    The Board class is expected to be used all through the Gobstones Platform and all Gobstones plugins whenever a Board should be used (e.g. the @@ -49,4 +49,4 @@

    Internal: Types

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/modules/SourceReader.html b/docs/modules/SourceReader.html index 48e42c7..e2c462f 100644 --- a/docs/modules/SourceReader.html +++ b/docs/modules/SourceReader.html @@ -1,5 +1,5 @@ -SourceReader | @gobstones/gobstones-core - v0.4.6 -

    A SourceReader allows you to read input from some source, either one single string of +SourceReader | @gobstones/gobstones-core - v0.4.7 +

    A SourceReader allows you to read input from some source, either one single string of content or several named or indexed source strings, in such a way that each character read may register its position in the source as a tuple index-line-column. That is, the main problem it solves is that of calculating the position of each character @@ -46,4 +46,4 @@ availableLocales en es -

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/modules/Translator.html b/docs/modules/Translator.html index b15ec57..4fd38fe 100644 --- a/docs/modules/Translator.html +++ b/docs/modules/Translator.html @@ -1,5 +1,5 @@ -Translator | @gobstones/gobstones-core - v0.4.6 -

    This module provides mechanisms to support basic localization of strings. +Translator | @gobstones/gobstones-core - v0.4.7 +

    This module provides mechanisms to support basic localization of strings. This allows for error messages and CLI to support different languages without much effort.

    Note that this module does not provide localization for the Gobstones Language @@ -9,4 +9,4 @@ The Gobstones Language Translation Module.

    Author

    Alan Rodas Bonjour alanrodas@gmail.com

    Index

    API: Main

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/modules/Types.html b/docs/modules/Types.html index 0bcd287..303585a 100644 --- a/docs/modules/Types.html +++ b/docs/modules/Types.html @@ -1,5 +1,5 @@ -Types | @gobstones/gobstones-core - v0.4.6 -

    The Types modules provides some useful type definitions and +Types | @gobstones/gobstones-core - v0.4.7 +

    The Types modules provides some useful type definitions and data structures that may be useful for different projects. Types and data structures that are widely used in different packages should be added here for better accessibility in all packages.

    @@ -8,4 +8,4 @@

    Author

    Alan Rodas Bonjour alanrodas@gmail.com

    Index

    API: Main

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/modules/Types_WithRequired.html b/docs/modules/Types_WithRequired.html new file mode 100644 index 0000000..cff6952 --- /dev/null +++ b/docs/modules/Types_WithRequired.html @@ -0,0 +1,3 @@ +Types/WithRequired | @gobstones/gobstones-core - v0.4.7 +
    \ No newline at end of file diff --git a/docs/modules/cli.html b/docs/modules/cli.html index 34a0183..73e5795 100644 --- a/docs/modules/cli.html +++ b/docs/modules/cli.html @@ -1,14 +1,16 @@ -cli | @gobstones/gobstones-core - v0.4.6 -

    This module provides the tools to create a CLI application +cli | @gobstones/gobstones-core - v0.4.7 +

    This module provides the tools to create a CLI application using commander as the background tool, but providing some simple abstractions. The CLI produce may automatically support multiple languages, input and output from and to files as well as stdout, and other perks.

    Author

    Alan Rodas Bonjour alanrodas@gmail.com

    -

    Index

    API: Main

    Index

    Functions

    API: Main

    API: Options

    Internal: Types

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/Events.DefaultEventSignature.html b/docs/types/Events.DefaultEventSignature.html index 6b5d703..7754fb8 100644 --- a/docs/types/Events.DefaultEventSignature.html +++ b/docs/types/Events.DefaultEventSignature.html @@ -1,6 +1,6 @@ -DefaultEventSignature | @gobstones/gobstones-core - v0.4.6 -
    DefaultEventSignature: {
        [k: string]: ((...args) => any);
    }

    This type is a specification of EventSignature where each +DefaultEventSignature | @gobstones/gobstones-core - v0.4.7 +

    DefaultEventSignature: {
        [k: string]: ((...args) => any);
    }

    This type is a specification of EventSignature where each event is key is a string (the most common case), and the subscriber functions are any function. This is the default behavior of most JavaScript event emitter, and the DOM event's signature.

    -

    Type declaration

    • [k: string]: ((...args) => any)
        • (...args): any
        • Parameters

          • Rest ...args: any[]

          Returns any

    \ No newline at end of file +

    Type declaration

    • [k: string]: ((...args) => any)
        • (...args): any
        • Parameters

          • Rest ...args: any[]

          Returns any

    \ No newline at end of file diff --git a/docs/types/Events.EventSignature.html b/docs/types/Events.EventSignature.html index dabe7d9..9f47a35 100644 --- a/docs/types/Events.EventSignature.html +++ b/docs/types/Events.EventSignature.html @@ -1,6 +1,6 @@ -EventSignature | @gobstones/gobstones-core - v0.4.6 -
    EventSignature<L>: {
        [E in keyof L]: ((...args) => any)
    }

    This type describes the basic mapping of available events to the +EventSignature | @gobstones/gobstones-core - v0.4.7 +

    EventSignature<L>: {
        [E in keyof L]: ((...args) => any)
    }

    This type describes the basic mapping of available events to the corresponding subscriber functions that may subscribe to such event. Multiple events could be added, with different signatures for each subscriber.

    -

    Type Parameters

    • L

    \ No newline at end of file +

    Type Parameters

    • L

    \ No newline at end of file diff --git a/docs/types/GobstonesLang.BoardInfo.html b/docs/types/GobstonesLang.BoardInfo.html index e081e29..a855937 100644 --- a/docs/types/GobstonesLang.BoardInfo.html +++ b/docs/types/GobstonesLang.BoardInfo.html @@ -1,5 +1,5 @@ -BoardInfo | @gobstones/gobstones-core - v0.4.6 -
    BoardInfo: CellInfo[][]

    This type represents the Board cell information where given a board satisfies +BoardInfo | @gobstones/gobstones-core - v0.4.7 +

    BoardInfo: CellInfo[][]

    This type represents the Board cell information where given a board satisfies board.width elements, each of which is an array of board.height elements, each of which is a cell, of the form {"a": na, "n": nn, "r": nr, "v": nv}, in such a way that:

    @@ -11,4 +11,4 @@

    And it's assured that each element this.board[x][y] exists for 0 <= x < board.width && 0 <= y < board.height.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/GobstonesLang.CellLocation.html b/docs/types/GobstonesLang.CellLocation.html index 99bb5d8..852c231 100644 --- a/docs/types/GobstonesLang.CellLocation.html +++ b/docs/types/GobstonesLang.CellLocation.html @@ -1,5 +1,5 @@ -CellLocation | @gobstones/gobstones-core - v0.4.6 -
    CellLocation: [number, number]

    A cell location is just a two elements array (a pair) +CellLocation | @gobstones/gobstones-core - v0.4.7 +

    CellLocation: [number, number]

    A cell location is just a two elements array (a pair) in the form of [x, y] where x is the column that the head is in and y is the row that the head is in.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/GobstonesLang.CellReadingActionAttempt.html b/docs/types/GobstonesLang.CellReadingActionAttempt.html index 0b84f79..6083036 100644 --- a/docs/types/GobstonesLang.CellReadingActionAttempt.html +++ b/docs/types/GobstonesLang.CellReadingActionAttempt.html @@ -1,3 +1,3 @@ -CellReadingActionAttempt | @gobstones/gobstones-core - v0.4.6 -

    Type alias CellReadingActionAttemptInternal

    CellReadingActionAttempt: "ReadCell" | "ReadColumn" | "ReadRow"

    The operation attempted to be performed when a InvalidCellReading error ocurred.

    -
    \ No newline at end of file +CellReadingActionAttempt | @gobstones/gobstones-core - v0.4.7 +

    Type alias CellReadingActionAttemptInternal

    CellReadingActionAttempt: "ReadCell" | "ReadColumn" | "ReadRow"

    The operation attempted to be performed when a InvalidCellReading error ocurred.

    +
    \ No newline at end of file diff --git a/docs/types/GobstonesLang.InvalidSizeChangeAttempt.html b/docs/types/GobstonesLang.InvalidSizeChangeAttempt.html index fed0a62..de70210 100644 --- a/docs/types/GobstonesLang.InvalidSizeChangeAttempt.html +++ b/docs/types/GobstonesLang.InvalidSizeChangeAttempt.html @@ -1,3 +1,3 @@ -InvalidSizeChangeAttempt | @gobstones/gobstones-core - v0.4.6 -

    Type alias InvalidSizeChangeAttemptInternal

    InvalidSizeChangeAttempt: "Resize" | "RemoveRow" | "RemoveColumn" | "AddRows" | "AddColumns"

    The operation attempted to be performed when a InvalidSizeChange error ocurred.

    -
    \ No newline at end of file +InvalidSizeChangeAttempt | @gobstones/gobstones-core - v0.4.7 +

    Type alias InvalidSizeChangeAttemptInternal

    InvalidSizeChangeAttempt: "Resize" | "RemoveRow" | "RemoveColumn" | "AddRows" | "AddColumns"

    The operation attempted to be performed when a InvalidSizeChange error ocurred.

    +
    \ No newline at end of file diff --git a/docs/types/GobstonesLang.LocationChangeActionAttempt.html b/docs/types/GobstonesLang.LocationChangeActionAttempt.html index 6b35dd2..85f90cf 100644 --- a/docs/types/GobstonesLang.LocationChangeActionAttempt.html +++ b/docs/types/GobstonesLang.LocationChangeActionAttempt.html @@ -1,3 +1,3 @@ -LocationChangeActionAttempt | @gobstones/gobstones-core - v0.4.6 -

    Type alias LocationChangeActionAttemptInternal

    LocationChangeActionAttempt: "Move" | "SetLocation" | "MoveToEdge"

    The operation attempted to be performed when a LocationFallsOutsideBoard error ocurred.

    -
    \ No newline at end of file +LocationChangeActionAttempt | @gobstones/gobstones-core - v0.4.7 +

    Type alias LocationChangeActionAttemptInternal

    LocationChangeActionAttempt: "Move" | "SetLocation" | "MoveToEdge"

    The operation attempted to be performed when a LocationFallsOutsideBoard error ocurred.

    +
    \ No newline at end of file diff --git a/docs/types/GobstonesLang.OnBoardHeadMovedCallback.html b/docs/types/GobstonesLang.OnBoardHeadMovedCallback.html index 6af28ed..1bde2b6 100644 --- a/docs/types/GobstonesLang.OnBoardHeadMovedCallback.html +++ b/docs/types/GobstonesLang.OnBoardHeadMovedCallback.html @@ -1,5 +1,5 @@ -OnBoardHeadMovedCallback | @gobstones/gobstones-core - v0.4.6 -
    OnBoardHeadMovedCallback: ((currentLocation, previousLocation) => void)

    Type declaration

      • (currentLocation, previousLocation): void
      • This type represents the function that acts as a callback of +OnBoardHeadMovedCallback | @gobstones/gobstones-core - v0.4.7 +

        OnBoardHeadMovedCallback: ((currentLocation, previousLocation) => void)

        Type declaration

          • (currentLocation, previousLocation): void
          • This type represents the function that acts as a callback of the Board.onHeadMoved event. Such an event is thrown by an instance of a board whenever an operation is performed such that the current head location is altered.

            @@ -9,4 +9,4 @@
          • The previous head location.

        Parameters

        Returns void

        See

        Board.onHeadMoved for more information.

        -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/GobstonesLang.OnBoardSizeChangedCallback.html b/docs/types/GobstonesLang.OnBoardSizeChangedCallback.html index 107c383..8c327ef 100644 --- a/docs/types/GobstonesLang.OnBoardSizeChangedCallback.html +++ b/docs/types/GobstonesLang.OnBoardSizeChangedCallback.html @@ -1,5 +1,5 @@ -OnBoardSizeChangedCallback | @gobstones/gobstones-core - v0.4.6 -
    OnBoardSizeChangedCallback: ((newSize, newHeadLocation, fromOriginCell, previousSize, previousHeadLocation) => void)

    Type declaration

      • (newSize, newHeadLocation, fromOriginCell, previousSize, previousHeadLocation): void
      • This type represents the function that acts as a callback of +OnBoardSizeChangedCallback | @gobstones/gobstones-core - v0.4.7 +

        OnBoardSizeChangedCallback: ((newSize, newHeadLocation, fromOriginCell, previousSize, previousHeadLocation) => void)

        Type declaration

          • (newSize, newHeadLocation, fromOriginCell, previousSize, previousHeadLocation): void
          • This type represents the function that acts as a callback of the Board.onSizeChanged event. Such an event is thrown by an instance of a board whenever an operation is performed such that the original size of the board is altered.

            @@ -18,4 +18,4 @@
          • The previous cell that the head was at. Might be the same as the current one.

        Parameters

        • newSize: {
              height: number;
              width: number;
          }
          • height: number
          • width: number
        • newHeadLocation: CellLocation
        • fromOriginCell: boolean
        • previousSize: {
              height: number;
              width: number;
          }
          • height: number
          • width: number
        • previousHeadLocation: CellLocation

        Returns void

        See

        Board.onSizeChanged for more information.

        -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/GobstonesLang.OnCellStonesChanged.html b/docs/types/GobstonesLang.OnCellStonesChanged.html index ec952c2..a379afb 100644 --- a/docs/types/GobstonesLang.OnCellStonesChanged.html +++ b/docs/types/GobstonesLang.OnCellStonesChanged.html @@ -1,5 +1,5 @@ -OnCellStonesChanged | @gobstones/gobstones-core - v0.4.6 -
    OnCellStonesChanged: ((cellLocation, stones, previousStones) => void)

    Type declaration

      • (cellLocation, stones, previousStones): void
      • This type represents the function that acts as a callback of +OnCellStonesChanged | @gobstones/gobstones-core - v0.4.7 +

        OnCellStonesChanged: ((cellLocation, stones, previousStones) => void)

        Type declaration

          • (cellLocation, stones, previousStones): void
          • This type represents the function that acts as a callback of the Cell.onStonesChanged event. Such an event is thrown by an instance of a cell whenever an operation is performed such that the cell changes the amount of cells.

            @@ -10,4 +10,4 @@
          • The previous amount of stones the cell had.

        Parameters

        • cellLocation: {
              x: number;
              y: number;
          }
          • x: number
          • y: number
        • stones: {
              a: number;
              n: number;
              r: number;
              v: number;
          }
          • a: number
          • n: number
          • r: number
          • v: number
        • previousStones: {
              a: number;
              n: number;
              r: number;
              v: number;
          }
          • a: number
          • n: number
          • r: number
          • v: number

        Returns void

        See

        Cell.onStonesChanged for more information.

        -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/GobstonesLang.StonesChangeActionAttempt.html b/docs/types/GobstonesLang.StonesChangeActionAttempt.html index 2e6883b..0bf1795 100644 --- a/docs/types/GobstonesLang.StonesChangeActionAttempt.html +++ b/docs/types/GobstonesLang.StonesChangeActionAttempt.html @@ -1,3 +1,3 @@ -StonesChangeActionAttempt | @gobstones/gobstones-core - v0.4.6 -

    Type alias StonesChangeActionAttemptInternal

    StonesChangeActionAttempt: "AddStones" | "RemoveStones" | "SetStones"

    The operation attempted to be performed when a InvalidStonesAmount error ocurred.

    -
    \ No newline at end of file +StonesChangeActionAttempt | @gobstones/gobstones-core - v0.4.7 +

    Type alias StonesChangeActionAttemptInternal

    StonesChangeActionAttempt: "AddStones" | "RemoveStones" | "SetStones"

    The operation attempted to be performed when a InvalidStonesAmount error ocurred.

    +
    \ No newline at end of file diff --git a/docs/types/SourceReader.SourceInput.html b/docs/types/SourceReader.SourceInput.html index eb3fc2f..dd98785 100644 --- a/docs/types/SourceReader.SourceInput.html +++ b/docs/types/SourceReader.SourceInput.html @@ -1,5 +1,5 @@ -SourceInput | @gobstones/gobstones-core - v0.4.6 -
    SourceInput: string | Record<string, string> | string[]

    The type SourceInput establishes the different kinds of input a SourceReader +SourceInput | @gobstones/gobstones-core - v0.4.7 +

    SourceInput: string | Record<string, string> | string[]

    The type SourceInput establishes the different kinds of input a SourceReader accepts to read, independently of how it was obtained (e.g. from files, web-services, or command line arguments).

      @@ -21,4 +21,4 @@ typically as

      new SourceReader(input, '\n');
       
      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/Types.Subset.html b/docs/types/Types.Subset.html index ba28034..1e57a1e 100644 --- a/docs/types/Types.Subset.html +++ b/docs/types/Types.Subset.html @@ -1,8 +1,8 @@ -Subset | @gobstones/gobstones-core - v0.4.6 -
    Subset<K>: {
        [attr in keyof K]?: K[attr] extends object
            ? Subset<K[attr]>
            : K[attr] extends object | null
                ? Subset<K[attr]> | null
                : K[attr] extends object | null | undefined
                    ? Subset<K[attr]> | null | undefined
                    : K[attr]
    }

    This Utility Type works similar to Partial, but it proceeds recursively applying Partial +Subset | @gobstones/gobstones-core - v0.4.7 +

    Subset<K>: {
        [attr in keyof K]?: K[attr] extends object
            ? Subset<K[attr]>
            : K[attr] extends object | null
                ? Subset<K[attr]> | null
                : K[attr] extends object | null | undefined
                    ? Subset<K[attr]> | null | undefined
                    : K[attr]
    }

    This Utility Type works similar to Partial, but it proceeds recursively applying Partial to all attributes of the type argument K, included nested ones.

    It is taken from a blog by Harmen Janssen, posted on November 29, 2021. See that blog for an explanation on the code.

    -

    Type Parameters

    • K

    \ No newline at end of file +

    Type Parameters

    • K

    \ No newline at end of file diff --git a/docs/types/Types_WithRequired.WithRequired.html b/docs/types/Types_WithRequired.WithRequired.html new file mode 100644 index 0000000..807a157 --- /dev/null +++ b/docs/types/Types_WithRequired.WithRequired.html @@ -0,0 +1,12 @@ +WithRequired | @gobstones/gobstones-core - v0.4.7 +
    WithRequired<T, K>: T & {
        [P in K]-?: T[P]
    }

    A type modifier that allows to construct a generic type that +requires only one property of a given type.

    +

    Type Parameters

    • T

      The base type.

      +
    • K extends keyof T

      the name of the property to require in the new type.

      +

    Example

    Conider that we have a type

    +
    type User = {
    id: string
    name?: string
    email?: string
    } +
    +

    Then we can create a type like so:

    +
    type UserWithName = WithRequired<User, 'name'>
    +
    +
    \ No newline at end of file diff --git a/docs/types/cli.cli.html b/docs/types/cli.cli.html index 949e264..d29a05b 100644 --- a/docs/types/cli.cli.html +++ b/docs/types/cli.cli.html @@ -1,3 +1,3 @@ -cli | @gobstones/gobstones-core - v0.4.6 -
    cli: CLIApp

    The Type of a CLI application

    -
    \ No newline at end of file +cli | @gobstones/gobstones-core - v0.4.7 +
    cli: CLIApp

    The Type of a CLI application

    +
    \ No newline at end of file diff --git a/docs/variables/GobstonesLang.identifier.html b/docs/variables/GobstonesLang.identifier.html index 887f13f..ce22c7e 100644 --- a/docs/variables/GobstonesLang.identifier.html +++ b/docs/variables/GobstonesLang.identifier.html @@ -1,6 +1,6 @@ -identifier | @gobstones/gobstones-core - v0.4.6 -
    identifier: RegExp = ...

    This helper matches any of the above identifiers, that is, anything that is a word.

    +identifier | @gobstones/gobstones-core - v0.4.7 +
    identifier: RegExp = ...

    This helper matches any of the above identifiers, that is, anything that is a word.

    ES Form:

    /(\p{Letter}|_)[\p{Letter}\p{Decimal_Number}_]* /u;
     
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/variables/GobstonesLang.lowerId.html b/docs/variables/GobstonesLang.lowerId.html index 67e3c95..a78ac02 100644 --- a/docs/variables/GobstonesLang.lowerId.html +++ b/docs/variables/GobstonesLang.lowerId.html @@ -1,7 +1,7 @@ -lowerId | @gobstones/gobstones-core - v0.4.6 -
    lowerId: RegExp = ...

    Any word starting with an lowercase letter, that may be followed +lowerId | @gobstones/gobstones-core - v0.4.7 +

    lowerId: RegExp = ...

    Any word starting with an lowercase letter, that may be followed by any amount of unicode letters or decimal numbers, or ASCII underscore.

    ES Form:

    /\p{Lowercase_Letter}[\p{Letter}\p{Decimal_Number}_]* /u;
     
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/variables/GobstonesLang.nonAlphabeticId.html b/docs/variables/GobstonesLang.nonAlphabeticId.html index a83cab8..d6a085c 100644 --- a/docs/variables/GobstonesLang.nonAlphabeticId.html +++ b/docs/variables/GobstonesLang.nonAlphabeticId.html @@ -1,8 +1,8 @@ -nonAlphabeticId | @gobstones/gobstones-core - v0.4.6 -
    nonAlphabeticId: RegExp = ...

    Any word starting with a non upper, title or lowercase letter (that is, a letter +nonAlphabeticId | @gobstones/gobstones-core - v0.4.7 +

    nonAlphabeticId: RegExp = ...

    Any word starting with a non upper, title or lowercase letter (that is, a letter in a scripting that do not distinguishes between upper and lowercase forms), that may be followed by any amount of unicode letters or decimal numbers, or ASCII underscore.

    ES Form:

    /\p{Other_Letter}[\p{Letter}\p{Decimal_Number}_]* /u;
     
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/variables/GobstonesLang.number.html b/docs/variables/GobstonesLang.number.html index d947649..3a6e466 100644 --- a/docs/variables/GobstonesLang.number.html +++ b/docs/variables/GobstonesLang.number.html @@ -1,3 +1,3 @@ -number | @gobstones/gobstones-core - v0.4.6 -
    number: RegExp = ...

    Numbers are only ASCII characters for digits

    -
    \ No newline at end of file +number | @gobstones/gobstones-core - v0.4.7 +
    number: RegExp = ...

    Numbers are only ASCII characters for digits

    +
    \ No newline at end of file diff --git a/docs/variables/GobstonesLang.sigiledNonAlphabeticId.html b/docs/variables/GobstonesLang.sigiledNonAlphabeticId.html index 823a757..0924619 100644 --- a/docs/variables/GobstonesLang.sigiledNonAlphabeticId.html +++ b/docs/variables/GobstonesLang.sigiledNonAlphabeticId.html @@ -1,9 +1,9 @@ -sigiledNonAlphabeticId | @gobstones/gobstones-core - v0.4.6 -
    sigiledNonAlphabeticId: RegExp = ...

    Any word starting with an underscore and followed by a non upper, title or lowercase +sigiledNonAlphabeticId | @gobstones/gobstones-core - v0.4.7 +

    sigiledNonAlphabeticId: RegExp = ...

    Any word starting with an underscore and followed by a non upper, title or lowercase letter (that is, a letter in a scripting that do not distinguishes between upper and lowercase forms), that may be followed by any amount of unicode letters or decimal numbers, or ASCII underscore.

    ES Form:

    /_\p{Other_Letter}[\p{Letter}\p{Decimal_Number}_]* /u;
     
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/variables/GobstonesLang.upperId.html b/docs/variables/GobstonesLang.upperId.html index fb13a98..9b09b19 100644 --- a/docs/variables/GobstonesLang.upperId.html +++ b/docs/variables/GobstonesLang.upperId.html @@ -1,7 +1,7 @@ -upperId | @gobstones/gobstones-core - v0.4.6 -
    upperId: RegExp = ...

    Any word starting with an uppercase letter (or titlecase for some languages), +upperId | @gobstones/gobstones-core - v0.4.7 +

    upperId: RegExp = ...

    Any word starting with an uppercase letter (or titlecase for some languages), that may be followed by any amount of unicode letters or decimal numbers, or ASCII underscore.

    ES Form:

    /(\p{Uppercase_Letter}|\p{Titlecase_Letter})[\p{Letter}\p{Decimal_Number}_]* /u;
     
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/variables/SourceReader.SourceReaderIntl.html b/docs/variables/SourceReader.SourceReaderIntl.html index a009989..83aac36 100644 --- a/docs/variables/SourceReader.SourceReaderIntl.html +++ b/docs/variables/SourceReader.SourceReaderIntl.html @@ -1,6 +1,6 @@ -SourceReaderIntl | @gobstones/gobstones-core - v0.4.6 -
    SourceReaderIntl: Translator<SourceReaderLocale> = ...

    The instance of the Translator for SourceReader. +SourceReaderIntl | @gobstones/gobstones-core - v0.4.7 +

    SourceReaderIntl: Translator<SourceReaderLocale> = ...

    The instance of the Translator for SourceReader. It specialize its language interface to SourceReaderLocale. It uses availableLocales to provide the locales, and defaults to English. The translator is flattened to allow dot notation.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/variables/SourceReader.availableLocales.html b/docs/variables/SourceReader.availableLocales.html index 17718a3..97ad9d7 100644 --- a/docs/variables/SourceReader.availableLocales.html +++ b/docs/variables/SourceReader.availableLocales.html @@ -1,5 +1,5 @@ -availableLocales | @gobstones/gobstones-core - v0.4.6 -
    availableLocales: {
        en: SourceReaderLocale;
        en-AU: SourceReaderLocale;
        en-BZ: SourceReaderLocale;
        en-CA: SourceReaderLocale;
        en-CB: SourceReaderLocale;
        en-GB: SourceReaderLocale;
        en-IE: SourceReaderLocale;
        en-IN: SourceReaderLocale;
        en-JM: SourceReaderLocale;
        en-MT: SourceReaderLocale;
        en-MY: SourceReaderLocale;
        en-NZ: SourceReaderLocale;
        en-PH: SourceReaderLocale;
        en-SG: SourceReaderLocale;
        en-TT: SourceReaderLocale;
        en-US: SourceReaderLocale;
        en-ZA: SourceReaderLocale;
        en-ZW: SourceReaderLocale;
        es: SourceReaderLocale;
        es-AR: SourceReaderLocale;
        es-BO: SourceReaderLocale;
        es-CL: SourceReaderLocale;
        es-CO: SourceReaderLocale;
        es-CR: SourceReaderLocale;
        es-DO: SourceReaderLocale;
        es-EC: SourceReaderLocale;
        es-ES: SourceReaderLocale;
        es-GT: SourceReaderLocale;
        es-HN: SourceReaderLocale;
        es-MX: SourceReaderLocale;
        es-NI: SourceReaderLocale;
        es-PA: SourceReaderLocale;
        es-PE: SourceReaderLocale;
        es-PR: SourceReaderLocale;
        es-PY: SourceReaderLocale;
        es-SV: SourceReaderLocale;
        es-US: SourceReaderLocale;
        es-UY: SourceReaderLocale;
        es-VE: SourceReaderLocale;
    } = ...

    The locales available for translations for SourceReader. +availableLocales | @gobstones/gobstones-core - v0.4.7 +

    availableLocales: {
        en: SourceReaderLocale;
        en-AU: SourceReaderLocale;
        en-BZ: SourceReaderLocale;
        en-CA: SourceReaderLocale;
        en-CB: SourceReaderLocale;
        en-GB: SourceReaderLocale;
        en-IE: SourceReaderLocale;
        en-IN: SourceReaderLocale;
        en-JM: SourceReaderLocale;
        en-MT: SourceReaderLocale;
        en-MY: SourceReaderLocale;
        en-NZ: SourceReaderLocale;
        en-PH: SourceReaderLocale;
        en-SG: SourceReaderLocale;
        en-TT: SourceReaderLocale;
        en-US: SourceReaderLocale;
        en-ZA: SourceReaderLocale;
        en-ZW: SourceReaderLocale;
        es: SourceReaderLocale;
        es-AR: SourceReaderLocale;
        es-BO: SourceReaderLocale;
        es-CL: SourceReaderLocale;
        es-CO: SourceReaderLocale;
        es-CR: SourceReaderLocale;
        es-DO: SourceReaderLocale;
        es-EC: SourceReaderLocale;
        es-ES: SourceReaderLocale;
        es-GT: SourceReaderLocale;
        es-HN: SourceReaderLocale;
        es-MX: SourceReaderLocale;
        es-NI: SourceReaderLocale;
        es-PA: SourceReaderLocale;
        es-PE: SourceReaderLocale;
        es-PR: SourceReaderLocale;
        es-PY: SourceReaderLocale;
        es-SV: SourceReaderLocale;
        es-US: SourceReaderLocale;
        es-UY: SourceReaderLocale;
        es-VE: SourceReaderLocale;
    } = ...

    The locales available for translations for SourceReader. It is similar to other availableLocales, providing locales not only for English and Spanish, but also several local dialects (all defaulting to their base language).

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/variables/SourceReader.en.html b/docs/variables/SourceReader.en.html index 1611583..fed94bc 100644 --- a/docs/variables/SourceReader.en.html +++ b/docs/variables/SourceReader.en.html @@ -1,4 +1,4 @@ -en | @gobstones/gobstones-core - v0.4.6 -

    The locale for English language, for SourceReader. +en | @gobstones/gobstones-core - v0.4.7 +

    The locale for English language, for SourceReader. It implements interface SourceReaderLocale.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/variables/SourceReader.es.html b/docs/variables/SourceReader.es.html index 5a00bb7..f9395ba 100644 --- a/docs/variables/SourceReader.es.html +++ b/docs/variables/SourceReader.es.html @@ -1,4 +1,4 @@ -es | @gobstones/gobstones-core - v0.4.6 -

    The locale for Spanish language, for SourceReader. +es | @gobstones/gobstones-core - v0.4.7 +

    The locale for Spanish language, for SourceReader. It implements interface SourceReaderLocale.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/package.json b/package.json index fe7cf69..b898fd3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@gobstones/gobstones-core", - "version": "0.4.6", + "version": "0.4.7", "description": "A set of utility types, interfaces and classes that are used through all the Gobstones Platform repositories.", "repository": "https://github.com/gobstones/gobstones-core", "homepage": "https://gobstones.github.io/gobstones-core", @@ -11,8 +11,32 @@ "module": "./dist/esm/index.mjs", "typings": "./dist/esm/typings/index.d.ts", "exports": { - "require": "./dist/cjs/index.cjs", - "import": "./dist/esm/index.mjs" + ".": { + "import": { + "types": "./dist/esm/typings/index.d.ts", + "default": "./dist/esm/index.mjs" + }, + "require": { + "types": "./dist/cjs/typings/index.d.ts", + "default": "./dist/cjs/index.cjs" + } + }, + "./cli": { + "import": { + "types": "./dist/esm/cli/typings/cli.d.ts", + "default": "./dist/esm/cli/cli.mjs" + }, + "require": { + "types": "./dist/cjs/cli/typings/cli.d.ts", + "default": "./dist/cjs/cli/cli.cjs" + } + } + }, + "typesVersions": { + "*": { + "cli": ["./dist/esm/typings/cli.d.ts"], + ".": ["./dist/esm/typings/index.d.ts"] + } }, "packageManager": "npm@9.2.0", "scripts": { @@ -37,7 +61,7 @@ "commander": "^11.1.0" }, "devDependencies": { - "@gobstones/gobstones-scripts": "^0.5.3", + "@gobstones/gobstones-scripts": "^0.5.4", "husky": "^8.0.2" } } diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..a169e6f --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,60 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const fs = require('fs'); + +const commonjs = require('@rollup/plugin-commonjs'); +const typescript = require('@rollup/plugin-typescript'); + +const { config } = require('@gobstones/gobstones-scripts'); + +const packageJson = JSON.parse(fs.readFileSync('./package.json').toString()); + +export default [ + { + input: 'src/index.ts', + output: [ + { + sourcemap: true, + file: packageJson.exports['.'].import.default, + format: 'esm' + }, + { + sourcemap: true, + file: packageJson.exports['.'].require.default, + format: 'cjs' + } + ], + preserveSymlinks: true, + plugins: [ + typescript({ + tsconfig: config.configurationFiles[config.loadedOptions.type].tsConfigFile, + declarationDir: './typings' + }), + commonjs() + ], + external: [/@gobstones\/.*/] + }, + { + input: 'src/cli.ts', + output: [ + { + sourcemap: true, + file: packageJson.exports['./cli'].import.default, + format: 'esm' + }, + { + sourcemap: true, + file: packageJson.exports['./cli'].require.default, + format: 'cjs' + } + ], + preserveSymlinks: true, + plugins: [ + typescript({ + tsconfig: config.configurationFiles[config.loadedOptions.type].tsConfigFile, + declarationDir: './typings' + }), + commonjs() + ], + external: [/@gobstones\/.*/, 'commander', 'fs'] + } +]; diff --git a/src/Translations/Translator.ts b/src/Translations/Translator.ts index 068e1e6..fab0f76 100644 --- a/src/Translations/Translator.ts +++ b/src/Translations/Translator.ts @@ -5,11 +5,11 @@ import { flatten } from '../Functions/flatten'; /** - * A Translation consist of an object that hold the state of the current + * A Translator consist of an object that hold the state of the current * locale being used, and allows for switching between different locales * and obtain translated strings. * - * The translation expects a locale to be given as the language definition, + * The translator expects a locale to be given as the language definition, * and, if constructed with the flatten options, flattens it to allow * dot notation access to the different strings in the locale object. * diff --git a/src/Types/WithRequired.ts b/src/Types/WithRequired.ts new file mode 100644 index 0000000..939e86b --- /dev/null +++ b/src/Types/WithRequired.ts @@ -0,0 +1,23 @@ +/** + * A type modifier that allows to construct a generic type that + * requires only one property of a given type. + * + * @example + * Conider that we have a type + * ``` + * type User = { + * id: string + * name?: string + * email?: string + * } + * ``` + * + * Then we can create a type like so: + * ``` + * type UserWithName = WithRequired + * ``` + * + * @param T The base type. + * @param K the name of the property to require in the new type. + */ +export type WithRequired = T & { [P in K]-?: T[P] }; diff --git a/src/Types/index.ts b/src/Types/index.ts index 56980ae..451495e 100644 --- a/src/Types/index.ts +++ b/src/Types/index.ts @@ -13,4 +13,4 @@ export * from './BiMap'; export * from './Subset'; -export * from '../Functions/deepStringAssign'; +export * from './WithRequired'; diff --git a/src/cli.ts b/src/cli.ts index 6bb6ac0..23cb97d 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -12,8 +12,36 @@ import commander, { program } from 'commander'; import { Translator } from './Translations'; +import { WithRequired } from './Types'; import fs from 'fs'; +/** + * The general texts that a CLI app uses. + * This include the description texts (Or a description key if a {@link Translator} is provided) + * that are used a the description of the different parts of the CLI. + * The `name` and the `versionNumber` are expected to be the app name (No translation + * is used, as the name should be the same through all the app), and the `versionNumber` + * should be the version is the major.minor.patch. + * + * @group API: Options + */ +export interface CLIGeneralTexts { + /** The application name */ + name: string; + /** The application version number in semVer */ + versionNumber: string; + /** A text displayed when showing the application's help */ + help: string; + /** The language used by the application */ + language?: string; + /** The error message displayed when using a wrong language */ + languageError?: string; + /** Text used by the tool */ + tool: string; + /** The text displayed when showing the version of the application */ + version: string; +} + /** * The general flags that a CLI app accepts, when configured to used them. * Note that currently the default flags cannot be changed. @@ -47,22 +75,14 @@ export interface CLIAppOptions { * is used, as the name should be the same through all the app), and the `versionNumber` * should be the version is the major.minor.patch. */ - texts: { - name: string; - versionNumber: string; - help: string; - language?: string; - languageError?: string; - tool: string; - version: string; - }; + texts: CLIGeneralTexts; /** * A {@link Translator} used to translate the tool to different locales, both when * called with a language flag, and automatically at startup by auto-detecting * the user language by checking OS Environment variables. */ - translator?: Translator; + translator?: Translator>; /** * The flag names to use in this application, if the flags differ in any way from @@ -75,7 +95,7 @@ export interface CLIAppOptions { * * input file for a command: -i, --in * * output file for a command: -o, --out */ - flags: CLIGeneralFlags; + flags?: CLIGeneralFlags; } /** @@ -101,7 +121,7 @@ export class CLICommandBuilder { protected currentArgs: any[]; protected currentOptions: any; protected onReadErrorMsg: string; - protected options: CLIAppOptions; + protected options: WithRequired; protected isSubcommand: boolean; public constructor( @@ -109,12 +129,8 @@ export class CLICommandBuilder { options: CLIAppOptions, isSubcommand: boolean = false ) { - this.program = cmdrProgram; - this.options = Object.assign({}, options); - this.isSubcommand = isSubcommand; - // Set default flags, or use custom ones - this.options.flags = options.flags ?? { + const defaultFlags = { help: { short: CLICommandBuilder.SHORT_HELP_FLAG, long: CLICommandBuilder.LONG_HELP_FLAG @@ -136,6 +152,13 @@ export class CLICommandBuilder { long: CLICommandBuilder.LONG_OUTPUT_FLAG } }; + + this.program = cmdrProgram; + this.options = Object.assign({ ...defaultFlags }, options) as WithRequired< + CLIAppOptions, + 'flags' + >; + this.isSubcommand = isSubcommand; } /** @@ -508,3 +531,20 @@ export type cli = CLIApp; * @group API: Main */ export const cli = (options: CLIAppOptions): CLIApp => new CLIApp(options); + +/** + * Retrieves an object with the data from a JSON file + * after reading the same from the command line. + * This function is useful here as most times you will + * want to retrieve data from the package.json file. + * + * @param fileLocation The location of the file to read. + */ +export function readJSON(fileLocation: string): any { + try { + const fileContents = fs.readFileSync(fileLocation); + return JSON.parse(fileContents.toString()); + } catch { + return {}; + } +}